diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/af/xap/unix/gnome/Makefile abi/src/af/xap/unix/gnome/Makefile --- abi2/src/af/xap/unix/gnome/Makefile Tue Apr 4 14:12:24 2000 +++ abi/src/af/xap/unix/gnome/Makefile Tue Apr 4 14:10:27 2000 @@ -26,6 +26,7 @@ xap_UnixGnomeDlg_About.cpp \ xap_UnixGnomeDlg_MessageBox.cpp \ xap_UnixGnomeDlg_Zoom.cpp \ + xap_UnixGnomeDlg_About.cpp \ xap_UnixGnomeFrame.cpp TARGETS= $(OBJS) diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/Makefile abi/src/wp/ap/Makefile --- abi2/src/wp/ap/Makefile Fri Mar 10 14:08:47 2000 +++ abi/src/wp/ap/Makefile Tue Apr 4 05:53:28 2000 @@ -57,7 +57,8 @@ PLATFORM_OBJS+= $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)App.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Break.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Replace.$(OBJ_SUFFIX) \ - $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.$(OBJ_SUFFIX) + $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.$(OBJ_SUFFIX) \ + $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Options.$(OBJ_SUFFIX) # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Clipboard.$(OBJ_SUFFIX) \ # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Paragraph.$(OBJ_SUFFIX) \ # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Spell.$(OBJ_SUFFIX) \ diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/ap_UnixDialog_All.h abi/src/wp/ap/unix/ap_UnixDialog_All.h --- abi2/src/wp/ap/unix/ap_UnixDialog_All.h Tue Apr 4 14:12:24 2000 +++ abi/src/wp/ap/unix/ap_UnixDialog_All.h Tue Apr 4 14:10:29 2000 @@ -58,6 +58,7 @@ # include "ap_UnixGnomeDialog_Replace.h" # include "ap_UnixGnomeDialog_Break.h" # include "ap_UnixGnomeDialog_WordCount.h" +# include "ap_UnixGnomeDialog_Options.h" #endif @@ -81,7 +82,7 @@ DeclareDialog(AP_DIALOG_ID_BREAK, AP_UnixGnomeDialog_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) + DeclareDialog(AP_DIALOG_ID_OPTIONS, AP_UnixGnomeDialog_Options) DeclareDialog(AP_DIALOG_ID_WORDCOUNT, AP_UnixGnomeDialog_WordCount) // ... also add new dialogs here ... diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/ap_UnixDialog_Options.cpp abi/src/wp/ap/unix/ap_UnixDialog_Options.cpp --- abi2/src/wp/ap/unix/ap_UnixDialog_Options.cpp Wed Dec 8 01:27:19 1999 +++ abi/src/wp/ap/unix/ap_UnixDialog_Options.cpp Tue Apr 4 14:08:47 2000 @@ -180,22 +180,12 @@ GTK_SIGNAL_FUNC(s_menu_item_activate), \ (gpointer) this); \ } while (0) -GtkWidget* AP_UnixDialog_Options::_constructWindow () -{ - ////////////////////////////////////////////////////////////////////// - // BEGIN: glade stuff (interface.c) - // for the internationalization +GtkWidget* AP_UnixDialog_Options::_constructWindowContents () +{ const XAP_StringSet * pSS = m_pApp->getStringSet(); - + GtkWidget *windowOptions; - GtkWidget *table2; - GtkWidget *hbuttonbox2; - GtkWidget *buttonSave; - GtkWidget *buttonDefaults; - GtkWidget *buttonApply; - GtkWidget *buttonOk; - GtkWidget *buttonCancel; GtkWidget *notebook1; GtkWidget *tableSpell; GtkWidget *checkbuttonSpellHideErrors; @@ -238,79 +228,12 @@ GtkWidget *checkbuttonViewUnprintable; GtkWidget *labelView; - windowOptions = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_object_set_data (GTK_OBJECT (windowOptions), "windowOptions", windowOptions); - gtk_window_set_title (GTK_WINDOW (windowOptions), - pSS->getValue(AP_STRING_ID_DLG_Options_OptionsTitle) ); - - table2 = gtk_table_new (2, 1, FALSE); - gtk_widget_ref (table2); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "table2", table2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (table2); - gtk_container_add (GTK_CONTAINER (windowOptions), table2); - - hbuttonbox2 = gtk_hbutton_box_new (); - gtk_widget_ref (hbuttonbox2); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "hbuttonbox2", hbuttonbox2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (hbuttonbox2); - gtk_table_attach (GTK_TABLE (table2), hbuttonbox2, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 10); - - buttonSave = gtk_button_new_with_label ( pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Save) ); - gtk_widget_ref (buttonSave); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonSave", buttonSave, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (buttonSave); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonSave); - GTK_WIDGET_SET_FLAGS (buttonSave, GTK_CAN_DEFAULT); - - buttonApply = gtk_button_new_with_label ( - pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Apply )); - gtk_widget_ref (buttonApply); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonApply", buttonApply, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (buttonApply); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonApply); - GTK_WIDGET_SET_FLAGS (buttonApply, GTK_CAN_DEFAULT); - - buttonDefaults = gtk_button_new_with_label ( - pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Default )); - gtk_widget_ref (buttonDefaults); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonDefaults", buttonDefaults, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (buttonDefaults); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonDefaults); - GTK_WIDGET_SET_FLAGS (buttonDefaults, GTK_CAN_DEFAULT); - - buttonOk = gtk_button_new_with_label (pSS->getValue(XAP_STRING_ID_DLG_OK)); - gtk_widget_ref (buttonOk); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonOk", buttonOk, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (buttonOk); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonOk); - GTK_WIDGET_SET_FLAGS (buttonOk, GTK_CAN_DEFAULT); - - buttonCancel = gtk_button_new_with_label (pSS->getValue(XAP_STRING_ID_DLG_Cancel)); - gtk_widget_ref (buttonCancel); - gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonCancel", buttonCancel, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (buttonCancel); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonCancel); - GTK_WIDGET_SET_FLAGS (buttonCancel, GTK_CAN_DEFAULT); - + windowOptions = m_windowMain; notebook1 = gtk_notebook_new (); gtk_widget_ref (notebook1); gtk_object_set_data_full (GTK_OBJECT (windowOptions), "notebook1", notebook1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (notebook1); - gtk_table_attach (GTK_TABLE (table2), notebook1, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 10, 7); tableSpell = gtk_table_new (9, 3, FALSE); gtk_widget_ref (tableSpell); @@ -661,6 +584,140 @@ ////////////////////////////////////////////////////////////////////// // END: glade stuff + m_notebook = notebook1; + + m_checkbuttonSpellCheckAsType = checkbuttonSpellCheckAsType; + m_checkbuttonSpellHideErrors = checkbuttonSpellHideErrors; + m_checkbuttonSpellSuggest = checkbuttonSpellSuggest; + m_checkbuttonSpellMainOnly = checkbuttonSpellMainOnly; + m_checkbuttonSpellUppercase = checkbuttonSpellUppercase; + m_checkbuttonSpellNumbers = checkbuttonSpellNumbers; + m_checkbuttonSpellInternet = checkbuttonSpellInternet; + m_listSpellDicts = listSpellDicts; + m_listSpellDicts_menu = listSpellDicts_menu; + m_buttonSpellDictionary = buttonSpellDictionary; + m_buttonSpellIgnoreEdit = buttonSpellIgnoreEdit; + m_buttonSpellIgnoreReset = buttonSpellIgnoreReset; + + m_checkbuttonPrefsAutoSave = checkbuttonPrefsAutoSave; + m_comboPrefsScheme = comboPrefsSchemes; + + m_checkbuttonViewShowRuler = checkbuttonViewRuler; + m_listViewRulerUnits = listViewRulerUnit; + m_checkbuttonViewCursorBlink = checkbuttonViewCursorBlink; + m_checkbuttonViewShowToolbars = checkbuttonViewToolbars; + m_checkbuttonViewAll = checkbuttonViewAll; + m_checkbuttonViewHiddenText = checkbuttonViewHidden; + m_checkbuttonViewUnprintable = checkbuttonViewUnprintable; + + + gtk_signal_connect(GTK_OBJECT(buttonSpellIgnoreEdit), + "clicked", + GTK_SIGNAL_FUNC(s_ignore_edit_clicked), + (gpointer) this); + + gtk_signal_connect(GTK_OBJECT(buttonSpellIgnoreReset), + "clicked", + GTK_SIGNAL_FUNC(s_ignore_reset_clicked), + (gpointer) this); + + gtk_signal_connect(GTK_OBJECT(buttonSpellDictionary), + "clicked", + GTK_SIGNAL_FUNC(s_dict_edit_clicked), + (gpointer) this); + + // to enable/disable other controls (hide errors) + gtk_signal_connect(GTK_OBJECT(checkbuttonSpellCheckAsType), + "toggled", + GTK_SIGNAL_FUNC(s_checkbutton_toggle), + (gpointer) this); + + return notebook1; +} + +GtkWidget* AP_UnixDialog_Options::_constructWindow () +{ + ////////////////////////////////////////////////////////////////////// + // BEGIN: glade stuff (interface.c) + + // for the internationalization + const XAP_StringSet * pSS = m_pApp->getStringSet(); + + GtkWidget *table2; + GtkWidget *windowOptions; + GtkWidget *hbuttonbox2; + GtkWidget *buttonSave; + GtkWidget *buttonDefaults; + GtkWidget *buttonApply; + GtkWidget *buttonOk; + GtkWidget *buttonCancel; + + windowOptions = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_object_set_data (GTK_OBJECT (windowOptions), "windowOptions", windowOptions); + gtk_window_set_title (GTK_WINDOW (windowOptions), + pSS->getValue(AP_STRING_ID_DLG_Options_OptionsTitle) ); + + table2 = gtk_table_new (2, 1, FALSE); + gtk_widget_ref (table2); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "table2", table2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (table2); + gtk_container_add (GTK_CONTAINER (windowOptions), table2); + + hbuttonbox2 = gtk_hbutton_box_new (); + gtk_widget_ref (hbuttonbox2); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "hbuttonbox2", hbuttonbox2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbuttonbox2); + gtk_table_attach (GTK_TABLE (table2), hbuttonbox2, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 10); + + buttonSave = gtk_button_new_with_label ( pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Save) ); + gtk_widget_ref (buttonSave); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonSave", buttonSave, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonSave); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonSave); + GTK_WIDGET_SET_FLAGS (buttonSave, GTK_CAN_DEFAULT); + + buttonApply = gtk_button_new_with_label ( + pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Apply )); + gtk_widget_ref (buttonApply); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonApply", buttonApply, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonApply); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonApply); + GTK_WIDGET_SET_FLAGS (buttonApply, GTK_CAN_DEFAULT); + + buttonDefaults = gtk_button_new_with_label ( + pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Default )); + gtk_widget_ref (buttonDefaults); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonDefaults", buttonDefaults, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonDefaults); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonDefaults); + GTK_WIDGET_SET_FLAGS (buttonDefaults, GTK_CAN_DEFAULT); + + buttonOk = gtk_button_new_with_label (pSS->getValue(XAP_STRING_ID_DLG_OK)); + gtk_widget_ref (buttonOk); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonOk", buttonOk, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonOk); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonOk); + GTK_WIDGET_SET_FLAGS (buttonOk, GTK_CAN_DEFAULT); + + buttonCancel = gtk_button_new_with_label (pSS->getValue(XAP_STRING_ID_DLG_Cancel)); + gtk_widget_ref (buttonCancel); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonCancel", buttonCancel, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonCancel); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), buttonCancel); + GTK_WIDGET_SET_FLAGS (buttonCancel, GTK_CAN_DEFAULT); + + // the catch-alls gtk_signal_connect_after(GTK_OBJECT(windowOptions), "delete_event", @@ -695,56 +752,16 @@ GTK_SIGNAL_FUNC(s_apply_clicked), (gpointer) this); - gtk_signal_connect(GTK_OBJECT(buttonSpellIgnoreEdit), - "clicked", - GTK_SIGNAL_FUNC(s_ignore_edit_clicked), - (gpointer) this); - - gtk_signal_connect(GTK_OBJECT(buttonSpellIgnoreReset), - "clicked", - GTK_SIGNAL_FUNC(s_ignore_reset_clicked), - (gpointer) this); - - gtk_signal_connect(GTK_OBJECT(buttonSpellDictionary), - "clicked", - GTK_SIGNAL_FUNC(s_dict_edit_clicked), - (gpointer) this); - - // to enable/disable other controls (hide errors) - gtk_signal_connect(GTK_OBJECT(checkbuttonSpellCheckAsType), - "toggled", - GTK_SIGNAL_FUNC(s_checkbutton_toggle), - (gpointer) this); // Update member variables with the important widgets that // might need to be queried or altered later. m_windowMain = windowOptions; - m_notebook = notebook1; - - m_checkbuttonSpellCheckAsType = checkbuttonSpellCheckAsType; - m_checkbuttonSpellHideErrors = checkbuttonSpellHideErrors; - m_checkbuttonSpellSuggest = checkbuttonSpellSuggest; - m_checkbuttonSpellMainOnly = checkbuttonSpellMainOnly; - m_checkbuttonSpellUppercase = checkbuttonSpellUppercase; - m_checkbuttonSpellNumbers = checkbuttonSpellNumbers; - m_checkbuttonSpellInternet = checkbuttonSpellInternet; - m_listSpellDicts = listSpellDicts; - m_listSpellDicts_menu = listSpellDicts_menu; - m_buttonSpellDictionary = buttonSpellDictionary; - m_buttonSpellIgnoreEdit = buttonSpellIgnoreEdit; - m_buttonSpellIgnoreReset = buttonSpellIgnoreReset; - m_checkbuttonPrefsAutoSave = checkbuttonPrefsAutoSave; - m_comboPrefsScheme = comboPrefsSchemes; - - m_checkbuttonViewShowRuler = checkbuttonViewRuler; - m_listViewRulerUnits = listViewRulerUnit; - m_checkbuttonViewCursorBlink = checkbuttonViewCursorBlink; - m_checkbuttonViewShowToolbars = checkbuttonViewToolbars; - m_checkbuttonViewAll = checkbuttonViewAll; - m_checkbuttonViewHiddenText = checkbuttonViewHidden; - m_checkbuttonViewUnprintable = checkbuttonViewUnprintable; + _constructWindowContents(); + gtk_table_attach (GTK_TABLE (table2), m_notebook, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 10, 7); m_buttonSave = buttonSave; m_buttonDefaults = buttonDefaults; diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/ap_UnixDialog_Options.h abi/src/wp/ap/unix/ap_UnixDialog_Options.h --- abi2/src/wp/ap/unix/ap_UnixDialog_Options.h Wed Dec 8 01:27:19 1999 +++ abi/src/wp/ap/unix/ap_UnixDialog_Options.h Tue Apr 4 14:09:41 2000 @@ -72,6 +72,7 @@ // private construction functions GtkWidget * _constructWindow(void); + GtkWidget * _constructWindowContents(void); // pointers to widgets we need to query/set // there are a ton of them in this dialog diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/gnome/Makefile abi/src/wp/ap/unix/gnome/Makefile --- abi2/src/wp/ap/unix/gnome/Makefile Fri Mar 10 14:08:48 2000 +++ abi/src/wp/ap/unix/gnome/Makefile Tue Apr 4 04:14:47 2000 @@ -27,7 +27,8 @@ PLATFORM_OBJS+= $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)App.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Break.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Replace.$(OBJ_SUFFIX) \ - $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.$(OBJ_SUFFIX) + $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.$(OBJ_SUFFIX) \ + $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Options.$(OBJ_SUFFIX) # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)DialogFactory.$(OBJ_SUFFIX) # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Clipboard.$(OBJ_SUFFIX) \ # $(OBJDIR)/ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Paragraph.$(OBJ_SUFFIX) \ @@ -48,7 +49,8 @@ CPPSRCS= ap_$(ABI_FE)$(ABI_GNOME_PREFIX)App.cpp \ ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Break.cpp \ ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Replace.cpp \ - ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.cpp + ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_WordCount.cpp \ + ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Options.cpp # ap_$(ABI_FE)$(ABI_GNOME_PREFIX)DialogFactory.cpp # ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Clipboard.cpp \ # ap_$(ABI_FE)$(ABI_GNOME_PREFIX)Dialog_Paragraph.cpp \ diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.cpp abi/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.cpp --- abi2/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.cpp Wed Dec 31 19:00:00 1969 +++ abi/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.cpp Tue Apr 4 14:09:08 2000 @@ -0,0 +1,252 @@ +/* AbiWord + * Copyright (C) 1998 AbiSource, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include + +#include "ut_types.h" +#include "ut_string.h" +#include "ut_assert.h" +#include "ut_debugmsg.h" + +// This header defines some functions for Unix dialogs, +// like centering them, measuring them, etc. +#include "ut_dialogHelper.h" + +#include "gr_UnixGraphics.h" + +#include "xap_App.h" +#include "xap_UnixApp.h" +#include "xap_UnixFrame.h" +#include "xap_Prefs.h" + +#include "ap_Dialog_Id.h" +#include "ap_Prefs_SchemeIds.h" + +#include "ap_Strings.h" + +#include "ap_UnixDialog_Options.h" +#include "ap_UnixGnomeDialog_Options.h" + +/*****************************************************************/ + +XAP_Dialog * AP_UnixGnomeDialog_Options::static_constructor(XAP_DialogFactory * pFactory, + XAP_Dialog_Id id) +{ + AP_UnixGnomeDialog_Options * p = new AP_UnixGnomeDialog_Options(pFactory,id); + return p; +} + +AP_UnixGnomeDialog_Options::AP_UnixGnomeDialog_Options(XAP_DialogFactory * pDlgFactory, + XAP_Dialog_Id id) + : AP_UnixDialog_Options(pDlgFactory,id) +{ +} + +AP_UnixGnomeDialog_Options::~AP_UnixGnomeDialog_Options(void) +{ +} + +/*****************************************************************/ + +void AP_UnixGnomeDialog_Options::runModal(XAP_Frame * pFrame) +{ + // Build the window's widgets and arrange them + GtkWidget * mainWindow = _constructWindow(); + UT_ASSERT(mainWindow); + + // save for use with event + m_pFrame = pFrame; + + // Populate the window's data items + _populateWindowData(); + + // To center the dialog, we need the frame of its parent. + XAP_UnixFrame * pUnixFrame = static_cast(pFrame); + UT_ASSERT(pUnixFrame); + + // Get the GtkWindow of the parent frame + GtkWidget * parentWindow = pUnixFrame->getTopLevelWindow(); + UT_ASSERT(parentWindow); + + // Center our new dialog in its parent and make it a transient + // so it won't get lost underneath + centerDialog(parentWindow, mainWindow); + gtk_window_set_transient_for(GTK_WINDOW(mainWindow), GTK_WINDOW(parentWindow)); + + // Show the top level dialog, + gtk_widget_show(mainWindow); + + // Make it modal, and stick it up top + gtk_grab_add(mainWindow); + + // Run into the GTK event loop for this window. + do { + gtk_main(); + + switch ( m_answer ) + { + case AP_Dialog_Options::a_OK: + _storeWindowData(); + break; + + case AP_Dialog_Options::a_APPLY: + UT_DEBUGMSG(("Applying changes\n")); + _storeWindowData(); + break; + + case AP_Dialog_Options::a_CANCEL: + break; + + default: + UT_ASSERT(UT_SHOULD_NOT_HAPPEN); + break; + }; + + } while ( m_answer == AP_Dialog_Options::a_APPLY ); + + gtk_widget_destroy(mainWindow); +} + +/*****************************************************************/ +#define CONNECT_MENU_ITEM_SIGNAL_ACTIVATE(w) \ + do { \ + gtk_signal_connect(GTK_OBJECT(w), "activate", \ + GTK_SIGNAL_FUNC(s_menu_item_activate), \ + (gpointer) this); \ + } while (0) + +GtkWidget* AP_UnixGnomeDialog_Options::_constructWindow () +{ + const XAP_StringSet * pSS = m_pApp->getStringSet(); + + XML_Char *unixstr = NULL; + GtkWidget *windowOptions; + + GtkWidget *buttonSave; + GtkWidget *buttonDefaults; + GtkWidget *buttonApply; + GtkWidget *buttonOk; + GtkWidget *buttonCancel; + + UT_XML_cloneNoAmpersands(unixstr, pSS->getValue(AP_STRING_ID_DLG_Options_OptionsTitle) ); + windowOptions = gnome_dialog_new (unixstr, NULL); + + gnome_dialog_append_button_with_pixmap(GNOME_DIALOG(windowOptions), + pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Save), GNOME_STOCK_PIXMAP_SAVE); + gnome_dialog_append_button(GNOME_DIALOG(windowOptions), GNOME_STOCK_BUTTON_APPLY); + gnome_dialog_append_button_with_pixmap(GNOME_DIALOG(windowOptions), + pSS->getValue(AP_STRING_ID_DLG_Options_Btn_Default), GNOME_STOCK_PIXMAP_REVERT); + gnome_dialog_append_button(GNOME_DIALOG(windowOptions), GNOME_STOCK_BUTTON_OK); + gnome_dialog_append_button(GNOME_DIALOG(windowOptions), GNOME_STOCK_BUTTON_CANCEL); + + gtk_object_set_data (GTK_OBJECT (windowOptions), "windowOptions", windowOptions); + + buttonSave = GTK_WIDGET (g_list_nth_data (GNOME_DIALOG (windowOptions)->buttons, 0) ); + gtk_widget_ref(buttonSave); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonSave", buttonSave, + (GtkDestroyNotify) gtk_widget_unref); + + buttonApply = GTK_WIDGET (g_list_nth_data (GNOME_DIALOG (windowOptions)->buttons, 1) ); + gtk_widget_ref(buttonApply); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonApply", buttonApply, + (GtkDestroyNotify) gtk_widget_unref); + + buttonDefaults = GTK_WIDGET (g_list_nth_data (GNOME_DIALOG (windowOptions)->buttons, 2) ); + gtk_widget_ref(buttonDefaults); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonDefaults", buttonDefaults, + (GtkDestroyNotify) gtk_widget_unref); + + buttonOk = GTK_WIDGET (g_list_nth_data (GNOME_DIALOG (windowOptions)->buttons, 3) ); + gtk_widget_ref(buttonOk); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonOk", buttonOk, + (GtkDestroyNotify) gtk_widget_unref); + + buttonCancel = GTK_WIDGET (g_list_nth_data (GNOME_DIALOG (windowOptions)->buttons, 4) ); + gtk_widget_ref(buttonCancel); + gtk_object_set_data_full (GTK_OBJECT (windowOptions), "buttonCancel", buttonCancel, + (GtkDestroyNotify) gtk_widget_unref); + + // the catch-alls + gtk_signal_connect_after(GTK_OBJECT(windowOptions), + "delete_event", + GTK_SIGNAL_FUNC(s_delete_clicked), + (gpointer) this); + + + gtk_signal_connect_after(GTK_OBJECT(windowOptions), + "destroy", + NULL, + NULL); + + ////////////////////////////////////////////////////////////////////// + // the control buttons + gtk_signal_connect(GTK_OBJECT(buttonOk), + "clicked", + GTK_SIGNAL_FUNC(s_ok_clicked), + (gpointer) this); + + gtk_signal_connect(GTK_OBJECT(buttonCancel), + "clicked", + GTK_SIGNAL_FUNC(s_cancel_clicked), + (gpointer) this); + + gtk_signal_connect(GTK_OBJECT(buttonDefaults), + "clicked", + GTK_SIGNAL_FUNC(s_defaults_clicked), + (gpointer) this); + + gtk_signal_connect(GTK_OBJECT(buttonApply), + "clicked", + GTK_SIGNAL_FUNC(s_apply_clicked), + (gpointer) this); + + + // Update member variables with the important widgets that + // might need to be queried or altered later. + + m_windowMain = windowOptions; + + _constructWindowContents(); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (windowOptions)->vbox), m_notebook, TRUE, TRUE, 10); + + m_buttonSave = buttonSave; + m_buttonDefaults = buttonDefaults; + m_buttonApply = buttonApply; + m_buttonOK = buttonOk; + m_buttonCancel = buttonCancel; + + // create the accelerators from &'s + createLabelAccelerators(windowOptions); + + // create user data tControl -> stored in widgets + for ( int i = 0; i < id_last; i++ ) + { + GtkWidget *w = _lookupWidget( (tControl)i ); + UT_ASSERT( w && GTK_IS_WIDGET(w) ); + + /* check to see if there is any data already stored there (note, will + * not work if 0's is stored in multiple places */ + UT_ASSERT( gtk_object_get_data(GTK_OBJECT(w), "tControl" ) == NULL); + + gtk_object_set_data( GTK_OBJECT(w), "tControl", (gpointer) i ); + } + + return windowOptions; +} + diff -ruN --exclude=*CVS* --exclude=*Linux* --exclude=*Paragraph* abi2/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.h abi/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.h --- abi2/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.h Wed Dec 31 19:00:00 1969 +++ abi/src/wp/ap/unix/gnome/ap_UnixGnomeDialog_Options.h Tue Apr 4 05:32:29 2000 @@ -0,0 +1,46 @@ +/* AbiWord + * Copyright (C) 1998 AbiSource, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifndef AP_UNIXGNOMEDIALOG_OPTIONS_H +#define AP_UNIXGNOMEDIALOG_OPTIONS_H + +#include "ap_UnixDialog_Options.h" + +class XAP_UnixFrame; + +/*****************************************************************/ +class AP_UnixGnomeDialog_Options: public AP_UnixDialog_Options +{ +public: + AP_UnixGnomeDialog_Options(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id); + + virtual ~AP_UnixGnomeDialog_Options(void); + + virtual void runModal(XAP_Frame * pFrame); + + static XAP_Dialog * static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id); + + + protected: + + // private construction functions + virtual GtkWidget * _constructWindow(void); +}; + +#endif /* AP_UNIXGNOMEDIALOG_OPTIONS_H */