Arghh...  I always write a nice long email just so I can forget to attach the
files....
Here they are.
-shack 
On Thu, Oct 14, 1999 at 01:57:30AM -0500, Stephen Hack wrote:
> Well, I have a rough working copy of the Options dialog.
> 
> Attachments
>     options.diff	a cvs diff -c >options.diff from the abi/src directory
>     options.tar		all the new files to be added from the abi/src directory
> 
> What this patch currently can do:
>     * Pull up the options dialog
>     * Allow you to change the Auto Check as you Type options
> 	- all the other check boxes do not do anything yet
>     * Save the auto spell check in the PrefSchemes.  If there is a current
>         scheme besides _builtin_, then it will add it, otherwise, it'll create 
>         a new one (user_prefs)
> 
> What it does NOT do, yet:
>     * Actually change the auto check functionallity, but it will save it to
> 	the preferences file for the next time that Abiword is loaded    
>     * I don't have access to a Win32/BeOS machine so I can't test (compile)
>         the win32 code.  I don't know if it will work, but it *should* 
> 
> Notes:
>     Currently, I force a save of the preferences.  (if not autosave, then save
> now) Should not be in there in the long run, but should add the
> options|Preferences tab soon (probably next)
> 
> Todo:
>     * Add a call back feature to the preferences so the appropriate sections
> 	of code can be notified when a preference has changed
>     * Add a new tab page - 
> 	Spelling
> 	    SpellCheckDirectory
> 	    SpellCheckWordList
> 	    undo Ignore/Un-Ignore
> 	    re-Check now
> 	View
> 	    Ruler
> 		Units
> 	    Toolbars ?
> 	Preferences
> 	    Auto Save
> 	    Save Now
> 	Toolbar	        (or should this be like the toolbars|customize...  dlg?
> 	    Apperance
> 	    LabelSet ?
> 	    Layouts ? 
> 
> 
> -shack
> 
> -- 
> Less research... More sleep...
--zhXaljGHf11kAtnf
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="options.diff"
? Linux_2.2.12-7_i386_OBJ
? Linux_2.2.12-7_i386_DBG
? mktags
? options.diff
? wp/ap/beos/ap_BeOSDialog_Options.h
? wp/ap/beos/ap_BeOSDialog_Options.cpp
? wp/ap/unix/ap_UnixDialog_Options.h
? wp/ap/unix/ap_UnixDialog_Options.cpp
? wp/ap/win/ap_Win32Dialog_Options.h
? wp/ap/win/ap_Win32Dialog_Options.cpp
? wp/ap/xp/ap_Dialog_Options.h
? wp/ap/xp/ap_Dialog_Options.cpp
Index: wp/ap/Makefile
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/Makefile,v
retrieving revision 1.51
diff -c -r1.51 Makefile
*** Makefile	1999/10/04 19:07:37	1.51
--- Makefile	1999/10/14 06:16:42
***************
*** 30,35 ****
--- 30,36 ----
  		$(OBJDIR)/ap_$(ABI_FE)Clipboard.$(OBJ_SUFFIX)		\
  		$(OBJDIR)/ap_$(ABI_FE)DialogFactory.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_$(ABI_FE)Dialog_Break.$(OBJ_SUFFIX)	\
+ 		$(OBJDIR)/ap_$(ABI_FE)Dialog_Options.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_$(ABI_FE)Dialog_Paragraph.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_$(ABI_FE)Dialog_Replace.$(OBJ_SUFFIX)	\
                  $(OBJDIR)/ap_$(ABI_FE)Dialog_Spell.$(OBJ_SUFFIX)	\
***************
*** 52,57 ****
--- 53,59 ----
  
  OBJS=		$(PLATFORM_OBJS)				\
  		$(OBJDIR)/ap_Dialog_Break.$(OBJ_SUFFIX)		\
+ 		$(OBJDIR)/ap_Dialog_Options.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_Dialog_Paragraph.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_Dialog_Replace.$(OBJ_SUFFIX)	\
  		$(OBJDIR)/ap_Dialog_Spell.$(OBJ_SUFFIX)		\
Index: wp/ap/unix/Makefile
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/unix/Makefile,v
retrieving revision 1.28
diff -c -r1.28 Makefile
*** Makefile	1999/10/04 19:07:39	1.28
--- Makefile	1999/10/14 06:16:42
***************
*** 28,33 ****
--- 28,34 ----
  			ap_$(ABI_FE)Clipboard.cpp		\
  			ap_$(ABI_FE)DialogFactory.cpp		\
  			ap_$(ABI_FE)Dialog_Break.cpp		\
+ 			ap_$(ABI_FE)Dialog_Options.cpp	\
  			ap_$(ABI_FE)Dialog_Paragraph.cpp	\
  			ap_$(ABI_FE)Dialog_Replace.cpp		\
  			ap_$(ABI_FE)Dialog_Spell.cpp		\
Index: wp/ap/unix/ap_UnixDialog_All.h
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_All.h,v
retrieving revision 1.19
diff -c -r1.19 ap_UnixDialog_All.h
*** ap_UnixDialog_All.h	1999/10/04 19:07:39	1.19
--- ap_UnixDialog_All.h	1999/10/14 06:16:42
***************
*** 45,50 ****
--- 45,51 ----
  #	include "ap_UnixDialog_Replace.h"
  #	include "ap_UnixDialog_Break.h"
  #	include "ap_UnixDialog_Paragraph.h"
+ #	include "ap_UnixDialog_Options.h"
  #	include "ap_UnixDialog_Spell.h"
  
  	// ... add new dialogs here ...
***************
*** 66,71 ****
--- 67,73 ----
  	DeclareDialog(AP_DIALOG_ID_BREAK,			AP_UnixDialog_Break)
  	DeclareDialog(AP_DIALOG_ID_SPELL,			AP_UnixDialog_Spell)
  	DeclareDialog(AP_DIALOG_ID_PARAGRAPH,		AP_UnixDialog_Paragraph)	
+ 	DeclareDialog(AP_DIALOG_ID_OPTIONS,		AP_UnixDialog_Options)	
  
  	// ... also add new dialogs here ...
  
Index: wp/ap/win/Makefile
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/win/Makefile,v
retrieving revision 1.27
diff -c -r1.27 Makefile
*** Makefile	1999/10/04 19:07:40	1.27
--- Makefile	1999/10/14 06:16:42
***************
*** 29,34 ****
--- 29,35 ----
  			ap_$(ABI_FE)DialogFactory.cpp		\
  			ap_$(ABI_FE)Dialog_Break.cpp		\
  			ap_$(ABI_FE)Dialog_Replace.cpp		\
+ 			ap_$(ABI_FE)Dialog_Options.cpp	\
  			ap_$(ABI_FE)Dialog_Paragraph.cpp	\
  			ap_$(ABI_FE)Dialog_Spell.cpp		\
  			ap_$(ABI_FE)Frame.cpp			\
Index: wp/ap/win/ap_Win32Dialog_All.h
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_All.h,v
retrieving revision 1.18
diff -c -r1.18 ap_Win32Dialog_All.h
*** ap_Win32Dialog_All.h	1999/10/05 16:17:30	1.18
--- ap_Win32Dialog_All.h	1999/10/14 06:16:42
***************
*** 40,45 ****
--- 40,46 ----
  
  #	include "ap_Win32Dialog_Replace.h"
  #	include "ap_Win32Dialog_Break.h"
+ #	include "ap_Win32Dialog_Options.h"
  #	include "ap_Win32Dialog_Paragraph.h"
  #	include "ap_Win32Dialog_Spell.h"
  
***************
*** 61,66 ****
--- 62,68 ----
  	DeclareDialog(AP_DIALOG_ID_FIND,			AP_Win32Dialog_Replace)
  	DeclareDialog(AP_DIALOG_ID_BREAK,			AP_Win32Dialog_Break)
  	DeclareDialog(AP_DIALOG_ID_SPELL,			AP_Win32Dialog_Spell)
+ 	DeclareDialog(AP_DIALOG_ID_OPTIONS,	   	AP_Win32Dialog_Options)
  	DeclareDialog(AP_DIALOG_ID_PARAGRAPH,	   	AP_Win32Dialog_Paragraph)
  	
  	// ... also add new dialogs here ...
Index: wp/ap/xp/Makefile
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/xp/Makefile,v
retrieving revision 1.45
diff -c -r1.45 Makefile
*** Makefile	1999/10/04 19:07:41	1.45
--- Makefile	1999/10/14 06:16:42
***************
*** 26,31 ****
--- 26,32 ----
  
  CPPSRCS=	ap_Dialog_Break.cpp		\
  		ap_Dialog_Goto.cpp		\
+ 		ap_Dialog_Options.cpp		\
  		ap_Dialog_Paragraph.cpp		\
  		ap_Dialog_Replace.cpp		\
  		ap_Dialog_Spell.cpp		\
Index: wp/ap/xp/ap_Dialog_Id.h
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/xp/ap_Dialog_Id.h,v
retrieving revision 1.11
diff -c -r1.11 ap_Dialog_Id.h
*** ap_Dialog_Id.h	1999/10/04 19:07:41	1.11
--- ap_Dialog_Id.h	1999/10/14 06:16:42
***************
*** 36,41 ****
--- 36,42 ----
  	AP_DIALOG_ID_BREAK,					/* insert page, column, section, etc. breaks */
     	AP_DIALOG_ID_SPELL,					/* spell check */
  	AP_DIALOG_ID_PARAGRAPH,				/* paragraph settings dialog */
+ 	AP_DIALOG_ID_OPTIONS,				/* edit|options settings dialog */
       	/* ... add others here ... */
  
  	AP_DIALOG_ID__LAST__				/* must be last */
Index: wp/ap/xp/ap_EditMethods.cpp
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v
retrieving revision 1.151
diff -c -r1.151 ap_EditMethods.cpp
*** ap_EditMethods.cpp	1999/10/14 01:50:46	1.151
--- ap_EditMethods.cpp	1999/10/14 06:16:43
***************
*** 42,47 ****
--- 42,48 ----
  #include "ap_Dialog_Replace.h"
  #include "ap_Dialog_Goto.h"
  #include "ap_Dialog_Break.h"
+ #include "ap_Dialog_Options.h"
  #include "ap_Dialog_Paragraph.h"
  #include "ap_Dialog_Spell.h"
  
***************
*** 3251,3257 ****
--- 3252,3297 ----
  	
  }
  
+ static UT_Bool s_doOptionsDlg(FV_View * pView)
+ {
+ 	XAP_Frame * pFrame = (XAP_Frame *) pView->getParentData();
+ 	UT_ASSERT(pFrame);
+ 
+ 	pFrame->raise();
+ 
+ 	XAP_DialogFactory * pDialogFactory
+ 		= (XAP_DialogFactory *)(pFrame->getDialogFactory());
+ 
+ 	AP_Dialog_Options * pDialog
+ 		= (AP_Dialog_Options *)(pDialogFactory->requestDialog(AP_DIALOG_ID_OPTIONS));
+ 	UT_ASSERT(pDialog);
  
+ 	// run the dialog
+ 	pDialog->runModal(pFrame);
+ 
+ 	// get the dialog answer
+ 	AP_Dialog_Options::tAnswer answer = pDialog->getAnswer();
+ 
+ 	switch (answer)
+ 	{
+ 	case AP_Dialog_Options::a_OK:
+ 
+ 		break;
+ 		
+ 	case AP_Dialog_Options::a_CANCEL:
+ 		// do nothing
+ 		break;
+ 	default:
+ 		UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
+ 	}
+ 			
+ 	pDialogFactory->releaseDialog(pDialog);
+ 
+ 	return UT_TRUE;
+ }
+ 
+ 
+ 
  /*****************************************************************/
  
  Defun1(dlgFont)
***************
*** 3612,3622 ****
  
  Defun1(dlgOptions)
  {
! 	XAP_Frame * pFrame = (XAP_Frame *) pAV_View->getParentData();
! 	UT_ASSERT(pFrame);
! 
! 	s_TellNotImplemented(pFrame, "Options dialog", __LINE__);
! 	return UT_TRUE;
  }
  
  
--- 3652,3660 ----
  
  Defun1(dlgOptions)
  {
! 	ABIWORD_VIEW;
! 	
! 	return s_doOptionsDlg(pView);
  }
  
  
--zhXaljGHf11kAtnf
Content-Type: application/x-tar
Content-Disposition: attachment; filename="options.tar"
Content-Transfer-Encoding: quoted-printable
wp/ap/beos/ap_BeOSDialog_Options.h=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=000100664=000001025=000000764=0000000006560=0007001271031=00016254=
=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00ustar  =00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00/* AbiWord=
=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =0A * This program is free so=
ftware; you can redistribute it and/or=0A * modify it under the terms of th=
e GNU General Public License=0A * as published by the Free Software Foundat=
ion; either version 2=0A * of the License, or (at your option) any later ve=
rsion.=0A * =0A * This program is distributed in the hope that it will be u=
seful,=0A * but WITHOUT ANY WARRANTY; without even the implied warranty of=
=0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the=0A * GN=
U General Public License for more details.=0A * =0A * You should have recei=
ved a copy of the GNU General Public License=0A * along with this program; =
if not, write to the Free Software=0A * Foundation, Inc., 59 Temple Place -=
 Suite 330, Boston, MA  =0A * 02111-1307, USA.=0A */=0A=0A#ifndef AP_WIN32D=
