* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* This file is Copyright 1996-1998
* Lars Gullik Bjønnes
#endif
#include "Toolbar_pimpl.h"
-#include "lyxfunc.h"
#include "debug.h"
-#include "LyXView.h"
+#include "XFormsView.h"
+#include "lyxfunc.h"
+#include "func_status.h"
#include "BufferView.h"
#include "buffer.h"
#include "LyXAction.h"
+#include "MathsSymbols.h"
#include "support/filetools.h"
+#include "support/lstrings.h"
#include "gettext.h"
using std::endl;
-// this one is not "C" because combox callbacks are really C++ %-|
-extern void LayoutsCB(int, void *);
-extern char const ** get_pixmap_from_symbol(char const * arg, int, int);
extern LyXAction lyxaction;
// some constants
Toolbar::Pimpl::toolbarItem &
-Toolbar::Pimpl::toolbarItem::operator=(const toolbarItem & ti) {
+Toolbar::Pimpl::toolbarItem::operator=(toolbarItem const & ti) {
// Are we assigning the object onto itself?
if (this == &ti)
return *this;
Toolbar::Pimpl::Pimpl(LyXView * o, int x, int y)
- : owner(o), sxpos(x), sypos(y)
+ : owner(static_cast<XFormsView *>(o)), sxpos(x), sypos(y)
{
combox = 0;
#if FL_REVISION < 89
}
+namespace {
+
#if FL_REVISION < 89
// timer-cb for bubble-help (Matthias)
-static
void BubbleTimerCB(FL_OBJECT *, long data)
{
FL_OBJECT * ob = reinterpret_cast<FL_OBJECT*>(data);
// The trick we use to get the help text is to read the
// argument of the callback that has been registered for
// ToolBarCB. (JMarc)
- string help = lyxaction.helpText(ob->argument);
+ string help = _(lyxaction.helpText(ob->argument));
fl_show_oneliner(help.c_str(), ob->form->x + ob->x,
ob->form->y + ob->y + ob->h);
}
// post_handler for bubble-help (Matthias)
-static
int BubblePost(FL_OBJECT *ob, int event,
FL_Coord /*mx*/, FL_Coord /*my*/,
- int /*key*/, void */*xev*/)
+ int /*key*/, void * /*xev*/)
{
FL_OBJECT * bubble_timer = reinterpret_cast<FL_OBJECT *>(ob->u_cdata);
// We do not test for empty help here, since this can never happen
- if(event == FL_ENTER){
+ if (event == FL_ENTER){
fl_set_object_callback(bubble_timer,
C_Toolbar_BubbleTimerCB,
reinterpret_cast<long>(ob));
fl_set_timer(bubble_timer, 1);
}
- else if(event != FL_MOTION){
+ else if (event != FL_MOTION){
fl_set_timer(bubble_timer, 0);
fl_hide_oneliner();
}
}
#endif
+} // namespace anon
+
+
+// this one is not "C" because combox callbacks are really C++ %-|
+void Toolbar::Pimpl::layoutSelectedCB(int sel, void * arg, Combox *)
+{
+ Toolbar::Pimpl * tb = reinterpret_cast<Toolbar::Pimpl *>(arg);
+
+ tb->layoutSelected(sel);
+}
+
+
+void Toolbar::Pimpl::layoutSelected(int sel)
+{
+ string const tmp = tostr(sel);
+ owner->getLyXFunc()->dispatch(LFUN_LAYOUTNO, tmp);
+}
+
void Toolbar::Pimpl::activate()
{
for (; p != end; ++p) {
if (p->icon) {
int status = owner->getLyXFunc()->getStatus(p->action);
- if (status & LyXFunc::ToggleOn) {
+ if (status & func_status::ToggleOn) {
// I'd like to use a different color
// here, but then the problem is to
// know how to use transparency with
fl_set_object_boxtype(p->icon, FL_UP_BOX);
}
- if (status & LyXFunc::Disabled) {
+ if (status & func_status::Disabled) {
// Is there a way here to specify a
// mask in order to show that the
// button is disabled? (JMarc)
LyXTextClass::const_iterator end = tc.end();
for (LyXTextClass::const_iterator cit = tc.begin();
cit != end; ++cit) {
- if ((*cit).obsoleted_by().empty())
- combox->addline(_((*cit).name().c_str()));
+ if (cit->obsoleted_by().empty())
+ combox->addline(_(cit->name()));
else
- combox->addline(("@N" + string(_((*cit).name().c_str()))).c_str());
+ combox->addline("@N" + _(cit->name()));
}
}
// we need to do this.
combox->Redraw();
}
+
void Toolbar::Pimpl::clearLayoutList()
{
if (combox) {
}
}
+
void Toolbar::Pimpl::openLayoutList()
{
if (combox)
combox->Show();
}
-static
+
+namespace {
+
void ToolbarCB(FL_OBJECT * ob, long ac)
{
- LyXView * owner = static_cast<LyXView *>(ob->u_vdata);
+ XFormsView * owner = static_cast<XFormsView *>(ob->u_vdata);
- string res = owner->getLyXFunc()->Dispatch(int(ac));
- if(!res.empty())
+ string res = owner->getLyXFunc()->dispatch(int(ac));
+ if (!res.empty())
lyxerr[Debug::GUI] << "ToolbarCB: Function returned: "
<< res << endl;
}
+} // namespace anon
+
extern "C" void C_Toolbar_ToolbarCB(FL_OBJECT * ob, long data)
{
ToolbarCB(ob, data);
}
-#if 0
-// What are we supposed to do with that??
-int Toolbar::get_toolbar_func(string const & func)
-{
- int action = lyxaction.LookupFunc(func.c_str());
- if (action == -1) {
- if (func == "separator"){
- action = TOOL_SEPARATOR;
- } else if (func == "layouts"){
- action = TOOL_LAYOUTS;
- } else action = 0;
- }
- return action;
-}
-#endif
+namespace {
-static
void setPixmap(FL_OBJECT * obj, int action, int buttonwidth, int height) {
string name, arg, xpm_name;
kb_action act;
}
if (act == LFUN_INSERT_MATH && !arg.empty()) {
- lyxerr[Debug::GUI] << "Using mathed-provided icon" << endl;
char const ** pixmap = get_pixmap_from_symbol(arg.c_str(),
buttonwidth,
height);
- fl_set_pixmapbutton_data(obj, const_cast<char **>(pixmap));
- return;
+ if (pixmap) {
+ lyxerr[Debug::GUI] << "Using mathed-provided icon"
+ << endl;
+ fl_set_pixmapbutton_data(obj,
+ const_cast<char **>(pixmap));
+ return;
+ }
}
lyxerr << "Unable to find icon `" << xpm_name << "'" << endl;
}
}
+} // namespace anon
+
+
void Toolbar::Pimpl::set(bool doingmain)
{
// we shouldn't set if we have not cleaned
ToolbarList::iterator item = toollist.begin();
ToolbarList::iterator end = toollist.end();
for (; item != end; ++item) {
- switch(item->action){
+ switch (item->action){
case ToolbarDefaults::SEPARATOR:
xpos += sepspace;
break;
if (!combox)
combox = new Combox(FL_COMBOX_DROPLIST);
combox->add(xpos, ypos, 135, height, 400);
- combox->setcallback(LayoutsCB);
+ combox->setcallback(layoutSelectedCB, this);
combox->resize(FL_RESIZE_ALL);
combox->gravity(NorthWestGravity, NorthWestGravity);
xpos += 135;
// Set the tooltip
#if FL_REVISION >= 89
- string help = lyxaction.helpText(item->action);
+ string const help(_(lyxaction.helpText(item->action)));
fl_set_object_helper(obj, help.c_str());
#else
fl_set_object_posthandler(obj, C_Toolbar_BubblePost);
lightReset();
}
+
void Toolbar::Pimpl::lightReset() {
xpos = sxpos - standardspacing;
ypos = sypos;