lyx_mirror/src/toolbar.h

187 lines
3.4 KiB
C
Raw Normal View History

// -*- C++ -*-
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
* Copyright 1995 Matthias Ettrich
*
* This file is Copyright 1996-1999
* Lars Gullik Bj<EFBFBD>nnes
*
* ====================================================== */
#ifndef TOOLBAR_H
#define TOOLBAR_H
#ifdef __GNUG__
#pragma interface
#endif
#include FORMS_H_LOCATION
#include "lyxfunc.h"
#include "lyxlex.h"
#include "combox.h"
/** The LyX toolbar class
This class {\em is} the LyX toolbar, and is not likely to be enhanced
further until we begin the move to Qt. We will probably have to make our
own QToolBar, at least until Troll Tech makes theirs.
*/
class Toolbar {
public:
///
Toolbar(Toolbar const &, LyXView * o, int x, int y);
///
Toolbar()
{
owner = 0;
sxpos = 0;
sypos = 0;
#if FL_REVISION < 89
bubble_timer = 0;
#endif
combox = 0;
reset();
init(); // set default toolbar.
}
///
~Toolbar() {
clean();
}
///
int get_toolbar_func(string const & func);
/// The special toolbar actions
enum TOOLBARITEMS {
/// adds space between buttons in the toolbar
TOOL_SEPARATOR = -1,
/// a special combox insead of a button
TOOL_LAYOUTS = -2,
/// begin a new line of button (not working)
TOOL_NEWLINE = -3
};
///
Combox * combox;
///
void read(LyXLex &);
/// sets up the default toolbar
void init();
/// (re)sets the toolbar
void set(bool doingmain = false);
/** this is to be the entry point to the toolbar
frame, where you can change the toolbar realtime. */
void edit();
/// add a new button to the toolbar.
void add(int , bool doclean = true);
/// name of func instead of kb_action
void add(string const & , bool doclean = true);
/// invokes the n'th icon in the toolbar
void push(int);
/// activates the toolbar
void activate();
/// deactivates the toolbar
void deactivate();
///
static void ToolbarCB(FL_OBJECT *, long);
#if FL_REVISION < 89
///
static void BubbleTimerCB(FL_OBJECT *, long);
///
static int BubblePost(FL_OBJECT * ob, int event,
FL_Coord mx, FL_Coord my, int key, void * xev);
#endif
private:
///
struct toolbarItem
{
///
toolbarItem * next;
///
int action;
///
string help;
///
FL_OBJECT * icon;
///
bool IsBitmap;
///
char const ** pixmap;
///
toolbarItem() {
next = 0;
action = LFUN_NOACTION;
icon = 0;
pixmap = 0;
IsBitmap = false;
}
///
~toolbarItem(){
if (icon){
fl_delete_object(icon);
fl_free_object(icon);
}
}
};
/// a list containing all the buttons
toolbarItem * toollist;
///
LyXView * owner;
#if FL_REVISION < 89
///
FL_OBJECT * bubble_timer;
#endif
/// Starting position
int sxpos, sypos;
///
int xpos;
///
int ypos;
///
int buttonwidth;
///
int height;
///
int standardspacing;
///
int sepspace;
///
bool cleaned;
///
char const ** getPixmap(kb_action, string const & arg = string());
/// removes all toolbar buttons from the toolbar.
void clean();
/** more...
*/
void reset(){
toollist = 0;
cleaned = false;
lightReset();
}
/** more...
*/
void lightReset(){
standardspacing = 2; // the usual space between items
sepspace = 6; // extra space
xpos = sxpos - standardspacing;
ypos = sypos;
buttonwidth = 30; // the standard button width
height = 30; // the height of all items in the toolbar
}
};
#endif