Hi Folks.
The attached patch does the following:
- added XP support for a DefaultPageSize in the preferences and text
engine.
- added unix GUI support for same (in the Other tab).
- provides stubs (that honour the textual prefs file) for all other
platforms
- fixed unix gui bug causing the ruler to revert to inches each time the
options dialog was used.
Setting the default page size will currently affect *all* documents when
they are loaded. This should/will be fixed when the Page Setup dialog
is done. However this patch should really interest European users.
The patch was produced against 0.7.11 but applies succesfully to the
latest CVS version.
Be warned that this is my first jaunt into C++ but I'm fairly sure its
all OK. I am a little concered about using fp_PageSize::Predefined from
the GUI code, I suspect the right approach is to move fp_PageSize (or
something like it) from text/fmt to af/util. I think this would be best
in a different patch. I'm happy to write that patch providing people
agree with me!
Cheers
Daniel
--xx--
--
Daniel Thompson (Merlin) <[EMAIL PROTECTED]>
How many dull people does it take to change a light bulb? One.
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 <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
+#include <string.h>
#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<Predefined>(0);
+ preDef < _last_predefined_pagesize_dont_use_;
+ static_cast<int>(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")