From 08001ad6df7ebfae5e97a7ef906dedf255bf0ee0 Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Fri, 29 Nov 2002 09:26:53 +0000 Subject: [PATCH] scex and idex now receive and return string, not char *. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5747 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/xforms/Alert_pimpl.C | 22 +++++++-------- src/frontends/xforms/ChangeLog | 11 ++++++++ src/frontends/xforms/FormFiledialog.C | 4 +-- src/frontends/xforms/FormMathsBitmap.C | 7 +++-- src/frontends/xforms/FormPreferences.C | 29 ++++++++++++-------- src/frontends/xforms/forms/fdfixc.sed | 14 ++++------ src/frontends/xforms/forms_gettext.C | 38 ++++++-------------------- src/frontends/xforms/forms_gettext.h | 10 ++++--- 8 files changed, 66 insertions(+), 69 deletions(-) diff --git a/src/frontends/xforms/Alert_pimpl.C b/src/frontends/xforms/Alert_pimpl.C index 294799c919..bcfe330569 100644 --- a/src/frontends/xforms/Alert_pimpl.C +++ b/src/frontends/xforms/Alert_pimpl.C @@ -34,29 +34,29 @@ void alert_pimpl(string const & s1, string const & s2, string const & s3) bool askQuestion_pimpl(string const & s1, string const & s2, string const & s3) { - fl_set_resource("flQuestion.yes.label", idex(_("Yes|Yy#y"))); - fl_set_resource("flQuestion.no.label", idex(_("No|Nn#n"))); + fl_set_resource("flQuestion.yes.label", idex(_("Yes|Yy#y")).c_str()); + fl_set_resource("flQuestion.no.label", idex(_("No|Nn#n")).c_str()); return fl_show_question((s1 + "\n" + s2 + "\n" + s3).c_str(), 0); } int askConfirmation_pimpl(string const & s1, string const & s2, string const & s3) { - fl_set_choices_shortcut(scex(_("Yes|Yy#y")), - scex(_("No|Nn#n")), - scex(_("Cancel|^["))); + fl_set_choices_shortcut(scex(_("Yes|Yy#y")).c_str(), + scex(_("No|Nn#n")).c_str(), + scex(_("Cancel|^[")).c_str()); return fl_show_choice(s1.c_str(), s2.c_str(), s3.c_str(), - 3, idex(_("Yes|Yy#y")), - idex(_("No|Nn#n")), - idex(_("Cancel|^[")), 3); + 3, idex(_("Yes|Yy#y")).c_str(), + idex(_("No|Nn#n")).c_str(), + idex(_("Cancel|^[")).c_str(), 3); } pair const askForText_pimpl(string const & msg, string const & dflt) { - fl_set_resource("flInput.cancel.label", idex(_("Cancel|^["))); - fl_set_resource("flInput.ok.label", idex(_("OK|#O"))); - fl_set_resource("flInput.clear.label", idex(_("Clear|#e"))); + fl_set_resource("flInput.cancel.label", idex(_("Cancel|^[")).c_str()); + fl_set_resource("flInput.ok.label", idex(_("OK|#O")).c_str()); + fl_set_resource("flInput.clear.label", idex(_("Clear|#e")).c_str()); char const * tmp = fl_show_input(msg.c_str(), dflt.c_str()); if (tmp != 0) return make_pair(true, string(tmp)); diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index cc8d75ee12..afedbb3f6c 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,14 @@ +2002-11-29 Angus Leeming + + * forms_gettext.[Ch] (scex, idex): re-written to receive and return + string not char *. The old idex function was new-ing memory and nothing + that used it was ensuring that this memory didn't leak. Now safe. + + * Alert_pimpl.C: + * FormFiledialog.C: + * FormPreferences.C: + * forms/fdfixc.sed: associated changes. + 2002-11-28 Rob Lahaye * forms/fdfixh.sed: bug fix. diff --git a/src/frontends/xforms/FormFiledialog.C b/src/frontends/xforms/FormFiledialog.C index 64ff1a5da2..e0c5732414 100644 --- a/src/frontends/xforms/FormFiledialog.C +++ b/src/frontends/xforms/FormFiledialog.C @@ -453,8 +453,8 @@ void FileDialog::Private::SetButton(int index, string const & name, } if (!name.empty()) { - fl_set_object_label(ob, idex(name.c_str())); - fl_set_button_shortcut(ob, scex(name.c_str()), 1); + fl_set_object_label(ob, idex(name).c_str()); + fl_set_button_shortcut(ob, scex(name).c_str(), 1); fl_show_object(ob); *tmp = path; } else { diff --git a/src/frontends/xforms/FormMathsBitmap.C b/src/frontends/xforms/FormMathsBitmap.C index 9b0595c46e..3aa14f1309 100644 --- a/src/frontends/xforms/FormMathsBitmap.C +++ b/src/frontends/xforms/FormMathsBitmap.C @@ -103,13 +103,14 @@ void FormMathsBitmap::build() } bitmaps_.clear(); - char const * const label = _("Close|^["); x_ = (fdui->form->w - 90) / 2; y_ = y_close + 10; + char const * const label = _("Close|^["); FL_OBJECT * button_close = - fl_add_button(FL_NORMAL_BUTTON, x_, y_, 90, 30, idex(_(label))); - fl_set_button_shortcut(button_close, scex(_(label)), 1); + fl_add_button(FL_NORMAL_BUTTON, x_, y_, 90, 30, + idex(_(label)).c_str()); + fl_set_button_shortcut(button_close, scex(_(label)).c_str(), 1); fl_set_object_lsize(button_close, FL_NORMAL_SIZE); fl_set_object_callback(button_close, C_FormBaseCancelCB, 0); diff --git a/src/frontends/xforms/FormPreferences.C b/src/frontends/xforms/FormPreferences.C index 1b613f8287..05729deb1a 100644 --- a/src/frontends/xforms/FormPreferences.C +++ b/src/frontends/xforms/FormPreferences.C @@ -1092,8 +1092,9 @@ bool FormPreferences::Converters::Browser() fl_set_input(dialog_->input_converter, c.command.c_str()); fl_set_input(dialog_->input_flags, c.flags.c_str()); - fl_set_object_label(dialog_->button_add, idex(_("Modify|#M"))); - fl_set_button_shortcut(dialog_->button_add, scex(_("Modify|#M")), 1); + fl_set_object_label(dialog_->button_add, idex(_("Modify|#M")).c_str()); + fl_set_button_shortcut(dialog_->button_add, + scex(_("Modify|#M")).c_str(), 1); setEnabled(dialog_->button_add, false); setEnabled(dialog_->button_delete, true); @@ -1123,17 +1124,19 @@ bool FormPreferences::Converters::Input() fl_freeze_form(dialog_->form); if (sel < 0) { - fl_set_object_label(dialog_->button_add, idex(_("Add|#A"))); + fl_set_object_label(dialog_->button_add, + idex(_("Add|#A")).c_str()); fl_set_button_shortcut(dialog_->button_add, - scex(_("Add|#A")), 1); + scex(_("Add|#A")).c_str(), 1); fl_deselect_browser(dialog_->browser_all); setEnabled(dialog_->button_delete, false); } else { - fl_set_object_label(dialog_->button_add, idex(_("Modify|#M"))); + fl_set_object_label(dialog_->button_add, + idex(_("Modify|#M")).c_str()); fl_set_button_shortcut(dialog_->button_add, - scex(_("Modify|#M")), 1); + scex(_("Modify|#M")).c_str(), 1); int top = max(sel-5, 0); fl_set_browser_topline(dialog_->browser_all, top); @@ -1366,8 +1369,10 @@ bool FormPreferences::Formats::Browser() fl_set_input(dialog_->input_extension, f.extension().c_str()); fl_set_input(dialog_->input_viewer, f.viewer().c_str()); - fl_set_object_label(dialog_->button_add, idex(_("Modify|#M"))); - fl_set_button_shortcut(dialog_->button_add, scex(_("Modify|#M")), 1); + fl_set_object_label(dialog_->button_add, + idex(_("Modify|#M")).c_str()); + fl_set_button_shortcut(dialog_->button_add, + scex(_("Modify|#M")).c_str(), 1); setEnabled(dialog_->button_add, false); setEnabled(dialog_->button_delete, true); @@ -1402,18 +1407,18 @@ bool FormPreferences::Formats::Input() if (sel < 0) { fl_set_object_label(dialog_->button_add, - idex(_("Add|#A"))); + idex(_("Add|#A")).c_str()); fl_set_button_shortcut(dialog_->button_add, - scex(_("Add|#A")), 1); + scex(_("Add|#A")).c_str(), 1); fl_deselect_browser(dialog_->browser_all); setEnabled(dialog_->button_delete, false); } else { fl_set_object_label(dialog_->button_add, - idex(_("Modify|#M"))); + idex(_("Modify|#M")).c_str()); fl_set_button_shortcut(dialog_->button_add, - scex(_("Modify|#M")), 1); + scex(_("Modify|#M")).c_str(), 1); int const top = max(sel-5, 0); fl_set_browser_topline(dialog_->browser_all, top); diff --git a/src/frontends/xforms/forms/fdfixc.sed b/src/frontends/xforms/forms/fdfixc.sed index 55dc43d258..49bc088025 100644 --- a/src/frontends/xforms/forms/fdfixc.sed +++ b/src/frontends/xforms/forms/fdfixc.sed @@ -80,8 +80,8 @@ s/\( fdui->form\)\(.*bgn_form.*\)/\1\2\ # For all lines containing "_shortcut" and a string containing |, -# replace the string with scex(_(string)) -/_shortcut/ s/".*[|].*"/scex(_(&))/ +# replace the string with scex(_(string)).c_str() +/_shortcut/ s/".*[|].*"/scex(_(&)).c_str()/ # For all lines containing "fl_add" and a string containing | @@ -89,12 +89,12 @@ s/\( fdui->form\)\(.*bgn_form.*\)/\1\2\ # fdui->counter_zoom = obj = fl_add_counter(...,"Zoom %|#Z"); # becomes # c_str = _("Zoom %|#Z"); -# fdui->counter_zoom = obj = fl_add_counter(...,idex(c_str)); -# fl_set_button_shortcut(obj,scex(c_str),1); +# fdui->counter_zoom = obj = fl_add_counter(...,idex(c_str).c_str()); +# fl_set_button_shortcut(obj,scex(c_str).c_str(),1); /fl_add.*".*[|].*"/s/fdui\(.*\)"\(.*\)".*/c_str = _("\2");\ - fdui\1idex(c_str));\ - fl_set_button_shortcut(obj,scex(c_str),1);/ + fdui\1idex(c_str).c_str());\ + fl_set_button_shortcut(obj,scex(c_str).c_str(),1);/ # gettext will get confused if the string contains a "%" unless the line is @@ -105,10 +105,8 @@ s/\( fdui->form\)\(.*bgn_form.*\)/\1\2\ # Someone got busy and put spaces in after commas but didn't allow for the # autogeneration of the files so their pretty formatting got lost. Not anymore. -# s/,\([^ ]\)/, \1/g # Clean up one special case where a comma appears at the end of a string # while ensuring "...", "..." isn't affected. -# s/\("[^"]+,\) \("\)/\1\2/g diff --git a/src/frontends/xforms/forms_gettext.C b/src/frontends/xforms/forms_gettext.C index fc261528eb..bb4ee1523a 100644 --- a/src/frontends/xforms/forms_gettext.C +++ b/src/frontends/xforms/forms_gettext.C @@ -14,39 +14,19 @@ #endif #include "forms_gettext.h" +#include "support/lstrings.h" -#include FORMS_H_LOCATION - -// Extract shortcut from "|" string -char const * scex(char const * sc) +// Extract shortcut from "|" string +string const scex(string const & str) { - // Find '|' in the sc and return the string after that. - register char const * sd = sc; - while (sd[0]!= 0 && sd[0] != '|') ++sd; - - if (sd[0] == '|') { - ++sd; - return sd; - } - return ""; + return split(str, '|'); } -// Extract identifier from "|" string -char const * idex(char const * sc) +// Extract identifier from "|" string +string const idex(string const & str) { - register char const * se = sc; - while (se[0]!= 0 && se[0] != '|') ++se; - - if (se[0] == 0) return sc; - - char * sb = new char[se - sc + 1]; - int index = 0; - register char const * sd = sc; - while (sd != se) { - sb[index] = sd[0]; - ++index; ++sd; - } - sb[index] = 0; - return sb; + string identifier; + split(str, identifier, '|'); + return identifier; } diff --git a/src/frontends/xforms/forms_gettext.h b/src/frontends/xforms/forms_gettext.h index 449ba1b4c5..d1ba9779d8 100644 --- a/src/frontends/xforms/forms_gettext.h +++ b/src/frontends/xforms/forms_gettext.h @@ -16,10 +16,12 @@ #pragma interface #endif -/// Extract shortcut from "|" string -char const * scex(char const *); +#include "LString.h" -/// Extract identifier from "|" string -char const * idex(char const *); +/// Extract shortcut from "|" string +string const scex(string const &); + +/// Extract identifier from "|" string +string const idex(string const &); #endif // FORMS_GETTEXT_H -- 2.39.5