From 63492970153a54b231d9f2bfe9477a4527c032d5 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Mon, 30 Oct 2000 11:33:05 +0000 Subject: [PATCH] Patches from Angus and Marko git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1172 a592a061-630c-0410-9148-cb99ea01b6c8 --- ChangeLog | 35 +- lyx.man | 3 +- src/frontends/gnome/FormCitation.C | 68 ++-- src/frontends/gnome/FormCitation.h | 9 +- src/frontends/gnome/FormCopyright.C | 14 +- src/frontends/gnome/FormCopyright.h | 2 +- src/frontends/gnome/FormError.C | 14 +- src/frontends/gnome/FormError.h | 3 +- src/frontends/gnome/FormIndex.C | 20 +- src/frontends/gnome/FormIndex.h | 3 +- src/frontends/gnome/FormPrint.C | 16 +- src/frontends/gnome/FormPrint.h | 3 +- src/frontends/gnome/FormRef.C | 20 +- src/frontends/gnome/FormRef.h | 3 +- src/frontends/gnome/FormToc.C | 26 +- src/frontends/gnome/FormToc.h | 3 +- src/frontends/gnome/FormUrl.C | 20 +- src/frontends/gnome/FormUrl.h | 3 +- src/frontends/gnome/Menubar_pimpl.C | 4 +- src/frontends/gnome/mainapp.C | 10 +- src/frontends/gnome/mainapp.h | 2 +- src/frontends/gnome/pixbutton.h | 2 +- src/frontends/xforms/FormPreferences.C | 262 ++++++++++++++- src/frontends/xforms/FormPreferences.h | 29 ++ src/frontends/xforms/form_preferences.C | 94 +++++- src/frontends/xforms/form_preferences.h | 22 ++ .../xforms/forms/form_preferences.fd | 308 +++++++++++++++++- 27 files changed, 864 insertions(+), 134 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70a354688d..911247c86a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +2000-10-30 Rob Lahaye + + * lyx.man: fix typo. + +2000-10-29 Marko Vendelin + * src/frontends/gnome/FormCitation.C + * src/frontends/gnome/FormCitation.h + * src/frontends/gnome/FormCopyright.C + * src/frontends/gnome/FormCopyright.h + * src/frontends/gnome/FormError.C + * src/frontends/gnome/FormError.h + * src/frontends/gnome/FormIndex.C + * src/frontends/gnome/FormIndex.h + * src/frontends/gnome/FormPrint.C + * src/frontends/gnome/FormPrint.h + * src/frontends/gnome/FormRef.C + * src/frontends/gnome/FormRef.h + * src/frontends/gnome/FormToc.C + * src/frontends/gnome/FormToc.h + * src/frontends/gnome/FormUrl.C + * src/frontends/gnome/FormUrl.h + * src/frontends/gnome/Menubar_pimpl.C + * src/frontends/gnome/mainapp.C + * src/frontends/gnome/mainapp.h + * src/frontends/gnome/pixbutton.h: replacing NULL with 0 and + changing update() to updateSlot() where appropriate + +2000-10-27 Angus Leeming + + * src/frontends/xforms/FormPreferences.[Ch]: + * src/frontends/xforms/forms/form_preferences.fd: added a Languagues + tab. + 2000-10-28 Juergen Vigna * src/insets/insettabular.C (draw): fixed drawing bug. @@ -94,7 +127,7 @@ * src/mathed/formula.C (mathed_string_width): Use string instead of a constant size char array. - + 2000-10-25 Lars Gullik Bjønnes * src/frontends/ButtonPolicies.h: remove the LOstream and remove diff --git a/lyx.man b/lyx.man index 10aa23e939..018ddcb79f 100644 --- a/lyx.man +++ b/lyx.man @@ -52,8 +52,7 @@ sets user directory. Needed if you want to use LyX with different lyxrc settings. .TP .BI \-geometry " WxH+X+Y" -specifies the preferred size and position of the main \fBLyX\fR window; see \fIX -(1)\fR. +specifies the preferred size and position of the main \fBLyX\fR window; see \fIX(1)\fR. .TP .BI \-dbg " feature[,feature...]" where feature is a name or number. diff --git a/src/frontends/gnome/FormCitation.C b/src/frontends/gnome/FormCitation.C index b2cd38c6fc..547e07803c 100644 --- a/src/frontends/gnome/FormCitation.C +++ b/src/frontends/gnome/FormCitation.C @@ -89,12 +89,12 @@ FormCitation::~FormCitation() void FormCitation::showInset( InsetCommand * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormCitation::hide)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormCitation::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormCitation::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormCitation::hide)); params = inset->params(); @@ -106,9 +106,9 @@ void FormCitation::showInset( InsetCommand * const inset ) void FormCitation::createInset( string const & arg ) { - if( dialog_!=NULL ) return; + if( dialog_!=0 ) return; - u_ = d_->updateBufferDependent.connect(slot(this, &FormCitation::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormCitation::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormCitation::hide)); params.setFromString( arg ); @@ -210,19 +210,19 @@ void parseBibTeX(string data, void FormCitation::cleanupWidgets() { - dialog_ = NULL; - b_ok = NULL; - b_cancel = NULL; - search_text_ = NULL; - info_ = NULL; - text_after_ = NULL; - button_unselect_ = NULL; - button_up_ = NULL; - button_down_ = NULL; - button_regexp_ = NULL; - clist_selected_ = NULL; - clist_bib_ = NULL; - paned_info_ = NULL; + dialog_ = 0; + b_ok = 0; + b_cancel = 0; + search_text_ = 0; + info_ = 0; + text_after_ = 0; + button_unselect_ = 0; + button_up_ = 0; + button_down_ = 0; + button_regexp_ = 0; + clist_selected_ = 0; + clist_bib_ = 0; + paned_info_ = 0; } @@ -230,7 +230,7 @@ void FormCitation::initWidgets() { string const path = PACKAGE "/" + LOCAL_CONFIGURE_PREFIX; - if (search_text_ != NULL) + if (search_text_ != 0) { search_text_->set_history_id(CONF_SEARCH); search_text_->set_max_saved(10); @@ -238,7 +238,7 @@ void FormCitation::initWidgets() search_text_->set_use_arrows_always(true); } - if (text_after_ != NULL ) + if (text_after_ != 0 ) { text_after_->set_history_id(CONF_TEXTAFTER); text_after_->set_max_saved(10); @@ -247,19 +247,19 @@ void FormCitation::initWidgets() text_after_->get_entry()->set_text(params.getOptions()); } - if (button_regexp_ != NULL) + if (button_regexp_ != 0) { string w = path + "/" + CONF_REGEXP + CONF_REGEXP_DEFAULT; button_regexp_->set_active( (gnome_config_get_int(w.c_str()) > 0) ); } - if (paned_info_ != NULL) + if (paned_info_ != 0) { string w = path + "/" + CONF_PANE_INFO + CONF_PANE_INFO_DEFAULT; paned_info_->set_position( gnome_config_get_int(w.c_str()) ); } - if (clist_bib_ != NULL) + if (clist_bib_ != 0) { // preferences clist_bib_->column(0).set_visiblity(false); @@ -292,11 +292,11 @@ void FormCitation::initWidgets() if (clist_bib_->rows().size() > 0) { clist_bib_->rows()[0].select(); - selectionToggled(0, 0, NULL, true, false); + selectionToggled(0, 0, 0, true, false); } } - if (clist_selected_ != NULL) + if (clist_selected_ != 0) { clist_selected_->set_selection_mode(GTK_SELECTION_BROWSE); @@ -316,7 +316,7 @@ void FormCitation::initWidgets() if (clist_selected_->rows().size() > 0) { clist_selected_->rows()[0].select(); - selectionToggled(0, 0, NULL, true, true); + selectionToggled(0, 0, 0, true, true); } } @@ -328,23 +328,23 @@ void FormCitation::storeWidgets() { string const path = PACKAGE "/" + LOCAL_CONFIGURE_PREFIX; - if (search_text_ != NULL) search_text_->save_history(); + if (search_text_ != 0) search_text_->save_history(); - if (text_after_ != NULL) text_after_->save_history(); + if (text_after_ != 0) text_after_->save_history(); - if (button_regexp_ != NULL) + if (button_regexp_ != 0) { string w = path + "/" + CONF_REGEXP; gnome_config_set_int(w.c_str(), button_regexp_->get_active()); } - if (paned_info_ != NULL) + if (paned_info_ != 0) { string w = path + "/" + CONF_PANE_INFO; gnome_config_set_int(w.c_str(), paned_info_->width() - info_->width()); } - if (clist_bib_ != NULL) + if (clist_bib_ != 0) { string w; int const sz = clist_bib_->columns().size(); @@ -712,7 +712,7 @@ void FormCitation::addItemToBibList(int i) void FormCitation::updateButtons() { - if (button_unselect_ != NULL) // => button_up_ and button_down_ are != NULL + if (button_unselect_ != 0) // => button_up_ and button_down_ are != 0 { bool sens; @@ -727,7 +727,7 @@ void FormCitation::updateButtons() } -void FormCitation::update(bool buffchanged) +void FormCitation::updateSlot(bool buffchanged) { if (buffchanged) hide(); } @@ -788,12 +788,12 @@ void FormCitation::moveCitationDown() void FormCitation::hide() { - if (dialog_!=NULL) mainAppWin->remove_action(); + if (dialog_!=0) mainAppWin->remove_action(); } void FormCitation::free() { - if (dialog_!=NULL) + if (dialog_!=0) { // cleaning up cleanupWidgets(); diff --git a/src/frontends/gnome/FormCitation.h b/src/frontends/gnome/FormCitation.h index d829306820..6326083ef0 100644 --- a/src/frontends/gnome/FormCitation.h +++ b/src/frontends/gnome/FormCitation.h @@ -45,7 +45,8 @@ private: /// Slot launching dialog to an existing inset void showInset( InsetCommand * const ); - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// The following two methods do nothing in this implementation virtual void apply() { } void show() { } @@ -104,11 +105,11 @@ private: /// adds item to clist_bib_ void addItemToBibList(int i); - /// sets all widget pointers to NULL + /// sets all widget pointers to 0 void cleanupWidgets(); - /// initializes all non-NULL member widgets + /// initializes all non-0 member widgets void initWidgets(); - /// stores configuration of all non-NULL member widgets + /// stores configuration of all non-0 member widgets void storeWidgets(); /** Which LyXFunc do we use? diff --git a/src/frontends/gnome/FormCopyright.C b/src/frontends/gnome/FormCopyright.C index 6a2ce75c47..6af7a579c8 100644 --- a/src/frontends/gnome/FormCopyright.C +++ b/src/frontends/gnome/FormCopyright.C @@ -17,7 +17,7 @@ #include "FormCopyright.h" FormCopyright::FormCopyright(LyXView * lv, Dialogs * d) - : dialog_(NULL), lv_(lv), d_(d), h_(0) + : dialog_(0), lv_(lv), d_(d), h_(0) { // let the dialog be shown // This is a permanent connection so we won't bother @@ -28,25 +28,25 @@ FormCopyright::FormCopyright(LyXView * lv, Dialogs * d) FormCopyright::~FormCopyright() { - if (dialog_!=NULL) hide(); + if (dialog_!=0) hide(); } void FormCopyright::show() { - if(dialog_!=NULL) { // "About" box hasn't been closed, so just raise it + if(dialog_!=0) { // "About" box hasn't been closed, so just raise it Gdk_Window dialog_win(dialog_->get_window()); dialog_win.show(); dialog_win.raise(); } else { // create new "About" dialog box - vector authors; //null. Authors are not listed in LyX copyright dialogbox. + vector authors; //0. Authors are not listed in LyX copyright dialogbox. dialog_ = new Gnome::About(PACKAGE, VERSION, _("(C) 1995 by Matthias Ettrich, \n1995-2000 LyX Team"), authors, _("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.\nLyX 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., 675 Mass Ave, Cambridge, MA 02139, USA."), - NULL); + 0); // it should be disconnected before deleting dialog_ in FormCopyright::hide() destroy_ = dialog_->destroy.connect(slot(this, &FormCopyright::hide)); @@ -60,13 +60,13 @@ void FormCopyright::show() void FormCopyright::hide() { - if (dialog_!=NULL) { + if (dialog_!=0) { dialog_->hide(); h_.disconnect(); destroy_.disconnect(); delete dialog_; - dialog_ = NULL; + dialog_ = 0; } } diff --git a/src/frontends/gnome/FormCopyright.h b/src/frontends/gnome/FormCopyright.h index 62d2efb867..216fbd70bc 100644 --- a/src/frontends/gnome/FormCopyright.h +++ b/src/frontends/gnome/FormCopyright.h @@ -36,7 +36,7 @@ private: /// Hide the dialog. void hide(); /// Not used but we've got to implement it. - void update(bool) {} + void update() {} /// Real GUI implementation. Gnome::About * dialog_; diff --git a/src/frontends/gnome/FormError.C b/src/frontends/gnome/FormError.C index 27b0ac02c0..8ecb605524 100644 --- a/src/frontends/gnome/FormError.C +++ b/src/frontends/gnome/FormError.C @@ -36,7 +36,7 @@ extern GLyxAppWin * mainAppWin; FormError::FormError(LyXView * lv, Dialogs * d) - : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(NULL) + : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -52,7 +52,7 @@ FormError::~FormError() void FormError::showInset( InsetError * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormError::hide)); @@ -97,26 +97,26 @@ void FormError::show() b_close->clicked.connect(slot(mainAppWin, &GLyxAppWin::remove_action)); dialog_->destroy.connect(slot(this, &FormError::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormError::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormError::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormError::hide)); } } -void FormError::update(bool buffchanged) +void FormError::updateSlot(bool buffchanged) { if (buffchanged) hide(); } void FormError::hide() { - if (dialog_!=NULL) mainAppWin->remove_action(); + if (dialog_!=0) mainAppWin->remove_action(); } void FormError::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); inset_ = 0; diff --git a/src/frontends/gnome/FormError.h b/src/frontends/gnome/FormError.h index ba2d2ab5b5..7657be0a3e 100644 --- a/src/frontends/gnome/FormError.h +++ b/src/frontends/gnome/FormError.h @@ -36,7 +36,8 @@ private: void showInset( InsetError * const ); /// Update dialog before showing it - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// Apply from dialog (modify or create inset) virtual void apply(); /// Explicitly free the dialog. diff --git a/src/frontends/gnome/FormIndex.C b/src/frontends/gnome/FormIndex.C index aa20b517eb..921d899caf 100644 --- a/src/frontends/gnome/FormIndex.C +++ b/src/frontends/gnome/FormIndex.C @@ -46,7 +46,7 @@ extern GLyxAppWin * mainAppWin; static string const CONF_ENTRY("FormIndex_entry"); FormIndex::FormIndex(LyXView * lv, Dialogs * d) - : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(NULL) + : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -63,7 +63,7 @@ FormIndex::~FormIndex() void FormIndex::showInset( InsetCommand * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormIndex::hide)); @@ -74,7 +74,7 @@ void FormIndex::showInset( InsetCommand * const inset ) void FormIndex::createInset( string const & arg ) { - if( dialog_!=NULL ) return; + if( dialog_!=0 ) return; params.setFromString( arg ); show(); @@ -131,14 +131,14 @@ void FormIndex::show() dialog_->destroy.connect(slot(this, &FormIndex::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormIndex::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormIndex::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormIndex::hide)); - update(); // make sure its up-to-date + updateSlot(); // make sure its up-to-date } } -void FormIndex::update(bool switched) +void FormIndex::updateSlot(bool switched) { if (switched) { @@ -146,7 +146,7 @@ void FormIndex::update(bool switched) return; } - if (dialog_ != NULL && + if (dialog_ != 0 && lv_->view()->available()) { keyword_->get_entry()->set_text(params.getContents().c_str()); @@ -160,14 +160,14 @@ void FormIndex::update(bool switched) void FormIndex::hide() { - if (dialog_!=NULL) mainAppWin->remove_action(); + if (dialog_!=0) mainAppWin->remove_action(); } void FormIndex::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); inset_ = 0; diff --git a/src/frontends/gnome/FormIndex.h b/src/frontends/gnome/FormIndex.h index b31244c7b9..63f0b85b4e 100644 --- a/src/frontends/gnome/FormIndex.h +++ b/src/frontends/gnome/FormIndex.h @@ -40,7 +40,8 @@ private: void showInset( InsetCommand * const ); /// Update dialog before showing it - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// Apply from dialog (modify or create inset) virtual void apply(); /// Explicitly free the dialog. diff --git a/src/frontends/gnome/FormPrint.C b/src/frontends/gnome/FormPrint.C index 4af90ad48f..d45af3cd05 100644 --- a/src/frontends/gnome/FormPrint.C +++ b/src/frontends/gnome/FormPrint.C @@ -48,7 +48,7 @@ using Liason::getPrinterParams; #endif FormPrint::FormPrint(LyXView * lv, Dialogs * d) - : dialog_(NULL), lv_(lv), d_(d), u_(0), h_(0) + : dialog_(0), lv_(lv), d_(d), u_(0), h_(0) { // let the dialog be shown // This is a permanent connection so we won't bother @@ -103,12 +103,12 @@ void FormPrint::show() dialog_->destroy.connect(slot(this, &FormPrint::free)); u_ = d_->updateBufferDependent.connect(slot(this, - &FormPrint::update)); + &FormPrint::updateSlot)); h_ = d_->hideBufferDependent.connect(dialog_->destroy.slot()); if (!dialog_->is_visible()) dialog_->show_all(); - update(); // make sure its up-to-date + updateSlot(); // make sure its up-to-date } else { @@ -119,14 +119,14 @@ void FormPrint::show() void FormPrint::hide() { - if (dialog_!=NULL) dialog_->destroy(); + if (dialog_!=0) dialog_->destroy(); } void FormPrint::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); } @@ -170,9 +170,9 @@ void FormPrint::apply() // we can safely ignore the parameter because we can always update -void FormPrint::update(bool) +void FormPrint::updateSlot(bool) { - if (dialog_ != NULL && + if (dialog_ != 0 && lv_->view()->available()) { PrinterParams pp(getPrinterParams(lv_->buffer())); diff --git a/src/frontends/gnome/FormPrint.h b/src/frontends/gnome/FormPrint.h index 3c82c1150a..0824de7778 100644 --- a/src/frontends/gnome/FormPrint.h +++ b/src/frontends/gnome/FormPrint.h @@ -58,7 +58,8 @@ private: /// Hide the dialog. void hide(); /// Update the dialog. - void update(bool = false); + void update() { } + void updateSlot(bool = false); /// Free memory void free(); //@} diff --git a/src/frontends/gnome/FormRef.C b/src/frontends/gnome/FormRef.C index 25a4e3a8a9..dc2fa4b01b 100644 --- a/src/frontends/gnome/FormRef.C +++ b/src/frontends/gnome/FormRef.C @@ -49,7 +49,7 @@ static string const GOTO_REF_LABEL(N_("Goto reference")); static string const GOTO_BACK_LABEL(N_("Go back")); FormRef::FormRef(LyXView * lv, Dialogs * d) - : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(NULL) + : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -66,7 +66,7 @@ FormRef::~FormRef() void FormRef::showInset( InsetCommand * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormRef::hide)); @@ -80,7 +80,7 @@ void FormRef::showInset( InsetCommand * const inset ) void FormRef::createInset( string const & arg ) { - if( dialog_!=NULL ) return; + if( dialog_!=0 ) return; acttype_ = INSERT; @@ -122,7 +122,7 @@ void FormRef::showStageError(string const & mess) b_cancel->clicked.connect(slot(mainAppWin, &GLyxAppWin::remove_action)); dialog_->destroy.connect(slot(this, &FormRef::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormRef::hide)); } } @@ -197,7 +197,7 @@ void FormRef::showStageSelect() dialog_->destroy.connect(slot(this, &FormRef::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormRef::hide)); } } @@ -324,26 +324,26 @@ void FormRef::showStageAction() dialog_->destroy.connect(slot(this, &FormRef::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormRef::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormRef::hide)); } } -void FormRef::update(bool buffchanged) +void FormRef::updateSlot(bool buffchanged) { if (buffchanged) hide(); } void FormRef::hide() { - if (dialog_!=NULL) mainAppWin->remove_action(); + if (dialog_!=0) mainAppWin->remove_action(); } void FormRef::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); inset_ = 0; diff --git a/src/frontends/gnome/FormRef.h b/src/frontends/gnome/FormRef.h index ac989ee15b..e423c44f63 100644 --- a/src/frontends/gnome/FormRef.h +++ b/src/frontends/gnome/FormRef.h @@ -72,7 +72,8 @@ private: void showInset( InsetCommand * const ); /// Update dialog before showing it (not used in this implementation) - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// Apply from dialog (modify or create inset) virtual void apply(); /// Explicitly free the dialog. diff --git a/src/frontends/gnome/FormToc.C b/src/frontends/gnome/FormToc.C index 089f131807..6d0827c361 100644 --- a/src/frontends/gnome/FormToc.C +++ b/src/frontends/gnome/FormToc.C @@ -39,7 +39,7 @@ extern "C" { using SigC::bind; FormToc::FormToc(LyXView * lv, Dialogs * d) - : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(NULL), ignore_callback_(false) + : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(0), ignore_callback_(false) { // let the dialog be shown // These are permanent connections so we won't bother @@ -56,7 +56,7 @@ FormToc::~FormToc() void FormToc::showInset( InsetCommand * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormToc::hide)); @@ -68,7 +68,7 @@ void FormToc::showInset( InsetCommand * const inset ) void FormToc::createInset( string const & arg ) { - if( dialog_!=NULL ) return; + if( dialog_!=0 ) return; params.setFromString( arg ); show(); @@ -117,16 +117,16 @@ void FormToc::show() b_refresh = Gtk::wrap( GTK_BUTTON( lookup_widget(pd, "button_refresh") ) ); b_close = Gtk::wrap( GTK_BUTTON( lookup_widget(pd, "button_close") ) ); - b_refresh->clicked.connect(bind(slot(this, &FormToc::update),false)); + b_refresh->clicked.connect(bind(slot(this, &FormToc::updateSlot),false)); b_close->clicked.connect(dialog_->destroy.slot()); dialog_->destroy.connect(slot(this, &FormToc::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormToc::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormToc::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormToc::hide)); if (!dialog_->is_visible()) dialog_->show_all(); - update(); // make sure its up-to-date + updateSlot(); // make sure its up-to-date } else { @@ -137,12 +137,12 @@ void FormToc::show() // we can safely ignore the parameter because we can always update -void FormToc::update(bool) +void FormToc::updateSlot(bool) { Buffer::TocType type; string wintitle; - if (dialog_ != NULL && + if (dialog_ != 0 && !lv_->view()->available()) { wintitle = _( "*** No Document ***"); @@ -155,7 +155,7 @@ void FormToc::update(bool) } - if (dialog_ != NULL && + if (dialog_ != 0 && lv_->view()->available()) { @@ -247,20 +247,20 @@ void FormToc::changeList(Buffer::TocType type) break; } }; - update(); + updateSlot(); } } void FormToc::hide() { - if (dialog_!=NULL) dialog_->destroy(); + if (dialog_!=0) dialog_->destroy(); } void FormToc::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); inset_ = 0; diff --git a/src/frontends/gnome/FormToc.h b/src/frontends/gnome/FormToc.h index f7d541a332..32b8e25129 100644 --- a/src/frontends/gnome/FormToc.h +++ b/src/frontends/gnome/FormToc.h @@ -41,7 +41,8 @@ private: void showInset( InsetCommand * const ); /// Update dialog before showing it - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// Explicitly free the dialog. void free(); /// Create the dialog if necessary, update it and display it. diff --git a/src/frontends/gnome/FormUrl.C b/src/frontends/gnome/FormUrl.C index f5e521ad9a..22f2e00f20 100644 --- a/src/frontends/gnome/FormUrl.C +++ b/src/frontends/gnome/FormUrl.C @@ -39,7 +39,7 @@ static string const CONF_ENTRY_URL("FormUrl_url"); static string const CONF_ENTRY_NAME("FormUrl_name"); FormUrl::FormUrl(LyXView * lv, Dialogs * d) - : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(NULL) + : lv_(lv), d_(d), inset_(0), u_(0), h_(0), ih_(0), dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -56,7 +56,7 @@ FormUrl::~FormUrl() void FormUrl::showInset( InsetCommand * const inset ) { - if( dialog_!=NULL || inset == 0 ) return; + if( dialog_!=0 || inset == 0 ) return; inset_ = inset; ih_ = inset_->hide.connect(slot(this, &FormUrl::hide)); @@ -68,7 +68,7 @@ void FormUrl::showInset( InsetCommand * const inset ) void FormUrl::createInset( string const & arg ) { - if( dialog_!=NULL ) return; + if( dialog_!=0 ) return; params.setFromString( arg ); show(); @@ -143,14 +143,14 @@ void FormUrl::show() dialog_->destroy.connect(slot(this, &FormUrl::free)); - u_ = d_->updateBufferDependent.connect(slot(this, &FormUrl::update)); + u_ = d_->updateBufferDependent.connect(slot(this, &FormUrl::updateSlot)); h_ = d_->hideBufferDependent.connect(slot(this, &FormUrl::hide)); - update(); // make sure its up-to-date + updateSlot(); // make sure its up-to-date } } -void FormUrl::update(bool switched) +void FormUrl::updateSlot(bool switched) { if (switched) { @@ -158,7 +158,7 @@ void FormUrl::update(bool switched) return; } - if (dialog_ != NULL && + if (dialog_ != 0 && lv_->view()->available()) { url_->get_entry()->set_text(params.getContents().c_str()); @@ -177,14 +177,14 @@ void FormUrl::update(bool switched) void FormUrl::hide() { - if (dialog_!=NULL) mainAppWin->remove_action(); + if (dialog_!=0) mainAppWin->remove_action(); } void FormUrl::free() { - if (dialog_!=NULL) + if (dialog_!=0) { - dialog_ = NULL; + dialog_ = 0; u_.disconnect(); h_.disconnect(); inset_ = 0; diff --git a/src/frontends/gnome/FormUrl.h b/src/frontends/gnome/FormUrl.h index ea16dd83e0..0ab2deade8 100644 --- a/src/frontends/gnome/FormUrl.h +++ b/src/frontends/gnome/FormUrl.h @@ -45,7 +45,8 @@ private: void showInset( InsetCommand * const ); /// Update dialog before showing it - virtual void update(bool = false); + virtual void update() { } + virtual void updateSlot(bool = false); /// Apply from dialog (modify or create inset) virtual void apply(); /// Explicitly free the dialog. diff --git a/src/frontends/gnome/Menubar_pimpl.C b/src/frontends/gnome/Menubar_pimpl.C index 1d627e1163..b26d55e2e4 100644 --- a/src/frontends/gnome/Menubar_pimpl.C +++ b/src/frontends/gnome/Menubar_pimpl.C @@ -359,9 +359,9 @@ void Menubar::Pimpl::connectWidgetToAction(GnomeUIInfo * guinfo) { if ( ( guinfo->type == GnomeUIInfoType(GNOME_APP_UI_ITEM) || guinfo->type == GnomeUIInfoType(GNOME_APP_UI_TOGGLEITEM) ) && - guinfo->moreinfo != NULL ) + guinfo->moreinfo != 0 ) { - (*((void(*)(void *, void *))(guinfo->moreinfo)))(NULL, guinfo->user_data); + (*((void(*)(void *, void *))(guinfo->moreinfo)))(0, guinfo->user_data); wid_act_.push_back( GtkWidgetToAction( guinfo->widget, action_ ) ); } else if ( guinfo->type == GnomeUIInfoType(GNOME_APP_UI_SUBTREE) || diff --git a/src/frontends/gnome/mainapp.C b/src/frontends/gnome/mainapp.C index 90afdefd6e..f7d4d03639 100644 --- a/src/frontends/gnome/mainapp.C +++ b/src/frontends/gnome/mainapp.C @@ -47,7 +47,7 @@ void GLyxAppWin::init() set_statusbar(status_); - accel_ = NULL; + accel_ = 0; // initial (dummy) menu vector menus, fm; @@ -65,7 +65,7 @@ void GLyxAppWin::init() // temporary main widget Gtk::HBox * h = manage( new Gtk::HBox() ); Gnome::Pixmap * p; - p = Gtk::wrap( GNOME_PIXMAP( gnome_stock_pixmap_widget(NULL, GNOME_STOCK_PIXMAP_ABOUT) ) ); + p = Gtk::wrap( GNOME_PIXMAP( gnome_stock_pixmap_widget(0, GNOME_STOCK_PIXMAP_ABOUT) ) ); h->children().push_back( Gtk::Box_Helpers::Element( *p ) ); h->children().push_back( *(manage(new Gtk::Label("Waiting for LyXView port"))) ); @@ -118,7 +118,7 @@ void GLyxAppWin::add_action(Gtk::Container &action, string title, bool expand, G box_.show_all(); accel_ = acgr; - if (accel_ != NULL) add_accel_group(*accel_); + if (accel_ != 0) add_accel_group(*accel_); view_->set_sensitive(false); action_mode = true; @@ -126,10 +126,10 @@ void GLyxAppWin::add_action(Gtk::Container &action, string title, bool expand, G void GLyxAppWin::remove_action() { - if (accel_ != NULL) + if (accel_ != 0) { remove_accel_group(*accel_); - accel_ = NULL; + accel_ = 0; } while ( box_.children().size() > 2 ) diff --git a/src/frontends/gnome/mainapp.h b/src/frontends/gnome/mainapp.h index e6460ad40a..8aeab39dc7 100644 --- a/src/frontends/gnome/mainapp.h +++ b/src/frontends/gnome/mainapp.h @@ -36,7 +36,7 @@ class GLyxAppWin: public Gnome::App int noelms, Gnome::UI::Array &); /// add action area - void add_action(Gtk::Container &, string title, bool expand=false, Gtk::AccelGroup * acgr=NULL); + void add_action(Gtk::Container &, string title, bool expand=false, Gtk::AccelGroup * acgr=0); /// remove action area void remove_action(); /// clears action area if Escape is pressed diff --git a/src/frontends/gnome/pixbutton.h b/src/frontends/gnome/pixbutton.h index 3afdf9371a..955c1bb878 100644 --- a/src/frontends/gnome/pixbutton.h +++ b/src/frontends/gnome/pixbutton.h @@ -29,7 +29,7 @@ namespace Gnome { Gtk::Box * b = manage( new Gtk::HBox() ); l = manage( new Gtk::Label(label) ); - Gnome::Pixmap * p = Gtk::wrap( GNOME_PIXMAP( gnome_stock_pixmap_widget(NULL, pixname.c_str()) ) ); + Gnome::Pixmap * p = Gtk::wrap( GNOME_PIXMAP( gnome_stock_pixmap_widget(0, pixname.c_str()) ) ); b->set_spacing(3); b->children().push_back(Gtk::Box_Helpers::Element(*p, false, false)); diff --git a/src/frontends/xforms/FormPreferences.C b/src/frontends/xforms/FormPreferences.C index a5fd2ca510..4e5c5cc468 100644 --- a/src/frontends/xforms/FormPreferences.C +++ b/src/frontends/xforms/FormPreferences.C @@ -10,10 +10,13 @@ #pragma implementation #endif +#include + #include "FormPreferences.h" #include "form_preferences.h" #include "input_validators.h" #include "LyXView.h" +#include "language.h" #include "lyxfunc.h" #include "Dialogs.h" #include "lyxrc.h" @@ -26,12 +29,17 @@ using SigC::slot; #endif +using std::find; +using std::vector; + +extern Languages languages; +static vector languageNames; FormPreferences::FormPreferences(LyXView * lv, Dialogs * d) : FormBaseBI(lv, d, _("Preferences"), new PreferencesPolicy), dialog_(0), outputs_tab_(0), look_n_feel_tab_(0), inputs_tab_(0), - usage_tab_(0), colours_(0), interface_(0), language_(0), - lnf_misc_(0), outputs_misc_(0), paths_(0), printer_(0), + usage_tab_(0), colours_(0), inputs_misc_(0), interface_(0), + language_(0), lnf_misc_(0), outputs_misc_(0), paths_(0), printer_(0), screen_fonts_(0), spellchecker_(0) { // let the dialog be shown @@ -49,6 +57,7 @@ FormPreferences::~FormPreferences() delete outputs_tab_; delete usage_tab_; delete colours_; + delete inputs_misc_; delete interface_; delete language_; delete lnf_misc_; @@ -120,6 +129,7 @@ void FormPreferences::build() // build actual tabfolder contents // these will become nested tabfolders buildColours(); + buildInputsMisc(); buildInterface(); buildLanguage(); buildLnFmisc(); @@ -163,6 +173,9 @@ void FormPreferences::build() fl_addto_tabfolder(inputs_tab_->tabfolder_outer, _("Paths"), paths_->form); + fl_addto_tabfolder(inputs_tab_->tabfolder_outer, + _("Misc"), + inputs_misc_->form); // then building outputs fl_addto_tabfolder(outputs_tab_->tabfolder_outer, @@ -194,7 +207,10 @@ void FormPreferences::apply() // like update the screen fonts because that flushes the textcache // and other stuff which may cost us a lot on slower/high-load machines. + applyColours(); + applyInputsMisc(); applyInterface(); + applyLanguage(); applyLnFmisc(); applyOutputsMisc(); applyPaths(); @@ -209,7 +225,10 @@ void FormPreferences::update() if (!dialog_) return; // read lyxrc entries + updateColours(); + updateInputsMisc(); updateInterface(); + updateLanguage(); updateLnFmisc(); updateOutputsMisc(); updatePaths(); @@ -233,6 +252,11 @@ bool FormPreferences::input(FL_OBJECT * ob, long data) State cb = static_cast( data ); switch( cb ) { case COLOURS: + feedbackColours( ob ); + break; + + case INPUTSMISC: + feedbackInputsMisc( ob ); break; case INTERFACE: @@ -240,6 +264,9 @@ bool FormPreferences::input(FL_OBJECT * ob, long data) break; case LANGUAGE: + feedbackLanguage( ob ); + if( ! inputLanguage( ob ) ) + activate = false; break; case LOOKNFEELMISC: @@ -280,12 +307,62 @@ bool FormPreferences::input(FL_OBJECT * ob, long data) } +void FormPreferences::applyColours() +{ +} + + void FormPreferences::buildColours() { colours_ = build_colours(); } +void FormPreferences::feedbackColours( FL_OBJECT const * const ) +{ +} + + +void FormPreferences::updateColours() +{ +} + + +void FormPreferences::applyInputsMisc() +{ + lyxrc.date_insert_format = fl_get_input(inputs_misc_->input_date_format); +} + + +void FormPreferences::buildInputsMisc() +{ + inputs_misc_ = build_inputs_misc(); + + fl_set_input_return(inputs_misc_->input_date_format, + FL_RETURN_CHANGED); +} + + +void FormPreferences::feedbackInputsMisc( FL_OBJECT const * const ob ) +{ + string str; + + if( ob == inputs_misc_->input_date_format ) { + str = N_("This accepts the normal strftime formats; see man strftime for full details.\nE.g.\"%A, %e. %B %Y\"."); + } + + fl_set_object_label(dialog_->text_warning, str.c_str()); + fl_set_object_lsize(dialog_->text_warning, FL_SMALL_SIZE); +} + + +void FormPreferences::updateInputsMisc() +{ + fl_set_input(inputs_misc_->input_date_format, + lyxrc.date_insert_format.c_str()); +} + + void FormPreferences::applyInterface() { lyxrc.popup_font_name = @@ -359,9 +436,173 @@ void FormPreferences::updateInterface() } +void FormPreferences::applyLanguage() +{ + vector::size_type choice = + fl_get_choice(language_->choice_default_lang) - 1; + lyxrc.default_language = languageNames[choice]; + + int button = fl_get_button(language_->check_use_kbmap); + lyxrc.use_kbmap = static_cast(button); + + if( button ) { + choice = fl_get_choice(language_->choice_kbmap_1) - 1; + lyxrc.primary_kbmap = languageNames[choice]; + + choice = fl_get_choice(language_->choice_kbmap_2) - 1; + lyxrc.secondary_kbmap = languageNames[choice]; + } + + button = fl_get_button(language_->check_rtl_support); + lyxrc.rtl_support = static_cast(button); + + button = fl_get_button(language_->check_auto_begin); + lyxrc.language_auto_begin = static_cast(button); + + button = fl_get_button(language_->check_auto_end); + lyxrc.language_auto_end = static_cast(button); + + button = fl_get_button(language_->check_mark_foreign); + lyxrc.mark_foreign_language = static_cast(button); + + lyxrc.language_package = fl_get_input(language_->input_package); + lyxrc.language_command_begin = fl_get_input(language_->input_command_begin); + lyxrc.language_command_end = fl_get_input(language_->input_command_end); +} + + void FormPreferences::buildLanguage() { language_ = build_language(); + + fl_set_input_return(language_->input_package, FL_RETURN_CHANGED); + fl_set_input_return(language_->input_command_begin, FL_RETURN_CHANGED); + fl_set_input_return(language_->input_command_end, FL_RETURN_CHANGED); + + // Only do this the first time buildLanguage() is called. + if( languageNames.empty() ) { + for( Languages::const_iterator lang = languages.begin(); + lang != languages.end(); lang++ ) { + languageNames.push_back( (*lang).second.lang() ); + } + } + + string names = " " + languageNames.front(); + for( vector::const_iterator lang = languageNames.begin(); + lang != languageNames.end(); ++lang ) { + names += " | " + (*lang); + } + names += " "; + + fl_addto_choice(language_->choice_default_lang, names.c_str()); + fl_addto_choice(language_->choice_kbmap_1, names.c_str()); + fl_addto_choice(language_->choice_kbmap_2, names.c_str()); +} + + +void FormPreferences::feedbackLanguage( FL_OBJECT const * const ob ) +{ + string str; + + if( ob == language_->choice_default_lang ) { + str = N_("New documents will be assigned this language."); + } else if( ob == language_->check_use_kbmap + || ob == language_->choice_kbmap_1 + || ob == language_->choice_kbmap_2 ) { + str = N_("Use this to set the correct mapping file for your keyboard.\nYou'll need this if you for instance want to type German documents\non an American keyboard."); + } else if( ob == language_->check_rtl_support ) { + str = N_("Use to enable support of right-to-left languages (e.g. Hebrew, Arabic)."); + } else if( ob == language_->check_auto_begin ) { + str = N_("Use if a language switching command is needed at the beginning\nof the document."); + } else if( ob == language_->check_auto_end ) { + str = N_("Use if a language switching command is needed at the end\nof the document."); + } else if( ob == language_->check_mark_foreign ) { + str = N_("Use to control the highlighting of words with a language foreign to\nthat of the document."); + } else if( ob == language_->input_package ) { + str = N_("The latex command for loading the language package.\nE.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\"."); + } else if( ob == language_->input_command_begin ) { + str = N_("The latex command for changing from the language of the document\nto another language.\nE.g. \\selectlanguage{$$lang} where $$lang is substituted by the name\nof the second language."); + } else if( ob == language_->input_command_end ) { + str = N_("The latex command for changing back to the language of the document."); + } + + fl_set_object_label(dialog_->text_warning, str.c_str()); + fl_set_object_lsize(dialog_->text_warning, FL_SMALL_SIZE); +} + + +bool FormPreferences::inputLanguage( FL_OBJECT const * const ob ) +{ + bool activate = true; + + if( !ob || ob == language_->check_use_kbmap ) { + if( fl_get_button(language_->check_use_kbmap) ) { + fl_activate_object(language_->choice_kbmap_1); + fl_activate_object(language_->choice_kbmap_2); + fl_set_object_lcol(language_->choice_kbmap_1, + FL_BLACK); + fl_set_object_lcol(language_->choice_kbmap_2, + FL_BLACK); + } else { + fl_deactivate_object(language_->choice_kbmap_1); + fl_deactivate_object(language_->choice_kbmap_2); + fl_set_object_lcol(language_->choice_kbmap_1, + FL_INACTIVE); + fl_set_object_lcol(language_->choice_kbmap_2, + FL_INACTIVE); + } + } + + return activate; +} + + +void FormPreferences::updateLanguage() +{ + fl_set_button(language_->check_use_kbmap, + lyxrc.use_kbmap); + + vector::iterator it = + find( languageNames.begin(), languageNames.end(), + lyxrc.default_language ); + int choice = 0; + if( it != languageNames.end() ) + choice = static_cast( it - languageNames.begin() ); + + fl_set_choice(language_->choice_default_lang, choice+1); + + it = find( languageNames.begin(), languageNames.end(), + lyxrc.primary_kbmap ); + choice = 0; + if( it != languageNames.end() ) + choice = static_cast( it - languageNames.begin() ); + + fl_set_choice(language_->choice_kbmap_1, choice+1); + + it = find( languageNames.begin(), languageNames.end(), + lyxrc.secondary_kbmap ); + choice = 0; + if( it != languageNames.end() ) + choice = static_cast( it - languageNames.begin() ); + + fl_set_choice(language_->choice_kbmap_2, choice+1); + + fl_set_button(language_->check_rtl_support, lyxrc.rtl_support); + fl_set_button(language_->check_auto_begin, lyxrc.language_auto_begin); + fl_set_button(language_->check_auto_end, lyxrc.language_auto_end); + fl_set_button(language_->check_mark_foreign, + lyxrc.mark_foreign_language); + + fl_set_input(language_->input_package, + lyxrc.language_package.c_str()); + fl_set_input(language_->input_command_begin, + lyxrc.language_command_begin.c_str()); + fl_set_input(language_->input_command_end, + lyxrc.language_command_end.c_str()); + + // Activate/Deactivate the input fields dependent on the state of the + // buttons. + inputLanguage( 0 ); } @@ -450,6 +691,9 @@ void FormPreferences::applyOutputsMisc() int choice = fl_get_choice(outputs_misc_->choice_default_papersize) - 1; lyxrc.default_papersize = static_cast(choice); + + lyxrc.ascii_roff_command = fl_get_input(outputs_misc_->input_ascii_roff); + lyxrc.chktex_command = fl_get_input(outputs_misc_->input_checktex); } @@ -461,6 +705,10 @@ void FormPreferences::buildOutputsMisc() FL_RETURN_CHANGED); fl_set_input_return(outputs_misc_->input_tex_encoding, FL_RETURN_CHANGED); + fl_set_input_return(outputs_misc_->input_ascii_roff, + FL_RETURN_CHANGED); + fl_set_input_return(outputs_misc_->input_checktex, + FL_RETURN_CHANGED); fl_addto_choice(outputs_misc_->choice_default_papersize, _(" default | US letter | legal | executive | A3 | A4 | A5 | B5 ")); } @@ -474,10 +722,14 @@ void FormPreferences::feedbackOutputsMisc(FL_OBJECT const * const ob ) str = N_("This is the maximum line length of an exported ASCII file\n(LaTeX, SGML or plain text)."); } else if( ob == outputs_misc_->input_tex_encoding ) { str = N_("The font encoding used for the LaTeX2e fontenc package.\nT1 is highly recommended for non-English languages."); + } else if( ob == outputs_misc_->input_ascii_roff ) { + str = N_("Use to define an external program to render tables in the ASCII output.\nE.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file.\nIf \"none\" is specified, an internal routine is used."); + } else if( ob == outputs_misc_->input_checktex ) { + str = N_("Define how to run chktex.\nE.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\"\nRefer to the ChkTeX documentation."); } else if( ob == outputs_misc_->choice_default_papersize ) { str = N_("Specify the default paper size."); } - + fl_set_object_label(dialog_->text_warning, str.c_str()); fl_set_object_lsize(dialog_->text_warning, FL_SMALL_SIZE); } @@ -491,6 +743,10 @@ void FormPreferences::updateOutputsMisc() lyxrc.fontenc.c_str()); fl_set_choice(outputs_misc_->choice_default_papersize, lyxrc.default_papersize+1); + fl_set_input(outputs_misc_->input_ascii_roff, + lyxrc.ascii_roff_command.c_str()); + fl_set_input(outputs_misc_->input_checktex, + lyxrc.chktex_command.c_str()); } diff --git a/src/frontends/xforms/FormPreferences.h b/src/frontends/xforms/FormPreferences.h index 3743dd8d94..0dbc60d048 100644 --- a/src/frontends/xforms/FormPreferences.h +++ b/src/frontends/xforms/FormPreferences.h @@ -33,6 +33,7 @@ struct FD_form_interface; struct FD_form_printer; struct FD_form_paths; struct FD_form_outer_tab; +struct FD_form_inputs_misc; struct FD_form_outputs_misc; struct FD_form_spellchecker; struct FD_form_language; @@ -53,6 +54,8 @@ private: /// COLOURS, /// + INPUTSMISC, + /// INTERFACE, /// LANGUAGE, @@ -88,8 +91,14 @@ private: /// virtual FL_FORM * form() const; /// + void applyColours(); + /// + void applyInputsMisc(); + /// void applyInterface(); /// + void applyLanguage(); + /// void applyLnFmisc(); /// void applyOutputsMisc(); @@ -104,6 +113,8 @@ private: /// void buildColours(); /// + void buildInputsMisc(); + /// void buildInterface(); /// void buildLanguage(); @@ -120,8 +131,14 @@ private: /// void buildSpellchecker(); /// + void feedbackColours(FL_OBJECT const * const); + /// + void feedbackInputsMisc(FL_OBJECT const * const); + /// void feedbackInterface(FL_OBJECT const * const); /// + void feedbackLanguage(FL_OBJECT const * const); + /// void feedbackLnFmisc(FL_OBJECT const * const); /// void feedbackOutputsMisc(FL_OBJECT const * const); @@ -134,14 +151,22 @@ private: /// void feedbackSpellChecker(FL_OBJECT const * const); /// + bool inputLanguage(FL_OBJECT const * const); + /// bool inputPaths(FL_OBJECT const * const); /// bool inputScreenFonts(); /// bool inputSpellChecker(FL_OBJECT const * const); /// + void updateColours(); + /// + void updateInputsMisc(); + /// void updateInterface(); /// + void updateLanguage(); + /// void updateLnFmisc(); /// void updateOutputsMisc(); @@ -168,6 +193,8 @@ private: /// FD_form_colours * build_colours(); /// + FD_form_inputs_misc * build_inputs_misc(); + /// FD_form_interface * build_interface(); /// FD_form_language * build_language(); @@ -197,6 +224,8 @@ private: /// FD_form_colours * colours_; /// + FD_form_inputs_misc * inputs_misc_; + /// FD_form_interface * interface_; /// FD_form_language * language_; diff --git a/src/frontends/xforms/form_preferences.C b/src/frontends/xforms/form_preferences.C index fd3680129f..f8d97fc7d2 100644 --- a/src/frontends/xforms/form_preferences.C +++ b/src/frontends/xforms/form_preferences.C @@ -182,12 +182,26 @@ FD_form_outputs_misc * FormPreferences::build_outputs_misc() fl_set_counter_bounds(obj, 0, 120); fl_set_counter_value(obj, 75); fl_set_counter_step(obj, 1, 1); - fdui->input_tex_encoding = obj = fl_add_input(FL_NORMAL_INPUT, 216, 95, 200, 30, _("TeX encoding")); + fdui->input_tex_encoding = obj = fl_add_input(FL_NORMAL_INPUT, 216, 95, 200, 30, idex(_("TeX encoding|#T"))); + fl_set_button_shortcut(obj, scex(_("TeX encoding|#T")), 1); fl_set_object_lsize(obj, FL_NORMAL_SIZE); fl_set_object_callback(obj, C_FormBaseInputCB, OUTPUTSMISC); - fdui->choice_default_papersize = obj = fl_add_choice(FL_NORMAL_CHOICE, 217, 142, 199, 29, _("Default paper size")); + fdui->choice_default_papersize = obj = fl_add_choice(FL_NORMAL_CHOICE, 219, 142, 199, 29, idex(_("Default paper size|#p"))); + fl_set_button_shortcut(obj, scex(_("Default paper size|#p")), 1); fl_set_object_boxtype(obj, FL_FRAME_BOX); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, OUTPUTSMISC); + fdui->input_ascii_roff = obj = fl_add_input(FL_NORMAL_INPUT, 121, 209, 285, 30, idex(_("ascii roff|#r"))); + fl_set_button_shortcut(obj, scex(_("ascii roff|#r")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); fl_set_object_callback(obj, C_FormBaseInputCB, OUTPUTSMISC); + fdui->input_checktex = obj = fl_add_input(FL_NORMAL_INPUT, 121, 250, 285, 30, idex(_("checktex|#c"))); + fl_set_button_shortcut(obj, scex(_("checktex|#c")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, OUTPUTSMISC); + obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 12, 186, 406, 120, _("Outside code interaction")); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lstyle(obj, FL_BOLD_STYLE); fl_end_form(); fdui->form->fdui = fdui; @@ -260,6 +274,33 @@ FD_form_spellchecker * FormPreferences::build_spellchecker() } /*---------------------------------------*/ +FD_form_inputs_misc::~FD_form_inputs_misc() +{ + if( form->visible ) fl_hide_form( form ); + fl_free_form( form ); +} + + +FD_form_inputs_misc * FormPreferences::build_inputs_misc() +{ + FL_OBJECT *obj; + FD_form_inputs_misc *fdui = new FD_form_inputs_misc; + + fdui->form = fl_bgn_form(FL_NO_BOX, 450, 360); + fdui->form->u_vdata = this; + obj = fl_add_box(FL_FLAT_BOX, 0, 0, 450, 360, ""); + fdui->input_date_format = obj = fl_add_input(FL_NORMAL_INPUT, 120, 70, 285, 30, idex(_("date format|#f"))); + fl_set_button_shortcut(obj, scex(_("date format|#f")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, INPUTSMISC); + fl_end_form(); + + fdui->form->fdui = fdui; + + return fdui; +} +/*---------------------------------------*/ + FD_form_language::~FD_form_language() { if( form->visible ) fl_hide_form( form ); @@ -275,6 +316,55 @@ FD_form_language * FormPreferences::build_language() fdui->form = fl_bgn_form(FL_NO_BOX, 450, 360); fdui->form->u_vdata = this; obj = fl_add_box(FL_FLAT_BOX, 0, 0, 450, 360, ""); + fdui->check_use_kbmap = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 158, 113, 30, 30, idex(_("Keyboard map|#K"))); + fl_set_button_shortcut(obj, scex(_("Keyboard map|#K")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_LEFT); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->choice_kbmap_1 = obj = fl_add_choice(FL_NORMAL_CHOICE, 231, 96, 200, 30, idex(_("1st|#1"))); + fl_set_button_shortcut(obj, scex(_("1st|#1")), 1); + fl_set_object_boxtype(obj, FL_FRAME_BOX); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->check_rtl_support = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 154, 161, 30, 30, idex(_("RtL support|#R"))); + fl_set_button_shortcut(obj, scex(_("RtL support|#R")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_LEFT); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->check_mark_foreign = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 154, 187, 30, 30, idex(_("Mark foreign|#M"))); + fl_set_button_shortcut(obj, scex(_("Mark foreign|#M")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_LEFT); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->check_auto_end = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 362, 187, 30, 30, idex(_("Auto finish|#f"))); + fl_set_button_shortcut(obj, scex(_("Auto finish|#f")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_LEFT); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->check_auto_begin = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 362, 161, 30, 30, idex(_("Auto begin|#b"))); + fl_set_button_shortcut(obj, scex(_("Auto begin|#b")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_LEFT); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->input_package = obj = fl_add_input(FL_NORMAL_INPUT, 131, 18, 300, 30, idex(_("Package|#P"))); + fl_set_button_shortcut(obj, scex(_("Package|#P")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->input_command_begin = obj = fl_add_input(FL_NORMAL_INPUT, 131, 224, 300, 30, idex(_("Command start|#s"))); + fl_set_button_shortcut(obj, scex(_("Command start|#s")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->input_command_end = obj = fl_add_input(FL_NORMAL_INPUT, 131, 257, 300, 30, idex(_("Command end|#e"))); + fl_set_button_shortcut(obj, scex(_("Command end|#e")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->choice_kbmap_2 = obj = fl_add_choice(FL_NORMAL_CHOICE, 231, 128, 200, 30, idex(_("2nd|#2"))); + fl_set_button_shortcut(obj, scex(_("2nd|#2")), 1); + fl_set_object_boxtype(obj, FL_FRAME_BOX); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); + fdui->choice_default_lang = obj = fl_add_choice(FL_NORMAL_CHOICE, 231, 56, 200, 30, idex(_("Default language|#D"))); + fl_set_button_shortcut(obj, scex(_("Default language|#D")), 1); + fl_set_object_boxtype(obj, FL_FRAME_BOX); + fl_set_object_callback(obj, C_FormBaseInputCB, LANGUAGE); fl_end_form(); fdui->form->fdui = fdui; diff --git a/src/frontends/xforms/form_preferences.h b/src/frontends/xforms/form_preferences.h index 13407b9f67..88bdbc5a2c 100644 --- a/src/frontends/xforms/form_preferences.h +++ b/src/frontends/xforms/form_preferences.h @@ -19,6 +19,9 @@ extern "C" void C_FormBaseInputCB(FL_OBJECT *, long); extern "C" void C_FormBaseInputCB(FL_OBJECT *, long); +extern "C" void C_FormBaseInputCB(FL_OBJECT *, long); + +extern "C" void C_FormBaseInputCB(FL_OBJECT *, long); extern "C" void C_FormBaseInputCB(FL_OBJECT *, long); @@ -76,6 +79,8 @@ struct FD_form_outputs_misc { FL_OBJECT *counter_line_len; FL_OBJECT *input_tex_encoding; FL_OBJECT *choice_default_papersize; + FL_OBJECT *input_ascii_roff; + FL_OBJECT *input_checktex; }; struct FD_form_spellchecker { ~FD_form_spellchecker(); @@ -92,10 +97,27 @@ struct FD_form_spellchecker { FL_OBJECT *check_compound_words; FL_OBJECT *check_input_enc; }; +struct FD_form_inputs_misc { + ~FD_form_inputs_misc(); + + FL_FORM *form; + FL_OBJECT *input_date_format; +}; struct FD_form_language { ~FD_form_language(); FL_FORM *form; + FL_OBJECT *check_use_kbmap; + FL_OBJECT *choice_kbmap_1; + FL_OBJECT *check_rtl_support; + FL_OBJECT *check_mark_foreign; + FL_OBJECT *check_auto_end; + FL_OBJECT *check_auto_begin; + FL_OBJECT *input_package; + FL_OBJECT *input_command_begin; + FL_OBJECT *input_command_end; + FL_OBJECT *choice_kbmap_2; + FL_OBJECT *choice_default_lang; }; struct FD_form_colours { ~FD_form_colours(); diff --git a/src/frontends/xforms/forms/form_preferences.fd b/src/frontends/xforms/forms/form_preferences.fd index febdaf0264..01c5f6b332 100644 --- a/src/frontends/xforms/forms/form_preferences.fd +++ b/src/frontends/xforms/forms/form_preferences.fd @@ -3,7 +3,7 @@ Magic: 13000 Internal Form Definition File (do not change) -Number of forms: 11 +Number of forms: 12 Unit of measure: FL_COORD_PIXEL SnapGrid: 1 @@ -520,7 +520,7 @@ argument: SCREENFONTS Name: form_outputs_misc Width: 455 Height: 375 -Number of Objects: 4 +Number of Objects: 7 -------------------- class: FL_BOX @@ -572,7 +572,7 @@ alignment: FL_ALIGN_LEFT style: FL_NORMAL_STYLE size: FL_NORMAL_SIZE lcol: FL_BLACK -label: TeX encoding +label: TeX encoding|#T shortcut: resize: FL_RESIZE_ALL gravity: FL_NoGravity FL_NoGravity @@ -583,14 +583,14 @@ argument: OUTPUTSMISC -------------------- class: FL_CHOICE type: NORMAL_CHOICE -box: 217 142 199 29 +box: 219 142 199 29 boxtype: FL_FRAME_BOX colors: FL_COL1 FL_BLACK alignment: FL_ALIGN_LEFT style: FL_NORMAL_STYLE -size: FL_DEFAULT_SIZE +size: FL_NORMAL_SIZE lcol: FL_BLACK -label: Default paper size +label: Default paper size|#p shortcut: resize: FL_RESIZE_ALL gravity: FL_NoGravity FL_NoGravity @@ -598,6 +598,60 @@ name: choice_default_papersize callback: C_FormBaseInputCB argument: OUTPUTSMISC +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 121 209 285 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: ascii roff|#r +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_ascii_roff +callback: C_FormBaseInputCB +argument: OUTPUTSMISC + +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 121 250 285 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: checktex|#c +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_checktex +callback: C_FormBaseInputCB +argument: OUTPUTSMISC + +-------------------- +class: FL_LABELFRAME +type: ENGRAVED_FRAME +box: 12 186 406 120 +boxtype: FL_NO_BOX +colors: FL_BLACK FL_COL1 +alignment: FL_ALIGN_TOP_LEFT +style: FL_BOLD_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Outside code interaction +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: +callback: +argument: + =============== FORM =============== Name: form_spellchecker Width: 450 @@ -802,11 +856,53 @@ name: check_input_enc callback: C_FormBaseInputCB argument: SPELLCHECKER +=============== FORM =============== +Name: form_inputs_misc +Width: 450 +Height: 360 +Number of Objects: 2 + +-------------------- +class: FL_BOX +type: FLAT_BOX +box: 0 0 450 360 +boxtype: FL_FLAT_BOX +colors: FL_COL1 FL_COL1 +alignment: FL_ALIGN_CENTER +style: FL_NORMAL_STYLE +size: FL_DEFAULT_SIZE +lcol: FL_BLACK +label: +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: +callback: +argument: + +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 120 70 285 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: date format|#f +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_date_format +callback: C_FormBaseInputCB +argument: INPUTSMISC + =============== FORM =============== Name: form_language Width: 450 Height: 360 -Number of Objects: 1 +Number of Objects: 12 -------------------- class: FL_BOX @@ -826,6 +922,204 @@ name: callback: argument: +-------------------- +class: FL_CHECKBUTTON +type: PUSH_BUTTON +box: 158 113 30 30 +boxtype: FL_NO_BOX +colors: FL_COL1 FL_YELLOW +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Keyboard map|#K +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: check_use_kbmap +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHOICE +type: NORMAL_CHOICE +box: 231 96 200 30 +boxtype: FL_FRAME_BOX +colors: FL_COL1 FL_BLACK +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_DEFAULT_SIZE +lcol: FL_BLACK +label: 1st|#1 +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: choice_kbmap_1 +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHECKBUTTON +type: PUSH_BUTTON +box: 154 161 30 30 +boxtype: FL_NO_BOX +colors: FL_COL1 FL_YELLOW +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: RtL support|#R +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: check_rtl_support +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHECKBUTTON +type: PUSH_BUTTON +box: 154 187 30 30 +boxtype: FL_NO_BOX +colors: FL_COL1 FL_YELLOW +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Mark foreign|#M +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: check_mark_foreign +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHECKBUTTON +type: PUSH_BUTTON +box: 362 187 30 30 +boxtype: FL_NO_BOX +colors: FL_COL1 FL_YELLOW +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Auto finish|#f +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: check_auto_end +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHECKBUTTON +type: PUSH_BUTTON +box: 362 161 30 30 +boxtype: FL_NO_BOX +colors: FL_COL1 FL_YELLOW +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Auto begin|#b +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: check_auto_begin +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 131 18 300 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Package|#P +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_package +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 131 224 300 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Command start|#s +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_command_begin +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 131 257 300 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Command end|#e +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_command_end +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHOICE +type: NORMAL_CHOICE +box: 231 128 200 30 +boxtype: FL_FRAME_BOX +colors: FL_COL1 FL_BLACK +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_DEFAULT_SIZE +lcol: FL_BLACK +label: 2nd|#2 +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: choice_kbmap_2 +callback: C_FormBaseInputCB +argument: LANGUAGE + +-------------------- +class: FL_CHOICE +type: NORMAL_CHOICE +box: 231 56 200 30 +boxtype: FL_FRAME_BOX +colors: FL_COL1 FL_BLACK +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_DEFAULT_SIZE +lcol: FL_BLACK +label: Default language|#D +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: choice_default_lang +callback: C_FormBaseInputCB +argument: LANGUAGE + =============== FORM =============== Name: form_colours Width: 450 -- 2.39.2