From a32d2c972f88e771a326e011bc16b6d38d6e9082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Tue, 14 Nov 2000 02:01:57 +0000 Subject: [PATCH] fix a couple of hard crashes, constify local variables, whitespace changes, some changes to new code git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1215 a592a061-630c-0410-9148-cb99ea01b6c8 --- ChangeLog | 64 +++++++++ config/lyxinclude.m4 | 12 +- forms/layout_forms.h.patch | 8 -- po/POTFILES.in | 29 ++-- src/bufferlist.C | 11 +- src/debug.C | 53 ++++---- src/debug.h | 4 +- src/frontends/ButtonPolicies.h | 31 +++-- src/frontends/xforms/ButtonController.C | 2 + src/frontends/xforms/Color.C | 80 +++++------ src/frontends/xforms/Color.h | 19 +-- src/frontends/xforms/Dialogs.C | 11 +- src/frontends/xforms/FormBase.C | 18 +-- src/frontends/xforms/FormBase.h | 6 +- src/frontends/xforms/FormCopyright.C | 3 +- src/frontends/xforms/FormError.C | 2 +- src/frontends/xforms/FormGraphics.C | 2 +- src/frontends/xforms/FormIndex.C | 19 +-- src/frontends/xforms/FormInset.C | 20 +-- src/frontends/xforms/FormInset.h | 20 +-- src/frontends/xforms/FormPreferences.C | 22 +-- src/frontends/xforms/FormRef.C | 162 ++++++++++++----------- src/frontends/xforms/FormRef.h | 12 +- src/frontends/xforms/FormTabular.C | 56 +++----- src/frontends/xforms/FormTabularCreate.C | 5 +- src/frontends/xforms/FormUrl.C | 27 ++-- src/layout_forms.h | 3 - src/lyx_cb.C | 91 ++++++------- src/lyx_cb.h | 35 +++++ src/lyx_gui_misc.C | 2 +- src/lyxfunc.C | 146 +++++++++----------- src/support/filetools.C | 152 +++++---------------- src/support/filetools.h | 15 --- src/support/tempname.C | 40 +++--- 34 files changed, 568 insertions(+), 614 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4879ea4ad..0297db708a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,67 @@ +2000-11-14 Lars Gullik Bjønnes + + * src/support/tempname.C (tempName): small changes to make it + safer. remove the '.' before XXXXXX + + * src/support/filetools.C (TmpFileName): remove func + (GetCWD): ditto + + * src/frontends/xforms/FormRef.C (FormRef): explicit call the bp + * src/frontends/xforms/FormUrl.C (FormUrl): ditto + * src/frontends/xforms/FormTabularCreate.C (FormTabularCreate): ditto + * src/frontends/xforms/FormTabular.C (FormTabular): ditto + + * src/frontends/xforms/FormInset.h (FormInset): remove default for bp + (FormCommand): ditto + + * src/frontends/xforms/FormGraphics.C (FormGraphics): explicit + call the bp + + * src/frontends/xforms/FormError.C (FormError): use IgnorantPolicy + for bp (this fixes a reproducible hard crash) + + * src/frontends/xforms/FormCopyright.C (FormCopyright): explicit + call the bp + + * src/frontends/xforms/FormBase.h: make bp_ private + (FormBaseBI): remove default for bp + (FormBaseBD): ditto + + * src/frontends/xforms/Dialogs.C (Dialogs): use the old method it + is safe enough. + + * src/frontends/xforms/Color.C (RGBColor): made several vars + const, changed initialization of j to allow it to be const + (HSVColor): similar + + * several files: added const to local variables. + + * src/lyx_cb.C: removed several function prototypes and moved them + to lyx_cb.h + (MenuWrite): + (MenuWriteAs): + (UpdateLayoutPreamble): + (MenuLayoutSave): + (MenuInsertLabel): add BufferView as arguemnt + (LayoutsCB): make tmp const + + * src/layout_forms.h: regenerated + + * src/debug.C: add Debug::FILES + (showLevel) (showTags): translate the desc + + * src/debug.h: add FILES as debug target + + * src/bufferlist.C: use current_view as an interim measure becuase + of added arguments to MenuWrite and MenuWriteAs + + * forms/layout_forms.h.patch: make the patch more correct and more appalyable + + * config/lyxinclude.m4 (LYX_STD_COUNT): change test to not involve + string. + (LYX_PROG_CXX): change 2.97 rules to include the -f.. that + libstdc++ is compiled with. + 2000-11-13 José Abílio Matos * lib/layouts/docbook-book.layout diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4 index 5e20211554..48a161666d 100644 --- a/config/lyxinclude.m4 +++ b/config/lyxinclude.m4 @@ -187,7 +187,7 @@ dnl Check the version of g++ 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";; 2.95.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";; 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";; - 2.97*) CXXFLAGS="-g $lyx_opt -fhonor-std -fno-builtin -ffunction-sectons -fdata-sections";; + 2.97*) CXXFLAGS="-g $lyx_opt -fvtable-thunks -fno-builtin -ffunction-sections -fdata-sections";; *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";; *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";; esac @@ -299,17 +299,15 @@ dnl count template, if not the old HP version is assumed. AC_DEFUN(LYX_STD_COUNT,[ AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count, [AC_TRY_COMPILE([ -#include #include -using std::string; using std::count; -int countChar(string const & a, char const c) +int countChar(char * b, char * e, char const c) { - return count(a.begin(), a.end(), c); + return count(b, e, c); } ],[ - string a("hello"); - int i = countChar(a, 'l'); + char a[] = "hello"; + int i = countChar(a, a + 5, 'l'); ],lyx_cv_std_count=yes,lyx_cv_std_count=no) ]) if test $lyx_cv_std_count = yes ; then diff --git a/forms/layout_forms.h.patch b/forms/layout_forms.h.patch index ba4cb7519a..1b2df965c2 100644 --- a/forms/layout_forms.h.patch +++ b/forms/layout_forms.h.patch @@ -1,7 +1,3 @@ -1c1 -< /** Header file generated with fdesign on Tue Sep 26 15:14:15 2000.**/ ---- -> /** Header file generated with fdesign **/ 7,8c7,8 < extern void CharacterApplyCB(FL_OBJECT *, long); < extern void CharacterCloseCB(FL_OBJECT *, long); @@ -16,7 +12,3 @@ > extern "C" void PreambleOKCB(FL_OBJECT *, long); > extern "C" void PreambleApplyCB(FL_OBJECT *, long); > extern "C" void PreambleCancelCB(FL_OBJECT *, long); -13a14,16 -> /* Some extra funcs */ -> -> extern bool UpdateLayoutPreamble(); diff --git a/po/POTFILES.in b/po/POTFILES.in index cfcf301617..f2d01bce97 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -10,6 +10,7 @@ src/converter.C src/credits.C src/credits_form.C src/CutAndPaste.C +src/debug.C src/exporter.C src/ext_l10n.h src/filedlg.C @@ -47,35 +48,35 @@ src/frontends/kde/refdlg.C src/frontends/kde/tocdlg.C src/frontends/kde/urldlg.C src/frontends/xforms/FormBase.h -src/frontends/xforms/FormCitation.C src/frontends/xforms/form_citation.C -src/frontends/xforms/FormCopyright.C +src/frontends/xforms/FormCitation.C src/frontends/xforms/form_copyright.C -src/frontends/xforms/FormDocument.C +src/frontends/xforms/FormCopyright.C src/frontends/xforms/form_document.C -src/frontends/xforms/FormError.C +src/frontends/xforms/FormDocument.C src/frontends/xforms/form_error.C -src/frontends/xforms/FormGraphics.C +src/frontends/xforms/FormError.C src/frontends/xforms/form_graphics.C -src/frontends/xforms/FormIndex.C +src/frontends/xforms/FormGraphics.C src/frontends/xforms/form_index.C +src/frontends/xforms/FormIndex.C src/frontends/xforms/FormInset.h -src/frontends/xforms/FormParagraph.C src/frontends/xforms/form_paragraph.C -src/frontends/xforms/FormPreferences.C +src/frontends/xforms/FormParagraph.C src/frontends/xforms/form_preferences.C -src/frontends/xforms/FormPrint.C +src/frontends/xforms/FormPreferences.C src/frontends/xforms/form_print.C -src/frontends/xforms/FormRef.C +src/frontends/xforms/FormPrint.C src/frontends/xforms/form_ref.C -src/frontends/xforms/FormTabular.C +src/frontends/xforms/FormRef.C src/frontends/xforms/form_tabular.C -src/frontends/xforms/FormTabularCreate.C +src/frontends/xforms/FormTabular.C src/frontends/xforms/form_tabular_create.C -src/frontends/xforms/FormToc.C +src/frontends/xforms/FormTabularCreate.C src/frontends/xforms/form_toc.C -src/frontends/xforms/FormUrl.C +src/frontends/xforms/FormToc.C src/frontends/xforms/form_url.C +src/frontends/xforms/FormUrl.C src/frontends/xforms/Menubar_pimpl.C src/gettext.h src/importer.C diff --git a/src/bufferlist.C b/src/bufferlist.C index 99fcd4dd45..bbb10a162b 100644 --- a/src/bufferlist.C +++ b/src/bufferlist.C @@ -47,6 +47,8 @@ using std::find_if; using std::for_each; using std::mem_fun; +extern BufferView * current_view; + // // Class BufferStorage // @@ -92,9 +94,6 @@ bool BufferList::empty() const } -extern bool MenuWrite(Buffer *); -extern bool MenuWriteAs(Buffer *); - bool BufferList::QwriteAll() { bool askMoreConfirmation = false; @@ -114,9 +113,9 @@ bool BufferList::QwriteAll() _("Save document?"))) { case 1: // Yes if ((*it)->isUnnamed()) - reask = !MenuWriteAs((*it)); + reask = !MenuWriteAs(current_view, (*it)); else { - reask = !MenuWrite((*it)); + reask = !MenuWrite(current_view, (*it)); } break; case 2: // No @@ -190,7 +189,7 @@ bool BufferList::close(Buffer * buf) _("Save document?"))){ case 1: // Yes if (buf->isUnnamed()) - reask = !MenuWriteAs(buf); + reask = !MenuWriteAs(current_view, buf); else if (buf->save()) { lastfiles->newFile(buf->fileName()); reask = false; diff --git a/src/debug.C b/src/debug.C index ff4bdc7c48..6c2029a18f 100644 --- a/src/debug.C +++ b/src/debug.C @@ -12,10 +12,12 @@ #endif #include -#include "debug.h" #include +#include "debug.h" +#include "gettext.h" + using std::ostream; using std::setw; using std::endl; @@ -27,26 +29,27 @@ struct error_item { }; static error_item errorTags[] = { - { Debug::NONE, "none", "No debugging message"}, - { Debug::INFO, "info", "General information"}, - { Debug::INIT, "init", "Program initialisation"}, - { Debug::KEY, "key", "Keyboard events handling"}, - { Debug::GUI, "gui", "GUI handling"}, - { Debug::PARSER, "parser", "Lyxlex grammer parser"}, - { Debug::LYXRC, "lyxrc", "Configuration files reading"}, - { Debug::KBMAP, "kbmap", "Custom keyboard definition"}, - { Debug::LATEX, "latex", "LaTeX generation/execution"}, - { Debug::MATHED, "mathed", "Math editor"}, - { Debug::FONT, "font", "Font handling"}, - { Debug::TCLASS, "tclass", "Textclass files reading"}, - { Debug::LYXVC, "lyxvc", "Version control"}, - { Debug::LYXSERVER, "lyxserver", "External control interface"}, - { Debug::ROFF, "roff", "Keep *roff temporary files"}, - { Debug::ACTION, "action", "User commands"}, - { Debug::LYXLEX, "lyxlex", "The LyX Lexxer"}, - { Debug::DEPEND, "depend", "Dependency information"}, - { Debug::INSETS, "insets", "LyX Insets"}, - { Debug::ANY, "any", "All debugging messages"} + { Debug::NONE, "none", N_("No debugging message")}, + { Debug::INFO, "info", N_("General information")}, + { Debug::INIT, "init", N_("Program initialisation")}, + { Debug::KEY, "key", N_("Keyboard events handling")}, + { Debug::GUI, "gui", N_("GUI handling")}, + { Debug::PARSER, "parser", N_("Lyxlex grammer parser")}, + { Debug::LYXRC, "lyxrc", N_("Configuration files reading")}, + { Debug::KBMAP, "kbmap", N_("Custom keyboard definition")}, + { Debug::LATEX, "latex", N_("LaTeX generation/execution")}, + { Debug::MATHED, "mathed", N_("Math editor")}, + { Debug::FONT, "font", N_("Font handling")}, + { Debug::TCLASS, "tclass", N_("Textclass files reading")}, + { Debug::LYXVC, "lyxvc", N_("Version control")}, + { Debug::LYXSERVER, "lyxserver", N_("External control interface")}, + { Debug::ROFF, "roff", N_("Keep *roff temporary files")}, + { Debug::ACTION, "action", N_("User commands")}, + { Debug::LYXLEX, "lyxlex", N_("The LyX Lexxer")}, + { Debug::DEPEND, "depend", N_("Dependency information")}, + { Debug::INSETS, "insets", N_("LyX Insets")}, + { Debug::FILES, "files", N_("Files used by LyX")}, + { Debug::ANY, "any", N_("All debugging messages")} }; @@ -58,7 +61,7 @@ Debug::type const Debug::ANY = Debug::type( Debug::PARSER | Debug::LYXRC | Debug::KBMAP | Debug::LATEX | Debug::MATHED | Debug::FONT | Debug::TCLASS | Debug::LYXVC | Debug::LYXSERVER | Debug::ROFF | Debug::ACTION | Debug::LYXLEX | - Debug::DEPEND | Debug::INSETS); + Debug::DEPEND | Debug::INSETS | Debug::FILES); Debug::type Debug::value(string const & val) @@ -94,8 +97,8 @@ void Debug::showLevel(ostream & o, Debug::type level) if (errorTags[i].level != Debug::ANY && errorTags[i].level != Debug::NONE && errorTags[i].level & level) - o << "Debugging `" << errorTags[i].name - << "' (" << errorTags[i].desc << ')' << endl; + o << _("Debugging `") << errorTags[i].name + << "' (" << _(errorTags[i].desc) << ')' << endl; } @@ -104,6 +107,6 @@ void Debug::showTags(ostream & os) for (int i = 0 ; i < numErrorTags ; ++i) os << setw(7) << errorTags[i].level << setw(10) << errorTags[i].name - << " " << errorTags[i].desc << '\n'; + << " " << _(errorTags[i].desc) << '\n'; os.flush(); } diff --git a/src/debug.h b/src/debug.h index 2da53c16ba..5f4701894c 100644 --- a/src/debug.h +++ b/src/debug.h @@ -65,7 +65,9 @@ struct Debug { /// DEPEND = (1 << 16), /// - INSETS = (1 << 17) + INSETS = (1 << 17), + /// + FILES = (1 << 18) }; /// // static const type ANY = type(INFO | INIT | KEY | GUI | diff --git a/src/frontends/ButtonPolicies.h b/src/frontends/ButtonPolicies.h index a552917fce..94f3eea983 100644 --- a/src/frontends/ButtonPolicies.h +++ b/src/frontends/ButtonPolicies.h @@ -221,8 +221,10 @@ private: The state machine design for this policy allows changes to occur within the dialog while a file is read-only -- the okay button is disabled until a read-write input is given. When the file is made read-write the dialog - will then be in the correct state (as if the file had always been read-write). - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + will then be in the correct state (as if the file had always been + read-write). + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ @@ -256,16 +258,18 @@ private: }; -/** Ok, Apply and Cancel buttons for dialogs where read-only operation is blocked. +/** Ok, Apply and Cancel buttons for dialogs where read-only operation + is blocked. Repeated Apply are not allowed. Likewise, Ok cannot follow Apply without - some valid input. That is, the dialog contents must change between each Apply - or Apply and Ok. + some valid input. That is, the dialog contents must change between + each Apply or Apply and Ok. The state machine design for this policy allows changes to occur within the dialog while a file is read-only -- the Ok+Apply buttons are disabled until a read-write input is given. When the file is made read-write the dialog will then be in the correct state (as if the file had always been read-write). - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ @@ -300,14 +304,16 @@ private: }; -/** Ok, Apply and Cancel buttons for dialogs where read-only operation is blocked. +/** Ok, Apply and Cancel buttons for dialogs where read-only + operation is blocked. Repeated Apply is allowed. Likewise, Ok can follow Apply. The state machine design for this policy allows changes to occur within the dialog while a file is read-only -- the Ok+Apply buttons are disabled until a read-write input is given. When the file is made read-write the dialog will then be in the correct state (as if the file had always been read-write). - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ @@ -342,7 +348,8 @@ private: /** Ok, Apply and Cancel buttons for dialogs where repeated Apply is allowed. - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ @@ -374,7 +381,8 @@ private: /** Ok, Apply and Cancel buttons for dialogs with no repeated Apply. - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ @@ -407,7 +415,8 @@ private: /** Defines the policy used by the Preferences dialog. Four buttons: Ok (Save), Apply, Cancel/Close, Restore. - Note: This scheme supports the relabelling of Cancel to Close and vice versa. + Note: This scheme supports the relabelling of Cancel to Close + and vice versa. This is based on the value of the bool state of the Button::CANCEL. true == Cancel, false == Close */ diff --git a/src/frontends/xforms/ButtonController.C b/src/frontends/xforms/ButtonController.C index e79abaa47e..3ba27dbb33 100644 --- a/src/frontends/xforms/ButtonController.C +++ b/src/frontends/xforms/ButtonController.C @@ -8,6 +8,7 @@ #include "ButtonController.h" #include "support/LAssert.h" +//#include "debug.h" ButtonController::ButtonController(ButtonPolicy * bp, @@ -88,6 +89,7 @@ void ButtonController::refresh() void ButtonController::input(ButtonPolicy::SMInput in) { + //lyxerr << "ButtonController::input: bp_[" << bp_ << "]" << endl; bp_->input(in); refresh(); } diff --git a/src/frontends/xforms/Color.C b/src/frontends/xforms/Color.C index ba09d4d833..b8035a5894 100644 --- a/src/frontends/xforms/Color.C +++ b/src/frontends/xforms/Color.C @@ -28,29 +28,29 @@ using std::ofstream; static int const nohue = -1; -RGBColor::RGBColor( HSVColor const & hsv ) +RGBColor::RGBColor(HSVColor const & hsv) { double h = hsv.h; - double s = hsv.s; - double v = hsv.v; + double const s = hsv.s; + double const v = hsv.v; double rd, gd, bd; - if( h == nohue || s == 0.0 ) { + if (h == nohue || s == 0.0) { rd = gd = bd = v; } else { - if( h == 360.0 ) h = 0.0; + if (h == 360.0) h = 0.0; h /= 60.0; - int j = static_cast( ::floor(h) ); - if( j < 0 ) j = 0; + int const j = max(0, static_cast(::floor(h))); + //if( j < 0 ) j = 0; - double f = h - j; - double p = v * (1.0 - s); - double q = v * (1.0 - (s*f)); - double t = v * (1.0 - (s*(1.0 - f))); + double const f = h - j; + double const p = v * (1.0 - s); + double const q = v * (1.0 - (s * f)); + double const t = v * (1.0 - (s * (1.0 - f))); - switch( j ) { + switch (j) { case 0: rd = v; gd = t; @@ -95,39 +95,39 @@ RGBColor::RGBColor( HSVColor const & hsv ) } -HSVColor::HSVColor( RGBColor const & rgb ) +HSVColor::HSVColor(RGBColor const & rgb) { // r, g, b lie in the range 0-1, not 0-255. - double r = rgb.r / 255.0; - double g = rgb.g / 255.0; - double b = rgb.b / 255.0; + double const r = rgb.r / 255.0; + double const g = rgb.g / 255.0; + double const b = rgb.b / 255.0; - double maxval = max( max( r, g ), b ); - double minval = max( min( r, g ), b ); + double const maxval = max( max( r, g ), b ); + double const minval = max( min( r, g ), b ); v = maxval; - double diff = maxval - minval; - if( maxval != 0.0 ) + double const diff = maxval - minval; + if (maxval != 0.0) s = diff / maxval; else s = 0.0; h = nohue; - if( s != 0.0 ) { - double rc = (maxval - r) / diff; - double gc = (maxval - g) / diff; - double bc = (maxval - b) / diff; + if (s != 0.0) { + double const rc = (maxval - r) / diff; + double const gc = (maxval - g) / diff; + double const bc = (maxval - b) / diff; - if( r == maxval ) + if (r == maxval) h = bc - gc; - else if( g == maxval ) + else if (g == maxval) h = 2.0 + rc - bc; - else if( b == maxval ) + else if (b == maxval) h = 4.0 + gc - rc; h *= 60.0; - if ( h < 0 ) + if (h < 0) h += 360; } } @@ -154,14 +154,14 @@ static const int xformCount = sizeof(xformTags) / sizeof(keyword_item); bool XformColor::read(string const & filename) { - LyXLex lexrc( xformTags, xformCount ); - if( !lexrc.setFile( filename ) ) + LyXLex lexrc(xformTags, xformCount); + if (!lexrc.setFile(filename)) return false; - while( lexrc.IsOK() ) { - int le = lexrc.lex(); + while (lexrc.IsOK()) { + int const le = lexrc.lex(); - switch( le ) { + switch (le) { case LyXLex::LEX_UNDEF: lexrc.printError("Unknown tag `$$Token'"); continue; @@ -172,13 +172,13 @@ bool XformColor::read(string const & filename) RGBColor col; - if( !lexrc.next() ) break; + if (!lexrc.next()) break; col.r = lexrc.GetInteger(); - if( !lexrc.next() ) break; + if (!lexrc.next()) break; col.g = lexrc.GetInteger(); - if( !lexrc.next() ) break; + if (!lexrc.next()) break; col.b = lexrc.GetInteger(); fl_mapcolor(le, col.r, col.g, col.b); @@ -207,14 +207,14 @@ bool XformColor::write(string const & filename) << "# modifications you should do them from inside LyX and save\n" << "\n"; - for( int i = 0; i < xformCount; ++i ) { - string tag = xformTags[i].tag; - int colorID = xformTags[i].code; + for (int i = 0; i < xformCount; ++i) { + string const tag = xformTags[i].tag; + int const colorID = xformTags[i].code; RGBColor color; fl_getmcolor(colorID, &color.r, &color.g, &color.b); - os << tag + " " + os << tag << " " << color.r << " " << color.g << " " << color.b << "\n"; } diff --git a/src/frontends/xforms/Color.h b/src/frontends/xforms/Color.h index 768b6ef3c0..8ce8548f05 100644 --- a/src/frontends/xforms/Color.h +++ b/src/frontends/xforms/Color.h @@ -20,16 +20,16 @@ #include "LString.h" -class HSVColor; -class RGBColor; +struct RGBColor; struct HSVColor { double h; double s; double v; HSVColor() : h(0.0), s(0.0), v(0.0) {} - HSVColor(double hue, double sat, double val) : h(hue), s(sat), v(val) {} - HSVColor( RGBColor const & ); + HSVColor(double hue, double sat, double val) + : h(hue), s(sat), v(val) {} + HSVColor(RGBColor const &); }; struct RGBColor { @@ -37,8 +37,9 @@ struct RGBColor { int g; int b; RGBColor() : r(0), g(0), b(0) {} - RGBColor(int red, int green, int blue) : r(red), g(green), b(blue) {} - RGBColor( HSVColor const & ); + RGBColor(int red, int green, int blue) + : r(red), g(green), b(blue) {} + RGBColor(HSVColor const &); }; typedef std::pair X11Color; @@ -49,9 +50,9 @@ struct XformColor { int colorID; RGBColor col; XformColor() : colorID(0) {} - string const getname() { return name; } - static bool read( string const & ); - static bool write( string const & ); + string const & getname() const { return name; } + static bool read(string const &); + static bool write(string const &); }; inline diff --git a/src/frontends/xforms/Dialogs.C b/src/frontends/xforms/Dialogs.C index 5384eda325..85db8bee0c 100644 --- a/src/frontends/xforms/Dialogs.C +++ b/src/frontends/xforms/Dialogs.C @@ -26,6 +26,7 @@ #include "FormTabularCreate.h" #include "FormToc.h" #include "FormUrl.h" +#include "debug.h" #ifdef __GNUG__ #pragma implementation @@ -67,20 +68,12 @@ Dialogs::Dialogs(LyXView * lv) Dialogs::~Dialogs() { -#if 0 - // I belive that this is unsafe... for (vector::iterator iter = dialogs_.begin(); iter != dialogs_.end(); ++iter) { + lyxerr << "delete *iter" << endl; delete *iter; } -#else - // I think this is better... - while (!dialogs_.empty()) { - delete dialogs_.back(); - dialogs_.erase(dialogs_.end() - 1); - } -#endif } diff --git a/src/frontends/xforms/FormBase.C b/src/frontends/xforms/FormBase.C index 2df152677a..ad845fd570 100644 --- a/src/frontends/xforms/FormBase.C +++ b/src/frontends/xforms/FormBase.C @@ -22,6 +22,7 @@ #include "LyXView.h" #include "xform_macros.h" #include "support/LAssert.h" +//#include "debug.h" // The current scheme muddles debugging. // Can we please use some other means to create these functions? @@ -54,20 +55,21 @@ FormBase::FormBase(LyXView * lv, Dialogs * d, string const & t, FormBase::~FormBase() { + //lyxerr << "bp_[" << bp_ << "]" << endl; delete bp_; } void FormBase::redraw() { - if( form() && form()->visible ) - fl_redraw_form( form() ); + if (form() && form()->visible) + fl_redraw_form(form()); } void FormBase::connect() { - fl_set_form_minsize( form(), minw_, minh_ ); + fl_set_form_minsize(form(), minw_, minh_); } @@ -79,9 +81,9 @@ void FormBase::show() C_FormBaseWMHideCB, 0); } - fl_freeze_form( form() ); + fl_freeze_form(form()); update(); // make sure its up-to-date - fl_unfreeze_form( form() ); + fl_unfreeze_form(form()); if (form()->visible) { fl_raise_form(form()); @@ -151,7 +153,7 @@ void FormBase::CancelCB(FL_OBJECT * ob, long) } -void FormBase::InputCB(FL_OBJECT * ob, long data ) +void FormBase::InputCB(FL_OBJECT * ob, long data) { Assert(ob && ob->form); FormBase * pre = static_cast(ob->form->u_vdata); @@ -173,7 +175,7 @@ void FormBase::RestoreCB(FL_OBJECT * ob, long) FormBaseBI::FormBaseBI(LyXView * lv, Dialogs * d, string const & t, ButtonPolicy * bp, char const * close, char const * cancel) - : FormBase( lv, d, t, bp, close, cancel ) + : FormBase(lv, d, t, bp, close, cancel) {} @@ -193,7 +195,7 @@ void FormBaseBI::disconnect() FormBaseBD::FormBaseBD(LyXView * lv, Dialogs * d, string const & t, ButtonPolicy * bp, char const * close, char const * cancel) - : FormBase( lv, d, t, bp, close, cancel ), + : FormBase(lv, d, t, bp, close, cancel), u_(0) {} diff --git a/src/frontends/xforms/FormBase.h b/src/frontends/xforms/FormBase.h index 78d6e03d1c..ec4c1eec68 100644 --- a/src/frontends/xforms/FormBase.h +++ b/src/frontends/xforms/FormBase.h @@ -112,8 +112,10 @@ protected: // methods Connection h_; /// dialog title, displayed by WM. string title; +private: /// ButtonPolicy * bp_; +public: /// Overcome a dumb xforms sizing bug mutable int minw_; /// @@ -129,7 +131,7 @@ class FormBaseBI : public FormBase { protected: /// Constructor FormBaseBI(LyXView *, Dialogs *, string const &, - ButtonPolicy * bp = new OkApplyCancelPolicy, + ButtonPolicy * bp, char const * close = N_("Close"), char const * cancel = N_("Cancel")); @@ -146,7 +148,7 @@ class FormBaseBD : public FormBase { protected: /// Constructor FormBaseBD(LyXView *, Dialogs *, string const &, - ButtonPolicy * bp = new OkApplyCancelReadOnlyPolicy, + ButtonPolicy * bp, char const * close = N_("Close"), char const * cancel = N_("Cancel")); diff --git a/src/frontends/xforms/FormCopyright.C b/src/frontends/xforms/FormCopyright.C index b215e73efc..78ca9c0252 100644 --- a/src/frontends/xforms/FormCopyright.C +++ b/src/frontends/xforms/FormCopyright.C @@ -16,7 +16,8 @@ #include "FormCopyright.h" FormCopyright::FormCopyright( LyXView * lv, Dialogs * d ) - : FormBaseBI( lv, d, _("Copyright and Warranty") ), + : FormBaseBI(lv, d, _("Copyright and Warranty"), + new OkApplyCancelPolicy), dialog_(0) { // let the dialog be shown diff --git a/src/frontends/xforms/FormError.C b/src/frontends/xforms/FormError.C index 96c40cc2f2..afd6c0b52b 100644 --- a/src/frontends/xforms/FormError.C +++ b/src/frontends/xforms/FormError.C @@ -23,7 +23,7 @@ FormError::FormError(LyXView * lv, Dialogs * d) - : FormInset( lv, d, _("LaTeX Error")), + : FormInset( lv, d, _("LaTeX Error"), new IgnorantPolicy), dialog_(0), inset_(0) { Assert(lv && d); diff --git a/src/frontends/xforms/FormGraphics.C b/src/frontends/xforms/FormGraphics.C index 886e309ed6..dddcaff26d 100644 --- a/src/frontends/xforms/FormGraphics.C +++ b/src/frontends/xforms/FormGraphics.C @@ -40,7 +40,7 @@ using std::endl; FormGraphics::FormGraphics(LyXView * lv, Dialogs * d) - : FormInset( lv, d, _("Graphics"), new NoRepeatedApplyReadOnlyPolicy ), + : FormInset(lv, d, _("Graphics"), new NoRepeatedApplyReadOnlyPolicy), dialog_(0), inset_(0), // The buttons c-tor values are the number of buttons we use // This is only to reduce memory waste. diff --git a/src/frontends/xforms/FormIndex.C b/src/frontends/xforms/FormIndex.C index fffc92d742..12e6b38482 100644 --- a/src/frontends/xforms/FormIndex.C +++ b/src/frontends/xforms/FormIndex.C @@ -26,7 +26,8 @@ #include "lyxfunc.h" FormIndex::FormIndex(LyXView * lv, Dialogs * d) - : FormCommand(lv, d, _("Index")), dialog_(0) + : FormCommand(lv, d, _("Index"), new OkCancelReadOnlyPolicy), + dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -44,14 +45,14 @@ FormIndex::~FormIndex() FL_FORM * FormIndex::form() const { - if (dialog_ ) return dialog_->form; + if (dialog_) return dialog_->form; return 0; } void FormIndex::connect() { - fl_set_form_maxsize( form(), 2*minw_, minh_ ); + fl_set_form_maxsize(form(), 2 * minw_, minh_); FormCommand::connect(); } @@ -74,13 +75,13 @@ void FormIndex::update() fl_set_input(dialog_->key, params.getContents().c_str()); if (lv_->buffer()->isReadonly()) { - fl_deactivate_object( dialog_->key ); - fl_deactivate_object( dialog_->ok ); - fl_set_object_lcol( dialog_->ok, FL_INACTIVE ); + fl_deactivate_object(dialog_->key); + fl_deactivate_object(dialog_->ok); + fl_set_object_lcol(dialog_->ok, FL_INACTIVE); } else { - fl_activate_object( dialog_->key ); - fl_activate_object( dialog_->ok ); - fl_set_object_lcol( dialog_->ok, FL_BLACK ); + fl_activate_object(dialog_->key); + fl_activate_object(dialog_->ok); + fl_set_object_lcol(dialog_->ok, FL_BLACK); } } diff --git a/src/frontends/xforms/FormInset.C b/src/frontends/xforms/FormInset.C index 07d498302d..4193cf3049 100644 --- a/src/frontends/xforms/FormInset.C +++ b/src/frontends/xforms/FormInset.C @@ -25,7 +25,7 @@ FormInset::FormInset(LyXView * lv, Dialogs * d, string const & t, ButtonPolicy * bp, char const * close, char const * cancel) - : FormBaseBD( lv, d, t, bp, close, cancel ), ih_(0) + : FormBaseBD(lv, d, t, bp, close, cancel), ih_(0) {} @@ -46,7 +46,7 @@ void FormInset::disconnect() } -void FormInset::updateSlot( bool switched ) +void FormInset::updateSlot(bool switched) { if (switched) hide(); @@ -55,10 +55,10 @@ void FormInset::updateSlot( bool switched ) } -FormCommand::FormCommand( LyXView * lv, Dialogs * d, string const & t, - ButtonPolicy * bp, - char const * close, char const * cancel) - : FormInset( lv, d, t, bp, close, cancel ), +FormCommand::FormCommand(LyXView * lv, Dialogs * d, string const & t, + ButtonPolicy * bp, + char const * close, char const * cancel) + : FormInset(lv, d, t, bp, close, cancel), inset_(0) {} @@ -66,12 +66,12 @@ FormCommand::FormCommand( LyXView * lv, Dialogs * d, string const & t, void FormCommand::disconnect() { inset_ = 0; - params = InsetCommandParams( string() ); + params = InsetCommandParams(string()); FormInset::disconnect(); } -void FormCommand::showInset( InsetCommand * inset ) +void FormCommand::showInset(InsetCommand * inset) { if (inset == 0) return; // maybe we should Assert this? @@ -86,13 +86,13 @@ void FormCommand::showInset( InsetCommand * inset ) } -void FormCommand::createInset( string const & arg ) +void FormCommand::createInset(string const & arg) { if (inset_) { ih_.disconnect(); inset_ = 0; } - params.setFromString( arg ); + params.setFromString(arg); show(); } diff --git a/src/frontends/xforms/FormInset.h b/src/frontends/xforms/FormInset.h index 40cedb8056..31d705ac55 100644 --- a/src/frontends/xforms/FormInset.h +++ b/src/frontends/xforms/FormInset.h @@ -25,10 +25,10 @@ class FormInset : public FormBaseBD { protected: /// Constructor - FormInset( LyXView *, Dialogs *, string const &, - ButtonPolicy * bp = new OkCancelReadOnlyPolicy, - char const * close = N_("Close"), - char const * cancel = N_("Cancel")); + FormInset(LyXView *, Dialogs *, string const &, + ButtonPolicy * bp, + char const * close = N_("Close"), + char const * cancel = N_("Cancel")); /// Connect signals. Also perform any necessary initialisation. virtual void connect(); @@ -49,18 +49,18 @@ protected: class FormCommand : public FormInset { protected: /// Constructor - FormCommand( LyXView *, Dialogs *, string const &, - ButtonPolicy * = new OkCancelReadOnlyPolicy, - char const * close = N_("Close"), - char const * cancel = N_("Cancel")); + FormCommand(LyXView *, Dialogs *, string const &, + ButtonPolicy *, + char const * close = N_("Close"), + char const * cancel = N_("Cancel")); /// Disconnect signals. Also perform any necessary housekeeping. virtual void disconnect(); /// Slot launching dialog to (possibly) create a new inset - void createInset( string const & ); + void createInset(string const &); /// Slot launching dialog to an existing inset - void showInset( InsetCommand * ); + void showInset(InsetCommand *); /// pointer to the inset passed through showInset InsetCommand * inset_; diff --git a/src/frontends/xforms/FormPreferences.C b/src/frontends/xforms/FormPreferences.C index 095e6b9a8d..0fb105c6ab 100644 --- a/src/frontends/xforms/FormPreferences.C +++ b/src/frontends/xforms/FormPreferences.C @@ -118,29 +118,29 @@ FormPreferences::~FormPreferences() void FormPreferences::redraw() { - if( !(form() && form()->visible) ) + if (!(form() && form()->visible)) return; - fl_redraw_form( form() ); + fl_redraw_form(form()); FL_FORM * form2 = fl_get_active_folder(dialog_->tabfolder_prefs); - if( !(form2 && form2->visible) ) + if (!(form2 && form2->visible)) return; - fl_redraw_form( form2 ); + fl_redraw_form(form2); FL_FORM * form3 = 0; - if( form2 == converters_tab_->form ) + if (form2 == converters_tab_->form) form3 = fl_get_active_folder(converters_tab_->tabfolder_outer); - else if( form2 == look_n_feel_tab_->form ) + else if (form2 == look_n_feel_tab_->form) form3 = fl_get_active_folder(look_n_feel_tab_->tabfolder_outer); - else if( form2 == inputs_tab_->form ) + else if (form2 == inputs_tab_->form) form3 = fl_get_active_folder(inputs_tab_->tabfolder_outer); - else if( form2 == outputs_tab_->form ) + else if (form2 == outputs_tab_->form) form3 = fl_get_active_folder(outputs_tab_->tabfolder_outer); - else if( form2 == usage_tab_->form ) + else if (form2 == usage_tab_->form) form3 = fl_get_active_folder(usage_tab_->tabfolder_outer); if (form3 && form3->visible) @@ -159,9 +159,9 @@ void FormPreferences::ok() { FormBase::ok(); - if( modifiedXformPrefs ) { + if (modifiedXformPrefs) { string filename = user_lyxdir + "/preferences.xform"; - modifiedXformPrefs = ! XformColor::write( filename ); + modifiedXformPrefs = ! XformColor::write(filename); } lv_->getLyXFunc()->Dispatch(LFUN_SAVEPREFERENCES); diff --git a/src/frontends/xforms/FormRef.C b/src/frontends/xforms/FormRef.C index 09ac1375a5..f2058edb2c 100644 --- a/src/frontends/xforms/FormRef.C +++ b/src/frontends/xforms/FormRef.C @@ -34,7 +34,8 @@ static int const minw_hb = 250; static int minw_sb; FormRef::FormRef(LyXView * lv, Dialogs * d) - : FormCommand(lv, d, _("Reference")), toggle(GOBACK), dialog_(0) + : FormCommand(lv, d, _("Reference"), new OkCancelReadOnlyPolicy), + toggle(GOBACK), dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -52,14 +53,14 @@ FormRef::~FormRef() FL_FORM * FormRef::form() const { - if (dialog_ ) return dialog_->form; + if (dialog_) return dialog_->form; return 0; } void FormRef::connect() { - fl_set_form_maxsize( form(), 2*minw_, minh_ ); + fl_set_form_maxsize(form(), 2 * minw_, minh_); FormCommand::connect(); } @@ -85,16 +86,16 @@ void FormRef::build() // Name is irrelevant to LaTeX documents if (lv_->buffer()->isLatex()) { - fl_deactivate_object( dialog_->name ); - fl_set_object_lcol( dialog_->name, FL_INACTIVE ); + fl_deactivate_object(dialog_->name); + fl_set_object_lcol(dialog_->name, FL_INACTIVE); } // Can change reference only through browser - fl_deactivate_object( dialog_->ref ); + fl_deactivate_object(dialog_->ref); - bc_.setOK( dialog_->button_ok ); - bc_.setCancel( dialog_->button_cancel ); - bc_.addReadOnly( dialog_->type ); + bc_.setOK(dialog_->button_ok); + bc_.setCancel(dialog_->button_cancel); + bc_.addReadOnly(dialog_->type); bc_.refresh(); } @@ -105,7 +106,7 @@ void FormRef::update() fl_set_input(dialog_->name, params.getOptions().c_str()); Type type = getType(); - fl_set_choice( dialog_->type, type+1 ); + fl_set_choice(dialog_->type, type + 1); toggle = GOBACK; fl_set_object_label(dialog_->button_go, _("Goto reference")); @@ -113,82 +114,83 @@ void FormRef::update() refs.clear(); if (inset_ == 0) { refs = lv_->buffer()->getLabelList(); - updateBrowser( refs ); + updateBrowser(refs); showBrowser(); } else { hideBrowser(); } - bc_.readOnly( lv_->buffer()->isReadonly() ); + bc_.readOnly(lv_->buffer()->isReadonly()); } -void FormRef::updateBrowser( vector keys ) const +void FormRef::updateBrowser(vector const & akeys) const { - if (fl_get_button( dialog_->sort ) ) - sort( keys.begin(), keys.end() ); + vector keys(akeys); + if (fl_get_button( dialog_->sort)) + sort(keys.begin(), keys.end()); - fl_clear_browser( dialog_->browser ); + fl_clear_browser(dialog_->browser); for (vector::const_iterator it = keys.begin(); - it != keys.end(); ++it ) - fl_add_browser_line( dialog_->browser, (*it).c_str()); + it != keys.end(); ++it) + fl_add_browser_line(dialog_->browser, (*it).c_str()); if (keys.empty()) { - fl_add_browser_line( dialog_->browser, - _("*** No labels found in document ***")); + fl_add_browser_line(dialog_->browser, + _("*** No labels found in document ***")); - fl_deactivate_object( dialog_->browser ); - fl_deactivate_object( dialog_->button_update ); - fl_deactivate_object( dialog_->sort ); - fl_set_object_lcol( dialog_->browser, FL_INACTIVE ); - fl_set_object_lcol( dialog_->button_update, FL_INACTIVE ); - fl_set_object_lcol( dialog_->sort, FL_INACTIVE ); + fl_deactivate_object(dialog_->browser); + fl_deactivate_object(dialog_->button_update); + fl_deactivate_object(dialog_->sort); + fl_set_object_lcol(dialog_->browser, FL_INACTIVE); + fl_set_object_lcol(dialog_->button_update, FL_INACTIVE); + fl_set_object_lcol(dialog_->sort, FL_INACTIVE); } else { - fl_set_browser_topline( dialog_->browser, 1 ); - fl_activate_object( dialog_->browser ); - fl_set_object_lcol( dialog_->browser, FL_BLACK ); - fl_activate_object( dialog_->button_update ); - fl_set_object_lcol( dialog_->button_update, FL_BLACK ); - fl_activate_object( dialog_->sort ); - fl_set_object_lcol( dialog_->sort, FL_BLACK ); + fl_set_browser_topline(dialog_->browser, 1); + fl_activate_object(dialog_->browser); + fl_set_object_lcol(dialog_->browser, FL_BLACK); + fl_activate_object(dialog_->button_update); + fl_set_object_lcol(dialog_->button_update, FL_BLACK); + fl_activate_object(dialog_->sort); + fl_set_object_lcol(dialog_->sort, FL_BLACK); } } void FormRef::showBrowser() const { - fl_show_object( dialog_->browser ); - fl_show_object( dialog_->button_update ); - fl_show_object( dialog_->sort ); + fl_show_object(dialog_->browser); + fl_show_object(dialog_->button_update); + fl_show_object(dialog_->sort); - setSize( minw_sb, 0 ); + setSize(minw_sb, 0); - fl_deactivate_object( dialog_->type ); - fl_set_object_lcol( dialog_->type, FL_INACTIVE ); - fl_deactivate_object( dialog_->button_go ); - fl_set_object_lcol( dialog_->button_go, FL_INACTIVE ); - fl_set_object_lcol( dialog_->ref, FL_INACTIVE ); + fl_deactivate_object(dialog_->type); + fl_set_object_lcol(dialog_->type, FL_INACTIVE); + fl_deactivate_object(dialog_->button_go); + fl_set_object_lcol(dialog_->button_go, FL_INACTIVE); + fl_set_object_lcol(dialog_->ref, FL_INACTIVE); bc_.valid(false); } void FormRef::hideBrowser() const { - fl_hide_object( dialog_->browser ); - fl_hide_object( dialog_->button_update ); - fl_hide_object( dialog_->sort ); + fl_hide_object(dialog_->browser); + fl_hide_object(dialog_->button_update); + fl_hide_object(dialog_->sort); - setSize( minw_hb, 280 ); + setSize(minw_hb, 280); - fl_activate_object( dialog_->type ); - fl_set_object_lcol( dialog_->type, FL_BLACK ); - fl_activate_object( dialog_->button_go ); - fl_set_object_lcol( dialog_->button_go, FL_BLACK ); - fl_set_object_lcol( dialog_->ref, FL_BLACK ); + fl_activate_object(dialog_->type); + fl_set_object_lcol(dialog_->type, FL_BLACK); + fl_activate_object(dialog_->button_go); + fl_set_object_lcol(dialog_->button_go, FL_BLACK); + fl_set_object_lcol(dialog_->ref, FL_BLACK); bc_.invalid(); } -void FormRef::setSize( int w, int dx ) const +void FormRef::setSize(int w, int dx) const { static int x1 = dialog_->name->x; static int y1 = dialog_->name->y; @@ -205,26 +207,26 @@ void FormRef::setSize( int w, int dx ) const if (form()->w != w) { minw_ = w; - fl_set_form_size( form(), minw_, minh_ ); + fl_set_form_size(form(), minw_, minh_); } else return; - fl_set_object_position( dialog_->name, x1-dx, y1 ); - fl_set_object_position( dialog_->ref, x2-dx, y2 ); - fl_set_object_position( dialog_->type, x3-dx, y3 ); - fl_set_object_position( dialog_->button_go, x4-dx, y4 ); - fl_set_object_position( dialog_->button_ok, x5-dx, y5 ); - fl_set_object_position( dialog_->button_cancel, x6-dx, y6 ); + fl_set_object_position(dialog_->name, x1 - dx, y1); + fl_set_object_position(dialog_->ref, x2 - dx, y2); + fl_set_object_position(dialog_->type, x3 - dx, y3); + fl_set_object_position(dialog_->button_go, x4 - dx, y4); + fl_set_object_position(dialog_->button_ok, x5 - dx, y5); + fl_set_object_position(dialog_->button_cancel, x6 - dx, y6); // These two must be reset apparently // Name is irrelevant to LaTeX documents if (lv_->buffer()->isLatex()) { - fl_deactivate_object( dialog_->name ); - fl_set_object_lcol( dialog_->name, FL_INACTIVE ); + fl_deactivate_object(dialog_->name); + fl_set_object_lcol(dialog_->name, FL_INACTIVE); } // Can change reference only through browser - fl_deactivate_object( dialog_->ref ); + fl_deactivate_object(dialog_->ref); } @@ -256,9 +258,9 @@ void FormRef::apply() // Seems okay except that goref and goback shouldn't // affect the status of ok. #endif -bool FormRef::input( FL_OBJECT *, long data ) +bool FormRef::input(FL_OBJECT *, long data) { - bool activate( true ); + bool activate(true); switch (data) { // goto reference / go back case 1: @@ -293,31 +295,31 @@ bool FormRef::input( FL_OBJECT *, long data ) // choose browser key case 2: { - unsigned int sel = fl_get_browser( dialog_->browser ); - if (sel < 1 || sel > refs.size() ) break; + unsigned int sel = fl_get_browser(dialog_->browser); + if (sel < 1 || sel > refs.size()) break; - string s = fl_get_browser_line( dialog_->browser, sel ); - fl_set_input( dialog_->ref, s.c_str()); - params.setContents( s ); + string s = fl_get_browser_line(dialog_->browser, sel); + fl_set_input(dialog_->ref, s.c_str()); + params.setContents(s); toggle = GOBACK; lv_->getLyXFunc()->Dispatch(LFUN_REF_BACK); fl_set_object_label(dialog_->button_go, _("Goto reference")); - fl_activate_object( dialog_->type ); - fl_set_object_lcol( dialog_->type, FL_BLACK ); - fl_activate_object( dialog_->button_go ); - fl_set_object_lcol( dialog_->button_go, FL_BLACK ); - fl_set_object_lcol( dialog_->ref, FL_BLACK ); + fl_activate_object(dialog_->type); + fl_set_object_lcol(dialog_->type, FL_BLACK); + fl_activate_object(dialog_->button_go); + fl_set_object_lcol(dialog_->button_go, FL_BLACK); + fl_set_object_lcol(dialog_->ref, FL_BLACK); } break; // update or sort case 3: { - fl_freeze_form( form() ); - updateBrowser( refs ); - fl_unfreeze_form( form() ); + fl_freeze_form(form()); + updateBrowser(refs); + fl_unfreeze_form(form()); } break; @@ -325,8 +327,8 @@ bool FormRef::input( FL_OBJECT *, long data ) case 4: { Type type = static_cast( - fl_get_choice(dialog_->type) - 1 ); - if (params.getCmdName() == getName( type ) + fl_get_choice(dialog_->type) - 1); + if (params.getCmdName() == getName(type) && inset_) { activate = false; } @@ -363,7 +365,7 @@ FormRef::Type FormRef::getType() const } -string FormRef::getName( Type type ) const +string const FormRef::getName(Type type) const { string name; diff --git a/src/frontends/xforms/FormRef.h b/src/frontends/xforms/FormRef.h index 98a718a13e..b6913abd73 100644 --- a/src/frontends/xforms/FormRef.h +++ b/src/frontends/xforms/FormRef.h @@ -29,7 +29,7 @@ public: ~FormRef(); private: /// - enum Type{ + enum Type { /// REF, /// @@ -42,7 +42,7 @@ private: PRETTYREF }; /// - enum Goto{ + enum Goto { /// GOREF, /// @@ -59,7 +59,7 @@ private: /// Build the dialog virtual void build(); /// Filter the input - virtual bool input( FL_OBJECT *, long ); + virtual bool input(FL_OBJECT *, long); /// Update dialog before showing it virtual void update(); /// Not used but must be instantiated @@ -68,19 +68,19 @@ private: virtual FL_FORM * form() const; /// - void updateBrowser( std::vector ) const; + void updateBrowser(std::vector const &) const; /// void showBrowser() const; /// void hideBrowser() const; /// - void setSize( int, int ) const; + void setSize(int, int) const; /// FD_form_ref * build_ref(); /// Type getType() const; /// - string getName( Type type ) const; + string const getName(Type type) const; /// Goto toggle; diff --git a/src/frontends/xforms/FormTabular.C b/src/frontends/xforms/FormTabular.C index e8d0c27876..cb6adf37f9 100644 --- a/src/frontends/xforms/FormTabular.C +++ b/src/frontends/xforms/FormTabular.C @@ -23,7 +23,7 @@ FormTabular::FormTabular(LyXView * lv, Dialogs * d) - : FormInset( lv, d, _("Tabular Layout") ), + : FormInset(lv, d, _("Tabular Layout"), new OkCancelReadOnlyPolicy), dialog_(0), tabular_options_(0), column_options_(0), cell_options_(0), longtable_options_(0), inset_(0), actCell_(-1) @@ -48,20 +48,20 @@ FormTabular::~FormTabular() void FormTabular::redraw() { - if( form() && form()->visible ) - fl_redraw_form( form() ); + if(form() && form()->visible) + fl_redraw_form(form()); else return; FL_FORM * outer_form = fl_get_active_folder(dialog_->tabFolder); if (outer_form && outer_form->visible) - fl_redraw_form( outer_form ); + fl_redraw_form(outer_form); } FL_FORM * FormTabular::form() const { - if (dialog_ ) return dialog_->form; + if (dialog_) return dialog_->form; return 0; } @@ -73,7 +73,7 @@ void FormTabular::disconnect() } -void FormTabular::showInset( InsetTabular * inset ) +void FormTabular::showInset(InsetTabular * inset) { if (inset == 0) return; @@ -88,7 +88,7 @@ void FormTabular::showInset( InsetTabular * inset ) } -void FormTabular::updateInset( InsetTabular * inset ) +void FormTabular::updateInset(InsetTabular * inset) { if (inset == 0 || inset_ == 0) return; @@ -140,19 +140,17 @@ void FormTabular::update() if (!inset_ || !inset_->tabular) return; - LyXTabular - * tabular = inset_->tabular; + LyXTabular * tabular = inset_->tabular; int align, - cell, - column,row; + cell; char buf[12]; string pwidth, special; actCell_ = cell = inset_->GetActCell(); - column = tabular->column_of_cell(cell)+1; + int column = tabular->column_of_cell(cell)+1; fl_set_object_label(dialog_->text_warning,""); fl_activate_object(column_options_->input_special_alignment); fl_activate_object(cell_options_->input_special_multialign); @@ -160,7 +158,7 @@ void FormTabular::update() sprintf(buf,"%d",column); fl_set_input(dialog_->input_tabular_column, buf); fl_deactivate_object(dialog_->input_tabular_column); - row = tabular->row_of_cell(cell)+1; + int row = tabular->row_of_cell(cell)+1; sprintf(buf,"%d",row); fl_set_input(dialog_->input_tabular_row, buf); fl_deactivate_object(dialog_->input_tabular_row); @@ -430,18 +428,12 @@ bool FormTabular::input(FL_OBJECT * ob, long) if (!inset_) return false; - LyXTabular - * tabular = inset_->tabular; - int - cell, - s; - LyXTabular::Feature - num = LyXTabular::LAST_ACTION; - string - special, - str; + LyXTabular * tabular = inset_->tabular; + int s; + LyXTabular::Feature num = LyXTabular::LAST_ACTION; + string special;; - cell = inset_->GetActCell(); + int cell = inset_->GetActCell(); if (actCell_ != cell) { update(); fl_set_object_label(dialog_->text_warning, @@ -456,9 +448,7 @@ bool FormTabular::input(FL_OBJECT * ob, long) return false; } if (ob == column_options_->input_column_width) { - string - str; - str = fl_get_input(ob); + string str = fl_get_input(ob); if (!str.empty() && !isValidLength(str)) { fl_set_object_label(dialog_->text_warning, _("Warning: Invalid Length (valid example: 10mm)")); @@ -470,9 +460,7 @@ bool FormTabular::input(FL_OBJECT * ob, long) return true; } if (ob == cell_options_->input_mcolumn_width) { - string - str; - str = fl_get_input(ob); + string str = fl_get_input(ob); if (!str.empty() && !isValidLength(str)) { fl_set_object_label(dialog_->text_warning, _("Warning: Invalid Length (valid example: 10mm)")); @@ -483,7 +471,7 @@ bool FormTabular::input(FL_OBJECT * ob, long) update(); // update for alignment return true; } - str = fl_get_input(column_options_->input_column_width); + string str = fl_get_input(column_options_->input_column_width); if (!str.empty() && !isValidLength(str)) { fl_set_object_label( dialog_->text_warning, @@ -526,7 +514,7 @@ bool FormTabular::input(FL_OBJECT * ob, long) else if (ob == cell_options_->radio_multicolumn) num = LyXTabular::MULTICOLUMN; else if (ob == tabular_options_->radio_longtable) { - s=fl_get_button(tabular_options_->radio_longtable); + s = fl_get_button(tabular_options_->radio_longtable); if (s) { num = LyXTabular::SET_LONGTABULAR; fl_activate_object(longtable_options_->radio_lt_firsthead); @@ -567,13 +555,13 @@ bool FormTabular::input(FL_OBJECT * ob, long) FL_INACTIVE); } } else if (ob == tabular_options_->radio_rotate_tabular) { - s=fl_get_button(tabular_options_->radio_rotate_tabular); + s = fl_get_button(tabular_options_->radio_rotate_tabular); if (s) num = LyXTabular::SET_ROTATE_TABULAR; else num = LyXTabular::UNSET_ROTATE_TABULAR; } else if (ob == cell_options_->radio_rotate_cell) { - s=fl_get_button(cell_options_->radio_rotate_cell); + s = fl_get_button(cell_options_->radio_rotate_cell); if (s) num = LyXTabular::SET_ROTATE_CELL; else diff --git a/src/frontends/xforms/FormTabularCreate.C b/src/frontends/xforms/FormTabularCreate.C index 3789fb21af..0b2a0a38bd 100644 --- a/src/frontends/xforms/FormTabularCreate.C +++ b/src/frontends/xforms/FormTabularCreate.C @@ -26,7 +26,8 @@ #include "insets/insettabular.h" FormTabularCreate::FormTabularCreate(LyXView * lv, Dialogs * d) - : FormBaseBD(lv, d, _("Insert Tabular")), + : FormBaseBD(lv, d, _("Insert Tabular"), + new OkApplyCancelReadOnlyPolicy), dialog_(0) { // let the dialog be shown @@ -44,7 +45,7 @@ FormTabularCreate::~FormTabularCreate() FL_FORM * FormTabularCreate::form() const { - if (dialog_ ) return dialog_->form; + if (dialog_) return dialog_->form; return 0; } diff --git a/src/frontends/xforms/FormUrl.C b/src/frontends/xforms/FormUrl.C index 9078536b71..a610600ff8 100644 --- a/src/frontends/xforms/FormUrl.C +++ b/src/frontends/xforms/FormUrl.C @@ -26,7 +26,8 @@ #include "lyxfunc.h" FormUrl::FormUrl(LyXView * lv, Dialogs * d) - : FormCommand(lv, d, _("Url")), dialog_(0) + : FormCommand(lv, d, _("Url"), new OkCancelReadOnlyPolicy), + dialog_(0) { // let the dialog be shown // These are permanent connections so we won't bother @@ -51,7 +52,7 @@ FL_FORM * FormUrl::form() const void FormUrl::connect() { - fl_set_form_maxsize( form(), 2*minw_, minh_ ); + fl_set_form_maxsize(form(), 2 * minw_, minh_); FormCommand::connect(); } @@ -74,23 +75,23 @@ void FormUrl::update() fl_set_input(dialog_->url, params.getContents().c_str()); fl_set_input(dialog_->name, params.getOptions().c_str()); - if (params.getCmdName() == "url" ) + if (params.getCmdName() == "url") fl_set_button(dialog_->radio_html, 0); else fl_set_button(dialog_->radio_html, 1); if (lv_->buffer()->isReadonly()) { - fl_deactivate_object( dialog_->url ); - fl_deactivate_object( dialog_->name ); - fl_deactivate_object( dialog_->radio_html ); - fl_deactivate_object( dialog_->button_ok ); - fl_set_object_lcol( dialog_->button_ok, FL_INACTIVE ); + fl_deactivate_object(dialog_->url); + fl_deactivate_object(dialog_->name); + fl_deactivate_object(dialog_->radio_html); + fl_deactivate_object(dialog_->button_ok); + fl_set_object_lcol(dialog_->button_ok, FL_INACTIVE); } else { - fl_activate_object( dialog_->url ); - fl_activate_object( dialog_->name ); - fl_activate_object( dialog_->radio_html ); - fl_activate_object( dialog_->button_ok ); - fl_set_object_lcol( dialog_->button_ok, FL_BLACK ); + fl_activate_object(dialog_->url); + fl_activate_object(dialog_->name); + fl_activate_object(dialog_->radio_html); + fl_activate_object(dialog_->button_ok); + fl_set_object_lcol(dialog_->button_ok, FL_BLACK); } } diff --git a/src/layout_forms.h b/src/layout_forms.h index 5dba3e9db5..8805853cf8 100644 --- a/src/layout_forms.h +++ b/src/layout_forms.h @@ -11,9 +11,6 @@ extern "C" void PreambleOKCB(FL_OBJECT *, long); extern "C" void PreambleApplyCB(FL_OBJECT *, long); extern "C" void PreambleCancelCB(FL_OBJECT *, long); -/* Some extra funcs */ - -extern bool UpdateLayoutPreamble(); /**** Forms and Objects ****/ typedef struct { diff --git a/src/lyx_cb.C b/src/lyx_cb.C index a315355045..ea272c9716 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -17,10 +17,8 @@ #include FORMS_H_LOCATION #include "lyx.h" #include "layout_forms.h" -//#include "form1.h" #include "lyx_main.h" #include "lyx_cb.h" -//#include "insets/insetref.h" #include "insets/insetlabel.h" #include "insets/figinset.h" #include "lyxfunc.h" @@ -30,19 +28,14 @@ #include "filedlg.h" #include "lyx_gui_misc.h" #include "LyXView.h" -//#include "BufferView.h" #include "lastfiles.h" #include "bufferview_funcs.h" #include "support/FileInfo.h" #include "support/syscall.h" #include "support/filetools.h" #include "support/path.h" -//#include "support/lyxlib.h" -//#include "lyxserver.h" #include "lyxrc.h" #include "lyxtext.h" -//#include "CutAndPaste.h" -//#include "exporter.h" using std::ifstream; using std::copy; @@ -75,8 +68,6 @@ extern bool send_fax(string const & fname, string const & sendcmd); extern void MenuSendto(); -//extern LyXServer * lyxserver; - // this should be static, but I need it in buffer.C bool quitting; // flag, that we are quitting the program extern bool finished; // all cleanup done just let it run through now. @@ -148,15 +139,6 @@ void ToggleLockedInsetCursor(int x, int y, int asc, int desc); ----------------------------------------------------------------------- */ -/* some function prototypes */ - -int RunLinuxDoc(BufferView *, int, string const &); -int RunDocBook(int, string const &); -bool MenuWrite(Buffer * buf); -bool MenuWriteAs(Buffer * buffer); -void MenuReload(Buffer * buf); -void MenuLayoutSave(); - void ShowMessage(Buffer const * buf, string const & msg1, @@ -180,16 +162,16 @@ void ShowMessage(Buffer const * buf, // // should be moved to lyxfunc.C -bool MenuWrite(Buffer * buffer) +bool MenuWrite(BufferView * bv, Buffer * buffer) { XFlush(fl_get_display()); if (!buffer->save()) { - string fname = buffer->fileName(); - string s = MakeAbsPath(fname); + string const fname = buffer->fileName(); + string const s = MakeAbsPath(fname); if (AskQuestion(_("Save failed. Rename and try again?"), MakeDisplayPath(s, 50), _("(If not, document is not saved.)"))) { - return MenuWriteAs(buffer); + return MenuWriteAs(bv, buffer); } return false; } else { @@ -201,7 +183,7 @@ bool MenuWrite(Buffer * buffer) // should be moved to BufferView.C // Half of this func should be in LyXView, the rest in BufferView. -bool MenuWriteAs(Buffer * buffer) +bool MenuWriteAs(BufferView * bv, Buffer * buffer) { // Why do we require BufferView::text to be able to write a // document? I see no point in that. (Lgb) @@ -211,7 +193,7 @@ bool MenuWriteAs(Buffer * buffer) string oldname = fname; LyXFileDlg fileDlg; - ProhibitInput(current_view); + ProhibitInput(bv); fileDlg.SetButton(0, _("Documents"), lyxrc.document_path); fileDlg.SetButton(1, _("Templates"), lyxrc.template_path); @@ -223,7 +205,7 @@ bool MenuWriteAs(Buffer * buffer) "*.lyx", OnlyFilename(fname)); - AllowInput(current_view); + AllowInput(bv); if (fname.empty()) return false; @@ -259,7 +241,7 @@ bool MenuWriteAs(Buffer * buffer) return false; } // Check whether the file exists else { - FileInfo myfile(s); + FileInfo const myfile(s); if (myfile.isOK() && !AskQuestion(_("Document already exists:"), MakeDisplayPath(s, 50), _("Replace file?"))) @@ -275,7 +257,7 @@ bool MenuWriteAs(Buffer * buffer) // Small bug: If the save fails, we have irreversible changed the name // of the document. // Hope this is fixed this way! (Jug) - if (!MenuWrite(buffer)) { + if (!MenuWrite(bv, buffer)) { buffer->setFileName(oldname); buffer->setUnnamed(unnamed); ShowMessage(buffer, _("Document could not be saved!"), @@ -318,6 +300,7 @@ int MenuRunChktex(Buffer * buffer) return ret; } + #if 0 void MenuFax(Buffer * buffer) { @@ -393,7 +376,7 @@ void AutoSave(BufferView * bv) // tmp_ret will be located (usually) in /tmp // will that be a problem? - pid_t pid = fork(); // If you want to debug the autosave + pid_t const pid = fork(); // If you want to debug the autosave // you should set pid to -1, and comment out the // fork. if (pid == 0 || pid == -1) { @@ -402,7 +385,7 @@ void AutoSave(BufferView * bv) // anyway. bool failed = false; - string tmp_ret = lyx::tempName(); + string const tmp_ret = lyx::tempName(); if (!tmp_ret.empty()) { bv->buffer()->writeFile(tmp_ret, 1); // assume successful write of tmp_ret @@ -530,10 +513,10 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph) } -void MenuInsertLabel(string const & arg) +void MenuInsertLabel(BufferView * bv, string const & arg) { string label(arg); - ProhibitInput(current_view); + ProhibitInput(bv); if (label.empty()) { pair result = askForText(_("Enter new label to insert:")); @@ -544,9 +527,9 @@ void MenuInsertLabel(string const & arg) if (!label.empty()) { InsetCommandParams p( "label", label ); InsetLabel * inset = new InsetLabel( p ); - current_view->insertInset( inset ); + bv->insertInset( inset ); } - AllowInput(current_view); + AllowInput(bv); } @@ -554,7 +537,7 @@ void MenuInsertLabel(string const & arg) // current_view. (Lgb) void LayoutsCB(int sel, void *, Combox *) { - string tmp = tostr(sel); + string const tmp = tostr(sel); current_view->owner()->getLyXFunc()->Dispatch(LFUN_LAYOUTNO, tmp); } @@ -579,24 +562,23 @@ void MenuLayoutCharacter() } -bool UpdateLayoutPreamble() +bool UpdateLayoutPreamble(BufferView * bv) { bool update = true; - if (!current_view->available()) + if (!bv->available()) update = false; if (update) { fl_set_input(fd_form_preamble->input_preamble, - current_view->buffer()->params.preamble.c_str()); + bv->buffer()->params.preamble.c_str()); - if (current_view->buffer()->isReadonly()) { + if (bv->buffer()->isReadonly()) { fl_deactivate_object(fd_form_preamble->input_preamble); fl_deactivate_object(fd_form_preamble->button_ok); fl_deactivate_object(fd_form_preamble->button_apply); fl_set_object_lcol(fd_form_preamble->button_ok, FL_INACTIVE); fl_set_object_lcol(fd_form_preamble->button_apply, FL_INACTIVE); - } - else { + } else { fl_activate_object(fd_form_preamble->input_preamble); fl_activate_object(fd_form_preamble->button_ok); fl_activate_object(fd_form_preamble->button_apply); @@ -614,7 +596,7 @@ void MenuLayoutPreamble() { static int ow = -1, oh; - if (UpdateLayoutPreamble()) { + if (UpdateLayoutPreamble(current_view)) { if (fd_form_preamble->form_preamble->visible) { fl_raise_form(fd_form_preamble->form_preamble); } else { @@ -633,15 +615,15 @@ void MenuLayoutPreamble() } -void MenuLayoutSave() +void MenuLayoutSave(BufferView * bv) { - if (!current_view->available()) + if (!bv->available()) return; if (AskQuestion(_("Do you want to save the current settings"), _("for Character, Document, Paper and Quotes"), _("as default for new documents?"))) - current_view->buffer()->saveParamsAsDefaults(); + bv->buffer()->saveParamsAsDefaults(); } @@ -742,7 +724,8 @@ LyXFont const UserFreeFont(BufferParams const & params) /* callbacks for form form_title */ -extern "C" void TimerCB(FL_OBJECT *, long) +extern "C" +void TimerCB(FL_OBJECT *, long) { // only if the form still exists if (lyxrc.show_banner @@ -759,7 +742,8 @@ extern "C" void TimerCB(FL_OBJECT *, long) /* callbacks for form form_character */ -extern "C" void CharacterApplyCB(FL_OBJECT *, long) +extern "C" +void CharacterApplyCB(FL_OBJECT *, long) { // we set toggleall locally here, since it should be true for // all other uses of ToggleAndShow() (JMarc) @@ -770,13 +754,15 @@ extern "C" void CharacterApplyCB(FL_OBJECT *, long) } -extern "C" void CharacterCloseCB(FL_OBJECT *, long) +extern "C" +void CharacterCloseCB(FL_OBJECT *, long) { fl_hide_form(fd_form_character->form_character); } -extern "C" void CharacterOKCB(FL_OBJECT *ob, long data) +extern "C" +void CharacterOKCB(FL_OBJECT * ob, long data) { CharacterApplyCB(ob, data); CharacterCloseCB(ob, data); @@ -785,13 +771,15 @@ extern "C" void CharacterOKCB(FL_OBJECT *ob, long data) /* callbacks for form form_preamble */ -extern "C" void PreambleCancelCB(FL_OBJECT *, long) +extern "C" +void PreambleCancelCB(FL_OBJECT *, long) { fl_hide_form(fd_form_preamble->form_preamble); } -extern "C" void PreambleApplyCB(FL_OBJECT *, long) +extern "C" +void PreambleApplyCB(FL_OBJECT *, long) { if (!current_view->available()) return; @@ -803,7 +791,8 @@ extern "C" void PreambleApplyCB(FL_OBJECT *, long) } -extern "C" void PreambleOKCB(FL_OBJECT * ob, long data) +extern "C" +void PreambleOKCB(FL_OBJECT * ob, long data) { PreambleApplyCB(ob, data); PreambleCancelCB(ob, data); diff --git a/src/lyx_cb.h b/src/lyx_cb.h index fdeef102c2..40d9de315d 100644 --- a/src/lyx_cb.h +++ b/src/lyx_cb.h @@ -6,6 +6,8 @@ #include "lyxfont.h" class BufferParams; +class BufferView; +class Combox; /// extern bool quitting; @@ -23,6 +25,39 @@ void ShowMessage(Buffer const * buf, string const & msg1, string const & msg2 = string(), string const & msg3 = string(), int delay = 6); +/// +bool MenuWrite(BufferView * bv, Buffer * buffer); +/// +bool MenuWriteAs(BufferView * bv, Buffer * buffer); +/// +int MenuRunChktex(Buffer * buffer); +/// +void QuitLyX(); +/// +void AutoSave(BufferView * bv); +/// +Buffer * NewLyxFile(string const & filename); +/// +void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph); +/// +void MenuInsertLabel(BufferView * bv, string const & arg); +/// +void LayoutsCB(int sel, void *, Combox *); +/// +void MenuLayoutCharacter(); +/// +bool UpdateLayoutPreamble(BufferView * bv); +/// +void MenuLayoutPreamble(); +/// +void MenuLayoutSave(BufferView * bv); +/// +LyXFont const UserFreeFont(BufferParams const & params); +/// +void Figure(); +/// +void Reconfigure(BufferView * bv); + #endif diff --git a/src/lyx_gui_misc.C b/src/lyx_gui_misc.C index 4f1ede6766..6606b7ae86 100644 --- a/src/lyx_gui_misc.C +++ b/src/lyx_gui_misc.C @@ -139,7 +139,7 @@ void CloseAllBufferRelatedDialogs() void updateAllVisibleBufferRelatedDialogs(bool) { if (fd_form_preamble->form_preamble->visible) { - UpdateLayoutPreamble(); + UpdateLayoutPreamble(current_view); } if (fd_latex_log->LaTeXLog->visible) { LatexLogUpdate(0,0); diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 720624e6f0..c73dd858e2 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -91,7 +91,6 @@ using std::pair; using std::endl; using std::find_if; -extern void InsertAsciiFile(BufferView *, string const &, bool); extern void math_insert_symbol(string const &); extern bool math_insert_greek(char); extern BufferList bufferlist; @@ -101,14 +100,6 @@ extern bool selection_possible; extern kb_keymap * toplevel_keymap; -extern bool MenuWrite(Buffer *); -extern bool MenuWriteAs(Buffer *); -extern int MenuRunLaTeX(Buffer *); -extern int MenuBuildProg(Buffer *); -extern int MenuRunChktex(Buffer *); -extern void MenuPrint(Buffer *); -extern void MenuSendto(); -extern void QuitLyX(); #if 0 extern void MenuFax(Buffer *); #endif @@ -118,19 +109,7 @@ extern LyXAction lyxaction; // (alkis) extern tex_accent_struct get_accent(kb_action action); -extern void AutoSave(BufferView *); -extern void MenuInsertLabel(string const &); -extern void MenuLayoutCharacter(); -extern void MenuLayoutParagraph(); -extern void MenuLayoutPreamble(); -extern void MenuLayoutSave(); - -extern Buffer * NewLyxFile(string const &); -extern void LoadLyXFile(string const &); -extern void Reconfigure(BufferView *); - extern LyXTextClass::size_type current_layout; -extern int getISOCodeFromLaTeX(char *); extern void ShowLatexLog(); @@ -773,7 +752,7 @@ string const LyXFunc::Dispatch(int ac, owner->getMiniBuffer()->Set(_("Saving document"), MakeDisplayPath(owner->buffer()->fileName()), "..."); - MenuWrite(owner->buffer()); + MenuWrite(owner->view(), owner->buffer()); //owner->getMiniBuffer()-> { // Set(_("Document saved as"), // MakeDisplayPath(owner->buffer()->fileName())); @@ -781,12 +760,12 @@ string const LyXFunc::Dispatch(int ac, //owner->getMiniBuffer()->Set(_("Save failed!")); //} } else { - MenuWriteAs(owner->buffer()); + MenuWriteAs(owner->view(), owner->buffer()); } break; case LFUN_MENUWRITEAS: - MenuWriteAs(owner->buffer()); + MenuWriteAs(owner->view(), owner->buffer()); break; case LFUN_MENURELOAD: @@ -1287,7 +1266,7 @@ string const LyXFunc::Dispatch(int ac, break; case LFUN_LAYOUT_SAVE_DEFAULT: - MenuLayoutSave(); + MenuLayoutSave(owner->view()); break; case LFUN_DROP_LAYOUTS_CHOICE: @@ -1375,7 +1354,7 @@ string const LyXFunc::Dispatch(int ac, break; case LFUN_INSERT_LABEL: - MenuInsertLabel(argument); + MenuInsertLabel(owner->view(), argument); break; case LFUN_REF_INSERT: @@ -2506,8 +2485,8 @@ string const LyXFunc::Dispatch(int ac, if (s.empty()) setErrorMessage(N_("Missing argument")); else { - string s1 = token(s, ' ', 1); - int na = s1.empty() ? 0 : lyx::atoi(s1); + string const s1 = token(s, ' ', 1); + int const na = s1.empty() ? 0 : lyx::atoi(s1); owner->view()-> open_new_inset(new InsetFormulaMacro(token(s, ' ', 0), na)); } @@ -2571,7 +2550,7 @@ string const LyXFunc::Dispatch(int ac, // ale970405+lasgoutt970425 // The argument can be up to two tokens separated // by a space. The first one is the bibstyle. - string db = token(argument, ' ', 0); + string const db = token(argument, ' ', 0); string bibstyle = token(argument, ' ', 1); if (bibstyle.empty()) bibstyle = "plain"; @@ -2644,13 +2623,13 @@ string const LyXFunc::Dispatch(int ac, case LFUN_INDEX_INSERT: { InsetCommandParams p; - p.setFromString( argument ); - InsetIndex * inset = new InsetIndex( p ); + p.setFromString(argument); + InsetIndex * inset = new InsetIndex(p); if (!owner->view()->insertInset(inset)) delete inset; else - owner->view()->updateInset( inset, true ); + owner->view()->updateInset(inset, true); } break; @@ -2660,24 +2639,24 @@ string const LyXFunc::Dispatch(int ac, LyXParagraph::size_type curpos = owner->view()->text->cursor.pos() - 1; // Can't do that at the beginning of a paragraph - if (curpos < 0 ) break; + if (curpos < 0) break; - string curstring( owner->view()->text - ->cursor.par()->GetWord(curpos) ); + string const curstring(owner->view()->text + ->cursor.par()->GetWord(curpos)); - InsetCommandParams p( "index", curstring ); - InsetIndex * inset = new InsetIndex( p ); + InsetCommandParams p("index", curstring); + InsetIndex * inset = new InsetIndex(p); if (!owner->view()->insertInset(inset)) delete inset; else - owner->view()->updateInset( inset, true ); + owner->view()->updateInset(inset, true); } break; case LFUN_INDEX_PRINT: { - InsetCommandParams p( "printindex" ); + InsetCommandParams p("printindex"); Inset * inset = new InsetPrintIndex(p); if (!owner->view()->insertInset(inset, "Standard", true)) delete inset; @@ -2707,7 +2686,7 @@ string const LyXFunc::Dispatch(int ac, case LFUN_CHILDOPEN: { - string filename = + string const filename = MakeAbsPath(argument, OnlyPath(owner->buffer()->fileName())); setMessage(N_("Opening child document ") + @@ -2727,21 +2706,21 @@ string const LyXFunc::Dispatch(int ac, case LFUN_INSERTFOOTNOTE: { LyXParagraph::footnote_kind kind; - if (argument == "footnote") - { kind = LyXParagraph::FOOTNOTE; } - else if (argument == "margin") - { kind = LyXParagraph::MARGIN; } - else if (argument == "figure") - { kind = LyXParagraph::FIG; } - else if (argument == "table") - { kind = LyXParagraph::TAB; } - else if (argument == "wide-fig") - { kind = LyXParagraph::WIDE_FIG; } - else if (argument == "wide-tab") - { kind = LyXParagraph::WIDE_TAB; } - else if (argument == "algorithm") - { kind = LyXParagraph::ALGORITHM; } - else { + if (argument == "footnote") { + kind = LyXParagraph::FOOTNOTE; + } else if (argument == "margin") { + kind = LyXParagraph::MARGIN; + } else if (argument == "figure") { + kind = LyXParagraph::FIG; + } else if (argument == "table") { + kind = LyXParagraph::TAB; + } else if (argument == "wide-fig") { + kind = LyXParagraph::WIDE_FIG; + } else if (argument == "wide-tab") { + kind = LyXParagraph::WIDE_TAB; + } else if (argument == "algorithm") { + kind = LyXParagraph::ALGORITHM; + } else { setErrorMessage(N_("Unknown kind of footnote")); break; } @@ -2773,7 +2752,7 @@ string const LyXFunc::Dispatch(int ac, case LFUN_SELFINSERT: { - LyXFont old_font(owner->view()->text->real_current_font); + LyXFont const old_font(owner->view()->text->real_current_font); for (string::size_type i = 0; i < argument.length(); ++i) { owner->view()->text->InsertChar(owner->view(), argument[i]); // This needs to be in the loop, or else we @@ -2815,7 +2794,8 @@ string const LyXFunc::Dispatch(int ac, else arg = lyxrc.date_insert_format; char datetmp[32]; - int datetmp_len = ::strftime(datetmp, 32, arg.c_str(), now_tm); + int const datetmp_len = + ::strftime(datetmp, 32, arg.c_str(), now_tm); for (int i = 0; i < datetmp_len; i++) { owner->view()->text->InsertChar(owner->view(), datetmp[i]); owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); @@ -2856,8 +2836,8 @@ string const LyXFunc::Dispatch(int ac, case LFUN_SET_COLOR: { - string lyx_name, x11_name; - x11_name = split(argument, lyx_name, ' '); + string lyx_name; + string const x11_name = split(argument, lyx_name, ' '); if (lyx_name.empty() || x11_name.empty()) { LyXBell(); setErrorMessage(N_("Syntax: set-color " @@ -2866,11 +2846,12 @@ string const LyXFunc::Dispatch(int ac, } if (!lcolor.setColor(lyx_name, x11_name)) { - static string err1 (N_("Set-color \"")); - static string err2 (N_("\" failed - color is undefined " - "or may not be redefined")); + static string const err1 (N_("Set-color \"")); + static string const err2 ( + N_("\" failed - color is undefined " + "or may not be redefined")); LyXBell(); - setErrorMessage(err1 + lyx_name + err2); + setErrorMessage(_(err1) + lyx_name + _(err2)); break; } lyxColorHandler->updateColor(lcolor.getFromLyXName(lyx_name)); @@ -2908,7 +2889,7 @@ string const LyXFunc::Dispatch(int ac, } owner->view()->beforeChange(); - LyXFont old_font(owner->view()->text->real_current_font); + LyXFont const old_font(owner->view()->text->real_current_font); for (string::size_type i = 0; i < argument.length(); ++i) { if (greek_kb_flag) { @@ -2945,11 +2926,12 @@ string const LyXFunc::Dispatch(int ac, } // end of switch exit_with_message: - string res = getMessage(); + string const res = getMessage(); if (res.empty()) { if (!commandshortcut.empty()) { - string newbuf = owner->getMiniBuffer()->GetText(); + string const newbuf = + owner->getMiniBuffer()->GetText(); if (newbuf != commandshortcut) { owner->getMiniBuffer()->Set(newbuf + " " + @@ -2980,7 +2962,7 @@ void LyXFunc::MenuNew(bool fromTemplate) LyXFileDlg fileDlg; if (owner->view()->available()) { - string trypath = owner->buffer()->filepath; + string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. if (IsDirWriteable(trypath) == 1) initpath = trypath; @@ -2988,7 +2970,7 @@ void LyXFunc::MenuNew(bool fromTemplate) static int newfile_number = 0; string s; - + if (lyxrc.new_ask_filename) { ProhibitInput(owner->view()); fileDlg.SetButton(0, _("Documents"), lyxrc.document_path); @@ -3065,9 +3047,9 @@ void LyXFunc::MenuNew(bool fromTemplate) string templname; if (fromTemplate) { ProhibitInput(owner->view()); - string fname = fileDlg.Select(_("Choose template"), - lyxrc.template_path, - "*.lyx"); + string const fname = fileDlg.Select(_("Choose template"), + lyxrc.template_path, + "*.lyx"); AllowInput(owner->view()); if (fname.empty()) return; templname = fname; @@ -3085,7 +3067,7 @@ void LyXFunc::MenuOpen() LyXFileDlg fileDlg; if (owner->view()->available()) { - string trypath = owner->buffer()->filepath; + string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. if (IsDirWriteable(trypath) == 1) initpath = trypath; @@ -3127,6 +3109,7 @@ void LyXFunc::MenuOpen() } } + // checks for running without gui are missing. void LyXFunc::doImport(string const & argument) { @@ -3140,7 +3123,7 @@ void LyXFunc::doImport(string const & argument) LyXFileDlg fileDlg; if (owner->view()->available()) { - string trypath = owner->buffer()->filepath; + string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. if (IsDirWriteable(trypath) == 1) initpath = trypath; @@ -3151,9 +3134,9 @@ void LyXFunc::doImport(string const & argument) fileDlg.SetButton(0, _("Documents"), lyxrc.document_path); fileDlg.SetButton(1, _("Examples"), AddPath(system_lyxdir, "examples")); - string text = _("Select ") + formats.PrettyName(format) + string const text = _("Select ") + formats.PrettyName(format) + _(" file to import"); - string extension = "*." + formats.Extension(format); + string const extension = "*." + formats.Extension(format); filename = fileDlg.Select(text, initpath, extension); AllowInput(owner->view()); @@ -3169,7 +3152,7 @@ void LyXFunc::doImport(string const & argument) // get absolute path of file filename = MakeAbsPath(filename); - string lyxfile = ChangeExtension(filename, ".lyx"); + string const lyxfile = ChangeExtension(filename, ".lyx"); // Check if the document already is open if (bufferlist.exists(lyxfile)) { @@ -3193,7 +3176,7 @@ void LyXFunc::doImport(string const & argument) } // Check if a LyX document by the same root exists in filesystem - FileInfo f(lyxfile, true); + FileInfo const f(lyxfile, true); if (f.exist() && !AskQuestion(_("A document by the name"), MakeDisplayPath(lyxfile), _("already exists. Overwrite?"))) { @@ -3216,7 +3199,7 @@ void LyXFunc::MenuInsertLyXFile(string const & filen) LyXFileDlg fileDlg; if (owner->view()->available()) { - string trypath = owner->buffer()->filepath; + string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. if (IsDirWriteable(trypath) == 1) initpath = trypath; @@ -3247,7 +3230,7 @@ void LyXFunc::MenuInsertLyXFile(string const & filen) // Inserts document owner->getMiniBuffer()->Set(_("Inserting document"), MakeDisplayPath(filename), "..."); - bool res = owner->view()->insertLyXFile(filename); + bool const res = owner->view()->insertLyXFile(filename); if (res) { owner->getMiniBuffer()->Set(_("Document"), MakeDisplayPath(filename), @@ -3261,7 +3244,7 @@ void LyXFunc::MenuInsertLyXFile(string const & filen) void LyXFunc::reloadBuffer() { - string fn = owner->buffer()->fileName(); + string const fn = owner->buffer()->fileName(); if (bufferlist.close(owner->buffer())) owner->view()->buffer(bufferlist.loadLyXFile(fn)); } @@ -3275,8 +3258,7 @@ void LyXFunc::CloseBuffer() // set variables that don't exist // since there's no current buffer owner->getDialogs()->hideBufferDependent(); - } - else { + } else { owner->view()->buffer(bufferlist.first()); } } diff --git a/src/support/filetools.C b/src/support/filetools.C index 6e91bf695f..0c5393e518 100644 --- a/src/support/filetools.C +++ b/src/support/filetools.C @@ -120,39 +120,6 @@ string const QuoteName(string const & name) } -#if 0 -// Returns an unique name to be used as a temporary file. -string const TmpFileName(string const & dir, string const & mask) -{// With all these temporary variables, it should be safe enough :-) (JMarc) - string tmpdir; - if (dir.empty()) - tmpdir = system_tempdir; - else - tmpdir = dir; - string tmpfl(AddName(tmpdir, mask)); - - // find a uniq postfix for the filename... - // using the pid, and... - tmpfl += tostr(getpid()); - // a short string... - string ret; - FileInfo fnfo; - for (int a = 'a'; a <= 'z'; ++a) - for (int b = 'a'; b <= 'z'; ++b) - for (int c = 'a'; c <= 'z'; ++c) { - // if this is not enough I have no idea what - // to do. - ret = tmpfl + char(a) + char(b) + char(c); - // check if the file exist - if (!fnfo.newFile(ret).exist()) - return ret; - } - lyxerr << "Not able to find a uniq tmpfile name." << endl; - return string(); -} -#endif - - // Is a file readable ? bool IsFileReadable (string const & path) { @@ -238,73 +205,44 @@ string const FileOpenSearch (string const & path, string const & name, /// Returns a vector of all files in directory dir having extension ext. -vector const DirList( string const & dir, string const & ext) +vector const DirList(string const & dir, string const & ext) { - // What what what???? - // where you tinking when you implemented this? -#if 0 - string lsCommand = "ls " + dir; - if (!ext.empty()) { - string::size_type sz = lsCommand.size(); - if (lsCommand[sz - 1] != '/') - lsCommand += '/'; - lsCommand += '*'; - if (ext[0] != '.') - lsCommand += '.'; - lsCommand += ext; - } - string tmpfile = system_tempdir + "/dirlist"; - lsCommand += " > " + tmpfile; - - Systemcalls(Systemcalls::System, lsCommand); - - string contents = GetFileContents(tmpfile); - string rmCommand = "rm " + tmpfile; - Systemcalls(Systemcalls::System, rmCommand); - - string tmp = strip(contents); - vector dirlist; - - while (!tmp.empty()) { - string file; - tmp = frontStrip(split(tmp, file, '\n')); - dirlist.push_back( file ); - } - return dirlist; -#else // This is a non-error checking C/system implementation - // of the above. string extension(ext); if (extension[0] != '.') - // If I do not use the explicit cast below, compaq cxx - // is not able to guess between - // insert(size_type, size_type, value_type) - // and - // insert(iterator, size_type, value_type) - extension.insert(string::size_type(0), 1u, '.'); + extension.insert(0, "."); vector dirlist; DIR * dirp = ::opendir(dir.c_str()); dirent * dire; while ((dire = ::readdir(dirp))) { - string fil = dire->d_name; + string const fil = dire->d_name; if (prefixIs(fil, extension)) { dirlist.push_back(fil); } } ::closedir(dirp); return dirlist; + /* I would have prefered to take a vector& as parameter so + that we could avoid the copy of the vector when returning. + Then we would use: + dirlist.swap(argvec); + to avoid the copy. (Lgb) + */ /* A C++ implementaion will look like this: - if (ext[0] != '.') ext.insert(0u, 1u, '.'); + string extension(ext); + if (extension[0] != '.') extension.insert(0, "."); + vector dirlist; directory_iterator dit("dir"); while (dit != directory_iterator()) { string fil = (*dit).filename; - if (prefixIs(fil, ext)) { + if (prefixIs(fil, extension)) { dirlist.push_back(fil); } ++dit; } + dirlist.swap(argvec); + return; */ -#endif } @@ -498,9 +436,9 @@ int DeleteAllFilesInDir (string const & path) static string const CreateTmpDir(string const & tempdir, string const & mask) { -#warning Possibly buggy (Lgb) - lyxerr << "CreateTmpDir: tempdir=`" << tempdir << "'" << endl; - lyxerr << "CreateTmpDir: mask=`" << mask << "'" << endl; + lyxerr[Debug::FILES] + << "CreateTmpDir: tempdir=`" << tempdir << "'\n" + << "CreateTmpDir: mask=`" << mask << "'" << endl; string const tmpfl(lyx::tempName(tempdir, mask)); // lyx::tempName actually creates a file to make sure that it @@ -567,7 +505,7 @@ string const CreateLyXTmpDir(string const & deflt) } -int DestroyLyXTmpDir (string const & tmpdir) +int DestroyLyXTmpDir(string const & tmpdir) { return DestroyTmpDir (tmpdir, false); // Why false? } @@ -592,30 +530,6 @@ bool createDirectory(string const & path, int permission) } -#if 0 -// Returns current working directory -string const GetCWD () -{ - int n = 256; // Assume path is less than 256 chars - char * err; - char * tbuf = new char[n]; - - // Safe. Hopefully all getcwds behave this way! - while (((err = lyx::getcwd(tbuf, n)) == 0) && (errno == ERANGE)) { - // Buffer too small, double the buffersize and try again - delete[] tbuf; - n = 2 * n; - tbuf = new char[n]; - } - - string result; - if (err) result = tbuf; - delete[] tbuf; - return result; -} -#endif - - // Strip filename from path name string const OnlyPath(string const & Filename) { @@ -962,8 +876,8 @@ string const MakeRelPath(string const & abspath0, string const & basepath0) // different, then the absolute path will be used as relative path. { // This is a hack. It should probaly be done in another way. Lgb. - string abspath = CleanupPath(abspath0); - string basepath = CleanupPath(basepath0); + string const abspath = CleanupPath(abspath0); + string const basepath = CleanupPath(basepath0); if (abspath.empty()) return ""; @@ -976,8 +890,8 @@ string const MakeRelPath(string const & abspath0, string const & basepath0) // Go back to last / if (i < abslen && i < baselen - || (i(c); c = fgetc(inf); } - int pret = pclose(inf); + int const pret = pclose(inf); return make_pair(pret, ret); } @@ -1216,7 +1128,7 @@ void removeAutosaveFile(string const & filename) a += '#'; a += OnlyFilename(filename); a += '#'; - FileInfo fileinfo(a); + FileInfo const fileinfo(a); if (fileinfo.exist()) { if (lyx::unlink(a) != 0) { WriteFSAlert(_("Could not delete auto-save file!"), a); diff --git a/src/support/filetools.h b/src/support/filetools.h index 354393f4fa..b2df54ecfc 100644 --- a/src/support/filetools.h +++ b/src/support/filetools.h @@ -124,16 +124,6 @@ string const MakeLatexName(string const & file); /// Put the name in quotes suitable for the current shell string const QuoteName(string const & file); -#if 0 -/** Returns an unique name to be used as a temporary file. If given, - 'mask' should the prefix to the temporary file, the rest of the - temporary filename will be made from the pid and three letters. - */ -string const -TmpFileName(string const & dir = string(), - string const & mask = "lyx_tmp"); -#endif - /// Is a filename/path absolute? bool AbsolutePath(string const & path); @@ -156,11 +146,6 @@ string const GetExtension(string const & name); /// Create absolute path. If impossible, don't do anything string const ExpandPath(string const & path); -#if 0 -/// gets current working directory -string const GetCWD(); -#endif - /** Convert relative path into absolute path based on a basepath. If relpath is absolute, just use that. If basepath doesn't exist use CWD. diff --git a/src/support/tempname.C b/src/support/tempname.C index 98adcd0a31..8139a32b63 100644 --- a/src/support/tempname.C +++ b/src/support/tempname.C @@ -1,14 +1,12 @@ #include -#include "LString.h" - #include - #include -#include "lyxlib.h" +#include "LString.h" +#include "support/lyxlib.h" +#include "support/filetools.h" #include "debug.h" -#include "filetools.h" using std::endl; @@ -16,35 +14,29 @@ extern string system_tempdir; string const lyx::tempName(string const & dir, string const & mask) { -#if 0 - // the tmpnam version... - char const * const tmp = ::tmpnam(0); - return (tmp) ? tmp : string (); -#else - string tmpdir; - if (dir.empty()) - tmpdir = system_tempdir; - else - tmpdir = dir; + string const tmpdir(dir.empty() ? system_tempdir : dir); string tmpfl(AddName(tmpdir, mask)); tmpfl += tostr(getpid()); + tmpfl += "XXXXXX"; - // the supposedly safer mkstemp version - char * tmpl = new char[256]; - tmpfl += ".XXXXXX"; - ::strcpy(tmpl, tmpfl.c_str()); - int tmpf = ::mkstemp(tmpl); + // The supposedly safe mkstemp version + char * tmpl = new char[tmpfl.length() + 1]; // + 1 for '\0' + tmpfl.copy(tmpl, string::npos); + tmpl[tmpfl.length()] = '\0'; // terminator + + int const tmpf = ::mkstemp(tmpl); if (tmpf != -1) { string const t(tmpl); ::close(tmpf); delete [] tmpl; - lyxerr << "Temporary file `" << t << "' created." << endl; + lyxerr[Debug::FILES] << "Temporary file `" << t + << "' created." << endl; return t; } else { - lyxerr << "LyX Error: Unable to create temporary file." - << endl; + lyxerr[Debug::FILES] + << "LyX Error: Unable to create temporary file." + << endl; delete [] tmpl; return string(); } -#endif }