2000-11-13 10:35:02 +00:00
// -*- C++ -*-
/* This file is part of
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
*
* LyX , The Document Processor
*
* Copyright 1995 Matthias Ettrich
* Copyright 1995 - 2000 The LyX Team .
*
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
2000-06-12 11:55:12 +00:00
/* FormPreferences.C
* FormPreferences Interface Class Implementation
*/
2000-11-03 09:47:02 +00:00
# include <utility>
2000-06-12 11:55:12 +00:00
# include <config.h>
2000-07-27 10:26:38 +00:00
2000-06-12 11:55:12 +00:00
# include FORMS_H_LOCATION
2000-07-27 10:26:38 +00:00
# ifdef __GNUG_
# pragma implementation
# endif
2000-11-03 09:47:02 +00:00
# include "Lsstream.h"
2000-11-14 13:46:01 +00:00
# include "filedlg.h" // for LyXFileDlg
2000-06-12 11:55:12 +00:00
# include "FormPreferences.h"
2000-07-19 15:54:35 +00:00
# include "form_preferences.h"
2000-06-12 11:55:12 +00:00
# include "input_validators.h"
# include "LyXView.h"
2000-10-30 11:33:05 +00:00
# include "language.h"
2000-06-12 11:55:12 +00:00
# include "lyxfunc.h"
# include "Dialogs.h"
# include "lyxrc.h"
2000-10-30 21:53:29 +00:00
# include "combox.h"
2000-06-12 11:55:12 +00:00
# include "debug.h"
2000-07-28 04:59:45 +00:00
# include "support/FileInfo.h"
# include "support/filetools.h"
2000-07-27 10:26:38 +00:00
# include "lyx_gui_misc.h"
2000-11-03 09:47:02 +00:00
# include "lyxlex.h"
# include "input_validators.h"
2000-11-02 14:47:47 +00:00
# include "xform_helpers.h" // formatted()
2000-10-30 21:53:29 +00:00
# include "xform_macros.h"
2000-11-06 11:20:22 +00:00
# include "converter.h"
# include "support/lyxfunctional.h"
2000-06-12 11:55:12 +00:00
# ifdef SIGC_CXX_NAMESPACES
using SigC : : slot ;
# endif
2000-11-14 13:46:01 +00:00
using std : : endl ;
2000-10-30 11:33:05 +00:00
using std : : find ;
2000-11-08 09:39:46 +00:00
using std : : find_if ;
2000-11-03 09:47:02 +00:00
using std : : pair ;
2000-11-13 10:35:02 +00:00
using std : : max ;
2000-11-08 09:39:46 +00:00
using std : : sort ;
2000-10-30 11:33:05 +00:00
using std : : vector ;
2000-11-03 09:47:02 +00:00
extern string fmt ( char const * fmtstr . . . ) ;
2000-11-08 09:39:46 +00:00
extern string system_lyxdir ;
2000-11-13 10:35:02 +00:00
extern string user_lyxdir ;
2000-10-30 11:33:05 +00:00
extern Languages languages ;
2000-06-12 11:55:12 +00:00
2000-11-10 17:29:47 +00:00
static string const colorFile ( " /usr/lib/X11/rgb.txt " ) ;
2000-11-14 13:46:01 +00:00
static Formats local_formats ;
static Converters local_converters ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
vector < X11Color > FormPreferences : : Colors : : colorDB ;
vector < XformColor > FormPreferences : : Colors : : xformColorDB ;
2000-11-09 15:28:42 +00:00
2000-06-12 11:55:12 +00:00
FormPreferences : : FormPreferences ( LyXView * lv , Dialogs * d )
2000-10-13 05:57:05 +00:00
: FormBaseBI ( lv , d , _ ( " Preferences " ) , new PreferencesPolicy ) ,
2000-11-03 17:05:42 +00:00
dialog_ ( 0 ) ,
converters_tab_ ( 0 ) , inputs_tab_ ( 0 ) , look_n_feel_tab_ ( 0 ) ,
outputs_tab_ ( 0 ) , usage_tab_ ( 0 ) ,
2000-11-14 13:46:01 +00:00
warningPosted ( false ) ,
colors_ ( * this ) , converters_ ( * this ) , inputs_misc_ ( * this ) ,
formats_ ( * this ) , interface_ ( * this ) , language_ ( * this ) ,
lnf_misc_ ( * this ) , outputs_misc_ ( * this ) , paths_ ( * this ) ,
printer_ ( * this ) , screen_fonts_ ( * this ) , spellchecker_ ( * this )
2000-06-12 11:55:12 +00:00
{
// let the dialog be shown
// This is a permanent connection so we won't bother
// storing a copy because we won't be disconnecting.
2000-08-14 05:24:35 +00:00
d - > showPreferences . connect ( slot ( this , & FormPreferences : : show ) ) ;
2000-06-12 11:55:12 +00:00
}
FormPreferences : : ~ FormPreferences ( )
{
2000-11-09 15:28:42 +00:00
delete converters_tab_ ;
delete inputs_tab_ ;
delete look_n_feel_tab_ ;
delete outputs_tab_ ;
delete usage_tab_ ;
2000-10-30 21:53:29 +00:00
delete dialog_ ;
2000-10-27 10:04:51 +00:00
}
2000-11-10 17:29:47 +00:00
void FormPreferences : : redraw ( )
{
2000-11-14 02:01:57 +00:00
if ( ! ( form ( ) & & form ( ) - > visible ) )
2000-11-10 17:29:47 +00:00
return ;
2000-11-14 02:01:57 +00:00
fl_redraw_form ( form ( ) ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
FL_FORM * form2 = fl_get_active_folder ( dialog_ - > tabfolder_prefs ) ;
2000-11-14 02:01:57 +00:00
if ( ! ( form2 & & form2 - > visible ) )
2000-11-10 17:29:47 +00:00
return ;
2000-11-14 02:01:57 +00:00
fl_redraw_form ( form2 ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
FL_FORM * form3 = 0 ;
2000-11-14 02:01:57 +00:00
if ( form2 = = converters_tab_ - > form )
2000-11-13 10:35:02 +00:00
form3 = fl_get_active_folder ( converters_tab_ - > tabfolder_outer ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 02:01:57 +00:00
else if ( form2 = = look_n_feel_tab_ - > form )
2000-11-13 10:35:02 +00:00
form3 = fl_get_active_folder ( look_n_feel_tab_ - > tabfolder_outer ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 02:01:57 +00:00
else if ( form2 = = inputs_tab_ - > form )
2000-11-13 10:35:02 +00:00
form3 = fl_get_active_folder ( inputs_tab_ - > tabfolder_outer ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 02:01:57 +00:00
else if ( form2 = = outputs_tab_ - > form )
2000-11-13 10:35:02 +00:00
form3 = fl_get_active_folder ( outputs_tab_ - > tabfolder_outer ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 02:01:57 +00:00
else if ( form2 = = usage_tab_ - > form )
2000-11-13 10:35:02 +00:00
form3 = fl_get_active_folder ( usage_tab_ - > tabfolder_outer ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
if ( form3 & & form3 - > visible )
fl_redraw_form ( form3 ) ;
2000-11-10 17:29:47 +00:00
}
2000-10-27 10:04:51 +00:00
FL_FORM * FormPreferences : : form ( ) const
{
if ( dialog_ ) return dialog_ - > form ;
return 0 ;
}
void FormPreferences : : ok ( )
{
FormBase : : ok ( ) ;
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
if ( colors_ . modifiedXformPrefs ) {
string filename = AddName ( user_lyxdir , " preferences.xform " ) ;
colors_ . modifiedXformPrefs = ! XformColor : : write ( filename ) ;
2000-11-13 10:35:02 +00:00
}
2000-10-27 10:04:51 +00:00
lv_ - > getLyXFunc ( ) - > Dispatch ( LFUN_SAVEPREFERENCES ) ;
}
2000-10-10 04:12:56 +00:00
void FormPreferences : : hide ( )
{
2000-10-11 07:59:25 +00:00
// We need to hide the active tabfolder otherwise we get a
// BadDrawable error from X windows and LyX crashes without saving.
2000-10-10 04:12:56 +00:00
FL_FORM * outer_form = fl_get_active_folder ( dialog_ - > tabfolder_prefs ) ;
if ( outer_form
& & outer_form - > visible ) {
fl_hide_form ( outer_form ) ;
}
FormBase : : hide ( ) ;
}
2000-06-12 11:55:12 +00:00
void FormPreferences : : build ( )
{
dialog_ = build_preferences ( ) ;
2000-08-14 05:24:35 +00:00
// manage the restore, save, apply and cancel/close buttons
2000-10-02 00:10:25 +00:00
bc_ . setOK ( dialog_ - > button_ok ) ;
bc_ . setApply ( dialog_ - > button_apply ) ;
bc_ . setCancel ( dialog_ - > button_cancel ) ;
bc_ . setUndoAll ( dialog_ - > button_restore ) ;
bc_ . refresh ( ) ;
2000-08-14 05:24:35 +00:00
// Workaround dumb xforms sizing bug
2000-10-20 09:50:09 +00:00
minw_ = form ( ) - > w ;
minh_ = form ( ) - > h ;
2000-08-14 05:24:35 +00:00
2000-10-03 05:53:25 +00:00
// build the tab folders
2000-11-03 17:05:42 +00:00
converters_tab_ = build_outer_tab ( ) ;
2000-10-03 05:53:25 +00:00
look_n_feel_tab_ = build_outer_tab ( ) ;
2000-10-27 10:04:51 +00:00
inputs_tab_ = build_outer_tab ( ) ;
2000-11-03 17:05:42 +00:00
outputs_tab_ = build_outer_tab ( ) ;
2000-10-27 10:04:51 +00:00
usage_tab_ = build_outer_tab ( ) ;
2000-10-03 05:53:25 +00:00
// build actual tabfolder contents
// these will become nested tabfolders
2000-11-14 13:46:01 +00:00
colors_ . build ( ) ;
converters_ . build ( ) ;
formats_ . build ( ) ;
inputs_misc_ . build ( ) ;
interface_ . build ( ) ;
language_ . build ( ) ;
lnf_misc_ . build ( ) ;
outputs_misc_ . build ( ) ;
paths_ . build ( ) ;
printer_ . build ( ) ;
screen_fonts_ . build ( ) ;
spellchecker_ . build ( ) ;
2000-07-28 04:59:45 +00:00
// Now add them to the tabfolder
2000-06-12 11:55:12 +00:00
fl_addto_tabfolder ( dialog_ - > tabfolder_prefs ,
2000-10-03 05:53:25 +00:00
_ ( " Look and Feel " ) ,
look_n_feel_tab_ - > form ) ;
2000-11-03 17:05:42 +00:00
fl_addto_tabfolder ( dialog_ - > tabfolder_prefs ,
_ ( " Usage " ) ,
usage_tab_ - > form ) ;
fl_addto_tabfolder ( dialog_ - > tabfolder_prefs ,
_ ( " Converters " ) ,
converters_tab_ - > form ) ;
2000-10-03 05:53:25 +00:00
fl_addto_tabfolder ( dialog_ - > tabfolder_prefs ,
_ ( " Inputs " ) ,
inputs_tab_ - > form ) ;
2000-06-12 11:55:12 +00:00
fl_addto_tabfolder ( dialog_ - > tabfolder_prefs ,
2000-10-03 05:53:25 +00:00
_ ( " Outputs " ) ,
outputs_tab_ - > form ) ;
// now build the nested tabfolders
// Starting with look and feel
fl_addto_tabfolder ( look_n_feel_tab_ - > tabfolder_outer ,
2000-06-12 11:55:12 +00:00
_ ( " Screen Fonts " ) ,
2000-11-14 13:46:01 +00:00
screen_fonts_ . dialog ( ) - > form ) ;
2000-10-03 05:53:25 +00:00
fl_addto_tabfolder ( look_n_feel_tab_ - > tabfolder_outer ,
2000-10-11 07:59:25 +00:00
_ ( " Interface " ) ,
2000-11-14 13:46:01 +00:00
interface_ . dialog ( ) - > form ) ;
2000-10-03 05:53:25 +00:00
fl_addto_tabfolder ( look_n_feel_tab_ - > tabfolder_outer ,
2000-11-10 17:29:47 +00:00
_ ( " Colors " ) ,
2000-11-14 13:46:01 +00:00
colors_ . dialog ( ) - > form ) ;
2000-10-27 10:04:51 +00:00
fl_addto_tabfolder ( look_n_feel_tab_ - > tabfolder_outer ,
_ ( " Misc " ) ,
2000-11-14 13:46:01 +00:00
lnf_misc_ . dialog ( ) - > form ) ;
2000-10-03 05:53:25 +00:00
2000-11-03 17:05:42 +00:00
// then build converters
fl_addto_tabfolder ( converters_tab_ - > tabfolder_outer ,
_ ( " Formats " ) ,
2000-11-14 13:46:01 +00:00
formats_ . dialog ( ) - > form ) ;
2000-11-03 17:05:42 +00:00
fl_addto_tabfolder ( converters_tab_ - > tabfolder_outer ,
_ ( " Converters " ) ,
2000-11-14 13:46:01 +00:00
converters_ . dialog ( ) - > form ) ;
2000-11-03 17:05:42 +00:00
2000-10-03 05:53:25 +00:00
// then build inputs
// Paths should probably go in a few outer_tab called Files
fl_addto_tabfolder ( inputs_tab_ - > tabfolder_outer ,
2000-06-12 11:55:12 +00:00
_ ( " Paths " ) ,
2000-11-14 13:46:01 +00:00
paths_ . dialog ( ) - > form ) ;
2000-10-30 11:33:05 +00:00
fl_addto_tabfolder ( inputs_tab_ - > tabfolder_outer ,
_ ( " Misc " ) ,
2000-11-14 13:46:01 +00:00
inputs_misc_ . dialog ( ) - > form ) ;
2000-06-12 11:55:12 +00:00
2000-10-03 05:53:25 +00:00
// then building outputs
fl_addto_tabfolder ( outputs_tab_ - > tabfolder_outer ,
_ ( " Printer " ) ,
2000-11-14 13:46:01 +00:00
printer_ . dialog ( ) - > form ) ;
2000-10-11 07:59:25 +00:00
fl_addto_tabfolder ( outputs_tab_ - > tabfolder_outer ,
2000-10-27 10:04:51 +00:00
_ ( " Misc " ) ,
2000-11-14 13:46:01 +00:00
outputs_misc_ . dialog ( ) - > form ) ;
2000-06-12 11:55:12 +00:00
2000-10-27 10:04:51 +00:00
// then building usage
fl_addto_tabfolder ( usage_tab_ - > tabfolder_outer ,
_ ( " Spell checker " ) ,
2000-11-14 13:46:01 +00:00
spellchecker_ . dialog ( ) - > form ) ;
2000-10-27 10:04:51 +00:00
fl_addto_tabfolder ( usage_tab_ - > tabfolder_outer ,
_ ( " Language " ) ,
2000-11-14 13:46:01 +00:00
language_ . dialog ( ) - > form ) ;
2000-06-12 11:55:12 +00:00
}
void FormPreferences : : apply ( )
{
// set the new lyxrc entries
// many of these need to trigger other functions when the assignment
// is made. For example, screen zoom and font types. These could be
// handled either by signals/slots in lyxrc or just directly call the
// associated functions here.
2000-08-14 05:24:35 +00:00
// There are other problems with this scheme. We really should check
// what we copy to make sure that it really is necessary to do things
// like update the screen fonts because that flushes the textcache
2000-11-14 13:46:01 +00:00
// and other stuff which may cost us a lot on slower/high-load
// machines.
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
colors_ . apply ( ) ;
formats_ . apply ( ) ; // Must be before converters_.apply()
converters_ . apply ( ) ;
inputs_misc_ . apply ( ) ;
interface_ . apply ( ) ;
language_ . apply ( ) ;
lnf_misc_ . apply ( ) ;
outputs_misc_ . apply ( ) ;
paths_ . apply ( ) ;
printer_ . apply ( ) ;
screen_fonts_ . apply ( ) ;
spellchecker_ . apply ( ) ;
2000-10-27 10:04:51 +00:00
}
2000-10-30 21:53:29 +00:00
void FormPreferences : : feedback ( FL_OBJECT * ob )
2000-10-27 10:04:51 +00:00
{
2000-11-09 15:28:42 +00:00
Assert ( ob ) ;
2000-11-07 06:41:13 +00:00
2000-11-02 14:47:47 +00:00
string str ;
2000-11-14 13:46:01 +00:00
if ( ob - > form - > fdui = = colors_ . dialog ( ) ) {
str = colors_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = converters_ . dialog ( ) ) {
str = converters_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = formats_ . dialog ( ) ) {
str = formats_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = inputs_misc_ . dialog ( ) ) {
str = inputs_misc_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = interface_ . dialog ( ) ) {
str = interface_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = language_ . dialog ( ) ) {
str = language_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = lnf_misc_ . dialog ( ) ) {
str = lnf_misc_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = outputs_misc_ . dialog ( ) ) {
str = outputs_misc_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = paths_ . dialog ( ) ) {
str = paths_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = printer_ . dialog ( ) ) {
str = printer_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = screen_fonts_ . dialog ( ) ) {
str = screen_fonts_ . feedback ( ob ) ;
} else if ( ob - > form - > fdui = = spellchecker_ . dialog ( ) ) {
str = spellchecker_ . feedback ( ob ) ;
2000-11-02 14:47:47 +00:00
}
str = formatted ( str , dialog_ - > text_warning - > w - 10 ,
FL_SMALL_SIZE , FL_NORMAL_STYLE ) ;
fl_set_object_label ( dialog_ - > text_warning , str . c_str ( ) ) ;
fl_set_object_lsize ( dialog_ - > text_warning , FL_SMALL_SIZE ) ;
}
bool FormPreferences : : input ( FL_OBJECT * ob , long )
2000-10-27 10:04:51 +00:00
{
2000-11-08 09:39:46 +00:00
Assert ( ob ) ;
2000-10-27 10:04:51 +00:00
// whatever checks you need to ensure the user hasn't entered
// some totally ridiculous value somewhere. Change activate to suit.
// comments before each test describe what is _valid_
2000-11-14 13:46:01 +00:00
if ( ob - > form - > fdui = = colors_ . dialog ( ) )
return colors_ . input ( ob ) ;
else if ( ob - > form - > fdui = = converters_ . dialog ( ) )
return converters_ . input ( ob ) ;
else if ( ob - > form - > fdui = = formats_ . dialog ( ) )
return formats_ . input ( ob ) ;
else if ( ob - > form - > fdui = = interface_ . dialog ( ) )
return interface_ . input ( ob ) ;
else if ( ob - > form - > fdui = = language_ . dialog ( ) )
return language_ . input ( ob ) ;
else if ( ob - > form - > fdui = = paths_ . dialog ( ) )
return paths_ . input ( ob ) ;
else if ( ob - > form - > fdui = = screen_fonts_ . dialog ( ) )
return screen_fonts_ . input ( ) ;
else if ( ob - > form - > fdui = = spellchecker_ . dialog ( ) )
return spellchecker_ . input ( ob ) ;
2000-10-27 10:04:51 +00:00
2000-11-10 17:29:47 +00:00
return true ;
2000-10-27 10:04:51 +00:00
}
2000-10-30 21:53:29 +00:00
void FormPreferences : : update ( )
{
if ( ! dialog_ ) return ;
// read lyxrc entries
2000-11-14 13:46:01 +00:00
colors_ . update ( ) ;
formats_ . update ( ) ; // Must be before converters_.update()
converters_ . update ( ) ;
inputs_misc_ . update ( ) ;
interface_ . update ( ) ;
language_ . update ( ) ;
lnf_misc_ . update ( ) ;
outputs_misc_ . update ( ) ;
paths_ . update ( ) ;
printer_ . update ( ) ;
screen_fonts_ . update ( ) ;
spellchecker_ . update ( ) ;
}
FormPreferences : : Colors : : ~ Colors ( )
{
delete dialog_ ;
2000-10-30 21:53:29 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Colors : : apply ( )
2000-10-30 11:33:05 +00:00
{
2000-11-10 17:29:47 +00:00
bool modifiedText = false ;
bool modifiedBackground = false ;
2000-11-13 10:35:02 +00:00
for ( vector < XformColor > : : const_iterator cit = xformColorDB . begin ( ) ;
2000-11-10 17:29:47 +00:00
cit ! = xformColorDB . end ( ) ; + + cit ) {
2000-11-13 10:35:02 +00:00
RGBColor col ;
2000-11-10 17:29:47 +00:00
fl_getmcolor ( ( * cit ) . colorID , & col . r , & col . g , & col . b ) ;
if ( col ! = ( * cit ) . col ) {
2000-11-13 10:35:02 +00:00
modifiedXformPrefs = true ;
2000-11-10 17:29:47 +00:00
if ( ( * cit ) . colorID = = FL_BLACK )
modifiedText = true ;
if ( ( * cit ) . colorID = = FL_COL1 )
modifiedBackground = true ;
}
}
2000-11-13 10:35:02 +00:00
if ( modifiedXformPrefs ) {
vector < XformColor > : : const_iterator cit ;
2000-11-10 17:29:47 +00:00
for ( cit = xformColorDB . begin ( ) ;
cit ! = xformColorDB . end ( ) ; + + cit ) {
fl_mapcolor ( ( * cit ) . colorID ,
( * cit ) . col . r , ( * cit ) . col . g , ( * cit ) . col . b ) ;
if ( modifiedText & & ( * cit ) . colorID = = FL_BLACK ) {
2000-11-14 13:46:01 +00:00
AdjustVal ( FL_INACTIVE , FL_BLACK , 0.5 ) ;
2000-11-10 17:29:47 +00:00
}
if ( modifiedBackground & & ( * cit ) . colorID = = FL_COL1 ) {
2000-11-14 13:46:01 +00:00
AdjustVal ( FL_MCOL , FL_COL1 , 0.1 ) ;
AdjustVal ( FL_TOP_BCOL , FL_COL1 , 0.1 ) ;
AdjustVal ( FL_LEFT_BCOL , FL_COL1 , 0.1 ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
AdjustVal ( FL_RIGHT_BCOL , FL_COL1 , - 0.5 ) ;
AdjustVal ( FL_BOTTOM_BCOL , FL_COL1 , - 0.5 ) ;
2000-11-10 17:29:47 +00:00
}
}
Dialogs : : redrawGUI ( ) ;
}
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Colors : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_colors ( ) ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
FL_OBJECT * obj = dialog_ - > valslider_red ;
2000-11-03 09:47:02 +00:00
fl_set_slider_bounds ( obj , 0 , 255 ) ;
fl_set_slider_precision ( obj , 0 ) ;
fl_set_slider_return ( obj , FL_RETURN_END_CHANGED ) ;
2000-11-14 13:46:01 +00:00
obj = dialog_ - > valslider_green ;
2000-11-03 09:47:02 +00:00
fl_set_slider_bounds ( obj , 0 , 255 ) ;
fl_set_slider_precision ( obj , 0 ) ;
fl_set_slider_return ( obj , FL_RETURN_END_CHANGED ) ;
2000-11-14 13:46:01 +00:00
obj = dialog_ - > valslider_blue ;
2000-11-03 09:47:02 +00:00
fl_set_slider_bounds ( obj , 0 , 255 ) ;
fl_set_slider_precision ( obj , 0 ) ;
fl_set_slider_return ( obj , FL_RETURN_END_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_object_color ( dialog_ - > button_color ,
2000-11-03 09:47:02 +00:00
FL_FREE_COL4 , FL_FREE_COL4 ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_name , FL_RETURN_CHANGED ) ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
if ( LoadBrowserX11 ( colorFile ) )
fl_set_input ( dialog_ - > input_name , colorFile . c_str ( ) ) ;
2000-11-03 09:47:02 +00:00
else
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_name , N_ ( " No file found " ) ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
LoadBrowserLyX ( ) ;
2000-11-03 09:47:02 +00:00
2000-11-09 15:28:42 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > browser_x11 ) ;
parent_ . setPreHandler ( dialog_ - > input_name ) ;
parent_ . setPreHandler ( dialog_ - > button_browse ) ;
parent_ . setPreHandler ( dialog_ - > button_color ) ;
parent_ . setPreHandler ( dialog_ - > valslider_red ) ;
parent_ . setPreHandler ( dialog_ - > valslider_green ) ;
parent_ . setPreHandler ( dialog_ - > valslider_blue ) ;
parent_ . setPreHandler ( dialog_ - > browser_lyx_objs ) ;
parent_ . setPreHandler ( dialog_ - > button_modify ) ;
parent_ . setPreHandler ( dialog_ - > button_modify ) ;
2000-11-03 09:47:02 +00:00
}
2000-11-08 09:39:46 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Colors : : feedback ( FL_OBJECT const * const ob ) const
2000-11-03 17:05:42 +00:00
{
2000-11-10 17:29:47 +00:00
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_x11 ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " The colors listed in the X11 database. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > browser_lyx_objs ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " LyX objects that can be assigned a color. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_name ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " The file containing the X11 color database. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_color ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " You will only be able to modify the LyX object if the sliders and X11 browser agree. Force this by clicking on the highlighted browser name. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > valslider_red
| | ob = = dialog_ - > valslider_green
| | ob = = dialog_ - > valslider_blue ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " Find a new color. The name highlighted in the X11 database is the closest match to this. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_modify ) {
2000-11-10 17:29:47 +00:00
str = N_ ( " Modify the color of the LyX object. " ) ;
}
return str ;
2000-11-03 17:05:42 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : input ( FL_OBJECT const * const ob )
2000-11-03 17:05:42 +00:00
{
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_x11 ) {
return BrowserX11 ( ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > valslider_red
| | ob = = dialog_ - > valslider_green
| | ob = = dialog_ - > valslider_blue ) {
return RGB ( ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_name ) {
return Database ( ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_browse ) {
return parent_ . browse ( dialog_ - > input_name ,
_ ( " X11 color database " ) , " *.txt " ) ;
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > browser_lyx_objs ) {
return BrowserLyX ( ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_modify ) {
return Modify ( ) ;
2000-11-10 17:29:47 +00:00
}
2000-11-03 17:05:42 +00:00
2000-11-10 17:29:47 +00:00
return true ;
}
2000-11-03 17:05:42 +00:00
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Colors : : update ( )
{ }
void FormPreferences : : Colors : : AdjustVal ( int colAdjust , int colParent ,
double addVal ) const
2000-11-10 17:29:47 +00:00
{
2000-11-13 10:35:02 +00:00
RGBColor rgb ;
2000-11-10 17:29:47 +00:00
fl_getmcolor ( colParent , & rgb . r , & rgb . g , & rgb . b ) ;
2000-11-13 10:35:02 +00:00
HSVColor hsv = HSVColor ( rgb ) ;
2000-11-10 17:29:47 +00:00
hsv . v + = addVal ;
if ( hsv . v > 1.0 )
hsv . v = 1.0 ;
else if ( hsv . v < 0.0 )
hsv . v = 0.0 ;
2000-11-13 10:35:02 +00:00
rgb = RGBColor ( hsv ) ;
2000-11-10 17:29:47 +00:00
fl_mapcolor ( colAdjust , rgb . r , rgb . g , rgb . b ) ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : BrowserLyX ( ) const
2000-11-10 17:29:47 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_browser ( dialog_ - > browser_lyx_objs ) ;
2000-11-10 17:29:47 +00:00
if ( i < 1 )
return true ;
2000-11-14 13:46:01 +00:00
string name = fl_get_browser_line ( dialog_ - > browser_lyx_objs , i ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
vector < XformColor > : : const_iterator cit =
2000-11-10 17:29:47 +00:00
find_if ( xformColorDB . begin ( ) , xformColorDB . end ( ) ,
2000-11-13 10:35:02 +00:00
compare_memfun ( & XformColor : : getname , name ) ) ;
2000-11-10 17:29:47 +00:00
if ( cit ! = xformColorDB . end ( ) ) {
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
fl_set_slider_value ( dialog_ - > valslider_red , ( * cit ) . col . r ) ;
fl_set_slider_value ( dialog_ - > valslider_green , ( * cit ) . col . g ) ;
fl_set_slider_value ( dialog_ - > valslider_blue , ( * cit ) . col . b ) ;
RGB ( ) ;
2000-11-10 17:29:47 +00:00
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-03 17:05:42 +00:00
}
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_INACTIVE ) ;
2000-11-10 17:29:47 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : BrowserX11 ( ) const
2000-11-10 17:29:47 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_browser ( dialog_ - > browser_x11 ) ;
2000-11-10 17:29:47 +00:00
if ( i < 1 )
return true ;
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
RGBColor col = colorDB [ i - 1 ] . second ;
2000-11-10 17:29:47 +00:00
fl_mapcolor ( FL_FREE_COL4 + i , col . r , col . g , col . b ) ;
fl_mapcolor ( FL_FREE_COL4 , col . r , col . g , col . b ) ;
2000-11-14 13:46:01 +00:00
fl_set_slider_value ( dialog_ - > valslider_red , col . r ) ;
fl_set_slider_value ( dialog_ - > valslider_green , col . g ) ;
fl_set_slider_value ( dialog_ - > valslider_blue , col . b ) ;
fl_redraw_object ( dialog_ - > button_color ) ;
2000-11-10 17:29:47 +00:00
// Is it valid to activate the "Modify" button?
2000-11-14 13:46:01 +00:00
int line = fl_get_browser ( dialog_ - > browser_lyx_objs ) ;
2000-11-10 17:29:47 +00:00
bool isSelected = ( line > 0 ) ;
if ( isSelected )
2000-11-14 13:46:01 +00:00
if ( line > fl_get_browser_maxline ( dialog_ - > browser_lyx_objs ) )
2000-11-10 17:29:47 +00:00
isSelected = false ;
if ( isSelected & & colorDB [ i - 1 ] . second = = col ) {
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_BLACK ) ;
2000-11-10 17:29:47 +00:00
}
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-10 17:29:47 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : Database ( )
2000-11-13 10:35:02 +00:00
{
2000-11-14 13:46:01 +00:00
string file = fl_get_input ( dialog_ - > input_name ) ;
if ( ! parent_ . ReadableFile ( file ) )
return false ;
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
if ( LoadBrowserX11 ( file ) )
return true ;
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
return false ;
2000-11-03 17:05:42 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Colors : : LoadBrowserLyX ( )
2000-11-10 17:29:47 +00:00
{
2000-11-13 10:35:02 +00:00
// First, define the modifiable xform colors
XformColor xcol ;
2000-11-10 17:29:47 +00:00
xcol . name = " GUI background " ;
xcol . colorID = FL_COL1 ;
fl_getmcolor ( FL_COL1 , & xcol . col . r , & xcol . col . g , & xcol . col . b ) ;
xformColorDB . push_back ( xcol ) ;
xcol . name = " GUI text " ;
xcol . colorID = FL_BLACK ;
fl_getmcolor ( FL_BLACK , & xcol . col . r , & xcol . col . g , & xcol . col . b ) ;
xformColorDB . push_back ( xcol ) ;
2000-11-14 13:46:01 +00:00
// FL_LIGHTER_COL1 does not exist in xforms 0.88
// xcol.name = "GUI active tab";
// xcol.colorID = FL_LIGHTER_COL1;
// fl_getmcolor(FL_LIGHTER_COL1, &xcol.col.r, &xcol.col.g, &xcol.col.b);
//
// xformColorDB.push_back( xcol );
2000-11-10 17:29:47 +00:00
xcol . name = " GUI push button " ;
xcol . colorID = FL_YELLOW ;
fl_getmcolor ( FL_YELLOW , & xcol . col . r , & xcol . col . g , & xcol . col . b ) ;
xformColorDB . push_back ( xcol ) ;
2000-11-14 13:46:01 +00:00
FL_OBJECT * colbr = dialog_ - > browser_lyx_objs ;
2000-11-10 17:29:47 +00:00
fl_clear_browser ( colbr ) ;
2000-11-13 10:35:02 +00:00
for ( vector < XformColor > : : const_iterator cit = xformColorDB . begin ( ) ;
2000-11-10 17:29:47 +00:00
cit ! = xformColorDB . end ( ) ; + + cit ) {
fl_addto_browser ( colbr , ( * cit ) . name . c_str ( ) ) ;
}
2000-11-13 10:35:02 +00:00
// Now load the LyX LColors
// just to be safe...
2000-11-14 13:46:01 +00:00
fl_deselect_browser ( dialog_ - > browser_lyx_objs ) ;
fl_deactivate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_INACTIVE ) ;
2000-11-10 17:29:47 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : LoadBrowserX11 ( string const & filename ) const
2000-11-03 09:47:02 +00:00
{
LyXLex lex ( 0 , 0 ) ;
2000-11-08 15:19:55 +00:00
lex . setCommentChar ( ' ! ' ) ;
2000-11-03 09:47:02 +00:00
if ( ! lex . setFile ( filename ) )
2000-11-10 17:29:47 +00:00
return true ;
2000-11-03 09:47:02 +00:00
2000-11-13 10:35:02 +00:00
vector < RGBColor > cols ;
2000-11-03 17:05:42 +00:00
vector < string > names ;
2000-11-08 15:19:55 +00:00
while ( lex . next ( ) ) {
2000-11-13 10:35:02 +00:00
RGBColor col ;
2000-11-08 15:19:55 +00:00
col . r = lex . GetInteger ( ) ;
lex . next ( ) ;
col . g = lex . GetInteger ( ) ;
lex . next ( ) ;
col . b = lex . GetInteger ( ) ;
lex . EatLine ( ) ;
string name = frontStrip ( lex . GetString ( ) , " \t " ) ;
// remove redundant entries on the fly
bool add = cols . empty ( ) ;
if ( ! add ) {
2000-11-13 10:35:02 +00:00
vector < RGBColor > : : const_iterator cit =
2000-11-08 15:19:55 +00:00
find ( cols . begin ( ) , cols . end ( ) , col ) ;
2000-11-09 15:28:42 +00:00
add = ( cit = = cols . end ( ) ) ;
2000-11-08 15:19:55 +00:00
}
if ( add ) {
2000-11-13 10:35:02 +00:00
if ( col = = RGBColor ( 0 , 0 , 0 ) )
2000-11-09 15:28:42 +00:00
name = " black " ;
2000-11-13 10:35:02 +00:00
else if ( col = = RGBColor ( 255 , 255 , 255 ) )
2000-11-09 15:28:42 +00:00
name = " white " ;
else
name = lowercase ( name ) ;
2000-11-10 17:29:47 +00:00
2000-11-13 10:35:02 +00:00
if ( col = = RGBColor ( 0 , 0 , 0 ) | |
col = = RGBColor ( 255 , 255 , 255 ) ) {
2000-11-08 15:19:55 +00:00
cols . insert ( cols . begin ( ) , col ) ;
names . insert ( names . begin ( ) , name ) ;
} else {
cols . push_back ( col ) ;
names . push_back ( name ) ;
2000-11-03 17:05:42 +00:00
}
2000-11-08 15:19:55 +00:00
}
}
2000-11-14 13:46:01 +00:00
FL_OBJECT * colbr = dialog_ - > browser_x11 ;
fl_freeze_form ( dialog_ - > form ) ;
2000-11-10 17:29:47 +00:00
fl_clear_browser ( colbr ) ;
2000-11-09 15:28:42 +00:00
vector < string > : : const_iterator sit = names . begin ( ) ;
2000-11-13 10:35:02 +00:00
for ( vector < RGBColor > : : const_iterator iit = cols . begin ( ) ;
2000-11-04 10:00:12 +00:00
iit ! = cols . end ( ) ; + + iit , + + sit ) {
2000-11-10 17:29:47 +00:00
colorDB . push_back ( X11Color ( * sit , * iit ) ) ;
fl_addto_browser ( colbr , ( * sit ) . c_str ( ) ) ;
2000-11-03 17:05:42 +00:00
}
2000-11-03 09:47:02 +00:00
fl_set_browser_topline ( colbr , 1 ) ;
fl_select_browser_line ( colbr , 1 ) ;
2000-11-14 13:46:01 +00:00
BrowserX11 ( ) ;
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-03 09:47:02 +00:00
return true ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : Modify ( ) const
2000-10-30 11:33:05 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_browser ( dialog_ - > browser_lyx_objs ) ;
2000-11-10 17:29:47 +00:00
if ( i < 1 )
return true ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
string name = fl_get_browser_line ( dialog_ - > browser_lyx_objs , i ) ;
2000-11-03 09:47:02 +00:00
2000-11-13 10:35:02 +00:00
vector < XformColor > : : iterator it = // non-const; it's modified below
2000-11-10 17:29:47 +00:00
find_if ( xformColorDB . begin ( ) , xformColorDB . end ( ) ,
2000-11-13 10:35:02 +00:00
compare_memfun ( & XformColor : : getname , name ) ) ;
2000-11-03 09:47:02 +00:00
2000-11-10 17:29:47 +00:00
if ( it = = xformColorDB . end ( ) )
return true ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
int j = fl_get_browser ( dialog_ - > browser_x11 ) ;
2000-11-10 17:29:47 +00:00
if ( j < 1 )
return true ;
2000-11-03 09:47:02 +00:00
2000-11-10 17:29:47 +00:00
( * it ) . col . r = colorDB [ j - 1 ] . second . r ;
( * it ) . col . g = colorDB [ j - 1 ] . second . g ;
( * it ) . col . b = colorDB [ j - 1 ] . second . b ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
fl_deselect_browser ( dialog_ - > browser_x11 ) ;
fl_deselect_browser ( dialog_ - > browser_lyx_objs ) ;
fl_deactivate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_INACTIVE ) ;
2000-11-03 09:47:02 +00:00
2000-11-10 17:29:47 +00:00
return true ;
2000-11-03 09:47:02 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Colors : : RGB ( ) const
2000-11-03 09:47:02 +00:00
{
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-03 09:47:02 +00:00
2000-11-13 10:35:02 +00:00
RGBColor col ;
2000-11-14 13:46:01 +00:00
col . r = int ( fl_get_slider_value ( dialog_ - > valslider_red ) ) ;
col . g = int ( fl_get_slider_value ( dialog_ - > valslider_green ) ) ;
col . b = int ( fl_get_slider_value ( dialog_ - > valslider_blue ) ) ;
2000-11-03 09:47:02 +00:00
2000-11-03 17:05:42 +00:00
fl_mapcolor ( FL_FREE_COL4 , col . r , col . g , col . b ) ;
2000-11-14 13:46:01 +00:00
fl_redraw_object ( dialog_ - > button_color ) ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
int const i = SearchEntry ( col ) ;
2000-11-03 09:47:02 +00:00
// change topline only if necessary
2000-11-14 13:46:01 +00:00
// int top = fl_get_browser_topline(dialog_->browser_x11);
2000-11-04 10:00:12 +00:00
// if (i < top || i > (top+15))
2000-11-14 13:46:01 +00:00
fl_set_browser_topline ( dialog_ - > browser_x11 , i - 5 ) ;
fl_select_browser_line ( dialog_ - > browser_x11 , i + 1 ) ;
2000-11-10 17:29:47 +00:00
// Only activate the "Modify" button if the browser and slider colors
// are the same AND if a LyX object is selected.
2000-11-14 13:46:01 +00:00
int line = fl_get_browser ( dialog_ - > browser_lyx_objs ) ;
2000-11-10 17:29:47 +00:00
bool isSelected = ( line > 0 ) ;
if ( isSelected )
2000-11-14 13:46:01 +00:00
if ( line > fl_get_browser_maxline ( dialog_ - > browser_lyx_objs ) )
2000-11-10 17:29:47 +00:00
isSelected = false ;
if ( isSelected & & colorDB [ i ] . second = = col ) {
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_BLACK ) ;
2000-11-10 17:29:47 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_modify ) ;
fl_set_object_lcol ( dialog_ - > button_modify , FL_INACTIVE ) ;
2000-11-10 17:29:47 +00:00
}
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-10 17:29:47 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
int FormPreferences : : Colors : : SearchEntry ( RGBColor const & col ) const
2000-11-10 17:29:47 +00:00
{
int mindiff = 0x7fffffff ;
vector < X11Color > : : const_iterator mincit = colorDB . begin ( ) ;
2000-11-03 09:47:02 +00:00
2000-11-10 17:29:47 +00:00
for ( vector < X11Color > : : const_iterator cit = colorDB . begin ( ) ;
cit ! = colorDB . end ( ) ; + + cit ) {
2000-11-13 10:35:02 +00:00
RGBColor colDB = ( * cit ) . second ;
RGBColor diff ;
2000-11-10 17:29:47 +00:00
diff . r = col . r - colDB . r ;
diff . g = col . g - colDB . g ;
diff . b = col . b - colDB . b ;
int d = ( 2 * ( diff . r * diff . r ) +
3 * ( diff . g * diff . g ) +
( diff . b * diff . b ) ) ;
if ( mindiff > d ) {
mindiff = d ;
mincit = cit ;
}
}
return static_cast < int > ( mincit - colorDB . begin ( ) ) ;
2000-11-03 09:47:02 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Converters : : ~ Converters ( )
{
delete dialog_ ;
}
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Converters : : apply ( ) const
2000-11-09 15:28:42 +00:00
{
2000-11-13 10:35:02 +00:00
converters = local_converters ;
converters . Update ( formats ) ;
converters . BuildGraph ( ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-03 17:05:42 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Converters : : build ( )
2000-11-03 17:05:42 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_converters ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_converter , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_flags , FL_RETURN_CHANGED ) ;
2000-11-09 15:28:42 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > browser_all ) ;
parent_ . setPreHandler ( dialog_ - > button_delete ) ;
parent_ . setPreHandler ( dialog_ - > button_add ) ;
parent_ . setPreHandler ( dialog_ - > input_converter ) ;
parent_ . setPreHandler ( dialog_ - > choice_from ) ;
parent_ . setPreHandler ( dialog_ - > choice_to ) ;
parent_ . setPreHandler ( dialog_ - > input_flags ) ;
2000-11-03 09:47:02 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Converters : : feedback ( FL_OBJECT const * const ob ) const
2000-11-03 17:05:42 +00:00
{
2000-11-09 15:28:42 +00:00
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_all ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " All the currently defined converters known to LyX. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > choice_from ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Convert \" from \" this format " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > choice_to ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Convert \" to \" this format " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_converter ) {
2000-11-13 10:35:02 +00:00
str = N_ ( " The conversion command. $$i is the input file name, $$b is the file name without its extension and $$o is the name of the output file. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_flags ) {
2000-11-13 10:35:02 +00:00
str = N_ ( " Flags that control the converter behavior " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_delete ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Remove the current converter from the list of available converters. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_add ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Add the current converter to the list of available converters. " ) ;
}
return str ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Converters : : input ( FL_OBJECT const * const ob )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_all ) {
return Browser ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > choice_from
| | ob = = dialog_ - > choice_to
| | ob = = dialog_ - > input_converter
| | ob = = dialog_ - > input_flags ) {
return Input ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_add ) {
return Add ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_delete ) {
return Delete ( ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-10 17:29:47 +00:00
return true ;
2000-11-03 17:05:42 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Converters : : update ( )
2000-11-08 09:39:46 +00:00
{
2000-11-13 10:35:02 +00:00
local_converters = converters ;
local_converters . Update ( local_formats ) ;
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-13 10:35:02 +00:00
struct compare_converter {
int operator ( ) ( Converter const & a , Converter const & b ) {
int i = compare_no_case ( a . From - > prettyname ( ) ,
b . From - > prettyname ( ) ) ;
if ( i = = 0 )
return compare_no_case ( a . To - > prettyname ( ) ,
b . To - > prettyname ( ) ) < 0 ;
else
return i < 0 ;
}
} ;
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Converters : : UpdateBrowser ( )
2000-11-13 10:35:02 +00:00
{
local_converters . Sort ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
fl_clear_browser ( dialog_ - > browser_all ) ;
for ( : : Converters : : const_iterator cit = local_converters . begin ( ) ;
2000-11-13 10:35:02 +00:00
cit ! = local_converters . end ( ) ; + + cit ) {
string name = ( * cit ) . From - > prettyname ( ) + " -> "
+ ( * cit ) . To - > prettyname ( ) ;
2000-11-14 13:46:01 +00:00
fl_addto_browser ( dialog_ - > browser_all , name . c_str ( ) ) ;
2000-11-13 10:35:02 +00:00
}
2000-11-14 13:46:01 +00:00
Input ( ) ;
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-13 10:35:02 +00:00
}
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Converters : : Add ( )
2000-11-13 10:35:02 +00:00
{
2000-11-14 13:46:01 +00:00
string from = GetFrom ( ) ;
string to = GetTo ( ) ;
string command = fl_get_input ( dialog_ - > input_converter ) ;
string flags = fl_get_input ( dialog_ - > input_flags ) ;
2000-11-13 10:35:02 +00:00
Converter const * old = local_converters . GetConverter ( from , to ) ;
local_converters . Add ( from , to , command , flags ) ;
if ( ! old ) {
local_converters . UpdateLast ( local_formats ) ;
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-08 09:39:46 +00:00
}
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-13 10:35:02 +00:00
2000-11-09 15:28:42 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Converters : : Browser ( )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_browser ( dialog_ - > browser_all ) ;
2000-11-09 15:28:42 +00:00
if ( i < = 0 ) return false ;
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
Converter const & c = local_converters . Get ( i - 1 ) ;
int j = local_formats . GetNumber ( c . from ) ;
if ( j > = 0 )
2000-11-14 13:46:01 +00:00
fl_set_choice ( dialog_ - > choice_from , j + 1 ) ;
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
j = local_formats . GetNumber ( c . to ) ;
if ( j > = 0 )
2000-11-14 13:46:01 +00:00
fl_set_choice ( dialog_ - > choice_to , j + 1 ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_converter , c . command . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_flags , c . flags . c_str ( ) ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add , idex ( _ ( " Modify|#M " ) ) ) ;
fl_set_button_shortcut ( dialog_ - > button_add ,
2000-11-09 15:28:42 +00:00
scex ( _ ( " Modify|#M " ) ) , 1 ) ;
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_BLACK ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-09 15:28:42 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Converters : : Delete ( )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
string from = GetFrom ( ) ;
string to = GetTo ( ) ;
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
local_converters . Delete ( from , to ) ;
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-09 15:28:42 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Converters : : Input ( )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
string from = GetFrom ( ) ;
string to = GetTo ( ) ;
2000-11-13 10:35:02 +00:00
int sel = local_converters . GetNumber ( from , to ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
if ( sel < 0 ) {
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add ,
2000-11-09 15:28:42 +00:00
idex ( _ ( " Add|#A " ) ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button_shortcut ( dialog_ - > button_add ,
2000-11-09 15:28:42 +00:00
scex ( _ ( " Add|#A " ) ) , 1 ) ;
2000-11-14 13:46:01 +00:00
fl_deselect_browser ( dialog_ - > browser_all ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_INACTIVE ) ;
2000-11-09 15:28:42 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add ,
2000-11-09 15:28:42 +00:00
idex ( _ ( " Modify|#M " ) ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button_shortcut ( dialog_ - > button_add ,
2000-11-09 15:28:42 +00:00
scex ( _ ( " Modify|#M " ) ) , 1 ) ;
2000-11-13 10:35:02 +00:00
int top = max ( sel - 5 , 0 ) ;
2000-11-14 13:46:01 +00:00
fl_set_browser_topline ( dialog_ - > browser_all , top ) ;
fl_select_browser_line ( dialog_ - > browser_all , sel + 1 ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_BLACK ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-14 13:46:01 +00:00
string command = fl_get_input ( dialog_ - > input_converter ) ;
2000-11-13 10:35:02 +00:00
if ( command . empty ( ) | | from = = to ) {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-13 10:35:02 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_BLACK ) ;
2000-11-13 10:35:02 +00:00
}
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-13 10:35:02 +00:00
return false ;
2000-11-09 15:28:42 +00:00
}
2000-11-14 13:46:01 +00:00
string const FormPreferences : : Converters : : GetFrom ( ) const
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_choice ( dialog_ - > choice_from ) ;
2000-11-13 10:35:02 +00:00
if ( i > 0 )
return local_formats . Get ( i - 1 ) . name ( ) ;
else {
2000-11-14 13:46:01 +00:00
lyxerr < < " FormPreferences::Converters::GetFrom: No choice! " < < endl ;
2000-11-13 10:35:02 +00:00
return " ??? " ;
}
}
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
2000-11-14 13:46:01 +00:00
string const FormPreferences : : Converters : : GetTo ( ) const
2000-11-13 10:35:02 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_choice ( dialog_ - > choice_to ) ;
2000-11-13 10:35:02 +00:00
if ( i > 0 )
return local_formats . Get ( i - 1 ) . name ( ) ;
else {
2000-11-14 13:46:01 +00:00
lyxerr < < " FormPreferences::Converters::GetTo: No choice! " < < endl ;
2000-11-13 10:35:02 +00:00
return " ??? " ;
}
2000-11-09 15:28:42 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Converters : : UpdateChoices ( ) const
2000-11-09 15:28:42 +00:00
{
string choice ;
2000-11-14 13:46:01 +00:00
for ( : : Formats : : const_iterator cit = local_formats . begin ( ) ;
2000-11-13 10:35:02 +00:00
cit ! = local_formats . end ( ) ; + + cit ) {
if ( ! choice . empty ( ) )
2000-11-09 15:28:42 +00:00
choice + = " | " ;
else
choice + = " " ;
2000-11-13 10:35:02 +00:00
choice + = ( * cit ) . prettyname ( ) ;
2000-11-09 15:28:42 +00:00
}
choice + = " " ;
2000-11-14 13:46:01 +00:00
fl_clear_choice ( dialog_ - > choice_from ) ;
fl_addto_choice ( dialog_ - > choice_from , choice . c_str ( ) ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_clear_choice ( dialog_ - > choice_to ) ;
fl_addto_choice ( dialog_ - > choice_to , choice . c_str ( ) ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Formats : : ~ Formats ( )
{
delete dialog_ ;
}
void FormPreferences : : Formats : : apply ( ) const
2000-11-06 11:20:22 +00:00
{
2000-11-13 10:35:02 +00:00
formats = local_formats ;
2000-11-06 11:20:22 +00:00
}
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Formats : : build ( )
2000-11-03 09:47:02 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_formats ( ) ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_format , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_viewer , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_shrtcut , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_gui_name , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_extension , FL_RETURN_CHANGED ) ;
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_format , fl_lowercase_filter ) ;
2000-11-06 11:20:22 +00:00
2000-11-09 15:28:42 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > browser_all ) ;
parent_ . setPreHandler ( dialog_ - > input_format ) ;
parent_ . setPreHandler ( dialog_ - > input_gui_name ) ;
parent_ . setPreHandler ( dialog_ - > button_delete ) ;
parent_ . setPreHandler ( dialog_ - > button_add ) ;
parent_ . setPreHandler ( dialog_ - > input_extension ) ;
parent_ . setPreHandler ( dialog_ - > input_viewer ) ;
parent_ . setPreHandler ( dialog_ - > input_shrtcut ) ;
2000-11-03 09:47:02 +00:00
}
2000-11-08 09:39:46 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Formats : : feedback ( FL_OBJECT const * const ob ) const
2000-11-03 09:47:02 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_all ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " All the currently defined formats known to LyX. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_format ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " The format identifier. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_gui_name ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " The format name as it will appear in the menus. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_shrtcut ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " The keyboard accelerator. Use a letter in the GUI name. Case sensitive. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_extension ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Used to recognize the file. E.g., ps, pdf, tex. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_viewer ) {
2000-11-13 10:35:02 +00:00
str = N_ ( " The command used to launch the viewer application. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_delete ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Remove the current format from the list of available formats. " ) ;
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_add ) {
2000-11-09 15:28:42 +00:00
str = N_ ( " Add the current format to the list of available formats. " ) ;
}
2000-11-03 09:47:02 +00:00
return str ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Formats : : input ( FL_OBJECT const * const ob )
2000-11-03 09:47:02 +00:00
{
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > browser_all ) {
return Browser ( ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > input_format
| | ob = = dialog_ - > input_gui_name
| | ob = = dialog_ - > input_shrtcut
| | ob = = dialog_ - > input_extension
| | ob = = dialog_ - > input_viewer ) {
return Input ( ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_add ) {
return Add ( ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
} else if ( ob = = dialog_ - > button_delete ) {
return Delete ( ) ;
2000-11-06 11:20:22 +00:00
}
2000-11-09 15:28:42 +00:00
return false ;
2000-11-03 09:47:02 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Formats : : update ( )
2000-11-08 09:39:46 +00:00
{
2000-11-13 10:35:02 +00:00
local_formats = formats ;
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-13 10:35:02 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Formats : : UpdateBrowser ( )
2000-11-13 10:35:02 +00:00
{
local_formats . Sort ( ) ;
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
fl_deselect_browser ( dialog_ - > browser_all ) ;
fl_clear_browser ( dialog_ - > browser_all ) ;
for ( : : Formats : : const_iterator cit = local_formats . begin ( ) ;
2000-11-13 10:35:02 +00:00
cit ! = local_formats . end ( ) ; + + cit )
2000-11-14 13:46:01 +00:00
fl_addto_browser ( dialog_ - > browser_all ,
2000-11-13 10:35:02 +00:00
( * cit ) . prettyname ( ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
Input ( ) ;
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
// Mustn't forget to update the Formats available to the converters_
parent_ . converters_ . UpdateChoices ( ) ;
2000-11-13 10:35:02 +00:00
local_converters . Update ( local_formats ) ;
2000-11-08 09:39:46 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Formats : : Add ( )
2000-11-08 09:39:46 +00:00
{
2000-11-14 13:46:01 +00:00
string name = fl_get_input ( dialog_ - > input_format ) ;
string prettyname = fl_get_input ( dialog_ - > input_gui_name ) ;
string extension = fl_get_input ( dialog_ - > input_extension ) ;
string shortcut = fl_get_input ( dialog_ - > input_shrtcut ) ;
string viewer = fl_get_input ( dialog_ - > input_viewer ) ;
2000-11-08 09:39:46 +00:00
2000-11-13 10:35:02 +00:00
Format const * old = local_formats . GetFormat ( name ) ;
string old_prettyname = old ? old - > prettyname ( ) : string ( ) ;
local_formats . Add ( name , extension , prettyname , shortcut ) ;
local_formats . SetViewer ( name , viewer ) ;
if ( ! old | | prettyname ! = old_prettyname ) {
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-13 10:35:02 +00:00
if ( old )
2000-11-14 13:46:01 +00:00
parent_ . converters_ . UpdateBrowser ( ) ;
2000-11-09 15:28:42 +00:00
}
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-09 15:28:42 +00:00
return true ;
}
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Formats : : Browser ( )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
int i = fl_get_browser ( dialog_ - > browser_all ) ;
2000-11-09 15:28:42 +00:00
if ( i < = 0 ) return false ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-08 09:39:46 +00:00
2000-11-13 10:35:02 +00:00
Format const & f = local_formats . Get ( i - 1 ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_format , f . name ( ) . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_gui_name , f . prettyname ( ) . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_shrtcut , f . shortcut ( ) . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_extension , f . extension ( ) . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_viewer , f . viewer ( ) . c_str ( ) ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add , idex ( _ ( " Modify|#M " ) ) ) ;
fl_set_button_shortcut ( dialog_ - > button_add , scex ( _ ( " Modify|#M " ) ) , 1 ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_BLACK ) ;
2000-11-09 15:28:42 +00:00
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-09 15:28:42 +00:00
return false ;
2000-11-08 09:39:46 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Formats : : Delete ( )
2000-11-08 09:39:46 +00:00
{
2000-11-14 13:46:01 +00:00
string name = fl_get_input ( dialog_ - > input_format ) ;
2000-11-08 09:39:46 +00:00
2000-11-13 10:35:02 +00:00
if ( local_converters . FormatIsUsed ( name ) ) {
2000-11-14 13:46:01 +00:00
parent_ . printWarning ( _ ( " WARNING! Cannot remove a Format used by a Converter. Remove the converter first. " ) ) ;
fl_deactivate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_INACTIVE ) ;
2000-11-09 15:28:42 +00:00
return false ;
2000-11-08 09:39:46 +00:00
}
2000-11-09 15:28:42 +00:00
2000-11-13 10:35:02 +00:00
local_formats . Delete ( name ) ;
2000-11-14 13:46:01 +00:00
UpdateBrowser ( ) ;
2000-11-08 09:39:46 +00:00
return true ;
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Formats : : Input ( )
2000-11-08 09:39:46 +00:00
{
2000-11-14 13:46:01 +00:00
string name = fl_get_input ( dialog_ - > input_format ) ;
2000-11-13 10:35:02 +00:00
int sel = local_formats . GetNumber ( name ) ;
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
2000-11-08 09:39:46 +00:00
2000-11-13 10:35:02 +00:00
if ( sel < 0 ) {
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add ,
2000-11-08 09:39:46 +00:00
idex ( _ ( " Add|#A " ) ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button_shortcut ( dialog_ - > button_add ,
2000-11-08 09:39:46 +00:00
scex ( _ ( " Add|#A " ) ) , 1 ) ;
2000-11-14 13:46:01 +00:00
fl_deselect_browser ( dialog_ - > browser_all ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_INACTIVE ) ;
2000-11-08 09:39:46 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_set_object_label ( dialog_ - > button_add ,
2000-11-08 09:39:46 +00:00
idex ( _ ( " Modify|#M " ) ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button_shortcut ( dialog_ - > button_add ,
2000-11-08 09:39:46 +00:00
scex ( _ ( " Modify|#M " ) ) , 1 ) ;
2000-11-13 10:35:02 +00:00
int top = max ( sel - 5 , 0 ) ;
2000-11-14 13:46:01 +00:00
fl_set_browser_topline ( dialog_ - > browser_all , top ) ;
fl_select_browser_line ( dialog_ - > browser_all , sel + 1 ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_BLACK ) ;
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_delete ) ;
fl_set_object_lcol ( dialog_ - > button_delete , FL_BLACK ) ;
2000-11-08 09:39:46 +00:00
}
2000-11-14 13:46:01 +00:00
string prettyname = fl_get_input ( dialog_ - > input_gui_name ) ;
2000-11-13 10:35:02 +00:00
if ( name . empty ( ) | | prettyname . empty ( ) ) {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_INACTIVE ) ;
2000-11-13 10:35:02 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > button_add ) ;
fl_set_object_lcol ( dialog_ - > button_add , FL_BLACK ) ;
2000-11-13 10:35:02 +00:00
}
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-11-13 10:35:02 +00:00
return false ;
2000-11-08 09:39:46 +00:00
}
2000-11-03 09:47:02 +00:00
2000-11-14 13:46:01 +00:00
FormPreferences : : InputsMisc : : ~ InputsMisc ( )
{
delete dialog_ ;
}
void FormPreferences : : InputsMisc : : apply ( ) const
2000-10-30 11:33:05 +00:00
{
2000-11-04 10:00:12 +00:00
lyxrc . date_insert_format =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_date_format ) ;
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : InputsMisc : : build ( )
2000-10-30 11:33:05 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_inputs_misc ( ) ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_date_format , FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_date_format ) ;
2000-10-30 11:33:05 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : InputsMisc : : feedback ( FL_OBJECT const * const ob ) const
2000-10-30 11:33:05 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > input_date_format )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_DATE_INSERT_FORMAT ) ;
2000-10-30 11:33:05 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : InputsMisc : : update ( )
2000-10-30 11:33:05 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_date_format ,
2000-10-30 11:33:05 +00:00
lyxrc . date_insert_format . c_str ( ) ) ;
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Interface : : ~ Interface ( )
{
delete dialog_ ;
}
void FormPreferences : : Interface : : apply ( ) const
2000-10-27 10:04:51 +00:00
{
2000-06-12 11:55:12 +00:00
lyxrc . popup_font_name =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_popup_font ) ;
lyxrc . menu_font_name = fl_get_input ( dialog_ - > input_menu_font ) ;
2000-08-14 05:24:35 +00:00
lyxrc . font_norm_menu =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_popup_encoding ) ;
lyxrc . bind_file = fl_get_input ( dialog_ - > input_bind_file ) ;
lyxrc . ui_file = fl_get_input ( dialog_ - > input_ui_file ) ;
2000-10-13 05:57:05 +00:00
lyxrc . override_x_deadkeys =
2000-11-14 13:46:01 +00:00
fl_get_button ( dialog_ - > check_override_x_dead_keys ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Interface : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_interface ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_popup_font , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_menu_font , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_popup_encoding ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_bind_file , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_ui_file , FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_popup_font ) ;
parent_ . setPreHandler ( dialog_ - > input_menu_font ) ;
parent_ . setPreHandler ( dialog_ - > input_popup_encoding ) ;
parent_ . setPreHandler ( dialog_ - > input_bind_file ) ;
parent_ . setPreHandler ( dialog_ - > button_bind_file_browse ) ;
parent_ . setPreHandler ( dialog_ - > input_ui_file ) ;
parent_ . setPreHandler ( dialog_ - > button_ui_file_browse ) ;
parent_ . setPreHandler ( dialog_ - > check_override_x_dead_keys ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Interface : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > input_popup_font )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_POPUP ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_menu_font )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_MENU ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_popup_encoding )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_ENCODING_MENU ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_bind_file )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_BINDFILE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_ui_file )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_UIFILE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_override_x_dead_keys )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_OVERRIDE_X_DEADKEYS ) ;
2000-10-25 10:19:25 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-27 10:04:51 +00:00
}
2000-10-25 10:19:25 +00:00
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Interface : : input ( FL_OBJECT const * const ob )
{
if ( ob = = dialog_ - > button_bind_file_browse ) {
string dir = system_lyxdir + string ( " bind " ) ;
string name = N_ ( " Sys Bind " ) ;
pair < string , string > dir1 ( name , dir ) ;
dir = user_lyxdir + string ( " bind " ) ;
name = N_ ( " User Bind " ) ;
pair < string , string > dir2 ( name , dir ) ;
parent_ . browse ( dialog_ - > input_bind_file ,
_ ( " Bind file " ) , " *.bind " , dir1 , dir2 ) ;
} else if ( ob = = dialog_ - > button_ui_file_browse ) {
string dir = system_lyxdir + string ( " ui " ) ;
string name = N_ ( " Sys UI " ) ;
pair < string , string > dir1 ( name , dir ) ;
dir = user_lyxdir + string ( " ui " ) ;
name = N_ ( " User UI " ) ;
pair < string , string > dir2 ( name , dir ) ;
parent_ . browse ( dialog_ - > input_ui_file ,
_ ( " UI file " ) , " *.ui " , dir1 , dir2 ) ;
}
return true ;
}
void FormPreferences : : Interface : : update ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_popup_font ,
2000-10-27 10:04:51 +00:00
lyxrc . popup_font_name . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_menu_font ,
2000-10-27 10:04:51 +00:00
lyxrc . menu_font_name . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_popup_encoding ,
2000-10-27 10:04:51 +00:00
lyxrc . font_norm_menu . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_bind_file ,
2000-10-27 10:04:51 +00:00
lyxrc . bind_file . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_ui_file ,
2000-10-27 10:04:51 +00:00
lyxrc . ui_file . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_override_x_dead_keys ,
2000-10-27 10:04:51 +00:00
lyxrc . override_x_deadkeys ) ;
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Language : : ~ Language ( )
{
delete combo_default_lang ;
delete dialog_ ;
}
void FormPreferences : : Language : : apply ( )
2000-10-30 11:33:05 +00:00
{
2000-10-30 21:53:29 +00:00
lyxrc . default_language = combo_default_lang - > getline ( ) ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
int button = fl_get_button ( dialog_ - > check_use_kbmap ) ;
string name_1 = fl_get_input ( dialog_ - > input_kbmap1 ) ;
string name_2 = fl_get_input ( dialog_ - > input_kbmap2 ) ;
2000-11-08 09:39:46 +00:00
if ( button )
button = ( ! name_1 . empty ( ) & & ! name_2 . empty ( ) ) ;
2000-10-30 11:33:05 +00:00
lyxrc . use_kbmap = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
if ( lyxrc . use_kbmap ) {
lyxrc . primary_kbmap = name_1 ;
lyxrc . secondary_kbmap = name_2 ;
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_rtl_support ) ;
2000-10-30 11:33:05 +00:00
lyxrc . rtl_support = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_auto_begin ) ;
2000-10-30 11:33:05 +00:00
lyxrc . language_auto_begin = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_auto_end ) ;
2000-10-30 11:33:05 +00:00
lyxrc . language_auto_end = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_mark_foreign ) ;
2000-10-30 11:33:05 +00:00
lyxrc . mark_foreign_language = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
lyxrc . language_package = fl_get_input ( dialog_ - > input_package ) ;
lyxrc . language_command_begin = fl_get_input ( dialog_ - > input_command_begin ) ;
lyxrc . language_command_end = fl_get_input ( dialog_ - > input_command_end ) ;
2000-11-08 09:39:46 +00:00
// Ensure that all is self-consistent.
2000-11-14 13:46:01 +00:00
update ( ) ;
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Language : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_language ( ) ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_package , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_command_begin , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_command_end , FL_RETURN_CHANGED ) ;
2000-10-30 11:33:05 +00:00
2000-10-30 21:53:29 +00:00
// The default_language is a combo-box and has to be inserted manually
2000-11-14 13:46:01 +00:00
fl_freeze_form ( dialog_ - > form ) ;
fl_addto_form ( dialog_ - > form ) ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
FL_OBJECT * obj = dialog_ - > choice_default_lang ;
fl_deactivate_object ( dialog_ - > choice_default_lang ) ;
2000-10-30 21:53:29 +00:00
combo_default_lang = new Combox ( FL_COMBOX_DROPLIST ) ;
combo_default_lang - > add ( obj - > x , obj - > y , obj - > w , obj - > h , 400 ) ;
combo_default_lang - > shortcut ( " #L " , 1 ) ;
2000-11-14 13:46:01 +00:00
combo_default_lang - > setcallback ( ComboCB , & parent_ ) ;
2000-11-08 09:39:46 +00:00
for ( Languages : : const_iterator cit = languages . begin ( ) ;
2000-11-09 15:28:42 +00:00
cit ! = languages . end ( ) ; + + cit ) {
2000-11-08 09:39:46 +00:00
combo_default_lang - > addto ( ( * cit ) . second . lang ( ) ) ;
}
2000-10-30 21:53:29 +00:00
fl_end_form ( ) ;
2000-11-14 13:46:01 +00:00
fl_unfreeze_form ( dialog_ - > form ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_package ) ;
parent_ . setPreHandler ( dialog_ - > check_use_kbmap ) ;
2000-10-30 21:53:29 +00:00
2000-11-02 14:47:47 +00:00
// This is safe, as nothing is done to the pointer, other than
// to use its address in a block-if statement.
2000-11-09 15:28:42 +00:00
//setPreHandler( reinterpret_cast<FL_OBJECT *>(combo_default_lang) );
2000-10-30 21:53:29 +00:00
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_kbmap1 ) ;
parent_ . setPreHandler ( dialog_ - > input_kbmap2 ) ;
parent_ . setPreHandler ( dialog_ - > check_rtl_support ) ;
parent_ . setPreHandler ( dialog_ - > check_mark_foreign ) ;
parent_ . setPreHandler ( dialog_ - > check_auto_begin ) ;
parent_ . setPreHandler ( dialog_ - > check_auto_end ) ;
parent_ . setPreHandler ( dialog_ - > input_command_begin ) ;
parent_ . setPreHandler ( dialog_ - > input_command_end ) ;
2000-11-08 09:39:46 +00:00
// Activate/Deactivate the input fields dependent on the state of the
// buttons.
2000-11-14 13:46:01 +00:00
input ( 0 ) ;
2000-10-30 21:53:29 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Language : : feedback ( FL_OBJECT const * const ob ) const
2000-10-30 11:33:05 +00:00
{
string str ;
2000-11-04 10:00:12 +00:00
if ( reinterpret_cast < Combox const * > ( ob ) = = combo_default_lang )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_DEFAULT_LANGUAGE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_use_kbmap )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_KBMAP ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_kbmap1 )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_KBMAP_PRIMARY ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_kbmap2 )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_KBMAP_SECONDARY ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_rtl_support )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_RTL_SUPPORT ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_auto_begin )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LANGUAGE_AUTO_BEGIN ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_auto_end )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LANGUAGE_AUTO_END ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_mark_foreign )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_MARK_FOREIGN_LANGUAGE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_package )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LANGUAGE_PACKAGE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_command_begin )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LANGUAGE_COMMAND_BEGIN ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_command_end )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LANGUAGE_COMMAND_END ) ;
2000-10-30 11:33:05 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-30 11:33:05 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Language : : input ( FL_OBJECT const * const ob )
2000-10-30 11:33:05 +00:00
{
bool activate = true ;
2000-10-30 21:53:29 +00:00
2000-11-14 13:46:01 +00:00
// !ob if function is called from Language::build() to de/activate
2000-11-09 15:28:42 +00:00
// objects,
// otherwise the function is called by an xforms CB via input().
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_use_kbmap ) {
if ( fl_get_button ( dialog_ - > check_use_kbmap ) ) {
fl_activate_object ( dialog_ - > button_kbmap1_browse ) ;
fl_set_object_lcol ( dialog_ - > button_kbmap1_browse ,
FL_BLACK ) ;
fl_activate_object ( dialog_ - > button_kbmap2_browse ) ;
fl_set_object_lcol ( dialog_ - > button_kbmap2_browse ,
FL_BLACK ) ;
fl_activate_object ( dialog_ - > input_kbmap1 ) ;
fl_set_object_lcol ( dialog_ - > input_kbmap1 , FL_BLACK ) ;
fl_activate_object ( dialog_ - > input_kbmap2 ) ;
fl_set_object_lcol ( dialog_ - > input_kbmap2 , FL_BLACK ) ;
2000-10-30 11:33:05 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > button_kbmap1_browse ) ;
fl_set_object_lcol ( dialog_ - > button_kbmap1_browse ,
FL_INACTIVE ) ;
fl_deactivate_object ( dialog_ - > button_kbmap2_browse ) ;
fl_set_object_lcol ( dialog_ - > button_kbmap2_browse ,
FL_INACTIVE ) ;
fl_deactivate_object ( dialog_ - > input_kbmap1 ) ;
fl_set_object_lcol ( dialog_ - > input_kbmap1 ,
FL_INACTIVE ) ;
fl_deactivate_object ( dialog_ - > input_kbmap2 ) ;
fl_set_object_lcol ( dialog_ - > input_kbmap2 ,
FL_INACTIVE ) ;
2000-10-30 11:33:05 +00:00
}
}
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > button_kbmap1_browse ) {
string dir = system_lyxdir + string ( " kbd " ) ;
string name = N_ ( " Key maps " ) ;
pair < string , string > dir1 ( name , dir ) ;
parent_ . browse ( dialog_ - > input_kbmap1 ,
_ ( " Keyboard map " ) , " *.kmap " , dir1 ) ;
} else if ( ob = = dialog_ - > button_kbmap2_browse ) {
string dir = system_lyxdir + string ( " kbd " ) ;
string name = N_ ( " Key maps " ) ;
pair < string , string > dir1 ( name , dir ) ;
parent_ . browse ( dialog_ - > input_kbmap2 ,
_ ( " Keyboard map " ) , " *.kmap " , dir1 ) ;
}
2000-10-30 11:33:05 +00:00
return activate ;
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Language : : update ( )
2000-10-30 11:33:05 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_use_kbmap ,
2000-10-30 11:33:05 +00:00
lyxrc . use_kbmap ) ;
2000-10-30 21:53:29 +00:00
combo_default_lang - > select_text ( lyxrc . default_language ) ;
2000-10-30 11:33:05 +00:00
2000-11-04 10:00:12 +00:00
if ( lyxrc . use_kbmap ) {
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_kbmap1 ,
lyxrc . primary_kbmap . c_str ( ) ) ;
fl_set_input ( dialog_ - > input_kbmap2 ,
lyxrc . secondary_kbmap . c_str ( ) ) ;
2000-10-30 21:53:29 +00:00
} else {
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_kbmap1 , " " ) ;
fl_set_input ( dialog_ - > input_kbmap2 , " " ) ;
2000-10-30 21:53:29 +00:00
}
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_rtl_support , lyxrc . rtl_support ) ;
fl_set_button ( dialog_ - > check_auto_begin , lyxrc . language_auto_begin ) ;
fl_set_button ( dialog_ - > check_auto_end , lyxrc . language_auto_end ) ;
fl_set_button ( dialog_ - > check_mark_foreign ,
2000-10-30 11:33:05 +00:00
lyxrc . mark_foreign_language ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_package ,
2000-10-30 11:33:05 +00:00
lyxrc . language_package . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_command_begin ,
2000-10-30 11:33:05 +00:00
lyxrc . language_command_begin . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_command_end ,
2000-10-30 11:33:05 +00:00
lyxrc . language_command_end . c_str ( ) ) ;
// Activate/Deactivate the input fields dependent on the state of the
// buttons.
2000-11-14 13:46:01 +00:00
input ( 0 ) ;
}
void FormPreferences : : Language : : ComboCB ( int , void * v , Combox * combox )
{
FormPreferences * pre = static_cast < FormPreferences * > ( v ) ;
// This is safe, as nothing is done to the pointer, other than
// to use its address in a block-if statement.
pre - > bc_ . valid ( pre - > input ( reinterpret_cast < FL_OBJECT * > ( combox ) , 0 ) ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : LnFmisc : : ~ LnFmisc ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
delete dialog_ ;
}
void FormPreferences : : LnFmisc : : apply ( ) const
{
lyxrc . show_banner = fl_get_button ( dialog_ - > check_banner ) ;
lyxrc . auto_region_delete =
fl_get_button ( dialog_ - > check_auto_region_delete ) ;
lyxrc . exit_confirmation = fl_get_button ( dialog_ - > check_exit_confirm ) ;
2000-10-27 10:04:51 +00:00
lyxrc . display_shortcuts =
2000-11-14 13:46:01 +00:00
fl_get_button ( dialog_ - > check_display_shrtcuts ) ;
lyxrc . new_ask_filename = fl_get_button ( dialog_ - > check_ask_new_file ) ;
2000-10-27 10:04:51 +00:00
lyxrc . cursor_follows_scrollbar =
2000-11-14 13:46:01 +00:00
fl_get_button ( dialog_ - > check_cursor_follows_scrollbar ) ;
2000-10-27 10:04:51 +00:00
lyxrc . autosave = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_autosave ) ) ;
2000-10-27 10:04:51 +00:00
lyxrc . wheel_jump = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_wm_jump ) ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : LnFmisc : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_lnf_misc ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_counter_return ( dialog_ - > counter_autosave , FL_RETURN_CHANGED ) ;
fl_set_counter_return ( dialog_ - > counter_wm_jump , FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > check_banner ) ;
parent_ . setPreHandler ( dialog_ - > check_auto_region_delete ) ;
parent_ . setPreHandler ( dialog_ - > check_exit_confirm ) ;
parent_ . setPreHandler ( dialog_ - > check_display_shrtcuts ) ;
parent_ . setPreHandler ( dialog_ - > counter_autosave ) ;
parent_ . setPreHandler ( dialog_ - > check_ask_new_file ) ;
parent_ . setPreHandler ( dialog_ - > check_cursor_follows_scrollbar ) ;
parent_ . setPreHandler ( dialog_ - > counter_wm_jump ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
string const
FormPreferences : : LnFmisc : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > check_banner )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SHOW_BANNER ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_auto_region_delete )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_AUTOREGIONDELETE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_exit_confirm )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_EXIT_CONFIRMATION ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_display_shrtcuts )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_DISPLAY_SHORTCUTS ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_ask_new_file )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_NEW_ASK_FILENAME ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_cursor_follows_scrollbar )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_CURSOR_FOLLOWS_SCROLLBAR ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > counter_autosave )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_AUTOSAVE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > counter_wm_jump )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_WHEEL_JUMP ) ;
2000-10-30 21:53:29 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-04 10:00:12 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : LnFmisc : : update ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_banner , lyxrc . show_banner ) ;
fl_set_button ( dialog_ - > check_auto_region_delete ,
2000-10-27 10:04:51 +00:00
lyxrc . auto_region_delete ) ;
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_exit_confirm , lyxrc . exit_confirmation ) ;
fl_set_button ( dialog_ - > check_display_shrtcuts , lyxrc . display_shortcuts ) ;
fl_set_button ( dialog_ - > check_ask_new_file , lyxrc . new_ask_filename ) ;
fl_set_button ( dialog_ - > check_cursor_follows_scrollbar ,
2000-10-27 10:04:51 +00:00
lyxrc . cursor_follows_scrollbar ) ;
2000-11-14 13:46:01 +00:00
fl_set_counter_value ( dialog_ - > counter_autosave , lyxrc . autosave ) ;
fl_set_counter_value ( dialog_ - > counter_wm_jump , lyxrc . wheel_jump ) ;
}
FormPreferences : : OutputsMisc : : ~ OutputsMisc ( )
{
delete dialog_ ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : OutputsMisc : : apply ( ) const
2000-10-27 10:04:51 +00:00
{
lyxrc . ascii_linelen = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_line_len ) ) ;
lyxrc . fontenc = fl_get_input ( dialog_ - > input_tex_encoding ) ;
2000-10-27 10:04:51 +00:00
int choice =
2000-11-14 13:46:01 +00:00
fl_get_choice ( dialog_ - > choice_default_papersize ) - 1 ;
2000-10-27 10:04:51 +00:00
lyxrc . default_papersize = static_cast < BufferParams : : PAPER_SIZE > ( choice ) ;
2000-10-30 11:33:05 +00:00
2000-11-14 13:46:01 +00:00
lyxrc . ascii_roff_command = fl_get_input ( dialog_ - > input_ascii_roff ) ;
lyxrc . chktex_command = fl_get_input ( dialog_ - > input_checktex ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : OutputsMisc : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_outputs_misc ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_counter_return ( dialog_ - > counter_line_len ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_tex_encoding ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_ascii_roff ,
2000-10-30 11:33:05 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_checktex ,
2000-10-30 11:33:05 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_addto_choice ( dialog_ - > choice_default_papersize ,
2000-10-27 10:04:51 +00:00
_ ( " default | US letter | legal | executive | A3 | A4 | A5 | B5 " ) ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > counter_line_len ) ;
parent_ . setPreHandler ( dialog_ - > input_tex_encoding ) ;
parent_ . setPreHandler ( dialog_ - > choice_default_papersize ) ;
parent_ . setPreHandler ( dialog_ - > input_ascii_roff ) ;
parent_ . setPreHandler ( dialog_ - > input_checktex ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : OutputsMisc : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > counter_line_len )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_ASCII_LINELEN ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_tex_encoding )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_FONT_ENCODING ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_ascii_roff )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_ASCIIROFF_COMMAND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_checktex )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_CHKTEX_COMMAND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > choice_default_papersize )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_DEFAULT_PAPERSIZE ) ;
2000-10-30 21:53:29 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : OutputsMisc : : update ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_counter_value ( dialog_ - > counter_line_len ,
2000-10-27 10:04:51 +00:00
lyxrc . ascii_linelen ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_tex_encoding ,
2000-10-27 10:04:51 +00:00
lyxrc . fontenc . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_choice ( dialog_ - > choice_default_papersize ,
2000-10-27 10:04:51 +00:00
lyxrc . default_papersize + 1 ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_ascii_roff ,
2000-10-30 11:33:05 +00:00
lyxrc . ascii_roff_command . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_checktex ,
2000-10-30 11:33:05 +00:00
lyxrc . chktex_command . c_str ( ) ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Paths : : ~ Paths ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
delete dialog_ ;
}
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : Paths : : apply ( )
{
lyxrc . document_path = fl_get_input ( dialog_ - > input_default_path ) ;
lyxrc . template_path = fl_get_input ( dialog_ - > input_template_path ) ;
int button = fl_get_button ( dialog_ - > check_use_temp_dir ) ;
string str = fl_get_input ( dialog_ - > input_temp_dir ) ;
2000-11-04 10:00:12 +00:00
if ( ! button ) str . erase ( ) ;
2000-10-27 10:04:51 +00:00
lyxrc . use_tempdir = button ;
lyxrc . tempdir_path = str ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_last_files ) ;
str = fl_get_input ( dialog_ - > input_lastfiles ) ;
2000-11-04 10:00:12 +00:00
if ( ! button ) str . erase ( ) ;
2000-10-27 10:04:51 +00:00
lyxrc . check_lastfiles = button ;
lyxrc . lastfiles = str ;
lyxrc . num_lastfiles = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_lastfiles ) ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_make_backups ) ;
str = fl_get_input ( dialog_ - > input_backup_path ) ;
2000-11-04 10:00:12 +00:00
if ( ! button ) str . erase ( ) ;
2000-10-27 10:04:51 +00:00
lyxrc . make_backup = button ;
lyxrc . backupdir_path = str ;
2000-11-14 13:46:01 +00:00
lyxrc . lyxpipes = fl_get_input ( dialog_ - > input_serverpipe ) ;
2000-10-27 10:04:51 +00:00
// update view
2000-11-14 13:46:01 +00:00
update ( ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Paths : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_paths ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_default_path , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_template_path , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_temp_dir , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_lastfiles , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_backup_path , FL_RETURN_CHANGED ) ;
fl_set_counter_return ( dialog_ - > counter_lastfiles , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_serverpipe , FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_default_path ) ;
parent_ . setPreHandler ( dialog_ - > counter_lastfiles ) ;
parent_ . setPreHandler ( dialog_ - > input_template_path ) ;
parent_ . setPreHandler ( dialog_ - > check_last_files ) ;
parent_ . setPreHandler ( dialog_ - > input_lastfiles ) ;
parent_ . setPreHandler ( dialog_ - > check_make_backups ) ;
parent_ . setPreHandler ( dialog_ - > input_backup_path ) ;
parent_ . setPreHandler ( dialog_ - > input_serverpipe ) ;
parent_ . setPreHandler ( dialog_ - > input_temp_dir ) ;
parent_ . setPreHandler ( dialog_ - > check_use_temp_dir ) ;
}
string const
FormPreferences : : Paths : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-02 14:47:47 +00:00
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > input_default_path )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_DOCUMENTPATH ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_template_path )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_TEMPLATEPATH ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_use_temp_dir )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_USETEMPDIR ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_temp_dir )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_TEMPDIRPATH ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_last_files )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_CHECKLASTFILES ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_lastfiles )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_LASTFILES ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > counter_lastfiles )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_NUMLASTFILES ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_make_backups )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_MAKE_BACKUP ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_backup_path )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_BACKUPDIR_PATH ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_serverpipe )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SERVERPIPE ) ;
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : Paths : : input ( FL_OBJECT const * const ob )
2000-10-27 10:04:51 +00:00
{
bool activate = true ;
2000-11-14 13:46:01 +00:00
// !ob if function is called from Paths::update() to de/activate
// objects,
2000-11-09 15:28:42 +00:00
// otherwise the function is called by an xforms CB via input().
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_use_temp_dir ) {
if ( fl_get_button ( dialog_ - > check_use_temp_dir ) ) {
fl_activate_object ( dialog_ - > input_temp_dir ) ;
fl_set_object_lcol ( dialog_ - > input_temp_dir ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_temp_dir ) ;
fl_set_object_lcol ( dialog_ - > input_temp_dir ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_last_files ) {
if ( fl_get_button ( dialog_ - > check_last_files ) ) {
fl_activate_object ( dialog_ - > input_lastfiles ) ;
fl_set_object_lcol ( dialog_ - > input_lastfiles ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_lastfiles ) ;
fl_set_object_lcol ( dialog_ - > input_lastfiles ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_make_backups ) {
if ( fl_get_button ( dialog_ - > check_make_backups ) ) {
fl_activate_object ( dialog_ - > input_backup_path ) ;
fl_set_object_lcol ( dialog_ - > input_backup_path ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_backup_path ) ;
fl_set_object_lcol ( dialog_ - > input_backup_path ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_default_path ) {
string name = fl_get_input ( dialog_ - > input_default_path ) ;
if ( ! parent_ . WriteableDir ( name ) )
2000-10-27 10:04:51 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_template_path ) {
string name = fl_get_input ( dialog_ - > input_template_path ) ;
if ( ! parent_ . ReadableDir ( name ) )
2000-10-27 10:04:51 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_temp_dir ) {
string name = fl_get_input ( dialog_ - > input_temp_dir ) ;
if ( fl_get_button ( dialog_ - > check_make_backups )
2000-10-27 10:04:51 +00:00
& & ! name . empty ( )
2000-11-14 13:46:01 +00:00
& & ! parent_ . WriteableDir ( name ) )
2000-10-27 10:04:51 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_backup_path ) {
string name = fl_get_input ( dialog_ - > input_backup_path ) ;
if ( fl_get_button ( dialog_ - > check_make_backups )
2000-10-27 10:04:51 +00:00
& & ! name . empty ( )
2000-11-14 13:46:01 +00:00
& & ! parent_ . WriteableDir ( name ) )
2000-10-27 10:04:51 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_lastfiles ) {
string name = fl_get_input ( dialog_ - > input_lastfiles ) ;
if ( fl_get_button ( dialog_ - > check_last_files )
2000-10-27 10:04:51 +00:00
& & ! name . empty ( )
2000-11-14 13:46:01 +00:00
& & ! parent_ . WriteableFile ( name ) )
2000-10-27 10:04:51 +00:00
return false ;
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > input_serverpipe ) {
string name = fl_get_input ( dialog_ - > input_serverpipe ) ;
2000-11-04 10:00:12 +00:00
if ( ! name . empty ( ) ) {
2000-11-14 13:46:01 +00:00
if ( ! parent_ . WriteableFile ( name , " .in " ) )
2000-10-27 10:04:51 +00:00
return false ;
2000-11-14 13:46:01 +00:00
if ( ! parent_ . WriteableFile ( name , " .out " ) )
2000-10-27 10:04:51 +00:00
return false ;
}
}
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > button_default_path_browse ) {
parent_ . browse ( dialog_ - > input_default_path ,
_ ( " Default path " ) , string ( ) ) ;
} else if ( ob = = dialog_ - > button_template_path_browse ) {
parent_ . browse ( dialog_ - > input_template_path ,
_ ( " Template path " ) , string ( ) ) ;
} else if ( ob = = dialog_ - > button_temp_dir_browse ) {
parent_ . browse ( dialog_ - > input_temp_dir ,
_ ( " Temp dir " ) , string ( ) ) ;
} else if ( ob = = dialog_ - > button_lastfiles_browse ) {
pair < string , string > dir ( _ ( " User " ) , user_lyxdir ) ;
parent_ . browse ( dialog_ - > input_lastfiles ,
_ ( " Lastfiles " ) , string ( ) , dir ) ;
} else if ( ob = = dialog_ - > button_backup_path_browse ) {
parent_ . browse ( dialog_ - > input_backup_path ,
_ ( " Backup path " ) , string ( ) ) ;
} else if ( ob = = dialog_ - > button_serverpipe_browse ) {
// Not sure how to do this!!!
}
2000-10-27 10:04:51 +00:00
return activate ;
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Paths : : update ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_default_path ,
2000-10-27 10:04:51 +00:00
lyxrc . document_path . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_template_path ,
2000-10-27 10:04:51 +00:00
lyxrc . template_path . c_str ( ) ) ;
2000-11-04 10:00:12 +00:00
string str ;
if ( lyxrc . make_backup ) str = lyxrc . backupdir_path ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_make_backups ,
2000-10-27 10:04:51 +00:00
lyxrc . make_backup ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_backup_path , str . c_str ( ) ) ;
2000-10-27 10:04:51 +00:00
str . erase ( ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . use_tempdir ) str = lyxrc . tempdir_path ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_use_temp_dir ,
2000-10-27 10:04:51 +00:00
lyxrc . use_tempdir ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_temp_dir , str . c_str ( ) ) ;
2000-10-27 10:04:51 +00:00
str . erase ( ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . check_lastfiles ) str = lyxrc . lastfiles ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_last_files ,
2000-10-27 10:04:51 +00:00
lyxrc . check_lastfiles ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_lastfiles , str . c_str ( ) ) ;
fl_set_counter_value ( dialog_ - > counter_lastfiles ,
2000-10-27 10:04:51 +00:00
lyxrc . num_lastfiles ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_serverpipe , lyxrc . lyxpipes . c_str ( ) ) ;
2000-10-27 10:04:51 +00:00
// Activate/Deactivate the input fields dependent on the state of the
// buttons.
2000-11-14 13:46:01 +00:00
input ( 0 ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : Printer : : ~ Printer ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
delete dialog_ ;
}
void FormPreferences : : Printer : : apply ( ) const
{
lyxrc . print_adapt_output = fl_get_button ( dialog_ - > check_adapt_output ) ;
lyxrc . print_command = fl_get_input ( dialog_ - > input_command ) ;
lyxrc . print_pagerange_flag = fl_get_input ( dialog_ - > input_page_range ) ;
lyxrc . print_copies_flag = fl_get_input ( dialog_ - > input_copies ) ;
lyxrc . print_reverse_flag = fl_get_input ( dialog_ - > input_reverse ) ;
lyxrc . print_to_printer = fl_get_input ( dialog_ - > input_to_printer ) ;
2000-10-27 10:04:51 +00:00
lyxrc . print_file_extension =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_file_extension ) ;
2000-10-27 10:04:51 +00:00
lyxrc . print_spool_command =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_spool_command ) ;
lyxrc . print_paper_flag = fl_get_input ( dialog_ - > input_paper_type ) ;
lyxrc . print_evenpage_flag = fl_get_input ( dialog_ - > input_even_pages ) ;
lyxrc . print_oddpage_flag = fl_get_input ( dialog_ - > input_odd_pages ) ;
lyxrc . print_collcopies_flag = fl_get_input ( dialog_ - > input_collated ) ;
lyxrc . print_landscape_flag = fl_get_input ( dialog_ - > input_landscape ) ;
lyxrc . print_to_file = fl_get_input ( dialog_ - > input_to_file ) ;
2000-10-27 10:04:51 +00:00
lyxrc . print_extra_options =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_extra_options ) ;
2000-10-27 10:04:51 +00:00
lyxrc . print_spool_printerprefix =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_spool_prefix ) ;
2000-10-27 10:04:51 +00:00
lyxrc . print_paper_dimension_flag =
2000-11-14 13:46:01 +00:00
fl_get_input ( dialog_ - > input_paper_size ) ;
lyxrc . printer = fl_get_input ( dialog_ - > input_name ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-08 09:39:46 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : Printer : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > input_command )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINT_COMMAND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_adapt_output )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINT_ADAPTOUTPUT ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_to_printer )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTTOPRINTER ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_to_file )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTTOFILE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_file_extension )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTFILEEXTENSION ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_extra_options )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTEXSTRAOPTIONS ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_spool_command )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTSPOOL_COMMAND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_spool_prefix )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTSPOOL_PRINTERPREFIX ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_name )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTER ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_even_pages )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTEVENPAGEFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_odd_pages )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTODDPAGEFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_page_range )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTPAGERANGEFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_reverse )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTREVERSEFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_landscape )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTLANDSCAPEFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_copies )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTCOLLCOPIESFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_collated )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTCOPIESFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_paper_type )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTPAPERFLAG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_paper_size )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PRINTPAPERDIMENSIONFLAG ) ;
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : Printer : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_printer ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_command , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_page_range , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_copies , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_reverse , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_to_printer , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_file_extension , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_spool_command , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_paper_type , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_even_pages , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_odd_pages , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_collated , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_landscape , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_to_file , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_extra_options , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_spool_prefix , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_paper_size , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_name , FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_command ) ;
parent_ . setPreHandler ( dialog_ - > input_page_range ) ;
parent_ . setPreHandler ( dialog_ - > input_copies ) ;
parent_ . setPreHandler ( dialog_ - > input_reverse ) ;
parent_ . setPreHandler ( dialog_ - > input_to_printer ) ;
parent_ . setPreHandler ( dialog_ - > input_file_extension ) ;
parent_ . setPreHandler ( dialog_ - > input_spool_command ) ;
parent_ . setPreHandler ( dialog_ - > input_paper_type ) ;
parent_ . setPreHandler ( dialog_ - > input_even_pages ) ;
parent_ . setPreHandler ( dialog_ - > input_odd_pages ) ;
parent_ . setPreHandler ( dialog_ - > input_collated ) ;
parent_ . setPreHandler ( dialog_ - > input_landscape ) ;
parent_ . setPreHandler ( dialog_ - > input_to_file ) ;
parent_ . setPreHandler ( dialog_ - > input_extra_options ) ;
parent_ . setPreHandler ( dialog_ - > input_spool_prefix ) ;
parent_ . setPreHandler ( dialog_ - > input_paper_size ) ;
parent_ . setPreHandler ( dialog_ - > input_name ) ;
parent_ . setPreHandler ( dialog_ - > check_adapt_output ) ;
}
void FormPreferences : : Printer : : update ( )
{
fl_set_button ( dialog_ - > check_adapt_output ,
2000-10-27 10:04:51 +00:00
lyxrc . print_adapt_output ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_command ,
2000-10-27 10:04:51 +00:00
lyxrc . print_command . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_page_range ,
2000-10-27 10:04:51 +00:00
lyxrc . print_pagerange_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_copies ,
2000-10-27 10:04:51 +00:00
lyxrc . print_copies_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_reverse ,
2000-10-27 10:04:51 +00:00
lyxrc . print_reverse_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_to_printer ,
2000-10-27 10:04:51 +00:00
lyxrc . print_to_printer . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_file_extension ,
2000-10-27 10:04:51 +00:00
lyxrc . print_file_extension . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_spool_command ,
2000-10-27 10:04:51 +00:00
lyxrc . print_spool_command . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_paper_type ,
2000-10-27 10:04:51 +00:00
lyxrc . print_paper_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_even_pages ,
2000-10-27 10:04:51 +00:00
lyxrc . print_evenpage_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_odd_pages ,
2000-10-27 10:04:51 +00:00
lyxrc . print_oddpage_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_collated ,
2000-10-27 10:04:51 +00:00
lyxrc . print_collcopies_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_landscape ,
2000-10-27 10:04:51 +00:00
lyxrc . print_landscape_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_to_file ,
2000-10-27 10:04:51 +00:00
lyxrc . print_to_file . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_extra_options ,
2000-10-27 10:04:51 +00:00
lyxrc . print_extra_options . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_spool_prefix ,
2000-10-27 10:04:51 +00:00
lyxrc . print_spool_printerprefix . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_paper_size ,
2000-10-27 10:04:51 +00:00
lyxrc . print_paper_dimension_flag . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_name ,
2000-10-27 10:04:51 +00:00
lyxrc . printer . c_str ( ) ) ;
}
2000-11-14 13:46:01 +00:00
FormPreferences : : ScreenFonts : : ~ ScreenFonts ( )
{
delete dialog_ ;
}
void FormPreferences : : ScreenFonts : : apply ( ) const
2000-10-27 10:04:51 +00:00
{
bool changed = false ;
2000-11-14 13:46:01 +00:00
string str = fl_get_input ( dialog_ - > input_roman ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . roman_font_name ! = str ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . roman_font_name = str ;
}
2000-11-14 13:46:01 +00:00
str = fl_get_input ( dialog_ - > input_sans ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . sans_font_name ! = str ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . sans_font_name = str ;
}
2000-11-14 13:46:01 +00:00
str = fl_get_input ( dialog_ - > input_typewriter ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . typewriter_font_name ! = str ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . typewriter_font_name = str ;
}
2000-11-14 13:46:01 +00:00
str = fl_get_input ( dialog_ - > input_screen_encoding ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_norm ! = str ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_norm = str ;
}
2000-11-14 13:46:01 +00:00
bool button = fl_get_button ( dialog_ - > check_scalable ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . use_scalable_fonts ! = button ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . use_scalable_fonts = button ;
}
2000-10-30 21:53:29 +00:00
unsigned int ivalue = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_zoom ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . zoom ! = ivalue ) {
2000-10-30 21:53:29 +00:00
changed = true ;
lyxrc . zoom = ivalue ;
}
ivalue = static_cast < unsigned int >
2000-11-14 13:46:01 +00:00
( fl_get_counter_value ( dialog_ - > counter_dpi ) ) ;
2000-10-30 21:53:29 +00:00
if ( lyxrc . dpi ! = ivalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
2000-10-30 21:53:29 +00:00
lyxrc . dpi = ivalue ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
double dvalue = strToDbl ( fl_get_input ( dialog_ - > input_tiny ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_TINY ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_TINY ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_script ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_SCRIPT ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_SCRIPT ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_footnote ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_FOOTNOTE ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_FOOTNOTE ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_small ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_SMALL ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_SMALL ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_normal ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_NORMAL ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_NORMAL ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_large ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGE ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_LARGE ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_larger ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGER ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_LARGER ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_largest ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGEST ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_LARGEST ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_huge ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_HUGE ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_HUGE ] = dvalue ;
}
2000-11-14 13:46:01 +00:00
dvalue = strToDbl ( fl_get_input ( dialog_ - > input_huger ) ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . font_sizes [ LyXFont : : SIZE_HUGER ] ! = dvalue ) {
2000-10-27 10:04:51 +00:00
changed = true ;
lyxrc . font_sizes [ LyXFont : : SIZE_HUGER ] = dvalue ;
}
2000-11-04 10:00:12 +00:00
if ( changed ) {
2000-10-27 10:04:51 +00:00
// Now update the buffers
// Can anything below here affect the redraw process?
2000-11-14 13:46:01 +00:00
parent_ . lv_ - > getLyXFunc ( ) - > Dispatch ( LFUN_SCREEN_FONT_UPDATE ) ;
2000-10-27 10:04:51 +00:00
}
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : ScreenFonts : : build ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_screen_fonts ( ) ;
2000-10-27 10:04:51 +00:00
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_roman , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_sans , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_typewriter ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_screen_encoding ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_counter_return ( dialog_ - > counter_zoom , FL_RETURN_CHANGED ) ;
fl_set_counter_return ( dialog_ - > counter_dpi , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_tiny , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_script , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_footnote , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_small , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_normal , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_large , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_larger , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_largest , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_huge , FL_RETURN_CHANGED ) ;
fl_set_input_return ( dialog_ - > input_huger , FL_RETURN_CHANGED ) ;
fl_set_input_filter ( dialog_ - > input_tiny ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_script ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_footnote ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_small ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_normal ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_large ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_larger ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_largest ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_huge ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_filter ( dialog_ - > input_huger ,
2000-11-03 09:47:02 +00:00
fl_unsigned_int_filter ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > input_roman ) ;
parent_ . setPreHandler ( dialog_ - > input_sans ) ;
parent_ . setPreHandler ( dialog_ - > input_typewriter ) ;
parent_ . setPreHandler ( dialog_ - > counter_zoom ) ;
parent_ . setPreHandler ( dialog_ - > counter_dpi ) ;
parent_ . setPreHandler ( dialog_ - > check_scalable ) ;
parent_ . setPreHandler ( dialog_ - > input_screen_encoding ) ;
parent_ . setPreHandler ( dialog_ - > input_tiny ) ;
parent_ . setPreHandler ( dialog_ - > input_script ) ;
parent_ . setPreHandler ( dialog_ - > input_footnote ) ;
parent_ . setPreHandler ( dialog_ - > input_small ) ;
parent_ . setPreHandler ( dialog_ - > input_large ) ;
parent_ . setPreHandler ( dialog_ - > input_larger ) ;
parent_ . setPreHandler ( dialog_ - > input_largest ) ;
parent_ . setPreHandler ( dialog_ - > input_normal ) ;
parent_ . setPreHandler ( dialog_ - > input_huge ) ;
parent_ . setPreHandler ( dialog_ - > input_huger ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : ScreenFonts : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > input_roman )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_ROMAN ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_sans )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_SANS ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_typewriter )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_TYPEWRITER ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_scalable )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_SCALABLE ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_screen_encoding )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_ENCODING ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > counter_zoom )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_ZOOM ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > counter_dpi )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_DPI ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_tiny
| | ob = = dialog_ - > input_script
| | ob = = dialog_ - > input_footnote
| | ob = = dialog_ - > input_small
| | ob = = dialog_ - > input_large
| | ob = = dialog_ - > input_larger
| | ob = = dialog_ - > input_larger
| | ob = = dialog_ - > input_largest
| | ob = = dialog_ - > input_normal
| | ob = = dialog_ - > input_huge
| | ob = = dialog_ - > input_huger )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SCREEN_FONT_SIZES ) ;
2000-10-30 21:53:29 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : ScreenFonts : : input ( )
2000-10-27 10:04:51 +00:00
{
bool activate = true ;
string str ;
// Make sure that all fonts all have positive entries
// Also note that an empty entry is returned as 0.0 by strToDbl
2000-11-14 13:46:01 +00:00
if ( 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_tiny ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_script ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_footnote ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_small ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_normal ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_large ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_larger ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_largest ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_huge ) )
| | 0.0 > = strToDbl ( fl_get_input ( dialog_ - > input_huger ) ) ) {
2000-10-27 10:04:51 +00:00
activate = false ;
str = N_ ( " WARNING! Fonts must be positive! " ) ;
// Fontsizes -- tiny < script < footnote etc.
2000-11-14 13:46:01 +00:00
} else if ( strToDbl ( fl_get_input ( dialog_ - > input_tiny ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_script ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_script ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_footnote ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_footnote ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_small ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_small ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_normal ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_normal ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_large ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_large ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_larger ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_larger ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_largest ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_largest ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_huge ) ) | |
strToDbl ( fl_get_input ( dialog_ - > input_huge ) ) >
strToDbl ( fl_get_input ( dialog_ - > input_huger ) ) ) {
2000-10-27 10:04:51 +00:00
activate = false ;
2000-11-14 13:46:01 +00:00
str = N_ ( " WARNING! Fonts must be input in the order tiny > script> footnote > small > normal > large > larger > largest > huge > huger. " ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-09 15:28:42 +00:00
if ( ! activate )
2000-11-14 13:46:01 +00:00
parent_ . printWarning ( str ) ;
2000-10-27 10:04:51 +00:00
return activate ;
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : ScreenFonts : : update ( )
2000-10-27 10:04:51 +00:00
{
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_roman ,
2000-10-27 10:04:51 +00:00
lyxrc . roman_font_name . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_sans ,
2000-10-27 10:04:51 +00:00
lyxrc . sans_font_name . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_typewriter ,
2000-10-27 10:04:51 +00:00
lyxrc . typewriter_font_name . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_screen_encoding ,
2000-10-27 10:04:51 +00:00
lyxrc . font_norm . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_scalable ,
2000-10-27 10:04:51 +00:00
lyxrc . use_scalable_fonts ) ;
2000-11-14 13:46:01 +00:00
fl_set_counter_value ( dialog_ - > counter_zoom , lyxrc . zoom ) ;
fl_set_counter_value ( dialog_ - > counter_dpi , lyxrc . dpi ) ;
fl_set_input ( dialog_ - > input_tiny ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_TINY ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_script ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_SCRIPT ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_footnote ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_FOOTNOTE ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_small ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_SMALL ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_normal ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_NORMAL ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_large ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGE ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_larger ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGER ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_largest ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_LARGEST ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_huge ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_HUGE ] ) . c_str ( ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_huger ,
2000-10-27 10:04:51 +00:00
tostr ( lyxrc . font_sizes [ LyXFont : : SIZE_HUGER ] ) . c_str ( ) ) ;
2000-10-25 10:19:25 +00:00
}
2000-11-14 13:46:01 +00:00
FormPreferences : : SpellChecker : : ~ SpellChecker ( )
2000-10-25 10:19:25 +00:00
{
2000-11-14 13:46:01 +00:00
delete dialog_ ;
}
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : SpellChecker : : apply ( )
{
string choice = fl_get_choice_text ( dialog_ - > choice_spell_command ) ;
2000-11-09 15:28:42 +00:00
choice = strip ( frontStrip ( choice ) ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_command = choice ;
// If spell checker == "none", all other input set to off.
2000-11-14 13:46:01 +00:00
if ( fl_get_choice ( dialog_ - > choice_spell_command ) = = 1 ) {
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_alt_lang = false ;
lyxrc . isp_alt_lang . erase ( ) ;
lyxrc . isp_use_esc_chars = false ;
lyxrc . isp_esc_chars . erase ( ) ;
lyxrc . isp_use_pers_dict = false ;
lyxrc . isp_pers_dict . erase ( ) ;
lyxrc . isp_accept_compound = false ;
lyxrc . isp_use_input_encoding = false ;
} else {
2000-11-14 13:46:01 +00:00
int button = fl_get_button ( dialog_ - > check_alt_lang ) ;
choice = fl_get_input ( dialog_ - > input_alt_lang ) ;
2000-11-04 10:00:12 +00:00
if ( button & & choice . empty ( ) ) button = 0 ;
if ( ! button ) choice . erase ( ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_alt_lang = static_cast < bool > ( button ) ;
lyxrc . isp_alt_lang = choice ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_escape_chars ) ;
choice = fl_get_input ( dialog_ - > input_escape_chars ) ;
2000-11-04 10:00:12 +00:00
if ( button & & choice . empty ( ) ) button = 0 ;
if ( ! button ) choice . erase ( ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_esc_chars = static_cast < bool > ( button ) ;
lyxrc . isp_esc_chars = choice ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_personal_dict ) ;
choice = fl_get_input ( dialog_ - > input_personal_dict ) ;
2000-11-04 10:00:12 +00:00
if ( button & & choice . empty ( ) ) button = 0 ;
if ( ! button ) choice . erase ( ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_pers_dict = static_cast < bool > ( button ) ;
lyxrc . isp_pers_dict = choice ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_compound_words ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_accept_compound = static_cast < bool > ( button ) ;
2000-11-14 13:46:01 +00:00
button = fl_get_button ( dialog_ - > check_input_enc ) ;
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_input_encoding = static_cast < bool > ( button ) ;
}
2000-10-27 10:04:51 +00:00
// Reset view
2000-11-14 13:46:01 +00:00
update ( ) ;
2000-06-12 11:55:12 +00:00
}
2000-11-14 13:46:01 +00:00
void FormPreferences : : SpellChecker : : build ( )
2000-06-12 11:55:12 +00:00
{
2000-11-14 13:46:01 +00:00
dialog_ = parent_ . build_spellchecker ( ) ;
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
fl_addto_choice ( dialog_ - > choice_spell_command ,
2000-10-27 10:04:51 +00:00
_ ( " none | ispell | aspell " ) ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_alt_lang ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_escape_chars ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-11-14 13:46:01 +00:00
fl_set_input_return ( dialog_ - > input_personal_dict ,
2000-10-27 10:04:51 +00:00
FL_RETURN_CHANGED ) ;
2000-10-30 21:53:29 +00:00
// set up the feedback mechanism
2000-11-14 13:46:01 +00:00
parent_ . setPreHandler ( dialog_ - > choice_spell_command ) ;
parent_ . setPreHandler ( dialog_ - > check_alt_lang ) ;
parent_ . setPreHandler ( dialog_ - > input_alt_lang ) ;
parent_ . setPreHandler ( dialog_ - > check_escape_chars ) ;
parent_ . setPreHandler ( dialog_ - > input_escape_chars ) ;
parent_ . setPreHandler ( dialog_ - > check_personal_dict ) ;
parent_ . setPreHandler ( dialog_ - > input_personal_dict ) ;
parent_ . setPreHandler ( dialog_ - > button_personal_dict ) ;
parent_ . setPreHandler ( dialog_ - > check_compound_words ) ;
parent_ . setPreHandler ( dialog_ - > check_input_enc ) ;
2000-10-27 10:04:51 +00:00
}
2000-11-04 10:00:12 +00:00
string const
2000-11-14 13:46:01 +00:00
FormPreferences : : SpellChecker : : feedback ( FL_OBJECT const * const ob ) const
2000-10-27 10:04:51 +00:00
{
string str ;
2000-11-02 14:47:47 +00:00
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > choice_spell_command )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_SPELL_COMMAND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_alt_lang )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_USE_ALT_LANG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_alt_lang )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_ALT_LANG ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_escape_chars )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_USE_ESC_CHARS ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_escape_chars )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_ESC_CHARS ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_personal_dict )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_USE_PERS_DICT ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > input_personal_dict )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_PERS_DICT ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_compound_words )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_ACCEPT_COMPOUND ) ;
2000-11-14 13:46:01 +00:00
else if ( ob = = dialog_ - > check_input_enc )
2000-11-02 14:47:47 +00:00
str = lyxrc . getDescription ( LyXRC : : RC_USE_INP_ENC ) ;
2000-10-27 10:04:51 +00:00
2000-11-02 14:47:47 +00:00
return str ;
2000-10-27 10:04:51 +00:00
}
2000-11-14 13:46:01 +00:00
bool FormPreferences : : SpellChecker : : input ( FL_OBJECT const * const ob )
2000-10-27 10:04:51 +00:00
{
2000-11-09 15:28:42 +00:00
// !ob if function is called from updateSpellChecker() to de/activate
// objects,
// otherwise the function is called by an xforms CB via input().
2000-10-27 10:04:51 +00:00
// If spell checker == "none", disable all input.
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > choice_spell_command ) {
if ( fl_get_choice ( dialog_ - > choice_spell_command ) = = 1 ) {
fl_deactivate_object ( dialog_ - > check_alt_lang ) ;
fl_deactivate_object ( dialog_ - > input_alt_lang ) ;
fl_deactivate_object ( dialog_ - > check_escape_chars ) ;
fl_deactivate_object ( dialog_ - > input_escape_chars ) ;
fl_deactivate_object ( dialog_ - > check_personal_dict ) ;
fl_deactivate_object ( dialog_ - > input_personal_dict ) ;
fl_deactivate_object ( dialog_ - > check_compound_words ) ;
fl_deactivate_object ( dialog_ - > check_input_enc ) ;
2000-10-27 10:04:51 +00:00
return true ;
} else {
2000-11-14 13:46:01 +00:00
fl_activate_object ( dialog_ - > check_alt_lang ) ;
fl_activate_object ( dialog_ - > check_escape_chars ) ;
fl_activate_object ( dialog_ - > check_personal_dict ) ;
fl_activate_object ( dialog_ - > check_compound_words ) ;
fl_activate_object ( dialog_ - > check_input_enc ) ;
2000-10-27 10:04:51 +00:00
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_alt_lang ) {
if ( fl_get_button ( dialog_ - > check_alt_lang ) ) {
fl_activate_object ( dialog_ - > input_alt_lang ) ;
fl_set_object_lcol ( dialog_ - > input_alt_lang ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_alt_lang ) ;
fl_set_object_lcol ( dialog_ - > input_alt_lang ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_escape_chars ) {
if ( fl_get_button ( dialog_ - > check_escape_chars ) ) {
fl_activate_object ( dialog_ - > input_escape_chars ) ;
fl_set_object_lcol ( dialog_ - > input_escape_chars ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_escape_chars ) ;
fl_set_object_lcol ( dialog_ - > input_escape_chars ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ! ob | | ob = = dialog_ - > check_personal_dict ) {
if ( fl_get_button ( dialog_ - > check_personal_dict ) ) {
fl_activate_object ( dialog_ - > input_personal_dict ) ;
fl_set_object_lcol ( dialog_ - > input_personal_dict ,
2000-10-27 10:04:51 +00:00
FL_BLACK ) ;
} else {
2000-11-14 13:46:01 +00:00
fl_deactivate_object ( dialog_ - > input_personal_dict ) ;
fl_set_object_lcol ( dialog_ - > input_personal_dict ,
2000-10-27 10:04:51 +00:00
FL_INACTIVE ) ;
}
}
2000-11-14 13:46:01 +00:00
if ( ob = = dialog_ - > button_personal_dict ) {
parent_ . browse ( dialog_ - > input_personal_dict ,
_ ( " Personal dictionary " ) , " *.ispell " ) ;
}
2000-10-27 10:04:51 +00:00
2000-11-03 09:47:02 +00:00
return true ; // All input is valid!
2000-10-25 10:19:25 +00:00
}
2000-10-11 07:59:25 +00:00
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
void FormPreferences : : SpellChecker : : update ( )
2000-10-25 10:19:25 +00:00
{
int choice = 1 ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . isp_command = = " none " )
2000-10-25 10:19:25 +00:00
choice = 1 ;
2000-11-04 10:00:12 +00:00
else if ( lyxrc . isp_command = = " ispell " )
2000-10-25 10:19:25 +00:00
choice = 2 ;
2000-11-04 10:00:12 +00:00
else if ( lyxrc . isp_command = = " aspell " )
2000-10-25 10:19:25 +00:00
choice = 3 ;
2000-11-14 13:46:01 +00:00
fl_set_choice ( dialog_ - > choice_spell_command , choice ) ;
2000-10-25 10:19:25 +00:00
2000-11-08 09:39:46 +00:00
string str ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . isp_use_alt_lang ) str = lyxrc . isp_alt_lang ;
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_alt_lang ,
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_alt_lang ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_alt_lang , str . c_str ( ) ) ;
2000-10-25 10:19:25 +00:00
2000-10-27 10:04:51 +00:00
str . erase ( ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . isp_use_esc_chars ) str = lyxrc . isp_esc_chars ;
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_escape_chars ,
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_esc_chars ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_escape_chars , str . c_str ( ) ) ;
2000-10-25 10:19:25 +00:00
2000-10-27 10:04:51 +00:00
str . erase ( ) ;
2000-11-04 10:00:12 +00:00
if ( lyxrc . isp_use_pers_dict ) str = lyxrc . isp_pers_dict ;
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_personal_dict ,
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_pers_dict ) ;
2000-11-14 13:46:01 +00:00
fl_set_input ( dialog_ - > input_personal_dict , str . c_str ( ) ) ;
2000-10-25 10:19:25 +00:00
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_compound_words ,
2000-10-25 10:19:25 +00:00
lyxrc . isp_accept_compound ) ;
2000-11-14 13:46:01 +00:00
fl_set_button ( dialog_ - > check_input_enc ,
2000-10-25 10:19:25 +00:00
lyxrc . isp_use_input_encoding ) ;
// Activate/Deactivate the input fields dependent on the state of the
// buttons.
2000-11-14 13:46:01 +00:00
input ( 0 ) ;
2000-06-12 11:55:12 +00:00
}
2000-11-09 15:28:42 +00:00
bool FormPreferences : : WriteableDir ( string const & name )
2000-06-12 11:55:12 +00:00
{
2000-10-27 10:04:51 +00:00
bool success = true ;
string str ;
2000-10-13 05:57:05 +00:00
2000-11-04 10:00:12 +00:00
if ( ! AbsolutePath ( name ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! The absolute path is required. " ) ;
2000-10-13 05:57:05 +00:00
}
2000-11-04 10:00:12 +00:00
FileInfo const tp ( name ) ;
if ( success & & ! tp . isDir ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Directory does not exist. " ) ;
2000-10-13 05:57:05 +00:00
}
2000-11-04 10:00:12 +00:00
if ( success & & ! tp . writable ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Cannot write to this directory. " ) ;
2000-10-13 05:57:05 +00:00
}
2000-11-09 15:28:42 +00:00
if ( ! success )
printWarning ( str ) ;
2000-10-27 10:04:51 +00:00
return success ;
}
2000-10-13 05:57:05 +00:00
2000-10-27 10:04:51 +00:00
2000-11-09 15:28:42 +00:00
bool FormPreferences : : ReadableDir ( string const & name )
2000-10-27 10:04:51 +00:00
{
bool success = true ;
string str ;
2000-11-04 10:00:12 +00:00
if ( ! AbsolutePath ( name ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! The absolute path is required. " ) ;
2000-07-28 04:59:45 +00:00
}
2000-11-04 10:00:12 +00:00
FileInfo const tp ( name ) ;
if ( success & & ! tp . isDir ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Directory does not exist. " ) ;
2000-07-28 04:59:45 +00:00
}
2000-11-04 10:00:12 +00:00
if ( success & & ! tp . readable ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Cannot read this directory. " ) ;
}
2000-10-25 10:19:25 +00:00
2000-11-09 15:28:42 +00:00
if ( ! success )
printWarning ( str ) ;
2000-10-27 10:04:51 +00:00
return success ;
2000-06-12 11:55:12 +00:00
}
2000-11-04 10:00:12 +00:00
bool FormPreferences : : WriteableFile ( string const & name ,
2000-11-09 15:28:42 +00:00
string const & suffix )
2000-10-25 10:19:25 +00:00
{
2000-10-27 10:04:51 +00:00
// A writeable file is either:
// * An existing file to which we have write access, or
// * A file that doesn't yet exist but that would exist in a writeable
// directory.
2000-10-25 10:19:25 +00:00
2000-10-27 10:04:51 +00:00
bool success = true ;
string str ;
2000-10-25 10:19:25 +00:00
2000-11-04 10:00:12 +00:00
if ( name . empty ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! No file input. " ) ;
2000-10-25 10:19:25 +00:00
}
2000-11-04 10:00:12 +00:00
string const dir = OnlyPath ( name ) ;
if ( success & & ! AbsolutePath ( dir ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! The absolute path is required. " ) ;
2000-10-25 10:19:25 +00:00
}
2000-11-04 10:00:12 +00:00
#if 0
2000-11-08 09:39:46 +00:00
// This is not a nice way to use FileInfo (Lgb)
2000-10-27 10:04:51 +00:00
FileInfo d ;
2000-11-04 10:00:12 +00:00
2000-10-27 10:04:51 +00:00
{
FileInfo d1 ( dir ) ;
FileInfo d2 ( name ) ;
2000-11-04 10:00:12 +00:00
if ( d2 . isDir ( ) )
2000-10-27 10:04:51 +00:00
d = d2 ;
else
d = d1 ;
}
2000-11-04 10:00:12 +00:00
# else
// This should be equivalent (Lgb)
FileInfo d ( name ) ;
if ( ! d . isDir ( ) ) {
d . newFile ( dir ) ;
}
# endif
if ( success & & ! d . isDir ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Directory does not exist. " ) ;
}
2000-11-04 10:00:12 +00:00
if ( success & & ! d . writable ( ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Cannot write to this directory. " ) ;
}
2000-10-25 10:19:25 +00:00
2000-10-27 10:04:51 +00:00
FileInfo f ( name + suffix ) ;
2000-11-04 10:00:12 +00:00
if ( success & & ( dir = = name | | f . isDir ( ) ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! A file is required, not a directory. " ) ;
}
2000-10-02 04:21:44 +00:00
2000-11-04 10:00:12 +00:00
if ( success & & ( f . exist ( ) & & ! f . writable ( ) ) ) {
2000-10-27 10:04:51 +00:00
success = false ;
str = N_ ( " WARNING! Cannot write to this file. " ) ;
}
2000-11-09 15:28:42 +00:00
if ( ! success )
printWarning ( str ) ;
2000-10-02 04:21:44 +00:00
2000-10-27 10:04:51 +00:00
return success ;
2000-10-02 04:21:44 +00:00
}
2000-10-30 21:53:29 +00:00
2000-11-14 13:46:01 +00:00
bool FormPreferences : : ReadableFile ( string const & name ,
string const & suffix )
{
bool success = true ;
string str ;
if ( name . empty ( ) ) {
success = false ;
str = N_ ( " WARNING! No file input. " ) ;
}
string const dir = OnlyPath ( name ) ;
if ( success & & ! AbsolutePath ( dir ) ) {
success = false ;
str = N_ ( " WARNING! The absolute path is required. " ) ;
}
FileInfo d ( name ) ;
if ( ! d . isDir ( ) ) {
d . newFile ( dir ) ;
}
if ( success & & ! d . isDir ( ) ) {
success = false ;
str = N_ ( " WARNING! Directory does not exist. " ) ;
}
if ( success & & ! d . readable ( ) ) {
success = false ;
str = N_ ( " WARNING! Cannot read from this directory. " ) ;
}
FileInfo f ( name + suffix ) ;
if ( success & & ( dir = = name | | f . isDir ( ) ) ) {
success = false ;
str = N_ ( " WARNING! A file is required, not a directory. " ) ;
}
if ( success & & ! f . exist ( ) ) {
success = false ;
str = N_ ( " WARNING! File does not exist. " ) ;
}
if ( success & & ! f . readable ( ) ) {
success = false ;
str = N_ ( " WARNING! Cannot read from this file. " ) ;
}
if ( ! success )
printWarning ( str ) ;
return success ;
}
2000-11-09 15:28:42 +00:00
void FormPreferences : : printWarning ( string const & warning )
2000-10-30 21:53:29 +00:00
{
2000-11-09 15:28:42 +00:00
warningPosted = true ;
2000-10-30 21:53:29 +00:00
2000-11-09 15:28:42 +00:00
string str = formatted ( warning , dialog_ - > text_warning - > w - 10 ,
FL_SMALL_SIZE , FL_NORMAL_STYLE ) ;
2000-10-30 21:53:29 +00:00
2000-11-09 15:28:42 +00:00
fl_set_object_label ( dialog_ - > text_warning , str . c_str ( ) ) ;
fl_set_object_lsize ( dialog_ - > text_warning , FL_SMALL_SIZE ) ;
}
2000-11-02 14:47:47 +00:00
2000-11-08 09:39:46 +00:00
2000-11-14 13:46:01 +00:00
bool FormPreferences : : browse ( FL_OBJECT * inpt ,
string const & title ,
string const & pattern ,
pair < string , string > const & dir1 ,
pair < string , string > const & dir2 )
2000-11-09 15:28:42 +00:00
{
2000-11-14 13:46:01 +00:00
// Get the filename from the dialog
string const filename = fl_get_input ( inpt ) ;
// Show the file browser dialog
string const new_filename =
browseFile ( filename , title , pattern , dir1 , dir2 ) ;
// Save the filename to the dialog
if ( new_filename ! = filename & & ! new_filename . empty ( ) ) {
fl_set_input ( inpt , new_filename . c_str ( ) ) ;
input ( inpt , 0 ) ;
}
return true ;
}
string const
FormPreferences : : browseFile ( string const & filename ,
string const & title ,
string const & pattern ,
pair < string , string > const & dir1 ,
pair < string , string > const & dir2 ) const
{
string lastPath = " . " ;
if ( ! filename . empty ( ) ) lastPath = OnlyPath ( filename ) ;
LyXFileDlg fileDlg ;
if ( ! dir1 . second . empty ( ) ) {
FileInfo fileInfo ( dir1 . second ) ;
if ( fileInfo . isOK ( ) & & fileInfo . isDir ( ) )
fileDlg . SetButton ( 0 , dir1 . first , dir1 . second ) ;
}
if ( ! dir2 . second . empty ( ) ) {
FileInfo fileInfo ( dir2 . second ) ;
if ( fileInfo . isOK ( ) & & fileInfo . isDir ( ) )
fileDlg . SetButton ( 1 , dir2 . first , dir2 . second ) ;
}
bool error = false ;
string buf ;
do {
string p = fileDlg . Select ( title ,
lastPath ,
pattern , filename ) ;
if ( p . empty ( ) ) return p ;
lastPath = OnlyPath ( p ) ;
if ( p . find_first_of ( " #~$% " ) ! = string : : npos ) {
WriteAlert ( _ ( " Filename can't contain any "
" of these characters: " ) ,
_ ( " space, '#', '~', '$' or '%'. " ) ) ;
error = true ;
} else {
error = false ;
buf = p ;
}
} while ( error ) ;
return buf ;
2000-10-30 21:53:29 +00:00
}
2000-11-04 10:00:12 +00:00
2000-11-09 15:28:42 +00:00
// C function wrapper, required by xforms.
C_PREPOSTHANDLER ( FormPreferences , FeedbackCB )
int FormPreferences : : FeedbackCB ( FL_OBJECT * ob , int event ,
FL_Coord , FL_Coord , int , void * )
2000-10-30 21:53:29 +00:00
{
2000-11-09 15:28:42 +00:00
// Note that the return value is important in the pre-emptive handler.
// Don't return anything other than 0.
Assert ( ob ) ;
// Don't Assert this one, as it can happen quite reasonably when things
// are being deleted in the d-tor.
//Assert(ob->form);
if ( ! ob - > form ) return 0 ;
2000-11-03 09:47:02 +00:00
2000-10-30 21:53:29 +00:00
FormPreferences * pre =
static_cast < FormPreferences * > ( ob - > form - > u_vdata ) ;
2000-11-09 15:28:42 +00:00
pre - > Feedback ( ob , event ) ;
2000-11-02 14:47:47 +00:00
return 0 ;
2000-10-30 21:53:29 +00:00
}
2000-11-02 14:47:47 +00:00
2000-11-09 15:28:42 +00:00
// preemptive handler for feedback messages
void FormPreferences : : Feedback ( FL_OBJECT * ob , int event )
2000-10-30 21:53:29 +00:00
{
2000-11-08 09:39:46 +00:00
Assert ( ob ) ;
2000-11-09 15:28:42 +00:00
switch ( event ) {
case FL_ENTER :
warningPosted = false ;
feedback ( ob ) ;
break ;
case FL_LEAVE :
if ( ! warningPosted )
fl_set_object_label ( dialog_ - > text_warning , " " ) ;
break ;
default :
break ;
2000-10-30 21:53:29 +00:00
}
}
2000-11-09 15:28:42 +00:00
void FormPreferences : : setPreHandler ( FL_OBJECT * ob ) const
2000-10-30 21:53:29 +00:00
{
2000-11-08 09:39:46 +00:00
Assert ( ob ) ;
2000-11-09 15:28:42 +00:00
fl_set_object_prehandler ( ob , C_FormPreferencesFeedbackCB ) ;
2000-10-30 21:53:29 +00:00
}