// -*- C++ -*-
+/**
+ * \file xforms_helpers.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS
+ */
#ifndef XFORMSHELPERS_H
#define XFORMSHELPERS_H
-#ifdef __GNUG_
+#ifdef __GNUG__
#pragma interface
#endif
-#include FORMS_H_LOCATION
-
+#include "forms_fwd.h"
+
#include "Color.h"
#include "LString.h"
-
+
+#include <algorithm>
#include <vector>
class LyXLength;
// what we always need for lengths
string const choice_Length_All =
- "cm|mm|in|%%|c%%|p%%|l%%|ex|em|pt|sp|bp|dd|pc|cc|mu";
+ "cm|mm|in|text%%|col%%|page%%|line%%|ex|em|pt|sp|bp|dd|pc|cc|mu";
string const choice_Length_WithUnit =
- "cm|mm|in|ex|em|pt|sp|bp|dd|pc|cc|mu"; // all with a Unit
+ "cm|mm|in|ex|em|pt|sp|bp|dd|pc|cc|mu"; // all with a Unit
-/// Extract shortcut from <ident>|<shortcut> string
-char const * flyx_shortcut_extract(char const * sc);
-/// Shortcut for flyx_shortcut_extract
-#define scex flyx_shortcut_extract
-
-/// Extract shortcut from <ident>|<shortcut> string
-char const * flyx_ident_extract(char const * sc);
-/// Shortcut for flyx_ident_extract
-#define idex flyx_ident_extract
+/// return the (in)active state of the object
+bool isActive(FL_OBJECT * ob);
/// Set an FL_OBJECT to activated or deactivated
void setEnabled(FL_OBJECT *, bool enable);
/// Take a string and add breaks so that it fits into a desired label width, w
string formatted(string const &label, int w,
- int = FL_NORMAL_SIZE, int = FL_NORMAL_STYLE);
-
-/// Given an fl_choice, create a vector of its entries
-std::vector<string> const getVectorFromChoice(FL_OBJECT *);
-
-/// Given an fl_browser, create a vector of its entries
-std::vector<string> const getVectorFromBrowser(FL_OBJECT *);
+ int = 12 /*FL_NORMAL_SIZE*/, int = 0 /*FL_NORMAL_STYLE*/);
-/// Given an fl_input, return its contents.
-string const getStringFromInput(FL_OBJECT * ob);
+/// Given an fl_choice or an fl_browser, create a vector of its entries
+std::vector<string> const getVector(FL_OBJECT *);
-/** Given an fl_browser, return the contents of the currently
- highlighted line.
-*/
-/** Given an fl_browser, return the contents of line
- (xforms numbering convention; starts at 1).
-*/
-string const getStringFromBrowser(FL_OBJECT * ob, int line);
-/** Given an fl_browser, return the contents of the currently
- highlighted line.
-*/
-string const getSelectedStringFromBrowser(FL_OBJECT * ob);
+/** Given an fl_input, an fl_choice or an fl_browser, return an entry
+ \c num is the position for the string, where 0 means "current item"
+ */
+string const getString(FL_OBJECT * ob, int num = 0);
/// Given input and choice widgets, create a string such as "1cm"
string getLengthFromWidgets(FL_OBJECT * input, FL_OBJECT * choice);
LyXLength const & len,
string const & default_unit);
+
+/** Return the position of val in the vector if found.
+ If not found, return 0.
+ */
+template<class A>
+typename std::vector<A>::size_type
+findPos(std::vector<A> const & vec, A const & val)
+{
+ typename std::vector<A>::const_iterator it =
+ std::find(vec.begin(), vec.end(), val);
+ if (it == vec.end())
+ return 0;
+ return std::distance(vec.begin(), it);
+}
+
+/// Called from Preferences when the cursor color is changed.
+void setCursorColor(int color);
+
+
/// struct holding xform-specific colors
struct XformsColor : public NamedColor {
int colorID;