IALOG_OPTIONS_H=0A#define AP_WIN32DIALOG_OPTIONS_H=0A=0A#include "xap_BeOSF=
ontManager.h"=0A=0A#include "ap_Dialog_Options.h"=0A=0Aclass XAP_BeOSFrame;=
=0A=0A/*****************************************************************/=
=0A=0Aclass AP_BeOSDialog_Options: public AP_Dialog_Options=0A{=0Apublic:=
=0A	AP_BeOSDialog_Options(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id=
);=0A	virtual ~AP_BeOSDialog_Options(void);=0A=0A	virtual void			runModal(X=
AP_Frame * pFrame);=0A=0A	static XAP_Dialog *		static_constructor(XAP_Dialo=
gFactory *, XAP_Dialog_Id id);=0A=0A	// callbacks can fire these events=0A	=
virtual void event_OK(void);=0A	virtual void event_Cancel(void);=0A	virtual=
 void event_WindowDelete(void);=0A=0A	// Indents and Spacing page=0A//	virt=
ual void event_AlignmentChanged(void);=0A=0A	// actions for all indent-rela=
ted spin-button changes are the same=0A//	virtual void event_UpdateEntry(Gt=
kWidget * widget);=0A//	virtual void event_IndentSpinButtonChanged(GtkWidge=
t * spinbutton, GtkAdjustment * adj);=0A//	virtual void event_SpecialIndent=
ListChanged(void);=0A=0A	// actions for all spacing-related spin-button cha=
nges are the same=0A//	virtual void event_SpacingSpinButtonChanged(GtkWidge=
t * spinbutton, GtkAdjustment * adj);=0A//	virtual void event_SpecialSpacin=
gListChanged(void);=0A=0A	// Line and Page Breaks=0A//	virtual void event_W=
idowOrphanControlToggled(void);=0A//	virtual void event_KeepLinesTogetherTo=
ggled(void);=0A//	virtual void event_KeepWithNextToggled(void);=0A//	virtua=
l void event_PageBreakBeforeToggled(void);=0A=0A//	virtual void event_Suppr=
essLineNumbersToggled(void);=0A//	virtual void event_NoHyphenateToggled(voi=
d);=0A	=0A=0A protected:=0A=0A	// we implement these so the XP dialog can s=
et/grab our data=0A	=0A	virtual UT_Bool			_gatherSpellCheckAsType(void);=0A=
	virtual void			_setSpellCheckAsType(UT_Bool b);=0A	virtual UT_Bool			_gath=
erSpellHideErrors(void);=0A	virtual void			_setSpellHideErrors(UT_Bool b);=
=0A	virtual UT_Bool			_gatherSpellSuggest(void);=0A	virtual void			_setSpel=
lSuggest(UT_Bool b);=0A	virtual UT_Bool			_gatherSpellMainOnly(void);=0A	vi=
rtual void			_setSpellMainOnly(UT_Bool b);=0A	virtual UT_Bool			_gatherSpel=
lUppercase(void);=0A	virtual void			_setSpellUppercase(UT_Bool b);=0A	virtu=
al UT_Bool			_gatherSpellNumbers(void);=0A	virtual void			_setSpellNumbers(=
UT_Bool b);=0A	virtual UT_Bool			_gatherSpellInternet(void);=0A	virtual voi=
d			_setSpellInternet(UT_Bool b);=0A	=0A protected:=0A	//GR_BeOSGraphics	* =
		m_unixGraphics;=0A	=0A	// private construction functions=0A	/*GtkWidget *=
 _constructWindow(void);=0A	void		_populateWindowData(void);=0A	void		_enab=
lePercentSpin(UT_Bool enable);=0A	*/=0A=0A	// pointers to widgets we need t=
o query/set=0A	// there are a ton of them in this dialog=0A=0A};=0A=0A#endi=
f /* XAP_WIN32DIALOG_PARAGRAPH_H */=0A=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00wp/ap/beos/ap_BeOSDialog_Options.cpp=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=000100664=000001025=000000764=0000000025560=000700127=
1010=00016605=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =0A * This program =
is free software; you can redistribute it and/or=0A * modify it under the t=
erms of the GNU General Public License=0A * as published by the Free Softwa=
re Foundation; either version 2=0A * of the License, or (at your option) an=
y later version.=0A * =0A * This program is distributed in the hope that it=
 will be useful,=0A * but WITHOUT ANY WARRANTY; without even the implied wa=
rranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See th=
e=0A * GNU General Public License for more details.=0A * =0A * You should h=
ave received a copy of the GNU General Public License=0A * along with this =
program; if not, write to the Free Software=0A * Foundation, Inc., 59 Templ=
e Place - Suite 330, Boston, MA  =0A * 02111-1307, USA.=0A */=0A=0A#include=
 "ut_types.h"=0A#include "ut_string.h"=0A#include "ut_assert.h"=0A#include =
"ut_debugmsg.h"=0A=0A// This header defines some functions for BeOS dialogs=
,=0A// like centering them, measuring them, etc.=0A#include "ut_dialogHelpe=
r.h"=0A=0A#include "gr_BeOSGraphics.h"=0A=0A#include "xap_App.h"=0A#include=
 "xap_BeOSApp.h"=0A#include "xap_BeOSFrame.h"=0A#include "xap_Prefs.h"=0A=
=0A#include "ap_Dialog_Id.h"=0A#include "ap_Prefs_SchemeIds.h"=0A=0A#includ=
e "ap_Strings.h"=0A=0A#include "ap_BeOSDialog_Options.h"=0A=0A/************=
*****************************************************/=0A=0A#define WIDGET_=
DIALOG_TAG "dialog"=0A=0A/*************************************************=
****************/=0A=0AXAP_Dialog * AP_BeOSDialog_Options::static_construct=
or(XAP_DialogFactory * pFactory,=0A                                        =
                 XAP_Dialog_Id id)=0A{=0A    AP_BeOSDialog_Options * p =3D =
new AP_BeOSDialog_Options(pFactory,id);=0A    return p;=0A}=0A=0AAP_BeOSDia=
log_Options::AP_BeOSDialog_Options(XAP_DialogFactory * pDlgFactory,=0A     =
                                            XAP_Dialog_Id id)=0A    : AP_Di=
