/**
* \file xforms_helpers.C
- * Copyright 2000-2002 The LyX Team.
- * See the file COPYING.
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * \author Angus Leeming <leeming@lyx.org>
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS
*/
#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include "xforms_helpers.h"
#include "support/filetools.h"
#include "support/lstrings.h" // frontStrip, strip
-#include <algorithm>
#include <fstream>
-#include <vector>
+
#include FORMS_H_LOCATION
using std::ofstream;
using std::pair;
using std::vector;
+using std::make_pair;
+
+bool isActive(FL_OBJECT * ob)
+{
+ return ob && ob->active > 0;
+}
+
+std::pair<string, string> parse_shortcut(string const & str)
+{
+ string::size_type i = str.find_first_of("&");
+ if (i == string::npos || i == str.length() - 1)
+ return make_pair(str, string());
+
+ // FIXME: handle &&
+
+ string::value_type c = str[i + 1];
+ return make_pair(str.substr(0, i) + str.substr(i + 1),
+ string("#") + c);
+}
+
+
+// A wrapper for the xforms routine, but this one accepts uint args
+unsigned long fl_getmcolor(int i,
+ unsigned int * r, unsigned int * g, unsigned int * b)
+{
+ int r2, g2, b2;
+ unsigned long ret_val = ::fl_getmcolor(i, &r2, &g2, &b2);
+ *r = r2;
+ *g = g2;
+ *b = b2;
+ return ret_val;
+}
+
// Set an FL_OBJECT to activated or deactivated
void setEnabled(FL_OBJECT * ob, bool enable)
{
if (enable) {
fl_activate_object(ob);
- fl_set_object_lcol(ob, FL_BLACK);
+ fl_set_object_lcol(ob, FL_LCOL);
} else {
fl_deactivate_object(ob);
fl_set_object_lcol(ob, FL_INACTIVE);
///
string const getString(FL_OBJECT * ob, int line)
{
- char const * tmp = 0;
+ // Negative line value does not make sense.
+ lyx::Assert(line >= 0);
+ char const * tmp = 0;
switch (ob->objclass) {
case FL_INPUT:
- lyx::Assert(line == -1);
tmp = fl_get_input(ob);
break;
+
case FL_BROWSER:
- if (line == -1)
+ if (line == 0)
line = fl_get_browser(ob);
if (line >= 1 && line <= fl_get_browser_maxline(ob))
break;
case FL_CHOICE:
- if (line == -1)
+ if (line == 0)
line = fl_get_choice(ob);
if (line >= 1 && line <= fl_get_choice_maxitems(ob))
lyx::Assert(0);
}
- return (tmp) ? trim(tmp) : string();
+ return tmp ? trim(tmp) : string();
}
string getLengthFromWidgets(FL_OBJECT * input, FL_OBJECT * choice)
if (length.empty())
return string();
- //don't return unit-from-choice if the input(field) contains a unit
+ // don't return unit-from-choice if the input(field) contains a unit
if (isValidGlueLength(length))
return length;
fl_set_input(input, str.c_str());
// we assume that "default_unit" is in the choice as "we"
// have control over that!
- // No need to check for it's precence in the choice, therefore.
+ // No need to check for its presence in the choice, therefore.
fl_set_choice_text(choice, default_unit.c_str());
} else {
updateWidgetsFromLength(input, choice,
lyx::Assert(input && input->objclass == FL_INPUT &&
choice && choice->objclass == FL_CHOICE);
- if (len.zero()) {
+ if (len.empty()) {
fl_set_input(input, "");
fl_set_choice_text(choice, default_unit.c_str());
} else {
for(;;) {
string::size_type const nxtpos1 = sin.find(' ', curpos);
string::size_type const nxtpos2 = sin.find('\n', curpos);
- string::size_type const nxtpos = std::min(nxtpos1, nxtpos1);
+ string::size_type const nxtpos = std::min(nxtpos1, nxtpos2);
string const word = nxtpos == string::npos ?
sin.substr(curpos) : sin.substr(curpos, nxtpos-curpos);
if (!os)
return false;
- os << "### This file is part of\n"
- << "### ========================================================\n"
- << "### LyX, The Document Processor\n"
- << "###\n"
- << "### Copyright 1995 Matthias Ettrich\n"
- << "### Copyright 1995-2002 The LyX Team.\n"
- << "###\n"
- << "### ========================================================\n"
- << "\n"
- << "# This file is written by LyX, if you want to make your own\n"
- << "# modifications you should do them from inside LyX and save\n"
- << "\n";
+ os << "###"
+ << "### file " << filename << "\n\n"
+ << "### This file is written by LyX, if you want to make your own\n"
+ << "### modifications you should do them from inside LyX and save\n"
+ << '\n';
for (int i = 0; i < xformCount; ++i) {
string const tag = xformTags[i].tag;
fl_getmcolor(colorID, &color.r, &color.g, &color.b);
- os << tag << " "
- << color.r << " " << color.g << " " << color.b << "\n";
+ os << tag << ' '
+ << color.r << ' ' << color.g << ' ' << color.b << '\n';
}
return true;