]> git.lyx.org Git - features.git/commitdiff
Patches from Angus and Marko
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 30 Oct 2000 11:33:05 +0000 (11:33 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 30 Oct 2000 11:33:05 +0000 (11:33 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1172 a592a061-630c-0410-9148-cb99ea01b6c8

27 files changed:
ChangeLog
lyx.man
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
src/frontends/xforms/FormPreferences.C
src/frontends/xforms/FormPreferences.h
src/frontends/xforms/form_preferences.C
src/frontends/xforms/form_preferences.h
src/frontends/xforms/forms/form_preferences.fd

index 70a354688d0286c5fb2c8702f42b66a077b30ee0..911247c86ae38e681c57157612e71df58769f304 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2000-10-30  Rob Lahaye  <lahaye@postech.edu>
+
+       * lyx.man: fix typo.
+
+2000-10-29  Marko Vendelin <markov@ioc.ee>
+       * 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 <a.leeming@ic.ac.uk>
+
+       * src/frontends/xforms/FormPreferences.[Ch]:
+       * src/frontends/xforms/forms/form_preferences.fd: added a Languagues
+       tab.
+
 2000-10-28  Juergen Vigna  <jug@sad.it>
 
        * src/insets/insettabular.C (draw): fixed drawing bug.
 
        * src/mathed/formula.C (mathed_string_width): Use string instead
        of a constant size char array.
-                                      
+
 2000-10-25  Lars Gullik Bjønnes  <larsbj@lyx.org>
 
        * src/frontends/ButtonPolicies.h: remove the LOstream and remove
diff --git a/lyx.man b/lyx.man
index 10aa23e9391ea7f1cb148230f6ae1d62bedf3416..018ddcb79fcc1c3b62b7e1bf79603df0ea2ecb21 100644 (file)
--- 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.
index b2cd38c6fcb6e74cff3018c29dbcf20792d24288..547e07803cfb4f348c66aec40621dde3c4be387b 100644 (file)
@@ -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();
index d8293068207530bbd6f4e9be438d3c74f08643bf..6326083ef03d37527c14684c65eabeab38856c6e 100644 (file)
@@ -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?
index 6a2ce75c47e115e72cdf35c456d9fac6165dd3c2..6af7a579c866f481f2eab0ecaa931a90b5b8e3e1 100644 (file)
@@ -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<string> authors; //null. Authors are not listed in LyX copyright dialogbox.
+               vector<string> 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;
        }
 }
index 62d2efb8678d03c2296d842958fdab735b30185c..216fbd70bcd52eb910781f11cf0d537eb08e38d3 100644 (file)
@@ -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_;
index 27b0ac02c0dc2c7403d675dc7e5bca67d5812016..8ecb60552436cd3254355f6a8c8e5348a42afee8 100644 (file)
@@ -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;
index ba2d2ab5b5e0e074a0c330ad41c69ef2ee87fc91..7657be0a3e34f02a6d7a6aa40a9c3503ef776a53 100644 (file)
@@ -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.
index aa20b517eb86cd9fa7217b68482f4d3a2e93b68e..921d899caf01873d7fcd7089dc8706cdf8fc53cf 100644 (file)
@@ -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;
index b31244c7b94d90376dcee8866873281887b1ea3c..63f0b85b4ed97abd98a5ffd7b7cb0e5d6db53f64 100644 (file)
@@ -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.
index 4af90ad48f66d2a3bf30db2cd89d32578b5e9c45..d45af3cd05024190b2d04b0574368b8b2c64c6b0 100644 (file)
@@ -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()));
index 3c82c1150acf1de873416e874b1348e66f6eea70..0824de777837f267a1689ab996885162891b805d 100644 (file)
@@ -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();
   //@}