alog_Options(pDlgFactory,id)=0A{=0A#if 0=0A	XAP_Prefs *prefs =3D m_pApp->ge=
tPrefs();=0A	UT_ASSERT(prefs);=0A	UT_DEBUGMSG(("AP_BeOSDialog_Options::AP_B=
eOSDialog_Options[%s:%d]", __FILE__, __LINE__));=0A	UT_DEBUGMSG(("    curre=
nt pref : %s",=0A		prefs->getCurrentScheme()->getSchemeName()) );=0A=0A	UT_=
Bool b =3D prefs->savePrefsFile();=0A	UT_DEBUGMSG(("    prefs saved (%d) in=
 %s", b, prefs->getPrefsPathname() ));=0A=0A	UT_uint32 i;=0A	XAP_PrefsSchem=
e *ps;=0A	for ( i =3D 0; (ps =3D prefs->getNthScheme(i)) !=3D 0; i++ ) {=0A=
		UT_DEBUGMSG(("    %d [%s]", i, ps->getSchemeName() ));=0A	=0A		XML_Char c=
onst *pszKey, *pszValue;=0A		for ( UT_uint32 j =3D 0; ps->getNthValue(j, &p=
szKey, &pszValue ); j++ ) {=0A			UT_DEBUGMSG(("        %x %-30s : %s", j, p=
szKey, pszValue ));=0A		}=0A	}=0A#endif=0A}=0A=0AAP_BeOSDialog_Options::~AP=
_BeOSDialog_Options(void)=0A{=0A}=0A=0A/***********************************=
******************************/=0A=0A// sample callback function=0Astatic v=
oid s_ok_clicked(GtkWidget * widget, AP_BeOSDialog_Options * dlg)=0A{ UT_AS=
SERT(widget && dlg); dlg->event_OK(); }=0A=0Astatic void s_cancel_clicked(G=
tkWidget * widget, AP_BeOSDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg=
); dlg->event_Cancel(); }=0A=0Astatic void s_delete_clicked(GtkWidget * /* =
widget */,=0A                             gpointer /* data */,=0A          =
                   AP_BeOSDialog_Options * dlg)=0A{ UT_ASSERT(dlg); dlg->ev=
ent_WindowDelete(); }=0A=0A// toggle buttons=0A#if 0=0Astatic void s_check_=
widoworphancontrol_toggled(GtkWidget * widget, AP_BeOSDialog_Options * dlg)=
=0A{ UT_ASSERT(widget && dlg); dlg->event_WidowOrphanControlToggled(); }=0A=
=0Astatic void s_check_keeplinestogether_toggled(GtkWidget * widget, AP_BeO=
SDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_KeepLinesTo=
getherToggled(); }=0A=0Astatic void s_check_keepwithnext_toggled(GtkWidget =
* widget, AP_BeOSDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->e=
vent_KeepWithNextToggled(); }=0A=0Astatic void s_check_pagebreakbefore_togg=
led(GtkWidget * widget, AP_BeOSDialog_Options * dlg)=0A{ UT_ASSERT(widget &=
& dlg); dlg->event_PageBreakBeforeToggled(); }=0A=0Astatic void s_check_sup=
presslinenumbers_toggled(GtkWidget * widget, AP_BeOSDialog_Options * dlg)=
=0A{ UT_ASSERT(widget && dlg); dlg->event_SuppressLineNumbersToggled(); }=
=0A=0Astatic void s_check_nohyphenate_toggled(GtkWidget * widget, AP_BeOSDi=
alog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_NoHyphenateTog=
gled(); }=0A#endif=0A=0A// preview drawing area=0A=0A/*********************=
********************************************/=0A=0Avoid AP_BeOSDialog_Optio=
ns::runModal(XAP_Frame * pFrame)=0A{=0A#if 0=0A    // Build the window's wi=
dgets and arrange them=0A    GtkWidget * mainWindow =3D _constructWindow();=
=0A    UT_ASSERT(mainWindow);=0A=0A    // Populate the window's data items=
=0A    _populateWindowData();=0A=0A    // To center the dialog, we need the=
 frame of its parent.=0A    XAP_BeOSFrame * pBeOSFrame =3D static_cast<XAP_=
BeOSFrame *>(pFrame);=0A    UT_ASSERT(pBeOSFrame);=0A    =0A    // Get the =
GtkWindow of the parent frame=0A    GtkWidget * parentWindow =3D pBeOSFrame=
->getTopLevelWindow();=0A    UT_ASSERT(parentWindow);=0A    =0A    // Cente=
r our new dialog in its parent and make it a transient=0A    // so it won't=
 get lost underneath=0A    centerDialog(parentWindow, mainWindow);=0A    gt=
k_window_set_transient_for(GTK_WINDOW(mainWindow), GTK_WINDOW(parentWindow)=
);=0A=0A    // Show the top level dialog,=0A    gtk_widget_show(mainWindow)=
;=0A=0A    // Make it modal, and stick it up top=0A    gtk_grab_add(mainWin=
dow);=0A=0A    // Run into the GTK event loop for this window.=0A    gtk_ma=
in();=0A=0A    _storeWindowData();=0A    =0A    gtk_widget_destroy(mainWind=
ow);=0A#endif=0A}=0A=0Avoid AP_BeOSDialog_Options::event_OK(void)=0A{=0A   =
 m_answer =3D AP_Dialog_Options::a_OK;=0A//    gtk_main_quit();=0A}=0A=0Avo=
id AP_BeOSDialog_Options::event_Cancel(void)=0A{=0A    m_answer =3D AP_Dial=
og_Options::a_CANCEL;=0A//    gtk_main_quit();=0A}=0A=0Avoid AP_BeOSDialog_=
Options::event_WindowDelete(void)=0A{=0A    m_answer =3D AP_Dialog_Options:=
:a_CANCEL;    =0A//    gtk_main_quit();=0A}=0A=0A/*************************=
***************/=0A=0A// Alignment methods=0A=0A//void AP_BeOSDialog_Option=
s::event_AlignmentChanged(void) { }=0A=0A/*********************************=
*******/=0A=0A// generic methods for spin buttons=0A#if 0=0Avoid AP_BeOSDia=
log_Options::event_UpdateEntry(GtkWidget * widget)=0A{=0A    gchar * oldtex=
t =3D gtk_entry_get_text(GTK_ENTRY(widget));=0A=0A    XML_Char * newtext =
=3D _filterUserInput((XML_Char *) oldtext);=0A=0A    // we have to protect =
this section with a lock, so that updating=0A    // the text doesn't trigge=
r this same event=0A    {=0A        gtk_object_set_data(GTK_OBJECT(widget),=
 "updatelock", (void *) TRUE);=0A    =0A        if ( ((gboolean) gtk_object=
_get_data(GTK_OBJECT(widget), "updatelock")) =3D=3D FALSE)=0A            gt=
k_entry_set_text(GTK_ENTRY(widget), (const gchar *) newtext);=0A=0A        =
gtk_object_set_data(GTK_OBJECT(widget), "updatelock", (void *) FALSE);=0A  =
  }=0A}=0A#endif=0A=0A#if 0=0Avoid AP_BeOSDialog_Options::event_UnitSpinBut=
tonChanged(GtkWidget * spinbutton, GtkAdjustment * adj)=0A{=0A    UT_ASSERT=
(spinbutton && adj);=0A    =0A    const char * newvalue =3D=0A        UT_co=
nvertToDimensionString(m_dim, (double) adj->value, ".1");=0A=0A    UT_ASSER=
T(newvalue);=0A=0A    GtkSpinButton * sb =3D GTK_SPIN_BUTTON(spinbutton);=
=0A=0A    GtkEntry * entry =3D & sb->entry;=0A    =0A    gtk_entry_set_text=
(entry, newvalue);=0A}=0A=0Avoid AP_BeOSDialog_Options::event_UnitlessSpinB=
uttonChanged(GtkWidget * spinbutton, GtkAdjustment * adj)=0A{=0A    UT_ASSE=
RT(spinbutton && adj);=0A    =0A    const char * newvalue =3D=0A        UT_=
convertToDimensionString(m_dim, (double) adj->value, ".1");=0A=0A    UT_ASS=
ERT(newvalue);=0A=0A    GtkSpinButton * sb =3D GTK_SPIN_BUTTON(spinbutton);=
=0A=0A    GtkEntry * entry =3D & sb->entry;=0A    =0A    gtk_entry_set_text=
(entry, newvalue);=0A}=0A#endif=0A=0A/*************************************=
***/=0A=0A/****************************************************************=
*/=0A=0A#if 0=0A=0AAP_Dialog_Options::tAlignment AP_BeOSDialog_Options::_ga=
therAlignmentType(void) {}=0Avoid AP_BeOSDialog_Options::_setAlignmentType(=
AP_Dialog_Options::tAlignment alignment) {}=0AAP_Dialog_Options::tSpecialIn=
dent AP_BeOSDialog_Options::_gatherSpecialIndentType(void) {}=0Avoid AP_BeO=
SDialog_Options::_setSpecialIndentType(AP_Dialog_Options::tSpecialIndent in=
dent) {}=0AAP_Dialog_Options::tLineSpacing AP_BeOSDialog_Options::_gatherLi=
neSpacingType(void) {}=0Avoid AP_BeOSDialog_Options::_setLineSpacingType(AP=
_Dialog_Options::tLineSpacing spacing) {}=0A    =0Aconst XML_Char *    AP_B=
eOSDialog_Options::_gatherLeftIndent(void) {}=0Avoid                AP_BeOS=
Dialog_Options::_setLeftIndent(const XML_Char * indent) {}=0Aconst XML_Char=
 *    AP_BeOSDialog_Options::_gatherRightIndent(void) {}=0Avoid            =
    AP_BeOSDialog_Options::_setRightIndent(const XML_Char * indent) {}=0Aco=
nst XML_Char *    AP_BeOSDialog_Options::_gatherSpecialIndent(void) {}=0Avo=
id                AP_BeOSDialog_Options::_setSpecialIndent(const XML_Char *=
 indent) {}=0A    =0Aconst XML_Char *    AP_BeOSDialog_Options::_gatherBefo=
reSpacing(void) {}=0Avoid                AP_BeOSDialog_Options::_setBeforeS=
pacing(const XML_Char * spacing) {}=0Aconst XML_Char *    AP_BeOSDialog_Opt=
ions::_gatherAfterSpacing(void) {}=0Avoid                AP_BeOSDialog_Opti=
ons::_setAfterSpacing(const XML_Char * spacing) {}=0Aconst XML_Char *    AP=
_BeOSDialog_Options::_gatherSpecialSpacing(void) {}    =0Avoid             =
   AP_BeOSDialog_Options::_setSpecialSpacing(const XML_Char * spacing) {}=
=0A    =0AUT_Bool                AP_BeOSDialog_Options::_gatherWidowOrphanC=
ontrol(void) {}=0Avoid                AP_BeOSDialog_Options::_setWidowOrpha=
nControl(UT_Bool b) {}=0AUT_Bool                AP_BeOSDialog_Options::_gat=
herKeepLinesTogether(void) {}=0Avoid                AP_BeOSDialog_Options::=
_setKeepLinesTogether(UT_Bool b) {}=0AUT_Bool                AP_BeOSDialog_=
Options::_gatherKeepWithNext(void) {}=0Avoid                AP_BeOSDialog_O=
ptions::_setKeepWithNext(UT_Bool b) {}=0AUT_Bool                AP_BeOSDial=
og_Options::_gatherSuppressLineNumbers(void) {}=0Avoid                AP_Be=
OSDialog_Options::_setSuppressLineNumbers(UT_Bool b) {}=0AUT_Bool          =
      AP_BeOSDialog_Options::_gatherNoHyphenate(void) {}=0Avoid            =
    AP_BeOSDialog_Options::_setNoHyphenate(UT_Bool b) {}=0A=0A#endif=0A=0A/=
*****************************************************************/=0A=0A/*=
=0AGtkWidget* AP_BeOSDialog_Options::_constructWindow ()=0A{=0A}=0A*/=0A=0A=
UT_Bool     AP_BeOSDialog_Options::_gatherSpellCheckAsType(void)	{ return U=
T_TRUE; }=0Avoid        AP_BeOSDialog_Options::_setSpellCheckAsType(UT_Bool=
 b) { b =3D b; }=0AUT_Bool     AP_BeOSDialog_Options::_gatherSpellHideError=
s(void)	{ return UT_TRUE; }=0Avoid        AP_BeOSDialog_Options::_setSpellH=
ideErrors(UT_Bool b)	{ b =3D b; }=0AUT_Bool     AP_BeOSDialog_Options::_gat=
herSpellSuggest(void)		{ return UT_TRUE; }=0Avoid        AP_BeOSDialog_Opti=
ons::_setSpellSuggest(UT_Bool b)		{ b =3D b; }=0AUT_Bool     AP_BeOSDialog_=
Options::_gatherSpellMainOnly(void)		{ return UT_TRUE; }=0Avoid        AP_B=
eOSDialog_Options::_setSpellMainOnly(UT_Bool b)	{ b =3D b; }=0AUT_Bool     =
AP_BeOSDialog_Options::_gatherSpellUppercase(void)		{ return UT_TRUE; }=0Av=
oid        AP_BeOSDialog_Options::_setSpellUppercase(UT_Bool b)	{ b =3D b; =
}=0AUT_Bool     AP_BeOSDialog_Options::_gatherSpellNumbers(void)		{ return =
UT_TRUE; }=0Avoid        AP_BeOSDialog_Options::_setSpellNumbers(UT_Bool b)=
		{ b =3D b; }=0AUT_Bool     AP_BeOSDialog_Options::_gatherSpellInternet(vo=
id)		{ return UT_TRUE; }=0Avoid        AP_BeOSDialog_Options::_setSpellInte=
rnet(UT_Bool b)	{ b =3D b; }=0A=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00wp/ap/unix/ap_UnixDialog_Options.h=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=000100664=000001025=000000764=0000000007535=000700126=
6134=00016455=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =0A * This program =
is free software; you can redistribute it and/or=0A * modify it under the t=
erms of the GNU General Public License=0A * as published by the Free Softwa=
re Foundation; either version 2=0A * of the License, or (at your option) an=
y later version.=0A * =0A * This program is distributed in the hope that it=
 will be useful,=0A * but WITHOUT ANY WARRANTY; without even the implied wa=
rranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See th=
e=0A * GNU General Public License for more details.=0A * =0A * You should h=
ave received a copy of the GNU General Public License=0A * along with this =
program; if not, write to the Free Software=0A * Foundation, Inc., 59 Templ=
e Place - Suite 330, Boston, MA  =0A * 02111-1307, USA.=0A */=0A=0A#ifndef =
AP_UNIXDIALOG_OPTIONS_H=0A#define AP_UNIXDIALOG_OPTIONS_H=0A=0A#include "xa=
p_UnixFontManager.h"=0A=0A#include "ap_Dialog_Options.h"=0A=0Aclass XAP_Uni=
xFrame;=0A=0A/*************************************************************=
****/=0A=0Aclass AP_UnixDialog_Options: public AP_Dialog_Options=0A{=0Apubl=
ic:=0A	AP_UnixDialog_Options(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id=
 id);=0A	virtual ~AP_UnixDialog_Options(void);=0A=0A	virtual void			runModa=
l(XAP_Frame * pFrame);=0A=0A	static XAP_Dialog *		static_constructor(XAP_Di=
alogFactory *, XAP_Dialog_Id id);=0A=0A	// callbacks can fire these events=
=0A	virtual void event_OK(void);=0A	virtual void event_Cancel(void);=0A	vir=
tual void event_WindowDelete(void);=0A=0A	// Indents and Spacing page=0A//	=
virtual void event_AlignmentChanged(void);=0A=0A	// actions for all indent-=
related spin-button changes are the same=0A//	virtual void event_UpdateEntr=
y(GtkWidget * widget);=0A//	virtual void event_IndentSpinButtonChanged(GtkW=
idget * spinbutton, GtkAdjustment * adj);=0A//	virtual void event_SpecialIn=
dentListChanged(void);=0A=0A	// actions for all spacing-related spin-button=
 changes are the same=0A//	virtual void event_SpacingSpinButtonChanged(GtkW=
idget * spinbutton, GtkAdjustment * adj);=0A//	virtual void event_SpecialSp=
acingListChanged(void);=0A=0A	// Line and Page Breaks=0A//	virtual void eve=
nt_WidowOrphanControlToggled(void);=0A//	virtual void event_KeepLinesTogeth=
erToggled(void);=0A//	virtual void event_KeepWithNextToggled(void);=0A//	vi=
rtual void event_PageBreakBeforeToggled(void);=0A=0A//	virtual void event_S=
uppressLineNumbersToggled(void);=0A//	virtual void event_NoHyphenateToggled=
(void);=0A	=0A=0A protected:=0A=0A	// we implement these so the XP dialog c=
an set/grab our data=0A	=0A	virtual UT_Bool			_gatherSpellCheckAsType(void)=
;=0A	virtual void			_setSpellCheckAsType(UT_Bool b);=0A	virtual UT_Bool			_=
gatherSpellHideErrors(void);=0A	virtual void			_setSpellHideErrors(UT_Bool =
b);=0A	virtual UT_Bool			_gatherSpellSuggest(void);=0A	virtual void			_setS=
pellSuggest(UT_Bool b);=0A	virtual UT_Bool			_gatherSpellMainOnly(void);=0A=
	virtual void			_setSpellMainOnly(UT_Bool b);=0A	virtual UT_Bool			_gatherS=
pellUppercase(void);=0A	virtual void			_setSpellUppercase(UT_Bool b);=0A	vi=
rtual UT_Bool			_gatherSpellNumbers(void);=0A	virtual void			_setSpellNumbe=
rs(UT_Bool b);=0A	virtual UT_Bool			_gatherSpellInternet(void);=0A	virtual =
void			_setSpellInternet(UT_Bool b);=0A	=0A protected:=0A	//GR_UnixGraphics=
	* 		m_unixGraphics;=0A	=0A	// private construction functions=0A	GtkWidget =
* _constructWindow(void);=0A	void		_populateWindowData(void);=0A	void		_ena=
blePercentSpin(UT_Bool enable);=0A=0A	// pointers to widgets we need to que=
ry/set=0A	// there are a ton of them in this dialog=0A=0A	GtkWidget * m_win=
dowMain;=0A=0A    GtkWidget * m_checkbuttonSpellCheckAsType;=0A    GtkWidge=
t * m_checkbuttonSpellHideErrors;=0A    GtkWidget * m_checkbuttonSpellSugge=
st;=0A    GtkWidget * m_checkbuttonSpellMainOnly;=0A    GtkWidget * m_check=
buttonSpellUppercase;=0A    GtkWidget * m_checkbuttonSpellNumbers;=0A    Gt=
kWidget * m_checkbuttonSpellInternet;=0A=0A	GtkWidget * m_listSpellDicts;=
=0A	GtkWidget * m_listSpellDicts_menu;=0A	GtkWidget * m_buttonSpellDictiona=
ry;=0A=0A	GtkWidget * m_buttonOK;=0A	GtkWidget * m_buttonCancel;=0A=0A};=0A=
=0A#endif /* XAP_UNIXDIALOG_PARAGRAPH_H */=0A=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00wp/ap/unix/ap_UnixDialog_Options.cpp=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=000100664=000001025=000000764=0000000060366=0007001265570=0001701=
4=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00ustar  =00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00shack=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00/* AbiWord=
=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =0A * This program is free so=
ftware; you can redistribute it and/or=0A * modify it under the terms of th=
e GNU General Public License=0A * as published by the Free Software Foundat=
ion; either version 2=0A * of the License, or (at your option) any later ve=
rsion.=0A * =0A * This program is distributed in the hope that it will be u=
seful,=0A * but WITHOUT ANY WARRANTY; without even the implied warranty of=
=0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the=0A * GN=
U General Public License for more details.=0A * =0A * You should have recei=
ved a copy of the GNU General Public License=0A * along with this program; =
if not, write to the Free Software=0A * Foundation, Inc., 59 Temple Place -=
 Suite 330, Boston, MA  =0A * 02111-1307, USA.=0A */=0A=0A#include "ut_type=
s.h"=0A#include "ut_string.h"=0A#include "ut_assert.h"=0A#include "ut_debug=
msg.h"=0A=0A// This header defines some functions for Unix dialogs,=0A// li=
ke centering them, measuring them, etc.=0A#include "ut_dialogHelper.h"=0A=
=0A#include "gr_UnixGraphics.h"=0A=0A#include "xap_App.h"=0A#include "xap_U=
nixApp.h"=0A#include "xap_UnixFrame.h"=0A#include "xap_Prefs.h"=0A=0A#inclu=
de "ap_Dialog_Id.h"=0A#include "ap_Prefs_SchemeIds.h"=0A=0A#include "ap_Str=
ings.h"=0A=0A#include "ap_UnixDialog_Options.h"=0A=0A/*********************=
********************************************/=0A=0A#define WIDGET_DIALOG_TA=
G "dialog"=0A=0A/**********************************************************=
*******/=0A=0AXAP_Dialog * AP_UnixDialog_Options::static_constructor(XAP_Di=
alogFactory * pFactory,=0A                                                 =
        XAP_Dialog_Id id)=0A{=0A    AP_UnixDialog_Options * p =3D new AP_Un=
ixDialog_Options(pFactory,id);=0A    return p;=0A}=0A=0AAP_UnixDialog_Optio=
ns::AP_UnixDialog_Options(XAP_DialogFactory * pDlgFactory,=0A              =
                                   XAP_Dialog_Id id)=0A    : AP_Dialog_Opti=
ons(pDlgFactory,id)=0A{=0A#if 0=0A	XAP_Prefs *prefs =3D m_pApp->getPrefs();=
=0A	UT_ASSERT(prefs);=0A	UT_DEBUGMSG(("AP_UnixDialog_Options::AP_UnixDialog=
_Options[%s:%d]", __FILE__, __LINE__));=0A	UT_DEBUGMSG(("    current pref :=
 %s",=0A		prefs->getCurrentScheme()->getSchemeName()) );=0A=0A	UT_Bool b =
=3D prefs->savePrefsFile();=0A	UT_DEBUGMSG(("    prefs saved (%d) in %s", b=
, prefs->getPrefsPathname() ));=0A=0A	UT_uint32 i;=0A	XAP_PrefsScheme *ps;=
=0A	for ( i =3D 0; (ps =3D prefs->getNthScheme(i)) !=3D 0; i++ ) {=0A		UT_D=
EBUGMSG(("    %d [%s]", i, ps->getSchemeName() ));=0A	=0A		XML_Char const *=
pszKey, *pszValue;=0A		for ( UT_uint32 j =3D 0; ps->getNthValue(j, &pszKey,=
 &pszValue ); j++ ) {=0A			UT_DEBUGMSG(("        %x %-30s : %s", j, pszKey,=
 pszValue ));=0A		}=0A	}=0A#endif=0A}=0A=0AAP_UnixDialog_Options::~AP_UnixD=
ialog_Options(void)=0A{=0A}=0A=0A/*****************************************=
************************/=0A=0A// sample callback function=0Astatic void s_=
ok_clicked(GtkWidget * widget, AP_UnixDialog_Options * dlg)=0A{ UT_ASSERT(w=
idget && dlg); dlg->event_OK(); }=0A=0Astatic void s_cancel_clicked(GtkWidg=
et * widget, AP_UnixDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg=
->event_Cancel(); }=0A=0Astatic void s_delete_clicked(GtkWidget * /* widget=
 */,=0A                             gpointer /* data */,=0A                =
             AP_UnixDialog_Options * dlg)=0A{ UT_ASSERT(dlg); dlg->event_Wi=
ndowDelete(); }=0A=0A// toggle buttons=0A#if 0=0Astatic void s_check_widowo=
rphancontrol_toggled(GtkWidget * widget, AP_UnixDialog_Options * dlg)=0A{ U=
T_ASSERT(widget && dlg); dlg->event_WidowOrphanControlToggled(); }=0A=0Asta=
tic void s_check_keeplinestogether_toggled(GtkWidget * widget, AP_UnixDialo=
g_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_KeepLinesTogether=
Toggled(); }=0A=0Astatic void s_check_keepwithnext_toggled(GtkWidget * widg=
et, AP_UnixDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_K=
eepWithNextToggled(); }=0A=0Astatic void s_check_pagebreakbefore_toggled(Gt=
kWidget * widget, AP_UnixDialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg)=
; dlg->event_PageBreakBeforeToggled(); }=0A=0Astatic void s_check_suppressl=
inenumbers_toggled(GtkWidget * widget, AP_UnixDialog_Options * dlg)=0A{ UT_=
ASSERT(widget && dlg); dlg->event_SuppressLineNumbersToggled(); }=0A=0Astat=
ic void s_check_nohyphenate_toggled(GtkWidget * widget, AP_UnixDialog_Optio=
ns * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_NoHyphenateToggled(); }=
=0A#endif=0A=0A// preview drawing area=0A=0A/******************************=
***********************************/=0A=0Avoid AP_UnixDialog_Options::runMo=
dal(XAP_Frame * pFrame)=0A{=0A    // Build the window's widgets and arrange=
 them=0A    GtkWidget * mainWindow =3D _constructWindow();=0A    UT_ASSERT(=
mainWindow);=0A=0A    // Populate the window's data items=0A    _populateWi=
ndowData();=0A=0A    // To center the dialog, we need the frame of its pare=
nt.=0A    XAP_UnixFrame * pUnixFrame =3D static_cast<XAP_UnixFrame *>(pFram=
e);=0A    UT_ASSERT(pUnixFrame);=0A    =0A    // Get the GtkWindow of the p=
arent frame=0A    GtkWidget * parentWindow =3D pUnixFrame->getTopLevelWindo=
w();=0A    UT_ASSERT(parentWindow);=0A    =0A    // Center our new dialog i=
n its parent and make it a transient=0A    // so it won't get lost undernea=
th=0A    centerDialog(parentWindow, mainWindow);=0A    gtk_window_set_trans=
ient_for(GTK_WINDOW(mainWindow), GTK_WINDOW(parentWindow));=0A=0A    // Sho=
w the top level dialog,=0A    gtk_widget_show(mainWindow);=0A=0A    // Make=
 it modal, and stick it up top=0A    gtk_grab_add(mainWindow);=0A=0A    // =
Run into the GTK event loop for this window.=0A    gtk_main();=0A=0A    _st=
oreWindowData();=0A    =0A    gtk_widget_destroy(mainWindow);=0A}=0A=0Avoid=
 AP_UnixDialog_Options::event_OK(void)=0A{=0A    m_answer =3D AP_Dialog_Opt=
ions::a_OK;=0A    gtk_main_quit();=0A}=0A=0Avoid AP_UnixDialog_Options::eve=
nt_Cancel(void)=0A{=0A    m_answer =3D AP_Dialog_Options::a_CANCEL;=0A    g=
tk_main_quit();=0A}=0A=0Avoid AP_UnixDialog_Options::event_WindowDelete(voi=
d)=0A{=0A    m_answer =3D AP_Dialog_Options::a_CANCEL;    =0A    gtk_main_q=
uit();=0A}=0A=0A/****************************************/=0A=0A// Alignmen=
t methods=0A=0A//void AP_UnixDialog_Options::event_AlignmentChanged(void) {=
 }=0A=0A/****************************************/=0A=0A// generic methods =
for spin buttons=0A#if 0=0Avoid AP_UnixDialog_Options::event_UpdateEntry(Gt=
kWidget * widget)=0A{=0A    gchar * oldtext =3D gtk_entry_get_text(GTK_ENTR=
Y(widget));=0A=0A    XML_Char * newtext =3D _filterUserInput((XML_Char *) o=
ldtext);=0A=0A    // we have to protect this section with a lock, so that u=
pdating=0A    // the text doesn't trigger this same event=0A    {=0A       =
 gtk_object_set_data(GTK_OBJECT(widget), "updatelock", (void *) TRUE);=0A  =
  =0A        if ( ((gboolean) gtk_object_get_data(GTK_OBJECT(widget), "upda=
telock")) =3D=3D FALSE)=0A            gtk_entry_set_text(GTK_ENTRY(widget),=
 (const gchar *) newtext);=0A=0A        gtk_object_set_data(GTK_OBJECT(widg=
et), "updatelock", (void *) FALSE);=0A    }=0A}=0A#endif=0A=0A#if 0=0Avoid =
AP_UnixDialog_Options::event_UnitSpinButtonChanged(GtkWidget * spinbutton, =
GtkAdjustment * adj)=0A{=0A    UT_ASSERT(spinbutton && adj);=0A    =0A    c=
onst char * newvalue =3D=0A        UT_convertToDimensionString(m_dim, (doub=
le) adj->value, ".1");=0A=0A    UT_ASSERT(newvalue);=0A=0A    GtkSpinButton=
 * sb =3D GTK_SPIN_BUTTON(spinbutton);=0A=0A    GtkEntry * entry =3D & sb->=
entry;=0A    =0A    gtk_entry_set_text(entry, newvalue);=0A}=0A=0Avoid AP_U=
nixDialog_Options::event_UnitlessSpinButtonChanged(GtkWidget * spinbutton, =
GtkAdjustment * adj)=0A{=0A    UT_ASSERT(spinbutton && adj);=0A    =0A    c=
onst char * newvalue =3D=0A        UT_convertToDimensionString(m_dim, (doub=
le) adj->value, ".1");=0A=0A    UT_ASSERT(newvalue);=0A=0A    GtkSpinButton=
 * sb =3D GTK_SPIN_BUTTON(spinbutton);=0A=0A    GtkEntry * entry =3D & sb->=
entry;=0A    =0A    gtk_entry_set_text(entry, newvalue);=0A}=0A#endif=0A=0A=
/****************************************/=0A=0A/**************************=
***************************************/=0A=0A#if 0=0A=0AAP_Dialog_Options:=
:tAlignment AP_UnixDialog_Options::_gatherAlignmentType(void) {}=0Avoid AP_=
UnixDialog_Options::_setAlignmentType(AP_Dialog_Options::tAlignment alignme=
nt) {}=0AAP_Dialog_Options::tSpecialIndent AP_UnixDialog_Options::_gatherSp=
ecialIndentType(void) {}=0Avoid AP_UnixDialog_Options::_setSpecialIndentTyp=
e(AP_Dialog_Options::tSpecialIndent indent) {}=0AAP_Dialog_Options::tLineSp=
acing AP_UnixDialog_Options::_gatherLineSpacingType(void) {}=0Avoid AP_Unix=
Dialog_Options::_setLineSpacingType(AP_Dialog_Options::tLineSpacing spacing=
) {}=0A    =0Aconst XML_Char *    AP_UnixDialog_Options::_gatherLeftIndent(=
void) {}=0Avoid                AP_UnixDialog_Options::_setLeftIndent(const =
XML_Char * indent) {}=0Aconst XML_Char *    AP_UnixDialog_Options::_gatherR=
ightIndent(void) {}=0Avoid                AP_UnixDialog_Options::_setRightI=
ndent(const XML_Char * indent) {}=0Aconst XML_Char *    AP_UnixDialog_Optio=
ns::_gatherSpecialIndent(void) {}=0Avoid                AP_UnixDialog_Optio=
ns::_setSpecialIndent(const XML_Char * indent) {}=0A    =0Aconst XML_Char *=
    AP_UnixDialog_Options::_gatherBeforeSpacing(void) {}=0Avoid            =
    AP_UnixDialog_Options::_setBeforeSpacing(const XML_Char * spacing) {}=
=0Aconst XML_Char *    AP_UnixDialog_Options::_gatherAfterSpacing(void) {}=
=0Avoid                AP_UnixDialog_Options::_setAfterSpacing(const XML_Ch=
ar * spacing) {}=0Aconst XML_Char *    AP_UnixDialog_Options::_gatherSpecia=
lSpacing(void) {}    =0Avoid                AP_UnixDialog_Options::_setSpec=
ialSpacing(const XML_Char * spacing) {}=0A    =0AUT_Bool                AP_=
UnixDialog_Options::_gatherWidowOrphanControl(void) {}=0Avoid              =
  AP_UnixDialog_Options::_setWidowOrphanControl(UT_Bool b) {}=0AUT_Bool    =
            AP_UnixDialog_Options::_gatherKeepLinesTogether(void) {}=0Avoid=
                AP_UnixDialog_Options::_setKeepLinesTogether(UT_Bool b) {}=
=0AUT_Bool                AP_UnixDialog_Options::_gatherKeepWithNext(void) =
{}=0Avoid                AP_UnixDialog_Options::_setKeepWithNext(UT_Bool b)=
 {}=0AUT_Bool                AP_UnixDialog_Options::_gatherSuppressLineNumb=
ers(void) {}=0Avoid                AP_UnixDialog_Options::_setSuppressLineN=
umbers(UT_Bool b) {}=0AUT_Bool                AP_UnixDialog_Options::_gathe=
rNoHyphenate(void) {}=0Avoid                AP_UnixDialog_Options::_setNoHy=
phenate(UT_Bool b) {}=0A=0A#endif=0A=0A/***********************************=
******************************/=0A=0AGtkWidget* AP_UnixDialog_Options::_con=
structWindow ()=0A{=0A    GtkWidget *windowOptions;=0A    GtkWidget *vbox1;=
=0A    GtkWidget *notebook1;=0A    GtkWidget *hbox1;=0A    GtkWidget *vbox2=
;=0A    GtkWidget *checkbuttonSpellCheckAsType;=0A    GtkWidget *checkbutto=
nSpellHideErrors;=0A    GtkWidget *checkbuttonSpellSuggest;=0A    GtkWidget=
 *checkbuttonSpellMainOnly;=0A    GtkWidget *checkbuttonSpellUppercase;=0A =
   GtkWidget *checkbuttonSpellNumbers;=0A    GtkWidget *checkbuttonSpellInt=
ernet;=0A    GtkWidget *hbox2;=0A    GtkWidget *labelSpellCustom;=0A    Gtk=
Widget *listSpellDicts;=0A    GtkWidget *listSpellDicts_menu;=0A    GtkWidg=
et *glade_menuitem;=0A    GtkWidget *buttonSpellDictionary;=0A    GtkWidget=
 *labelSpell;=0A    GtkWidget *hbox3;=0A    GtkWidget *hbuttonbox2;=0A    G=
tkWidget *buttonOK;=0A    GtkWidget *buttonCancel;=0A=0A    windowOptions =
=3D gtk_window_new (GTK_WINDOW_TOPLEVEL);=0A    gtk_object_set_data (GTK_OB=
JECT (windowOptions), "windowOptions", windowOptions);=0A    gtk_window_set=
_title (GTK_WINDOW (windowOptions), "Options");=0A=0A    vbox1 =3D gtk_vbox=
_new (FALSE, 0);=0A    gtk_widget_ref (vbox1);=0A    gtk_object_set_data_fu=
ll (GTK_OBJECT (windowOptions), "vbox1", vbox1,=0A                         =
     (GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (vbox1);=
=0A    gtk_container_add (GTK_CONTAINER (windowOptions), vbox1);=0A=0A    n=
otebook1 =3D gtk_notebook_new ();=0A    gtk_widget_ref (notebook1);=0A    g=
tk_object_set_data_full (GTK_OBJECT (windowOptions), "notebook1", notebook1=
,=0A                              (GtkDestroyNotify) gtk_widget_unref);=0A =
   gtk_widget_show (notebook1);=0A    gtk_box_pack_start (GTK_BOX (vbox1), =
notebook1, TRUE, TRUE, 0);=0A	gtk_container_set_border_width (GTK_CONTAINER=
 (notebook1), 10);=0A=0A    //---------------------------------------------=
-------------=0A	// begin spelling=0A=0A    hbox1 =3D gtk_hbox_new (FALSE, =
0);=0A    gtk_widget_ref (hbox1);=0A    gtk_object_set_data_full (GTK_OBJEC=
T (windowOptions), "hbox1", hbox1,=0A                              (GtkDest=
royNotify) gtk_widget_unref);=0A    gtk_widget_show (hbox1);=0A    gtk_cont=
ainer_add (GTK_CONTAINER (notebook1), hbox1);=0A    gtk_container_set_borde=
r_width (GTK_CONTAINER (hbox1), 10);=0A=0A    vbox2 =3D gtk_vbox_new (FALSE=
, 0);=0A    gtk_widget_ref (vbox2);=0A    gtk_object_set_data_full (GTK_OBJ=
ECT (windowOptions), "vbox2", vbox2,=0A                              (GtkDe=
stroyNotify) gtk_widget_unref);=0A    gtk_widget_show (vbox2);=0A    gtk_bo=
x_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 5);=0A=0A    checkbuttonS=
pellCheckAsType =3D gtk_check_button_new_with_label ("Check s&pelling as yo=
u type");=0A    gtk_widget_ref (checkbuttonSpellCheckAsType);=0A    gtk_obj=
ect_set_data_full (GTK_OBJECT (windowOptions), "checkbuttonSpellCheckAsType=
", checkbuttonSpellCheckAsType,=0A                              (GtkDestroy=
Notify) gtk_widget_unref);=0A    gtk_widget_show (checkbuttonSpellCheckAsTy=
pe);=0A    gtk_box_pack_start (GTK_BOX (vbox2), checkbuttonSpellCheckAsType=
, FALSE, FALSE, 0);=0A=0A    checkbuttonSpellHideErrors =3D gtk_check_butto=
n_new_with_label ("Hide &spelling errors in the document");=0A    gtk_widge=
t_ref (checkbuttonSpellHideErrors);=0A    gtk_object_set_data_full (GTK_OBJ=
ECT (windowOptions), "checkbuttonSpellHideErrors", checkbuttonSpellHideErro=
rs,=0A                              (GtkDestroyNotify) gtk_widget_unref);=
=0A    gtk_widget_show (checkbuttonSpellHideErrors);=0A    gtk_box_pack_sta=
rt (GTK_BOX (vbox2), checkbuttonSpellHideErrors, FALSE, FALSE, 0);=0A=0A   =
 checkbuttonSpellSuggest =3D gtk_check_button_new_with_label ("A&lways sugg=
est corrections");=0A    gtk_widget_ref (checkbuttonSpellSuggest);=0A    gt=
k_object_set_data_full (GTK_OBJECT (windowOptions), "checkbuttonSpellSugges=
t", checkbuttonSpellSuggest,=0A                              (GtkDestroyNot=
ify) gtk_widget_unref);=0A    gtk_widget_show (checkbuttonSpellSuggest);=0A=
    gtk_box_pack_start (GTK_BOX (vbox2), checkbuttonSpellSuggest, FALSE, FA=
LSE, 0);=0A=0A    checkbuttonSpellMainOnly =3D gtk_check_button_new_with_la=
bel ("Suggest from &main dictionary only");=0A    gtk_widget_ref (checkbutt=
onSpellMainOnly);=0A    gtk_object_set_data_full (GTK_OBJECT (windowOptions=
), "checkbuttonSpellMainOnly", checkbuttonSpellMainOnly,=0A                =
              (GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (=
checkbuttonSpellMainOnly);=0A    gtk_box_pack_start (GTK_BOX (vbox2), check=
buttonSpellMainOnly, FALSE, FALSE, 0);=0A=0A    checkbuttonSpellUppercase =
=3D gtk_check_button_new_with_label ("Ignore words in &UPPERCASE");=0A    g=
tk_widget_ref (checkbuttonSpellUppercase);=0A    gtk_object_set_data_full (=
GTK_OBJECT (windowOptions), "checkbuttonSpellUppercase", checkbuttonSpellUp=
percase,=0A                              (GtkDestroyNotify) gtk_widget_unre=
f);=0A    gtk_widget_show (checkbuttonSpellUppercase);=0A    gtk_box_pack_s=
tart (GTK_BOX (vbox2), checkbuttonSpellUppercase, FALSE, FALSE, 0);=0A=0A  =
  checkbuttonSpellNumbers =3D gtk_check_button_new_with_label ("Ignore word=
s with num&bers");=0A    gtk_widget_ref (checkbuttonSpellNumbers);=0A    gt=
k_object_set_data_full (GTK_OBJECT (windowOptions), "checkbuttonSpellNumber=
s", checkbuttonSpellNumbers,=0A                              (GtkDestroyNot=
ify) gtk_widget_unref);=0A    gtk_widget_show (checkbuttonSpellNumbers);=0A=
    gtk_box_pack_start (GTK_BOX (vbox2), checkbuttonSpellNumbers, FALSE, FA=
LSE, 0);=0A=0A    checkbuttonSpellInternet =3D gtk_check_button_new_with_la=
bel ("Ignore Internet and &file addresses");=0A    gtk_widget_ref (checkbut=
tonSpellInternet);=0A    gtk_object_set_data_full (GTK_OBJECT (windowOption=
s), "checkbuttonSpellInternet", checkbuttonSpellInternet,=0A               =
               (GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show =
(checkbuttonSpellInternet);=0A    gtk_box_pack_start (GTK_BOX (vbox2), chec=
kbuttonSpellInternet, FALSE, FALSE, 0);=0A=0A    hbox2 =3D gtk_hbox_new (FA=
LSE, 0);=0A    gtk_widget_ref (hbox2);=0A    gtk_object_set_data_full (GTK_=
OBJECT (windowOptions), "hbox2", hbox2,=0A                              (Gt=
kDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (hbox2);=0A    gtk=
_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);=0A=0A    labelSp=
ellCustom =3D gtk_label_new ("Custom dickion&ary: ");=0A    gtk_widget_ref =
(labelSpellCustom);=0A    gtk_object_set_data_full (GTK_OBJECT (windowOptio=
ns), "labelSpellCustom", labelSpellCustom,=0A                              =
(GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (labelSpellCust=
om);=0A    gtk_box_pack_start (GTK_BOX (hbox2), labelSpellCustom, FALSE, FA=
LSE, 0);=0A=0A    listSpellDicts =3D gtk_option_menu_new ();=0A    gtk_widg=
et_ref (listSpellDicts);=0A    gtk_object_set_data_full (GTK_OBJECT (window=
Options), "listSpellDicts", listSpellDicts,=0A                             =
 (GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (listSpellDict=
s);=0A    gtk_box_pack_start (GTK_BOX (hbox2), listSpellDicts, FALSE, FALSE=
, 10);=0A    listSpellDicts_menu =3D gtk_menu_new ();=0A    glade_menuitem =
=3D gtk_menu_item_new_with_label ("custom.dic");=0A    gtk_widget_show (gla=
de_menuitem);=0A    gtk_menu_append (GTK_MENU (listSpellDicts_menu), glade_=
menuitem);=0A    gtk_option_menu_set_menu (GTK_OPTION_MENU (listSpellDicts)=
, listSpellDicts_menu);=0A=0A    buttonSpellDictionary =3D gtk_button_new_w=
ith_label ("&Dictionary...");=0A    gtk_widget_ref (buttonSpellDictionary);=
=0A    gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonSpellDi=
ctionary", buttonSpellDictionary,=0A                              (GtkDestr=
oyNotify) gtk_widget_unref);=0A    gtk_widget_show (buttonSpellDictionary);=
=0A    gtk_box_pack_start (GTK_BOX (hbox2), buttonSpellDictionary, FALSE, F=
ALSE, 0);=0A=0A    labelSpell =3D gtk_label_new ("Spelling");=0A    gtk_wid=
get_ref (labelSpell);=0A    gtk_object_set_data_full (GTK_OBJECT (windowOpt=
ions), "labelSpell", labelSpell,=0A                              (GtkDestro=
yNotify) gtk_widget_unref);=0A    gtk_widget_show (labelSpell);=0A    gtk_n=
otebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page =
(GTK_NOTEBOOK (notebook1), 0), labelSpell);=0A=0A    hbox3 =3D gtk_hbox_new=
 (FALSE, 0);=0A    gtk_widget_ref (hbox3);=0A    gtk_object_set_data_full (=
GTK_OBJECT (windowOptions), "hbox3", hbox3,=0A                             =
 (GtkDestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (hbox3);=0A   =
 gtk_box_pack_start (GTK_BOX (vbox1), hbox3, FALSE, FALSE, 0);=0A=0A    hbu=
ttonbox2 =3D gtk_hbutton_box_new ();=0A    gtk_widget_ref (hbuttonbox2);=0A=
    gtk_object_set_data_full (GTK_OBJECT (windowOptions), "hbuttonbox2", hb=
uttonbox2,=0A                              (GtkDestroyNotify) gtk_widget_un=
ref);=0A    gtk_widget_show (hbuttonbox2);=0A    gtk_box_pack_end (GTK_BOX =
(hbox3), hbuttonbox2, FALSE, TRUE, 0);=0A    gtk_button_box_set_spacing (GT=
K_BUTTON_BOX (hbuttonbox2), 20);=0A=0A//-----------------------------------=
-------------------------=0A// end spelling stuff=0A=0A    buttonOK =3D gtk=
_button_new_with_label ("Ok");=0A    gtk_widget_ref (buttonOK);=0A    gtk_o=
bject_set_data_full (GTK_OBJECT (windowOptions), "buttonOK", buttonOK,=0A  =
                            (GtkDestroyNotify) gtk_widget_unref);=0A    gtk=
_widget_show (buttonOK);=0A    gtk_container_add (GTK_CONTAINER (hbuttonbox=
2), buttonOK);=0A    GTK_WIDGET_SET_FLAGS (buttonOK, GTK_CAN_DEFAULT);=0A=
=0A    buttonCancel =3D gtk_button_new_with_label ("Cancel");=0A    gtk_wid=
get_ref (buttonCancel);=0A    gtk_object_set_data_full (GTK_OBJECT (windowO=
ptions), "buttonCancel", buttonCancel,=0A                              (Gtk=
DestroyNotify) gtk_widget_unref);=0A    gtk_widget_show (buttonCancel);=0A =
   gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonCancel);=0A    GTK=
_WIDGET_SET_FLAGS (buttonCancel, GTK_CAN_DEFAULT);=0A=0A    ///////////////=
///////////////////////////////////////////////////////=0A    // the contro=
l buttons=0A    gtk_signal_connect(GTK_OBJECT(buttonOK),=0A                =
       "clicked",=0A                       GTK_SIGNAL_FUNC(s_ok_clicked),=
=0A                       (gpointer) this);=0A    =0A    gtk_signal_connect=
(GTK_OBJECT(buttonCancel),=0A                       "clicked",=0A          =
             GTK_SIGNAL_FUNC(s_cancel_clicked),=0A                       (g=
pointer) this);=0A=0A=0A    // the catch-alls=0A    gtk_signal_connect_afte=
r(GTK_OBJECT(windowOptions),=0A                             "delete_event",=
=0A                             GTK_SIGNAL_FUNC(s_delete_clicked),=0A      =
                       (gpointer) this);=0A=0A    gtk_signal_connect_after(=
GTK_OBJECT(windowOptions),=0A                             "destroy",=0A    =
                         NULL,=0A                             NULL);=0A=0A =
   // Update member variables with the important widgets that=0A    // migh=
t need to be queried or altered later.=0A=0A    m_windowMain =3D windowOpti=
ons;=0A=0A    m_checkbuttonSpellCheckAsType	=3D checkbuttonSpellCheckAsType=
;=0A    m_checkbuttonSpellHideErrors	=3D checkbuttonSpellHideErrors;=0A    =
m_checkbuttonSpellSuggest		=3D checkbuttonSpellSuggest;=0A    m_checkbutton=
SpellMainOnly		=3D checkbuttonSpellMainOnly;=0A    m_checkbuttonSpellUpperc=
ase		=3D checkbuttonSpellUppercase;=0A    m_checkbuttonSpellNumbers		=3D ch=
eckbuttonSpellNumbers;=0A    m_checkbuttonSpellInternet		=3D checkbuttonSpe=
llInternet;=0A=0A	m_listSpellDicts				=3D listSpellDicts;=0A	m_listSpellDic=
ts_menu			=3D listSpellDicts_menu;=0A	m_buttonSpellDictionary			=3D buttonS=
pellDictionary;=0A=0A    m_buttonOK =3D buttonOK;=0A    m_buttonCancel =3D =
buttonCancel;=0A    return windowOptions;=0A}=0A=0Avoid AP_UnixDialog_Optio=
ns::_populateWindowData(void)=0A{=0A	=0A	// TODO: move this logic when we g=
et a PrefsListener API=0A	const XML_Char * szAutoSpell;=0A	if (m_pApp->getP=
refsValue(AP_PREF_KEY_AutoSpellCheck,&szAutoSpell))=0A		m_SpellCheckAsType =
=3D (szAutoSpell[0] =3D=3D '1') ? UT_TRUE : UT_FALSE;=0A=0A	_setSpellCheckA=
sType( m_SpellCheckAsType );=0A=0A#if 0=0A    // alignment option menu =0A =
   UT_ASSERT(m_listAlignment);=0A    gtk_option_menu_set_history(GTK_OPTION=
_MENU(m_listAlignment),=0A                                (gint) m_paragrap=
hData.m_alignmentType);=0A=0A    // indent and paragraph margins=0A    UT_A=
SSERT(m_spinbuttonLeft);=0A    gtk_entry_set_text(GTK_ENTRY(m_spinbuttonLef=
t),=0A                       (const gchar *) m_paragraphData.m_leftIndent);=
=0A=0A    UT_ASSERT(m_spinbuttonRight);=0A    gtk_entry_set_text(GTK_ENTRY(=
m_spinbuttonRight),=0A                       (const gchar *) m_paragraphDat=
a.m_rightIndent);=0A=0A    UT_ASSERT(m_spinbuttonBy);=0A    gtk_entry_set_t=
ext(GTK_ENTRY(m_spinbuttonBy),=0A                       (const gchar *) m_p=
aragraphData.m_specialIndent);=0A=0A    UT_ASSERT(m_listSpecial);=0A    gtk=
_option_menu_set_history(GTK_OPTION_MENU(m_listSpecial),=0A                =
                (gint) m_paragraphData.m_specialIndentType);=0A    =0A    /=
/ if m_specialIndentType is "(none)" (OptionsDialogData::indent_NONE)=0A   =
 // then the "By" spin should be disabled=0A=0A    if (m_paragraphData.m_sp=
ecialIndentType =3D=3D OptionsDialogData::indent_NONE)=0A        gtk_widget=
_set_sensitive(GTK_WIDGET(m_spinbuttonBy), FALSE);=0A    else=0A        gtk=
_widget_set_sensitive(GTK_WIDGET(m_spinbuttonBy), TRUE);=0A#endif    =0A}=
=0A=0A=0AUT_Bool     AP_UnixDialog_Options::_gatherSpellCheckAsType(void) =
=0A{ =0A	return gtk_toggle_button_get_active ( =0A				GTK_TOGGLE_BUTTON(m_c=
heckbuttonSpellCheckAsType) );=0A}=0A=0Avoid        AP_UnixDialog_Options::=
_setSpellCheckAsType(UT_Bool b) =0A{ =0A	gtk_toggle_button_set_active (GTK_=
TOGGLE_BUTTON(m_checkbuttonSpellCheckAsType), b );=0A}=0A=0AUT_Bool     AP_=
UnixDialog_Options::_gatherSpellHideErrors(void) =0A{ =0A	return gtk_toggle=
_button_get_active ( =0A				GTK_TOGGLE_BUTTON(m_checkbuttonSpellHideErrors)=
 );=0A}=0A=0Avoid        AP_UnixDialog_Options::_setSpellHideErrors(UT_Bool=
 b) =0A{ =0A	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(m_checkbuttonS=
pellHideErrors), b );=0A}=0A=0AUT_Bool     AP_UnixDialog_Options::_gatherSp=
ellSuggest(void) =0A{ =0A	return gtk_toggle_button_get_active ( =0A				GTK_=
TOGGLE_BUTTON(m_checkbuttonSpellSuggest) );=0A}=0A=0Avoid        AP_UnixDia=
log_Options::_setSpellSuggest(UT_Bool b) =0A{ =0A	gtk_toggle_button_set_act=
ive (GTK_TOGGLE_BUTTON(m_checkbuttonSpellSuggest), b );=0A}=0A=0AUT_Bool   =
  AP_UnixDialog_Options::_gatherSpellMainOnly(void)=0A{ =0A	return gtk_togg=
le_button_get_active ( =0A				GTK_TOGGLE_BUTTON(m_checkbuttonSpellMainOnly)=
 );=0A}=0A=0Avoid        AP_UnixDialog_Options::_setSpellMainOnly(UT_Bool b=
)=0A{ =0A	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(m_checkbuttonSpel=
lMainOnly), b );=0A}=0A=0AUT_Bool     AP_UnixDialog_Options::_gatherSpellUp=
percase(void)=0A{ =0A	return gtk_toggle_button_get_active ( =0A				GTK_TOGG=
LE_BUTTON(m_checkbuttonSpellUppercase) );=0A}=0A=0Avoid        AP_UnixDialo=
g_Options::_setSpellUppercase(UT_Bool b)=0A{ =0A	gtk_toggle_button_set_acti=
ve (GTK_TOGGLE_BUTTON(m_checkbuttonSpellUppercase), b );=0A}=0A=0AUT_Bool  =
   AP_UnixDialog_Options::_gatherSpellNumbers(void) =0A{ =0A	return gtk_tog=
gle_button_get_active ( =0A				GTK_TOGGLE_BUTTON(m_checkbuttonSpellNumbers)=
 );=0A}=0A=0Avoid        AP_UnixDialog_Options::_setSpellNumbers(UT_Bool b)=
 =0A{ =0A	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(m_checkbuttonSpel=
lNumbers), b );=0A}=0A=0AUT_Bool     AP_UnixDialog_Options::_gatherSpellInt=
ernet(void) =0A{ =0A	return gtk_toggle_button_get_active ( =0A				GTK_TOGGL=
E_BUTTON(m_checkbuttonSpellInternet) );=0A}=0A=0Avoid        AP_UnixDialog_=
Options::_setSpellInternet(UT_Bool b) =0A{ =0A	gtk_toggle_button_set_active=
 (GTK_TOGGLE_BUTTON(m_checkbuttonSpellInternet), b );=0A}=0A=0A=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00wp/ap/win/ap_Win32Dialog_Options.h=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=000100664=000001025=000000764=00=
00000006566=0007001267175=00016257=00 0=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A =
* =0A * This program is free software; you can redistribute it and/or=0A * =
modify it under the terms of the GNU General Public License=0A * as publish=
ed by the Free Software Foundation; either version 2=0A * of the License, o=
r (at your option) any later version.=0A * =0A * This program is distribute=
d in the hope that it will be useful,=0A * but WITHOUT ANY WARRANTY; withou=
t even the implied warranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTIC=
ULAR PURPOSE.  See the=0A * GNU General Public License for more details.=0A=
 * =0A * You should have received a copy of the GNU General Public License=
=0A * along with this program; if not, write to the Free Software=0A * Foun=
dation, Inc., 59 Temple Place - Suite 330, Boston, MA  =0A * 02111-1307, US=
A.=0A */=0A=0A#ifndef AP_WIN32DIALOG_OPTIONS_H=0A#define AP_WIN32DIALOG_OPT=
IONS_H=0A=0A#include "xap_Win32FontManager.h"=0A=0A#include "ap_Dialog_Opti=
ons.h"=0A=0Aclass XAP_Win32Frame;=0A=0A/***********************************=
******************************/=0A=0Aclass AP_Win32Dialog_Options: public A=
P_Dialog_Options=0A{=0Apublic:=0A	AP_Win32Dialog_Options(XAP_DialogFactory =
* pDlgFactory, XAP_Dialog_Id id);=0A	virtual ~AP_Win32Dialog_Options(void);=
=0A=0A	virtual void			runModal(XAP_Frame * pFrame);=0A=0A	static XAP_Dialog=
 *		static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id);=0A=0A	// cal=
lbacks can fire these events=0A	virtual void event_OK(void);=0A	virtual voi=
d event_Cancel(void);=0A	virtual void event_WindowDelete(void);=0A=0A	// In=
dents and Spacing page=0A//	virtual void event_AlignmentChanged(void);=0A=
=0A	// actions for all indent-related spin-button changes are the same=0A//=
	virtual void event_UpdateEntry(GtkWidget * widget);=0A//	virtual void even=
t_IndentSpinButtonChanged(GtkWidget * spinbutton, GtkAdjustment * adj);=0A/=
/	virtual void event_SpecialIndentListChanged(void);=0A=0A	// actions for a=
ll spacing-related spin-button changes are the same=0A//	virtual void event=
_SpacingSpinButtonChanged(GtkWidget * spinbutton, GtkAdjustment * adj);=0A/=
/	virtual void event_SpecialSpacingListChanged(void);=0A=0A	// Line and Pag=
e Breaks=0A//	virtual void event_WidowOrphanControlToggled(void);=0A//	virt=
ual void event_KeepLinesTogetherToggled(void);=0A//	virtual void event_Keep=
WithNextToggled(void);=0A//	virtual void event_PageBreakBeforeToggled(void)=
;=0A=0A//	virtual void event_SuppressLineNumbersToggled(void);=0A//	virtual=
 void event_NoHyphenateToggled(void);=0A	=0A=0A protected:=0A=0A	// we impl=
ement these so the XP dialog can set/grab our data=0A	=0A	virtual UT_Bool		=
	_gatherSpellCheckAsType(void);=0A	virtual void			_setSpellCheckAsType(UT_B=
ool b);=0A	virtual UT_Bool			_gatherSpellHideErrors(void);=0A	virtual void	=
		_setSpellHideErrors(UT_Bool b);=0A	virtual UT_Bool			_gatherSpellSuggest(=
void);=0A	virtual void			_setSpellSuggest(UT_Bool b);=0A	virtual UT_Bool			=
_gatherSpellMainOnly(void);=0A	virtual void			_setSpellMainOnly(UT_Bool b);=
=0A	virtual UT_Bool			_gatherSpellUppercase(void);=0A	virtual void			_setSp=
ellUppercase(UT_Bool b);=0A	virtual UT_Bool			_gatherSpellNumbers(void);=0A=
	virtual void			_setSpellNumbers(UT_Bool b);=0A	virtual UT_Bool			_gatherSp=
ellInternet(void);=0A	virtual void			_setSpellInternet(UT_Bool b);=0A	=0A p=
rotected:=0A	//GR_Win32Graphics	* 		m_unixGraphics;=0A	=0A	// private const=
ruction functions=0A	/*GtkWidget * _constructWindow(void);=0A	void		_popula=
teWindowData(void);=0A	void		_enablePercentSpin(UT_Bool enable);=0A	*/=0A=
=0A	// pointers to widgets we need to query/set=0A	// there are a ton of th=
em in this dialog=0A=0A};=0A=0A#endif /* XAP_WIN32DIALOG_PARAGRAPH_H */=0A=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00wp/ap/win/ap_Win32Dialog_Options.cpp=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=000100664=000001025=000000764=00000=
00025677=0007001267141=00016607=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =
=0A * This program is free software; you can redistribute it and/or=0A * mo=
dify it under the terms of the GNU General Public License=0A * as published=
 by the Free Software Foundation; either version 2=0A * of the License, or =
(at your option) any later version.=0A * =0A * This program is distributed =
in the hope that it will be useful,=0A * but WITHOUT ANY WARRANTY; without =
even the implied warranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTICUL=
AR PURPOSE.  See the=0A * GNU General Public License for more details.=0A *=
 =0A * You should have received a copy of the GNU General Public License=0A=
 * along with this program; if not, write to the Free Software=0A * Foundat=
ion, Inc., 59 Temple Place - Suite 330, Boston, MA  =0A * 02111-1307, USA.=
=0A */=0A=0A#include "ut_types.h"=0A#include "ut_string.h"=0A#include "ut_a=
ssert.h"=0A#include "ut_debugmsg.h"=0A=0A// This header defines some functi=
ons for Win32 dialogs,=0A// like centering them, measuring them, etc.=0A#in=
clude "ut_dialogHelper.h"=0A=0A#include "gr_Win32Graphics.h"=0A=0A#include =
"xap_App.h"=0A#include "xap_Win32App.h"=0A#include "xap_Win32Frame.h"=0A#in=
clude "xap_Prefs.h"=0A=0A#include "ap_Dialog_Id.h"=0A#include "ap_Prefs_Sch=
emeIds.h"=0A=0A#include "ap_Strings.h"=0A=0A#include "ap_Win32Dialog_Option=
s.h"=0A=0A/****************************************************************=
*/=0A=0A#define WIDGET_DIALOG_TAG "dialog"=0A=0A/**************************=
***************************************/=0A=0AXAP_Dialog * AP_Win32Dialog_O=
ptions::static_constructor(XAP_DialogFactory * pFactory,=0A                =
                                         XAP_Dialog_Id id)=0A{=0A    AP_Win=
32Dialog_Options * p =3D new AP_Win32Dialog_Options(pFactory,id);=0A    ret=
urn p;=0A}=0A=0AAP_Win32Dialog_Options::AP_Win32Dialog_Options(XAP_DialogFa=
ctory * pDlgFactory,=0A                                                 XAP=
_Dialog_Id id)=0A    : AP_Dialog_Options(pDlgFactory,id)=0A{=0A#if 0=0A	XAP=
_Prefs *prefs =3D m_pApp->getPrefs();=0A	UT_ASSERT(prefs);=0A	UT_DEBUGMSG((=
"AP_Win32Dialog_Options::AP_Win32Dialog_Options[%s:%d]", __FILE__, __LINE__=
));=0A	UT_DEBUGMSG(("    current pref : %s",=0A		prefs->getCurrentScheme()-=
>getSchemeName()) );=0A=0A	UT_Bool b =3D prefs->savePrefsFile();=0A	UT_DEBU=
GMSG(("    prefs saved (%d) in %s", b, prefs->getPrefsPathname() ));=0A=0A	=
UT_uint32 i;=0A	XAP_PrefsScheme *ps;=0A	for ( i =3D 0; (ps =3D prefs->getNt=
hScheme(i)) !=3D 0; i++ ) {=0A		UT_DEBUGMSG(("    %d [%s]", i, ps->getSchem=
eName() ));=0A	=0A		XML_Char const *pszKey, *pszValue;=0A		for ( UT_uint32 =
j =3D 0; ps->getNthValue(j, &pszKey, &pszValue ); j++ ) {=0A			UT_DEBUGMSG(=
("        %x %-30s : %s", j, pszKey, pszValue ));=0A		}=0A	}=0A#endif=0A}=
=0A=0AAP_Win32Dialog_Options::~AP_Win32Dialog_Options(void)=0A{=0A}=0A=0A/*=
****************************************************************/=0A=0A// s=
ample callback function=0Astatic void s_ok_clicked(GtkWidget * widget, AP_W=
in32Dialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_OK(); }=
=0A=0Astatic void s_cancel_clicked(GtkWidget * widget, AP_Win32Dialog_Optio=
ns * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_Cancel(); }=0A=0Astatic =
void s_delete_clicked(GtkWidget * /* widget */,=0A                         =
    gpointer /* data */,=0A                             AP_Win32Dialog_Opti=
ons * dlg)=0A{ UT_ASSERT(dlg); dlg->event_WindowDelete(); }=0A=0A// toggle =
buttons=0A#if 0=0Astatic void s_check_widoworphancontrol_toggled(GtkWidget =
* widget, AP_Win32Dialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->=
event_WidowOrphanControlToggled(); }=0A=0Astatic void s_check_keeplinestoge=
ther_toggled(GtkWidget * widget, AP_Win32Dialog_Options * dlg)=0A{ UT_ASSER=
T(widget && dlg); dlg->event_KeepLinesTogetherToggled(); }=0A=0Astatic void=
 s_check_keepwithnext_toggled(GtkWidget * widget, AP_Win32Dialog_Options * =
dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_KeepWithNextToggled(); }=0A=
=0Astatic void s_check_pagebreakbefore_toggled(GtkWidget * widget, AP_Win32=
Dialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); dlg->event_PageBreakBef=
oreToggled(); }=0A=0Astatic void s_check_suppresslinenumbers_toggled(GtkWid=
get * widget, AP_Win32Dialog_Options * dlg)=0A{ UT_ASSERT(widget && dlg); d=
lg->event_SuppressLineNumbersToggled(); }=0A=0Astatic void s_check_nohyphen=
ate_toggled(GtkWidget * widget, AP_Win32Dialog_Options * dlg)=0A{ UT_ASSERT=
(widget && dlg); dlg->event_NoHyphenateToggled(); }=0A#endif=0A=0A// previe=
w drawing area=0A=0A/******************************************************=
***********/=0A=0Avoid AP_Win32Dialog_Options::runModal(XAP_Frame * pFrame)=
=0A{=0A#if 0=0A    // Build the window's widgets and arrange them=0A    Gtk=
Widget * mainWindow =3D _constructWindow();=0A    UT_ASSERT(mainWindow);=0A=
=0A    // Populate the window's data items=0A    _populateWindowData();=0A=
=0A    // To center the dialog, we need the frame of its parent.=0A    XAP_=
Win32Frame * pWin32Frame =3D static_cast<XAP_Win32Frame *>(pFrame);=0A    U=
T_ASSERT(pWin32Frame);=0A    =0A    // Get the GtkWindow of the parent fram=
e=0A    GtkWidget * parentWindow =3D pWin32Frame->getTopLevelWindow();=0A  =
  UT_ASSERT(parentWindow);=0A    =0A    // Center our new dialog in its par=
ent and make it a transient=0A    // so it won't get lost underneath=0A    =
centerDialog(parentWindow, mainWindow);=0A    gtk_window_set_transient_for(=
GTK_WINDOW(mainWindow), GTK_WINDOW(parentWindow));=0A=0A    // Show the top=
 level dialog,=0A    gtk_widget_show(mainWindow);=0A=0A    // Make it modal=
, and stick it up top=0A    gtk_grab_add(mainWindow);=0A=0A    // Run into =
the GTK event loop for this window.=0A    gtk_main();=0A=0A    _storeWindow=
Data();=0A    =0A    gtk_widget_destroy(mainWindow);=0A#endif=0A}=0A=0Avoid=
 AP_Win32Dialog_Options::event_OK(void)=0A{=0A    m_answer =3D AP_Dialog_Op=
tions::a_OK;=0A//    gtk_main_quit();=0A}=0A=0Avoid AP_Win32Dialog_Options:=
:event_Cancel(void)=0A{=0A    m_answer =3D AP_Dialog_Options::a_CANCEL;=0A/=
/    gtk_main_quit();=0A}=0A=0Avoid AP_Win32Dialog_Options::event_WindowDel=
ete(void)=0A{=0A    m_answer =3D AP_Dialog_Options::a_CANCEL;    =0A//    g=
tk_main_quit();=0A}=0A=0A/****************************************/=0A=0A//=
 Alignment methods=0A=0A//void AP_Win32Dialog_Options::event_AlignmentChang=
ed(void) { }=0A=0A/****************************************/=0A=0A// generi=
c methods for spin buttons=0A#if 0=0Avoid AP_Win32Dialog_Options::event_Upd=
ateEntry(GtkWidget * widget)=0A{=0A    gchar * oldtext =3D gtk_entry_get_te=
xt(GTK_ENTRY(widget));=0A=0A    XML_Char * newtext =3D _filterUserInput((XM=
L_Char *) oldtext);=0A=0A    // we have to protect this section with a lock=
, so that updating=0A    // the text doesn't trigger this same event=0A    =
{=0A        gtk_object_set_data(GTK_OBJECT(widget), "updatelock", (void *) =
TRUE);=0A    =0A        if ( ((gboolean) gtk_object_get_data(GTK_OBJECT(wid=
get), "updatelock")) =3D=3D FALSE)=0A            gtk_entry_set_text(GTK_ENT=
RY(widget), (const gchar *) newtext);=0A=0A        gtk_object_set_data(GTK_=
OBJECT(widget), "updatelock", (void *) FALSE);=0A    }=0A}=0A#endif=0A=0A#i=
f 0=0Avoid AP_Win32Dialog_Options::event_UnitSpinButtonChanged(GtkWidget * =
spinbutton, GtkAdjustment * adj)=0A{=0A    UT_ASSERT(spinbutton && adj);=0A=
    =0A    const char * newvalue =3D=0A        UT_convertToDimensionString(=
m_dim, (double) adj->value, ".1");=0A=0A    UT_ASSERT(newvalue);=0A=0A    G=
tkSpinButton * sb =3D GTK_SPIN_BUTTON(spinbutton);=0A=0A    GtkEntry * entr=
y =3D & sb->entry;=0A    =0A    gtk_entry_set_text(entry, newvalue);=0A}=0A=
=0Avoid AP_Win32Dialog_Options::event_UnitlessSpinButtonChanged(GtkWidget *=
 spinbutton, GtkAdjustment * adj)=0A{=0A    UT_ASSERT(spinbutton && adj);=
=0A    =0A    const char * newvalue =3D=0A        UT_convertToDimensionStri=
ng(m_dim, (double) adj->value, ".1");=0A=0A    UT_ASSERT(newvalue);=0A=0A  =
  GtkSpinButton * sb =3D GTK_SPIN_BUTTON(spinbutton);=0A=0A    GtkEntry * e=
ntry =3D & sb->entry;=0A    =0A    gtk_entry_set_text(entry, newvalue);=0A}=
=0A#endif=0A=0A/****************************************/=0A=0A/***********=
******************************************************/=0A=0A#if 0=0A=0AAP_=
Dialog_Options::tAlignment AP_Win32Dialog_Options::_gatherAlignmentType(voi=
d) {}=0Avoid AP_Win32Dialog_Options::_setAlignmentType(AP_Dialog_Options::t=
Alignment alignment) {}=0AAP_Dialog_Options::tSpecialIndent AP_Win32Dialog_=
Options::_gatherSpecialIndentType(void) {}=0Avoid AP_Win32Dialog_Options::_=
setSpecialIndentType(AP_Dialog_Options::tSpecialIndent indent) {}=0AAP_Dial=
og_Options::tLineSpacing AP_Win32Dialog_Options::_gatherLineSpacingType(voi=
d) {}=0Avoid AP_Win32Dialog_Options::_setLineSpacingType(AP_Dialog_Options:=
:tLineSpacing spacing) {}=0A    =0Aconst XML_Char *    AP_Win32Dialog_Optio=
ns::_gatherLeftIndent(void) {}=0Avoid                AP_Win32Dialog_Options=
::_setLeftIndent(const XML_Char * indent) {}=0Aconst XML_Char *    AP_Win32=
Dialog_Options::_gatherRightIndent(void) {}=0Avoid                AP_Win32D=
ialog_Options::_setRightIndent(const XML_Char * indent) {}=0Aconst XML_Char=
 *    AP_Win32Dialog_Options::_gatherSpecialIndent(void) {}=0Avoid         =
       AP_Win32Dialog_Options::_setSpecialIndent(const XML_Char * indent) {=
}=0A    =0Aconst XML_Char *    AP_Win32Dialog_Options::_gatherBeforeSpacing=
(void) {}=0Avoid                AP_Win32Dialog_Options::_setBeforeSpacing(c=
onst XML_Char * spacing) {}=0Aconst XML_Char *    AP_Win32Dialog_Options::_=
gatherAfterSpacing(void) {}=0Avoid                AP_Win32Dialog_Options::_=
setAfterSpacing(const XML_Char * spacing) {}=0Aconst XML_Char *    AP_Win32=
Dialog_Options::_gatherSpecialSpacing(void) {}    =0Avoid                AP=
_Win32Dialog_Options::_setSpecialSpacing(const XML_Char * spacing) {}=0A   =
 =0AUT_Bool                AP_Win32Dialog_Options::_gatherWidowOrphanContro=
l(void) {}=0Avoid                AP_Win32Dialog_Options::_setWidowOrphanCon=
trol(UT_Bool b) {}=0AUT_Bool                AP_Win32Dialog_Options::_gather=
KeepLinesTogether(void) {}=0Avoid                AP_Win32Dialog_Options::_s=
etKeepLinesTogether(UT_Bool b) {}=0AUT_Bool                AP_Win32Dialog_O=
ptions::_gatherKeepWithNext(void) {}=0Avoid                AP_Win32Dialog_O=
ptions::_setKeepWithNext(UT_Bool b) {}=0AUT_Bool                AP_Win32Dia=
log_Options::_gatherSuppressLineNumbers(void) {}=0Avoid                AP_W=
in32Dialog_Options::_setSuppressLineNumbers(UT_Bool b) {}=0AUT_Bool        =
        AP_Win32Dialog_Options::_gatherNoHyphenate(void) {}=0Avoid         =
       AP_Win32Dialog_Options::_setNoHyphenate(UT_Bool b) {}=0A=0A#endif=0A=
=0A/*****************************************************************/=0A=
=0A/*=0AGtkWidget* AP_Win32Dialog_Options::_constructWindow ()=0A{=0A}=0A*/=
=0A=0AUT_Bool     AP_Win32Dialog_Options::_gatherSpellCheckAsType(void)	{ r=
eturn UT_TRUE; }=0Avoid        AP_Win32Dialog_Options::_setSpellCheckAsType=
(UT_Bool b) { b =3D b; }=0AUT_Bool     AP_Win32Dialog_Options::_gatherSpell=
HideErrors(void)	{ return UT_TRUE; }=0Avoid        AP_Win32Dialog_Options::=
_setSpellHideErrors(UT_Bool b)	{ b =3D b; }=0AUT_Bool     AP_Win32Dialog_Op=
tions::_gatherSpellSuggest(void)		{ return UT_TRUE; }=0Avoid        AP_Win3=
2Dialog_Options::_setSpellSuggest(UT_Bool b)		{ b =3D b; }=0AUT_Bool     AP=
_Win32Dialog_Options::_gatherSpellMainOnly(void)		{ return UT_TRUE; }=0Avoi=
d        AP_Win32Dialog_Options::_setSpellMainOnly(UT_Bool b)	{ b =3D b; }=
=0AUT_Bool     AP_Win32Dialog_Options::_gatherSpellUppercase(void)		{ retur=
n UT_TRUE; }=0Avoid        AP_Win32Dialog_Options::_setSpellUppercase(UT_Bo=
ol b)	{ b =3D b; }=0AUT_Bool     AP_Win32Dialog_Options::_gatherSpellNumber=
s(void)		{ return UT_TRUE; }=0Avoid        AP_Win32Dialog_Options::_setSpel=
lNumbers(UT_Bool b)		{ b =3D b; }=0AUT_Bool     AP_Win32Dialog_Options::_ga=
therSpellInternet(void)		{ return UT_TRUE; }=0Avoid        AP_Win32Dialog_O=
ptions::_setSpellInternet(UT_Bool b)	{ b =3D b; }=0A=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00wp/ap/xp/ap_Dialog_Options.h=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=000100664=000001025=000000764=00=
00000004714=0007001264346=00015254=00 0=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A =
* =0A * This program is free software; you can redistribute it and/or=0A * =
modify it under the terms of the GNU General Public License=0A * as publish=
ed by the Free Software Foundation; either version 2=0A * of the License, o=
r (at your option) any later version.=0A * =0A * This program is distribute=
d in the hope that it will be useful,=0A * but WITHOUT ANY WARRANTY; withou=
t even the implied warranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTIC=
ULAR PURPOSE.  See the=0A * GNU General Public License for more details.=0A=
 * =0A * You should have received a copy of the GNU General Public License=
=0A * along with this program; if not, write to the Free Software=0A * Foun=
dation, Inc., 59 Temple Place - Suite 330, Boston, MA  =0A * 02111-1307, US=
A.=0A */=0A=0A#ifndef AP_DIALOG_OPTIONS_H=0A#define AP_DIALOG_OPTIONS_H=0A=
=0A#include "xap_Frame.h"=0A#include "xap_Dialog.h"=0A#include "xav_View.h"=
=0A=0Aclass XAP_Frame;=0A=0Aclass AP_Dialog_Options : public XAP_Dialog_Non=
Persistent=0A{=0A public:=0A=0A	AP_Dialog_Options(XAP_DialogFactory * pDlgF=
actory, XAP_Dialog_Id id);=0A	virtual ~AP_Dialog_Options(void);=0A=0A	virtu=
al void	runModal(XAP_Frame * pFrame) =3D 0;=0A=0A	// answer from dialog=0A	=
typedef enum { a_OK, a_CANCEL } tAnswer;=0A=0A	AP_Dialog_Options::tAnswer	g=
etAnswer(void) const;=0A=0A protected:=0A	void _storeWindowData(void);	// c=
alls the following functions to=0A									// lookup values to set as prefe=
rences=0A								// don't see any need to make virtual yet, all=0A								/=
/ optdlgs should as for the same preferences=0A=0A	virtual UT_Bool			_gathe=
rSpellCheckAsType(void) =3D 0;=0A	virtual void			_setSpellCheckAsType(UT_Bo=
ol b) =3D 0;=0A	virtual UT_Bool			_gatherSpellHideErrors(void) =3D 0;=0A	vi=
rtual void			_setSpellHideErrors(UT_Bool b) =3D 0;=0A	virtual UT_Bool			_ga=
therSpellSuggest(void) =3D 0;=0A	virtual void			_setSpellSuggest(UT_Bool b)=
 =3D 0;=0A	virtual UT_Bool			_gatherSpellMainOnly(void) =3D 0;=0A	virtual v=
oid			_setSpellMainOnly(UT_Bool b) =3D 0;=0A	virtual UT_Bool			_gatherSpell=
Uppercase(void) =3D 0;=0A	virtual void			_setSpellUppercase(UT_Bool b) =3D =
0;=0A	virtual UT_Bool			_gatherSpellNumbers(void) =3D 0;=0A	virtual void			=
_setSpellNumbers(UT_Bool b) =3D 0;=0A	virtual UT_Bool			_gatherSpellInterne=
t(void) =3D 0;=0A	virtual void			_setSpellInternet(UT_Bool b) =3D 0;=0A	=0A=
 protected:=0A	=0A	tAnswer				m_answer;=0A	UT_Bool				m_SpellCheckAsType;=
=0A	UT_Bool				m_SpellHideErrors;=0A	UT_Bool				m_SpellSpellSuggest;=0A	UT_=
Bool				m_SpellMainOnly;=0A	UT_Bool				m_SpellUppercase;=0A	UT_Bool				m_Sp=
ellNumbers;=0A	UT_Bool				m_SpellInternet;=0A};=0A=0A#endif /* AP_DIALOG_PA=
RAGRAPH_H */=0A=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00wp/ap/xp/ap_Dialog_Options.cpp=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=000100664=000001025=000000764=00000000051=
02=0007001264601=00015571=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00ustar  =00shack=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00shack=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00/* AbiWord=0A * Copyright (C) 1998 AbiSource, Inc.=0A * =0A * T=
his program is free software; you can redistribute it and/or=0A * modify it=
 under the terms of the GNU General Public License=0A * as published by the=
 Free Software Foundation; either version 2=0A * of the License, or (at you=
r option) any later version.=0A * =0A * This program is distributed in the =
hope that it will be useful,=0A * but WITHOUT ANY WARRANTY; without even th=
e implied warranty of=0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURP=
OSE.  See the=0A * GNU General Public License for more details.=0A * =0A * =
You should have received a copy of the GNU General Public License=0A * alon=
g with this program; if not, write to the Free Software=0A * Foundation, In=
c., 59 Temple Place - Suite 330, Boston, MA  =0A * 02111-1307, USA.=0A */=
=0A=0A#include <stdlib.h>=0A#include <stdio.h>=0A#include <string.h>=0A#inc=
lude "ut_assert.h"=0A#include "ut_string.h"=0A#include "ut_debugmsg.h"=0A=
=0A#include "xap_Dialog_Id.h"=0A#include "xap_DialogFactory.h"=0A#include "=
xap_Prefs.h"=0A=0A#include "ap_Dialog_Options.h"=0A#include "ap_Prefs_Schem=
eIds.h"=0A=0AAP_Dialog_Options::AP_Dialog_Options(XAP_DialogFactory * pDlgF=
actory, XAP_Dialog_Id id)=0A	: XAP_Dialog_NonPersistent(pDlgFactory,id)=0A{=
=0A	m_answer =3D a_OK;=0A}=0A=0AAP_Dialog_Options::~AP_Dialog_Options(void)=
=0A{=0A}=0A=0AAP_Dialog_Options::tAnswer AP_Dialog_Options::getAnswer(void)=
 const=0A{=0A	return m_answer;=0A}=0A=0A#define SAVE_PREF_BOOL(key,var) {sz=
Buffer[0] =3D ((var)=3D=3DUT_TRUE ? '1' : '0'); \=0A								 pPrefsScheme->=
setValue( key, szBuffer );}=0Avoid AP_Dialog_Options::_storeWindowData(void=
)=0A{=0A	XAP_Prefs *pPrefs =3D m_pApp->getPrefs();=0A	UT_ASSERT(pPrefs);=0A=
=0A	XAP_PrefsScheme *pPrefsScheme =3D pPrefs->getCurrentScheme();=0A	UT_ASS=
ERT(pPrefs->getCurrentScheme());=0A=0A	// check to see if there is any othe=
r scheme besides _buildin_=0A	UT_ASSERT( pPrefsScheme );	=0A	if ( !strcmp( =
pPrefs->getCurrentScheme()->getSchemeName(), "_builtin_") ) {=0A		// TODO: =
need to decide on a scheme default name=0A		const XML_Char new_name[] =3D "=
user_prefs";=0A		=0A		pPrefsScheme =3D new XAP_PrefsScheme(new_name);=0A		U=
T_ASSERT( pPrefsScheme );	=0A		pPrefs->addScheme( pPrefsScheme );=0A		pPref=
s->setCurrentScheme( new_name );=0A	}=0A=0A	// save the values to the Prefs=
 classes=0A	XML_Char szBuffer[] =3D { 0, 0 };		// needed by SAVE_PREF_BOOL =
macro=0A	SAVE_PREF_BOOL( AP_PREF_KEY_AutoSpellCheck, _gatherSpellCheckAsTyp=
e() );=0A=0A	// do we want to save the preferences automatically here?=0A	/=
/ probably not, but for now, lets do until I add the TODO =0A	// "do you wa=
nt to save your changes?" dialog=0A	//			shack@uiuc.edu=0A	if ( pPrefs->get=
AutoSavePrefs() =3D=3D UT_FALSE ) {=0A		// TODO: check the results=0A		pPre=
fs->savePrefsFile();=0A	}=0A}=0A#undef SAVE_PREF_BOOL=0A=0A=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00
--zhXaljGHf11kAtnf--