diff -Naur abi-0.7.11/src/af/xap/unix/xap_UnixFrame.cpp abi/src/af/xap/unix/xap_UnixFrame.cpp --- abi-0.7.11/src/af/xap/unix/xap_UnixFrame.cpp Tue Aug 22 01:20:29 2000 +++ abi/src/af/xap/unix/xap_UnixFrame.cpp Tue Nov 28 11:32:18 2000 @@ -21,6 +21,7 @@ #include #include #include +#include #include "ut_types.h" #include "ut_debugmsg.h" diff -Naur abi-0.7.11/src/af/xap/xp/xap_Prefs_SchemeIds.h abi/src/af/xap/xp/xap_Prefs_SchemeIds.h --- abi-0.7.11/src/af/xap/xp/xap_Prefs_SchemeIds.h Sat Aug 5 22:53:23 2000 +++ abi/src/af/xap/xp/xap_Prefs_SchemeIds.h Tue Nov 28 15:43:04 2000 @@ -71,6 +71,9 @@ /* append suffixes to saved files */ #define XAP_PREF_DEFAULT_UseSuffix "1" +#define XAP_PREF_KEY_DefaultPageSize "DefaultPageSize" +#define XAP_PREF_DEFAULT_DefaultPageSize "Letter" + #else /* XAP_PREFS_SCHEMEID_H */ #ifdef dcl @@ -84,5 +87,6 @@ dcl(SmartQuotesEnable) dcl(UseSuffix) +dcl(DefaultPageSize) #endif /* dcl */ #endif /* XAP_PREFS_SCHEMEID_H */ diff -Naur abi-0.7.11/src/text/fmt/xp/fl_DocLayout.cpp abi/src/text/fmt/xp/fl_DocLayout.cpp --- abi-0.7.11/src/text/fmt/xp/fl_DocLayout.cpp Thu Aug 31 18:52:55 2000 +++ abi/src/text/fmt/xp/fl_DocLayout.cpp Wed Nov 29 17:27:10 2000 @@ -1034,10 +1034,15 @@ fp_PageSize FL_DocLayout::_getDefaultPageSize() { - // TODO The following page dimensions should NOT be hard-coded. - // TODO return PageSize initialized by prefs. + XAP_App *pApp = XAP_App::getApp(); + UT_ASSERT(pApp); - return fp_PageSize(fp_PageSize::Letter); + const XML_Char * szDefaultPageSize = NULL; + pApp->getPrefsValue(XAP_PREF_KEY_DefaultPageSize, + &szDefaultPageSize); + UT_ASSERT((szDefaultPageSize) && (*szDefaultPageSize)); + UT_ASSERT(sizeof(char) == sizeof(XML_Char)); + return fp_PageSize((char*) szDefaultPageSize); } void FL_DocLayout::setPendingSmartQuote(fl_BlockLayout *bl, UT_uint32 of) diff -Naur abi-0.7.11/src/text/fmt/xp/fp_PageSize.cpp abi/src/text/fmt/xp/fp_PageSize.cpp --- abi-0.7.11/src/text/fmt/xp/fp_PageSize.cpp Fri May 12 05:40:53 2000 +++ abi/src/text/fmt/xp/fp_PageSize.cpp Mon Dec 4 19:57:27 2000 @@ -1,7 +1,10 @@ // fp_PageSize.cpp +#include "string.h" + #include "fp_PageSize.h" #include "ut_units.h" #include "ut_assert.h" +#include "ut_debugmsg.h" // This class stores the pagesize in mm. The resoning behind @@ -9,33 +12,36 @@ // If anyone think it's more apropriate to express it in meters, // you're free to change the implementation. +const int cMaxSymbolicLength = 7; + struct private_pagesize_sizes { double w; double h; fp_PageSize::Unit u; + char name[cMaxSymbolicLength]; }; const private_pagesize_sizes pagesizes[fp_PageSize::_last_predefined_pagesize_dont_use_] = { - { 841.0, 1189.0, fp_PageSize::mm }, // A0 - { 594.0, 841.0, fp_PageSize::mm }, // A1 - { 420.0, 594.0, fp_PageSize::mm }, // A2 - { 297.0, 420.0, fp_PageSize::mm }, // A3 - { 210.0, 297.0, fp_PageSize::mm }, // A4 - { 148.0, 210.0, fp_PageSize::mm }, // A5 - { 105.0, 148.0, fp_PageSize::mm }, // A6 - {1000.0, 1414.0, fp_PageSize::mm }, // B0 - { 707.0, 1000.0, fp_PageSize::mm }, // B1 - { 500.0, 707.0, fp_PageSize::mm }, // B2 - { 353.0, 500.0, fp_PageSize::mm }, // B3 - { 250.0, 353.0, fp_PageSize::mm }, // B4 - { 176.0, 250.0, fp_PageSize::mm }, // B5 - { 125.0, 176.0, fp_PageSize::mm }, // B6 - { 8.5, 14.0, fp_PageSize::inch }, // Legal - { 8.5, 13.0, fp_PageSize::inch }, // Folio - { 8.5, 11.0, fp_PageSize::inch } // Letter + { 841.0, 1189.0, fp_PageSize::mm, "A0" }, + { 594.0, 841.0, fp_PageSize::mm, "A1" }, + { 420.0, 594.0, fp_PageSize::mm, "A2" }, + { 297.0, 420.0, fp_PageSize::mm, "A3" }, + { 210.0, 297.0, fp_PageSize::mm, "A4" }, + { 148.0, 210.0, fp_PageSize::mm, "A5" }, + { 105.0, 148.0, fp_PageSize::mm, "A6" }, + {1000.0, 1414.0, fp_PageSize::mm, "B0" }, + { 707.0, 1000.0, fp_PageSize::mm, "B1" }, + { 500.0, 707.0, fp_PageSize::mm, "B2" }, + { 353.0, 500.0, fp_PageSize::mm, "B3" }, + { 250.0, 353.0, fp_PageSize::mm, "B4" }, + { 176.0, 250.0, fp_PageSize::mm, "B5" }, + { 125.0, 176.0, fp_PageSize::mm, "B6" }, + { 8.5, 14.0, fp_PageSize::inch, "Legal" }, + { 8.5, 13.0, fp_PageSize::inch, "Folio" }, + { 8.5, 11.0, fp_PageSize::inch, "Letter" } }; const double ScaleFactors[fp_PageSize::_last_predefined_unit_dont_use_] = @@ -52,6 +58,11 @@ Set(preDef); } +fp_PageSize::fp_PageSize(const char *name) +{ + Set(name); +} + fp_PageSize::fp_PageSize(double w, double h, Unit u) { UT_ASSERT(u >= 0 && u < _last_predefined_unit_dont_use_); @@ -67,10 +78,18 @@ void fp_PageSize::Set(Predefined preDef) { + UT_ASSERT((preDef >= 0) && (preDef < _last_predefined_pagesize_dont_use_)); + const private_pagesize_sizes& size = pagesizes[preDef]; Set(size.w, size.h, size.u); } +void fp_PageSize::Set(const char *name) +{ + UT_DEBUGMSG(("fp_PageSize::Set(\"%s\")\n", (char*) name)); + Set(NameToPredefined(name)); +} + double fp_PageSize::Width(Unit u) const { UT_ASSERT(u >= 0 && u < _last_predefined_unit_dont_use_); @@ -83,3 +102,30 @@ return m_iHeight / ScaleFactors[u]; } +fp_PageSize::Predefined fp_PageSize::NameToPredefined(const char *name) +{ + Predefined preDef; + // determine the predefined layout the name represents + for(preDef=static_cast(0); + preDef < _last_predefined_pagesize_dont_use_; + static_cast(preDef)++) + { + if (0 == strcmp(pagesizes[preDef].name, name)) { + break; + } + } + + if ((preDef >= 0) && (preDef < _last_predefined_pagesize_dont_use_)) { + return preDef; + } + + UT_ASSERT(UT_SHOULD_NOT_HAPPEN); + return fp_PageSize::Letter; +} + +const char * fp_PageSize::PredefinedToName(Predefined preDef) +{ + UT_ASSERT((preDef >= 0) && (preDef < _last_predefined_pagesize_dont_use_)); + + return pagesizes[preDef].name; +} diff -Naur abi-0.7.11/src/text/fmt/xp/fp_PageSize.h abi/src/text/fmt/xp/fp_PageSize.h --- abi-0.7.11/src/text/fmt/xp/fp_PageSize.h Wed May 10 11:01:51 2000 +++ abi/src/text/fmt/xp/fp_PageSize.h Mon Dec 4 19:58:20 2000 @@ -28,13 +28,18 @@ }; fp_PageSize(Predefined preDef); + fp_PageSize(const char *name); fp_PageSize(double w, double h, Unit u); void Set(Predefined preDef); + void Set(const char *name); void Set(double w, double h, Unit u); double Width(Unit u) const; double Height(Unit u) const; + + static Predefined NameToPredefined(const char *name); + static const char * PredefinedToName(Predefined preDef); private: double m_iWidth; diff -Naur abi-0.7.11/src/wp/ap/beos/ap_BeOSDialog_Options.cpp abi/src/wp/ap/beos/ap_BeOSDialog_Options.cpp --- abi-0.7.11/src/wp/ap/beos/ap_BeOSDialog_Options.cpp Thu Aug 3 18:59:45 2000 +++ abi/src/wp/ap/beos/ap_BeOSDialog_Options.cpp Wed Dec 6 17:13:16 2000 @@ -640,6 +640,20 @@ units->Menu()->ItemAt(n1)->SetMarked(true);//Select(n1); } +fp_PageSize::Predefined AP_BeOSDialog_Options::_gatherDefaultPageSize(void) +{ + // FIXME: replace this with *real* gui code + return defaultPaperSize; +} + +void AP_BeOSDialog_Options::_setDefaultPageSize(fp_PageSize::Predefined pre) +{ + // FIXME: replace this with *real* gui code + defaultPageSize = pre; +} + +void + int AP_BeOSDialog_Options::_gatherNotebookPageNum(void) { return 0; diff -Naur abi-0.7.11/src/wp/ap/beos/ap_BeOSDialog_Options.h abi/src/wp/ap/beos/ap_BeOSDialog_Options.h --- abi-0.7.11/src/wp/ap/beos/ap_BeOSDialog_Options.h Thu Aug 3 12:25:48 2000 +++ abi/src/wp/ap/beos/ap_BeOSDialog_Options.h Wed Dec 6 17:10:01 2000 @@ -55,6 +55,7 @@ SET_GATHER (SpellInternet, UT_Bool ); SET_GATHER (SmartQuotesEnable, UT_Bool ); + SET_GATHER (DefaultPagesize, fp_PageSize::Predefined); SET_GATHER (PrefsAutoSave, UT_Bool ); SET_GATHER (ViewShowRuler, UT_Bool ); @@ -79,6 +80,9 @@ protected: class OptionsWin *newwin; + + // FIXME: replace this with *real* gui code */ + fp_PageSize::Predefined defaultPageSize; }; #endif /* AP_BEOSDIALOG_OPTIONS_H */ diff -Naur abi-0.7.11/src/wp/ap/qnx/ap_QNXDialog_Options.cpp abi/src/wp/ap/qnx/ap_QNXDialog_Options.cpp --- abi-0.7.11/src/wp/ap/qnx/ap_QNXDialog_Options.cpp Wed Jul 26 16:51:15 2000 +++ abi/src/wp/ap/qnx/ap_QNXDialog_Options.cpp Wed Dec 6 17:21:39 2000 @@ -909,3 +909,15 @@ UT_DEBUGMSG(("TODO: _gatherNotebookPageNum ")); } +fp_PageSize::Predefined AP_QNXDialog_Options::_gatherDefaultPageSize(void) +{ + // FIXME: replace this with *real* gui code + return defaultPaperSize; +} + +void AP_QNXDialog_Options::_setDefaultPageSize(fp_PageSize::Predefined pre) +{ + // FIXME: replace this with *real* gui code + defaultPageSize = pre; +} + diff -Naur abi-0.7.11/src/wp/ap/qnx/ap_QNXDialog_Options.h abi/src/wp/ap/qnx/ap_QNXDialog_Options.h --- abi-0.7.11/src/wp/ap/qnx/ap_QNXDialog_Options.h Wed Jul 26 16:51:15 2000 +++ abi/src/wp/ap/qnx/ap_QNXDialog_Options.h Wed Dec 6 17:26:12 2000 @@ -60,6 +60,7 @@ SET_GATHER (SpellInternet, UT_Bool ); SET_GATHER (SmartQuotesEnable, UT_Bool ); + SET_GATHER (DefaultPageSize, fp_PageSize::Predefined ); SET_GATHER (PrefsAutoSave, UT_Bool ); SET_GATHER (ViewShowRuler, UT_Bool ); @@ -140,6 +141,9 @@ PtWidget_t * m_buttonCancel; int done; + + // FIXME: replace this with *real* gui code */ + fp_PageSize::Predefined defaultPageSize; }; #endif /* AP_QNXDIALOG_OPTIONS_H */ diff -Naur abi-0.7.11/src/wp/ap/unix/ap_UnixDialog_Options.cpp abi/src/wp/ap/unix/ap_UnixDialog_Options.cpp --- abi-0.7.11/src/wp/ap/unix/ap_UnixDialog_Options.cpp Tue Jul 25 21:10:50 2000 +++ abi/src/wp/ap/unix/ap_UnixDialog_Options.cpp Mon Dec 4 21:12:21 2000 @@ -210,6 +210,9 @@ GtkWidget *tableOther; GtkWidget *checkbuttonSmartQuotesEnable; GtkWidget *labelSmartQuotes; + GtkWidget *labelDefaultPageSize; + GtkWidget *listDefaultPageSize; + GtkWidget *listDefaultPageSize_menu; GtkWidget *tablePreferences; GtkWidget *checkbuttonPrefsAutoSave; @@ -608,7 +611,7 @@ // OTHER STUFF (including SMART QUOTES) ////////////////////////////// - tableOther = gtk_table_new (2, 3, FALSE); + tableOther = gtk_table_new (4, 3, FALSE); gtk_widget_ref (tableOther); gtk_object_set_data_full (GTK_OBJECT (windowOptions), "tableOther", tableOther, (GtkDestroyNotify) gtk_widget_unref); @@ -625,6 +628,129 @@ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + + labelDefaultPageSize = gtk_label_new (pSS->getValue(AP_STRING_ID_DLG_Options_Label_DefaultPageSize)); + gtk_widget_ref (labelDefaultPageSize); + gtk_object_set_data_full(GTK_OBJECT(windowOptions), "labelDefaultPageSize", labelDefaultPageSize, (GtkDestroyNotify) gtk_widget_unref); + // force left align + gtk_misc_set_alignment (GTK_MISC(labelDefaultPageSize), 0.0, 0.5); + gtk_widget_show(labelDefaultPageSize); + gtk_table_attach (GTK_TABLE (tableOther), labelDefaultPageSize, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + + listDefaultPageSize = gtk_option_menu_new (); + gtk_widget_ref (listDefaultPageSize); + gtk_object_set_data_full (GTK_OBJECT(windowOptions), "listDefaultPageSize", listDefaultPageSize, (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (listDefaultPageSize); + gtk_table_attach (GTK_TABLE (tableOther), listDefaultPageSize, 1, 2, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); + //gtk_table_attach (GTK_TABLE (tableOther), listDefaultPageSize, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + + listDefaultPageSize_menu = gtk_menu_new (); +// TODO: decide whether page sizes are universal or whether they require translating + glade_menuitem = gtk_menu_item_new_with_label (_("A0")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A0); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A1")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A1); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A2")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A2); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A3")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A3); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A4")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A4); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A5")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A5); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("A6")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::A6); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B0")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B0); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B1")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B1); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B2")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B2); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B3")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B3); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B4")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B4); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B5")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B5); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("B6")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::B6); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("Folio")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::Folio); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("Legal")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::Legal); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + glade_menuitem = gtk_menu_item_new_with_label (_("Letter")); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_OPTION_PTR, (gpointer) listDefaultPageSize); + /**/ gtk_object_set_data(GTK_OBJECT(glade_menuitem), WIDGET_MENU_VALUE_TAG, (gpointer) fp_PageSize::Letter); + CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(glade_menuitem); + gtk_widget_show (glade_menuitem); + gtk_menu_append (GTK_MENU (listDefaultPageSize_menu), glade_menuitem); + gtk_option_menu_set_menu (GTK_OPTION_MENU (listDefaultPageSize), listDefaultPageSize_menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (listDefaultPageSize), 16); + labelSmartQuotes = gtk_label_new (pSS->getValue(AP_STRING_ID_DLG_Options_TabLabel_Other)); gtk_widget_ref (labelSmartQuotes); gtk_object_set_data_full (GTK_OBJECT (windowOptions), "labelSmartQuotes", labelSmartQuotes, @@ -650,6 +776,7 @@ m_buttonSpellIgnoreReset = buttonSpellIgnoreReset; m_checkbuttonSmartQuotesEnable = checkbuttonSmartQuotesEnable; + m_listDefaultPageSize = listDefaultPageSize; m_checkbuttonPrefsAutoSave = checkbuttonPrefsAutoSave; m_comboPrefsScheme = comboPrefsSchemes; @@ -894,11 +1021,14 @@ break; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // smart quotes + // other case id_CHECK_SMART_QUOTES_ENABLE: return m_checkbuttonSmartQuotesEnable; break; + case id_LIST_DEFAULT_PAGE_SIZE: + return m_listDefaultPageSize; + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // prefs case id_CHECK_PREFS_AUTO_SAVE: @@ -1022,6 +1152,12 @@ return (UT_Dimension)((gint)gtk_object_get_data( GTK_OBJECT(m_listViewRulerUnits), WIDGET_MENU_VALUE_TAG )); } +fp_PageSize::Predefined AP_UnixDialog_Options::_gatherDefaultPageSize(void) +{ + UT_ASSERT(m_listDefaultPageSize && GTK_IS_OPTION_MENU(m_listDefaultPageSize)); + return (fp_PageSize::Predefined) ((gint)gtk_object_get_data( GTK_OBJECT(m_listDefaultPageSize), WIDGET_MENU_VALUE_TAG )); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // This function will lookup a option box by the value stored in the // user data under the key WIDGET_MENU_VALUE_TAG @@ -1055,6 +1191,9 @@ { UT_ASSERT( option_menu && key && GTK_IS_OPTION_MENU(option_menu)); + // at least make sure the value will be restored by the _gather + gtk_object_set_data( GTK_OBJECT(option_menu), key, value); + // lookup for the key with the value of dim search_data data = { -1, -1, key, value }; @@ -1086,6 +1225,14 @@ UT_ASSERT( r != -1 ); } +void AP_UnixDialog_Options::_setDefaultPageSize(fp_PageSize::Predefined pre) +{ + UT_ASSERT(m_listDefaultPageSize && GTK_IS_OPTION_MENU(m_listDefaultPageSize)); + + int r = option_menu_set_by_key ( m_listDefaultPageSize, (gpointer)pre, WIDGET_MENU_VALUE_TAG ); + UT_ASSERT( r != -1 ); +} + DEFINE_GET_SET_BOOL (ViewCursorBlink); DEFINE_GET_SET_BOOL (ViewAll); @@ -1194,7 +1341,9 @@ gtk_object_set_data( GTK_OBJECT(option_menu), WIDGET_MENU_VALUE_TAG, p ); - UT_DEBUGMSG(("s_menu_item_activate [%d %s]\n", p, UT_dimensionName( (UT_Dimension)((UT_uint32)p)) ) ); + //TODO: This code is now shared between RulerUnits and DefaultPaperSize + //so anyone who wants to resurect this msg. needs to add a conditional + //UT_DEBUGMSG(("s_menu_item_activate [%d %s]\n", p, UT_dimensionName( (UT_Dimension)((UT_uint32)p)) ) ); return TRUE; } diff -Naur abi-0.7.11/src/wp/ap/unix/ap_UnixDialog_Options.h abi/src/wp/ap/unix/ap_UnixDialog_Options.h --- abi-0.7.11/src/wp/ap/unix/ap_UnixDialog_Options.h Tue Jul 25 21:10:50 2000 +++ abi/src/wp/ap/unix/ap_UnixDialog_Options.h Mon Dec 4 19:39:28 2000 @@ -55,6 +55,7 @@ SET_GATHER (SpellInternet, UT_Bool ); SET_GATHER (SmartQuotesEnable, UT_Bool ); + SET_GATHER (DefaultPageSize, fp_PageSize::Predefined); SET_GATHER (PrefsAutoSave, UT_Bool ); @@ -102,6 +103,7 @@ GtkWidget * m_buttonSpellIgnoreReset; GtkWidget * m_checkbuttonSmartQuotesEnable; + GtkWidget * m_listDefaultPageSize; GtkWidget * m_checkbuttonPrefsAutoSave; GtkWidget * m_comboPrefsScheme; diff -Naur abi-0.7.11/src/wp/ap/win/ap_Win32Dialog_Options.cpp abi/src/wp/ap/win/ap_Win32Dialog_Options.cpp --- abi-0.7.11/src/wp/ap/win/ap_Win32Dialog_Options.cpp Wed Jul 26 13:05:31 2000 +++ abi/src/wp/ap/win/ap_Win32Dialog_Options.cpp Wed Dec 6 17:24:27 2000 @@ -690,3 +690,16 @@ void AP_Win32Dialog_Options::_setNotebookPageNum(int pn) { } + +void AP_Win32Dialog_Options::_setDefaultPageSize(fp_PageSize::Predefined pre) +{ + // FIXME: replace this with *real* gui code + defaultPageSize = pre; +} + +fp_PageSize::Predefined AP_Win32Dialog_Options::_gatherDefaultPageSize(void) +{ + // FIXME: replace this with *real* gui code + return defaultPaperSize; +} + diff -Naur abi-0.7.11/src/wp/ap/win/ap_Win32Dialog_Options.h abi/src/wp/ap/win/ap_Win32Dialog_Options.h --- abi-0.7.11/src/wp/ap/win/ap_Win32Dialog_Options.h Wed Jul 26 13:05:31 2000 +++ abi/src/wp/ap/win/ap_Win32Dialog_Options.h Wed Dec 6 17:27:38 2000 @@ -54,6 +54,7 @@ SET_GATHER (SpellInternet, UT_Bool ); SET_GATHER (SmartQuotesEnable, UT_Bool ); + SET_GATHER (DefaultPageSize, fp_PageSize::Predefined ); SET_GATHER (PrefsAutoSave, UT_Bool ); @@ -85,6 +86,9 @@ int m_nrSubDlgs; // number of tabs on tab control UT_Vector m_vecSubDlgHWnd; // hwnd to each sub-dialog + + // FIXME: replace this with *real* gui code */ + fp_PageSize::Predefined defaultPageSize; }; diff -Naur abi-0.7.11/src/wp/ap/xp/ap_Dialog_Options.cpp abi/src/wp/ap/xp/ap_Dialog_Options.cpp --- abi-0.7.11/src/wp/ap/xp/ap_Dialog_Options.cpp Tue Aug 1 04:23:36 2000 +++ abi/src/wp/ap/xp/ap_Dialog_Options.cpp Mon Dec 4 19:45:18 2000 @@ -156,6 +156,12 @@ (XML_Char*)UT_dimensionName( _gatherViewRulerUnits()) ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + // save default paper size + UT_ASSERT(sizeof(XML_Char) && sizeof(char)); + pPrefsScheme->setValue((XML_Char*)XAP_PREF_KEY_DefaultPageSize, + (XML_Char*)fp_PageSize::PredefinedToName( _gatherDefaultPageSize()) ); + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // allow XAP_Prefs to notify all the listeners of changes // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -212,6 +218,11 @@ // ------------ Smart Quotes if (pPrefs->getPrefsValueBool((XML_Char*)XAP_PREF_KEY_SmartQuotesEnable,&b)) _setSmartQuotesEnable (b); + + if (pPrefs->getPrefsValue((XML_Char*)XAP_PREF_KEY_DefaultPageSize, &pszBuffer)) { + UT_ASSERT(sizeof(XML_Char) == sizeof(char)); + _setDefaultPageSize (fp_PageSize::NameToPredefined((char*) pszBuffer)); + } // ------------ Prefs _setPrefsAutoSave( pPrefs->getAutoSavePrefs() ); diff -Naur abi-0.7.11/src/wp/ap/xp/ap_Dialog_Options.h abi/src/wp/ap/xp/ap_Dialog_Options.h --- abi-0.7.11/src/wp/ap/xp/ap_Dialog_Options.h Tue Jul 25 21:10:51 2000 +++ abi/src/wp/ap/xp/ap_Dialog_Options.h Mon Dec 4 20:08:41 2000 @@ -25,6 +25,8 @@ #include "xav_View.h" #include "ut_units.h" +#include "fp_PageSize.h" + class XAP_Frame; class AP_Dialog_Options : public XAP_Dialog_NonPersistent @@ -47,7 +49,7 @@ id_BUTTON_DICTIONARY_EDIT, id_BUTTON_IGNORE_RESET, id_BUTTON_IGNORE_EDIT, - id_CHECK_SMART_QUOTES_ENABLE, + id_CHECK_SMART_QUOTES_ENABLE, id_LIST_DEFAULT_PAGE_SIZE, id_CHECK_PREFS_AUTO_SAVE, id_COMBO_PREFS_SCHEME, @@ -99,6 +101,7 @@ SET_GATHER (SpellInternet, UT_Bool); SET_GATHER (SmartQuotesEnable, UT_Bool); + SET_GATHER (DefaultPageSize, fp_PageSize::Predefined); SET_GATHER (PrefsAutoSave, UT_Bool); diff -Naur abi-0.7.11/src/wp/ap/xp/ap_String_Id.h abi/src/wp/ap/xp/ap_String_Id.h --- abi-0.7.11/src/wp/ap/xp/ap_String_Id.h Mon Aug 21 04:06:41 2000 +++ abi/src/wp/ap/xp/ap_String_Id.h Mon Dec 4 20:05:29 2000 @@ -196,6 +196,7 @@ dcl(DLG_Options_Btn_IgnoreEdit, "&Edit") dcl(DLG_Options_Label_SmartQuotesEnable,"Enable smart quotes") +dcl(DLG_Options_Label_DefaultPageSize, "Default page size") dcl(DLG_Options_Label_PrefsAutoSave, "&Automatically save this Scheme") dcl(DLG_Options_Label_PrefsCurrentScheme, "Current Preferences Scheme")