index 25a4e3a8a9910ddd5908da5a85e4d74e4180db5d..dc2fa4b01bf8c3f2c4c2f45980c3dcbf0e8c4855 100644 (file)
@@ -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;
index ac989ee15b31f934b06c24efef27895aa3ca5cf2..e423c44f637b23aeaa23dbf8761e5463e6999e34 100644 (file)
@@ -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.
index 089f131807f9d3259bfc576149d0b4c596104369..6d0827c361f456f1d96d730fc16f2604f5a5f182 100644 (file)
@@ -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<bool>(slot(this, &FormToc::update),false));
+      b_refresh->clicked.connect(bind<bool>(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;
index f7d541a332c3aedeb1cda9cdc14c34d41372d67e..32b8e25129b995213add022fa123cb9569b40e29 100644 (file)
@@ -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.
index f5e521ad9a46698148b56674aac109aa7598363b..22f2e00f202c1d72c11916f25b4a0af2dbe806d6 100644 (file)
@@ -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;
index ea16dd83e064c344cf2653a5c44661f3012a78a4..0ab2deade8f61fb1d0388b2bdd55f92d51784bad 100644 (file)
@@ -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.
index 1d627e116386548ee18f754bcd64b15cf12d9452..b26d55e2e43611ecadde8760748ffb8f093bf33e 100644 (file)
@@ -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) ||
index 90afdefd6ec8e7a9618b6de32cd5bb89d41fec9e..f7d4d03639a0502055c8f340426af7a09bc0d7c4 100644 (file)
@@ -47,7 +47,7 @@ void GLyxAppWin::init()
 
   set_statusbar(status_);
 
-  accel_ = NULL;
+  accel_ = 0;
 
   // initial (dummy) menu
   vector<Gnome::UI::Info> 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 )
index e6460ad40acf51d6f130c9053f304f432f7934d0..8aeab39dc7d8a5bd10261b1567e5eaad119e610c 100644 (file)
@@ -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
index 3afdf9371a2c86a13727499f488b6e2a57039cd5..955c1bb878a0f3f9265b5d72497f3160ad3de241 100644 (file)
@@ -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));
index a5fd2ca51099bc7e67dc42dbfc2eb2f8f70c730c..4e5c5cc468a7c814d929d9f1416eb666c9b998ef 100644 (file)
 #pragma implementation
 #endif
 
+#include <vector>
+
 #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"
 using SigC::slot;
 #endif
 
+using std::find;
+using std::vector;
+
+extern Languages languages;
+static vector<string> 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<State>( 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<string>::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<bool>(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<bool>(button);
+
+       button = fl_get_button(language_->check_auto_begin);
+       lyxrc.language_auto_begin = static_cast<bool>(button);
+
+       button = fl_get_button(language_->check_auto_end);
+       lyxrc.language_auto_end = static_cast<bool>(button);
+
+       button = fl_get_button(language_->check_mark_foreign);
+       lyxrc.mark_foreign_language = static_cast<bool>(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<string>::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<string>::iterator it =
+               find( languageNames.begin(), languageNames.end(),
+                     lyxrc.default_language );
+       int choice = 0;
+       if( it != languageNames.end() )
+               choice = static_cast<int>( 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<int>( 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<int>( 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<BufferParams::PAPER_SIZE>(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());
 }
 
 
index 3743dd8d946b0667a3c15159036d625a1c4ec161..0dbc60d0487a1a77d28d19c8f98ba156f7cf78ce 100644 (file)
@@ -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_;
index fd3680129fd1488156a51561009603d9815ee3e8..f8d97fc7d2a9fc239ea24bbaa8389ee94d16f171 100644 (file)
@@ -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;
index 13407b9f679e17ab3ab0f426980502a86cfacb15..88bdbc5a2cfa5844767c37bfbd5bf987b5feef79 100644 (file)
@@ -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();
index febdaf02645344b7ae74b6c50b02f59b82401c84..01c5f6b3321e89ad426351c505720cbe02ab4b4c 100644 (file)
@@ -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