1999-10-25 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
+ * INSTALL: it is now possible to compile LyX with digital C++ 6.1
+ (and presumably 6.2).
+
+ * src/{BufferView,LyXView,combox,filedlg,intl,lyxserver,lyxvc,
+ menus,minibuffer,toolbar}.{C,h}: added C_xxx wrappers around
+ remaining static member callbacks.
+
* src/lyxfunc.C (Dispatch): Use _() instead of N_() fot minibuffer
messages.
will be solved if you use --with-included-gettext when configuring
LyX.
+ o It is possible to compile lyx with Digital Unix cxx compiler
+ version 6.1 (and presumably compaq C++ 6.2 on both Tru64 unix and
+ linux/alpha, when this will be available), provided one uses
+ CXX=cxx
+ CXXFLAGS='-ptr /tmp/lyx_cxx_repository -std strict_ansi -g -O'
+
+ Note that this will not work when compiling directly from the cvs
+ repository, due to the tricks used by automake for dependencies. Ask
+ Jean-Marc.Lasgouttes@inria.fr for a workaround.
+
o On Digital Unix with cxx, you may have a compilation error in
lyx_main.C if you have GNU gettext installed. This is due to a bug
in gettext. To solve this, you can either (1) configure with
You can safely ignore it.
- o Configure fails to work with cxx V5.0-3 on Digital Unix
- V3.2c. This is due to a bug in this particular version of cxx.
- Contact Achim Bohnet <ach@rosat.mpe-garching.mpg.de> for more
- details concerning this problem.
-
_buffer->text->cursor;
}
+// Just a bunch of C wrappers around static members of BufferView
+extern "C" void C_BufferView_UpCB(FL_OBJECT *ob, long buf) {
+ BufferView::UpCB(ob,buf);
+}
+
+extern "C" void C_BufferView_DownCB(FL_OBJECT *ob, long buf) {
+ BufferView::DownCB(ob,buf);
+}
+
+extern "C" void C_BufferView_ScrollCB(FL_OBJECT *ob, long buf) {
+ BufferView::ScrollCB(ob,buf);
+}
+
+extern "C" void C_BufferView_CursorToggleCB(FL_OBJECT *ob, long buf) {
+ BufferView::CursorToggleCB(ob,buf);
+}
+
+extern "C" int C_BufferView_work_area_handler(FL_OBJECT *ob, int event,
+ FL_Coord, FL_Coord,
+ int key, void *xev) {
+ return BufferView::work_area_handler(ob, event, 0, 0, key, xev);
+}
+
void BufferView::create_view(int xpos, int ypos, int width, int height)
{
xpos +bw, ypos+bw,
width-15-2*bw /* scrollbarwidth */,
height-2*bw,"",
- work_area_handler);
+ C_BufferView_work_area_handler);
obj->wantkey = FL_KEY_TAB;
obj->u_vdata = this; /* This is how we pass the BufferView
to the work_area_handler. */
fl_set_object_color(obj,FL_MCOL,FL_BLUE);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj,NorthEastGravity, NorthEastGravity);
- fl_set_object_callback(obj,UpCB,(long)this);
+ fl_set_object_callback(obj,C_BufferView_UpCB,(long)this);
fl_set_pixmapbutton_data(obj, up_xpm);
#if FL_REVISION >85
fl_set_object_boxtype(obj, FL_UP_BOX);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj, NorthEastGravity, SouthEastGravity);
- fl_set_object_callback(obj,ScrollCB,(long)this);
+ fl_set_object_callback(obj,C_BufferView_ScrollCB,(long)this);
// down - scrollbar button
#if FL_REVISION > 85
fl_set_object_color(obj,FL_MCOL,FL_BLUE);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj, SouthEastGravity, SouthEastGravity);
- fl_set_object_callback(obj,DownCB,(long)this);
+ fl_set_object_callback(obj,C_BufferView_DownCB,(long)this);
fl_set_pixmapbutton_data(obj, down_xpm);
fl_set_border_width(-bw);
// timer_cursor
timer_cursor = obj = fl_add_timer(FL_HIDDEN_TIMER,
0,0,0,0,"Timer");
- fl_set_object_callback(obj,CursorToggleCB,0);
+ fl_set_object_callback(obj,C_BufferView_CursorToggleCB,0);
obj->u_vdata = this;
}
///
void ScrollDownOnePage(long /*time*/);
+public:
/// A callback for the up arrow in the scrollbar.
static void UpCB(FL_OBJECT *ob, long);
/// A callback for the down arrow in the scrollbar.
static void DownCB(FL_OBJECT *ob, long);
+ ///
+ static void CursorToggleCB(FL_OBJECT *ob, long);
/** Work area free object handler
*/
static int work_area_handler(FL_OBJECT *, int event,
FL_Coord, FL_Coord, int key, void *xev);
+private:
///
int WorkAreaMotionNotify(FL_OBJECT *ob,
Window win,
int w, int h,
XEvent *ev, void *d);
///
- static void CursorToggleCB(FL_OBJECT *ob, long);
- ///
LyXView *_owner;
///
Buffer *_buffer;
// This is very temporary
BufferView *current_view;
+extern "C" int C_LyXView_atCloseMainFormCB(FL_FORM *, void *);
LyXView::LyXView(int width, int height)
{
fd_form_main = create_form_form_main(width,height);
- fl_set_form_atclose(_form, atCloseMainFormCB, 0);
+ fl_set_form_atclose(_form, C_LyXView_atCloseMainFormCB, 0);
lyxerr.debug() << "Initializing LyXFunc" << endl;
lyxfunc = new LyXFunc(this);
intl = new Intl;
updatetimer = 0;
}
+// Wrapper for the above
+extern "C" void C_LyXView_UpdateTimerCB(FL_OBJECT *ob, long data) {
+ LyXView::UpdateTimerCB(ob,data);
+}
+
+
// Callback for autosave timer
void LyXView::AutosaveTimerCB(FL_OBJECT *, long)
AutoSave();
}
+// Wrapper for the above
+extern "C" void C_LyXView_AutosaveTimerCB(FL_OBJECT *ob, long data) {
+ LyXView::AutosaveTimerCB(ob, data);
+}
+
/// Reset autosave timer
void LyXView::resetAutosaveTimer()
return FL_IGNORE;
}
+// Wrapper for the above
+extern "C" int C_LyXView_atCloseMainFormCB(FL_FORM *form, void *p) {
+ return LyXView::atCloseMainFormCB(form,p);
+}
+
void LyXView::setPosition(int x, int y)
{
// timer_autosave
fdui->timer_autosave = obj = fl_add_timer(FL_HIDDEN_TIMER,
0,0,0,0,"Timer");
- fl_set_object_callback(obj,AutosaveTimerCB,0);
+ fl_set_object_callback(obj,C_LyXView_AutosaveTimerCB,0);
// timer_update
fdui->timer_update = obj = fl_add_timer(FL_HIDDEN_TIMER,
0,0,0,0,"Timer");
- fl_set_object_callback(obj,UpdateTimerCB,0);
+ fl_set_object_callback(obj,C_LyXView_UpdateTimerCB,0);
obj->u_vdata = (void*) this;
//
return fdui;
}
+extern "C" int C_LyXView_KeyPressMask_raw_callback(FL_FORM *fl, void *xev);
void LyXView::init()
{
// Install the raw callback for keyboard events
fl_register_raw_callback(_form,
KeyPressMask,
- KeyPressMask_raw_callback);
+ C_LyXView_KeyPressMask_raw_callback);
intl->InitKeyMapper(lyxrc->use_kbmap);
}
return retval;
}
+// wrapper for the above
+extern "C" int C_LyXView_KeyPressMask_raw_callback(FL_FORM *fl, void *xev)
+{
+ return LyXView::KeyPressMask_raw_callback(fl, xev);
+}
// Updates the title of the window with the filename of the current document
void LyXView::updateWindowTitle() {
void invalidateLayoutChoice();
///
void UpdateDocumentClassChoice();
+public:
///
static int KeyPressMask_raw_callback(FL_FORM *, void *xev);
- /// makes the main form.
- FD_form_main *create_form_form_main(int width, int height);
-
/** This callback is run when a close event is sent from the
window manager. */
static int atCloseMainFormCB(FL_FORM *, void *);
static void AutosaveTimerCB(FL_OBJECT *, long);
/// A callback
static void UpdateTimerCB(FL_OBJECT *, long);
+private:
+ /// makes the main form.
+ FD_form_main *create_form_form_main(int width, int height);
/// A pointer to the form.
FD_form_main *_form_main;
/// A pointer to the form.
#include "debug.h"
+// These are C wrappers around static members of Combox, used as
+// callbacks for xforms.
+extern "C" void C_Combox_input_cb(FL_OBJECT *ob, long);
+extern "C" void C_Combox_combo_cb(FL_OBJECT *ob, long data) ;
+extern "C" int C_Combox_peek_event(FL_FORM * form, void *xev);
+
Combox::Combox(combox_type t): type(t)
{
browser = button = 0;
x+w-22,y,22,hmin,"@2->");
fl_set_object_color(obj,FL_MCOL, FL_MCOL);
fl_set_object_dblbuffer(obj, 1);
- fl_set_object_callback(obj,combo_cb,0);
+ fl_set_object_callback(obj,C_Combox_combo_cb,0);
label = obj = fl_add_button(FL_NORMAL_TEXT,x,y,w-22,hmin,"");
fl_set_object_boxtype(obj,FL_DOWN_BOX);
fl_set_object_color(obj,FL_MCOL,FL_BLACK);
fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
fl_set_object_dblbuffer(obj, 1);
- fl_set_object_callback(obj,combo_cb,0);
+ fl_set_object_callback(obj,C_Combox_combo_cb,0);
break;
}
case FL_COMBOX_NORMAL:
button = obj = fl_add_button(FL_NORMAL_BUTTON,x,y,w,hmin,"");
fl_set_object_color(obj,FL_MCOL, FL_MCOL);
fl_set_object_boxtype(obj,FL_DOWN_BOX);
- fl_set_object_callback(obj,combo_cb,0);
+ fl_set_object_callback(obj,C_Combox_combo_cb,0);
fl_set_object_color(obj,FL_MCOL,FL_BLACK);
label = button;
break;
button = obj = fl_add_button(FL_NORMAL_BUTTON,
x+w-22,y,22,hmin,"@2->");
fl_set_object_color(obj,FL_MCOL, FL_MCOL);
- fl_set_object_callback(obj,combo_cb,0);
+ fl_set_object_callback(obj,C_Combox_combo_cb,0);
label = obj = fl_add_input(FL_NORMAL_INPUT,x,y,w-22,hmin,"");
fl_set_object_boxtype(obj,FL_DOWN_BOX);
fl_set_object_return(obj, FL_RETURN_END_CHANGED);
- fl_set_object_callback(obj,input_cb,0);
+ fl_set_object_callback(obj,C_Combox_input_cb,0);
//fl_set_object_color(obj,FL_MCOL,FL_BLACK);
//fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
break;
fl_set_object_boxtype(obj,FL_UP_BOX);
fl_set_object_color(obj,FL_MCOL, FL_YELLOW);
fl_set_object_gravity(obj, NorthWestGravity, NorthWestGravity);
- fl_set_object_callback(obj,combo_cb,2);
+ fl_set_object_callback(obj,C_Combox_combo_cb,2);
fl_end_form();
browser->u_vdata = (void*)this;
form->u_vdata = browser;
- fl_register_raw_callback(form, ButtonPressMask|KeyPressMask,peek_event);
+ fl_register_raw_callback(form,
+ ButtonPressMask|KeyPressMask,
+ C_Combox_peek_event);
// And revert to adding to the old form (Asger)
fl_addto_form(current_form);
combo->is_empty = false;
}
+extern "C" void C_Combox_input_cb(FL_OBJECT *ob, long data)
+{
+ Combox::input_cb(ob, data);
+}
+
void Combox::combo_cb(FL_OBJECT *ob, long data)
{
}
}
+extern "C" void C_Combox_combo_cb(FL_OBJECT *ob, long data)
+{
+ Combox::combo_cb(ob,data);
+}
+
int Combox::peek_event(FL_FORM * form, void *xev)
{
return 0;
}
+extern "C" int C_Combox_peek_event(FL_FORM * form, void *xev)
+{
+ return Combox::peek_event(form, xev);
+}
+
#ifdef TESTCOMBO
typedef struct {
void Redraw();
///
void Show();
+ ///
+ static void combo_cb(FL_OBJECT *, long);
+ ///
+ static void input_cb(FL_OBJECT *, long);
+ ///
+ static int peek_event(FL_FORM *, void *);
protected:
/// At least Hide should not be public
void Hide(int who = 0);
///
bool is_empty;
///
- static void combo_cb(FL_OBJECT *, long);
- ///
- static void input_cb(FL_OBJECT *, long);
- ///
- static int peek_event(FL_FORM *, void *);
- ///
FL_COMBO_CB callback;
///
void *cb_arg;
// global instance (user cache root)
UserCache lyxUserCache = UserCache(string(),0,0);
+// some "C" wrappers around callbacks
+extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *, long lArgument);
+extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *, long);
+extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *, void *);
+extern "C" int C_LyXDirEntryC_ldeCompProc(const void* r1,
+ const void* r2);
// Add: creates a new user entry
UserCache * UserCache::Add(uid_t ID)
return r1->pszName.compare(r2->pszName);
}
+extern "C" int C_LyXDirEntry_ldeCompProc(const void * r1,
+ const void * r2)
+{
+ return LyXDirEntry::ldeCompProc((const LyXDirEntry *)r1,
+ (const LyXDirEntry *)r2);
+}
+
// *** LyXFileDlg class implementation
// static members
// Sort the names
qsort(pCurrentNames, iNumNames, sizeof(LyXDirEntry),
- (int (*)(const void *, const void *))LyXDirEntry::ldeCompProc);
+ C_LyXDirEntry_ldeCompProc);
// Add them to directory box
for (i = 0; i < iNumNames; ++i) {
pFileDlgForm = create_form_FileDlg();
// Set callbacks. This means that we don't need a patch file
fl_set_object_callback(pFileDlgForm->DirBox,
- LyXFileDlg::FileDlgCB,0);
+ C_LyXFileDlg_FileDlgCB,0);
fl_set_object_callback(pFileDlgForm->PatBox,
- LyXFileDlg::FileDlgCB,1);
+ C_LyXFileDlg_FileDlgCB,1);
fl_set_object_callback(pFileDlgForm->List,
- LyXFileDlg::FileDlgCB,2);
+ C_LyXFileDlg_FileDlgCB,2);
fl_set_object_callback(pFileDlgForm->Filename,
- LyXFileDlg::FileDlgCB,3);
+ C_LyXFileDlg_FileDlgCB,3);
fl_set_object_callback(pFileDlgForm->Rescan,
- LyXFileDlg::FileDlgCB,10);
+ C_LyXFileDlg_FileDlgCB,10);
fl_set_object_callback(pFileDlgForm->Home,
- LyXFileDlg::FileDlgCB,11);
+ C_LyXFileDlg_FileDlgCB,11);
fl_set_object_callback(pFileDlgForm->User1,
- LyXFileDlg::FileDlgCB,12);
+ C_LyXFileDlg_FileDlgCB,12);
fl_set_object_callback(pFileDlgForm->User2,
- LyXFileDlg::FileDlgCB,13);
+ C_LyXFileDlg_FileDlgCB,13);
// Make sure pressing the close box doesn't crash LyX. (RvdK)
- fl_set_form_atclose(pFileDlgForm->FileDlg, CancelCB, 0);
+ fl_set_form_atclose(pFileDlgForm->FileDlg,
+ C_LyXFileDlg_CancelCB, 0);
// Register doubleclick callback
fl_set_browser_dblclick_callback(pFileDlgForm->List,
- DoubleClickCB,0);
+ C_LyXFileDlg_DoubleClickCB,0);
}
fl_hide_object(pFileDlgForm->User1);
fl_hide_object(pFileDlgForm->User2);
}
}
+extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *ob, long data)
+{
+ LyXFileDlg::FileDlgCB(ob, data);
+}
+
// Handle callback from list
void LyXFileDlg::HandleListHit()
pCurrentDlg->Force(false);
}
+extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *ob, long data)
+{
+ LyXFileDlg::DoubleClickCB(ob, data);
+}
// Handle double click from list
bool LyXFileDlg::HandleDoubleClick()
return FL_IGNORE;
}
+extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *fl, void *xev)
+{
+ return LyXFileDlg::CancelCB(fl, xev);
+}
// Simulates a click on OK/Cancel
void LyXFileDlg::Force(bool cancel)
string pszName;
string pszDisplayed;
string pszLsEntry;
+ LyXDirEntry() {};
+public:
/// compares two LyXDirEntry objects content (used by qsort)
static int ldeCompProc(const LyXDirEntry *r1, const LyXDirEntry *r2);
- LyXDirEntry() {};
};
static void FileDlgCB(FL_OBJECT *, long);
/// Callback for double click in list
static void DoubleClickCB(FL_OBJECT *, long);
+ /// Handle Cancel CB from WM close
+ static int CancelCB(FL_FORM *, void *);
private:
// data
static FD_FileDlg *pFileDlgForm;
bool HandleDoubleClick();
/// Handle OK button call
bool HandleOK();
- /// Handle Cancel CB from WM close
- static int CancelCB(FL_FORM *, void *);
/// Simulates a click on OK/Cancel
void Force(bool);
};
extern LyXRC* lyxrc;
+// a wrapper around the callback static member.
+extern "C" void C_Intl_DispatchCallback(FL_OBJECT *ob,long code);
+
Intl::Intl()
: prim_lang(lyxrc->primary_kbmap),
if (itl!=0) itl->Keymap(code);
}
+extern "C" void C_Intl_DispatchCallback(FL_OBJECT *ob,long code)
+{
+ Intl::DispatchCallback(ob,code);
+}
void Intl::InitKeyMapper(bool on)
/* initialize key mapper */
fd_form_keymap->KeyOnBtn2->u_vdata=(void *)this;
// add the callbacks.
- fl_set_object_callback(fd_form_keymap->AcceptChset,DispatchCallback,27);
- fl_set_object_callback(fd_form_keymap->Charset,DispatchCallback,26);
- fl_set_object_callback(fd_form_keymap->Accept,DispatchCallback,0);
-
- fl_set_object_callback(fd_form_keymap->KeyOnBtn,DispatchCallback,23);
- fl_set_object_callback(fd_form_keymap->KeyOffBtn,DispatchCallback,3);
- fl_set_object_callback(fd_form_keymap->KeyOnBtn2,DispatchCallback,43);
+ fl_set_object_callback(fd_form_keymap->AcceptChset,
+ C_Intl_DispatchCallback,27);
+ fl_set_object_callback(fd_form_keymap->Charset,
+ C_Intl_DispatchCallback,26);
+ fl_set_object_callback(fd_form_keymap->Accept,
+ C_Intl_DispatchCallback,0);
+
+ fl_set_object_callback(fd_form_keymap->KeyOnBtn,
+ C_Intl_DispatchCallback,23);
+ fl_set_object_callback(fd_form_keymap->KeyOffBtn,
+ C_Intl_DispatchCallback,3);
+ fl_set_object_callback(fd_form_keymap->KeyOnBtn2,
+ C_Intl_DispatchCallback,43);
// Make sure pressing the close box does not kill LyX. (RvdK)
fl_set_form_atclose(fd_form_keymap->KeyMap, CancelCloseBoxCB, 0);
bool keymapon;
///
char *chsetcode;
+ ///
+ static void DispatchCallback(FL_OBJECT*,long);
private:
///
//int SelectCharset(char const *code);
///
void Keymap(long code);
///
- static void DispatchCallback(FL_OBJECT*,long);
- ///
bool primarykeymap;
///
int curkeymap;
extern LyXAction lyxaction;
+// C wrapper
+extern "C" void C_LyXComm_callback(int fd, void *v);
+
+
// LyXComm class
// Open pipes
<< strerror(errno) << endl;
return;
}
- fl_add_io_callback(infd, FL_READ, callback, (void*)this);
+ fl_add_io_callback(infd, FL_READ, C_LyXComm_callback, (void*)this);
// --- prepare output pipe ---------------------------------------
}
if(infd > -1) {
- fl_remove_io_callback(infd, FL_READ, callback);
+ fl_remove_io_callback(infd, FL_READ, C_LyXComm_callback);
string tmp = pipename + ".in";
#ifdef __EMX__ // Notify the operating system.
c->openConnection();
errno=0;
}
+
+extern "C" void C_LyXComm_callback(int fd, void *v)
+{
+ LyXComm::callback(fd, v);
+}
+
void LyXComm::send(string const & msg) {
if (msg.empty()) {
/// Send message
void send(string const &);
+
+ /// We receive messages via XForms through this callback
+ static void callback(int fd, void *v);
+
private:
/// Open pipes
void openConnection();
/// Close pipes
void closeConnection();
- /// We receive messages via XForms through this callback
- static void callback(int fd, void *v);
-
/// This is -1 if not open
int infd;
fl_hide_form(This->browser->LaTeXLog);
}
+// and, hack over hack, here is a C wrapper :)
+extern "C" void C_LyXVC_logClose(FL_OBJECT *ob, long data)
+{
+ LyXVC::logClose(ob, data);
+}
+
void LyXVC::logUpdate(FL_OBJECT *obj, long)
{
This->showLog();
}
+extern "C" void C_LyXVC_logUpdate(FL_OBJECT *ob, long data)
+{
+ LyXVC::logUpdate(ob, data);
+}
+
void LyXVC::viewLog(string const & fil)
{
browser->browser_latexlog = fl_add_browser(FL_NORMAL_BROWSER, 10, 10, 450, 320, "");
obj = fl_add_button(FL_RETURN_BUTTON, 270, 340, 90, 30, _("Close"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
- fl_set_object_callback(obj, logClose, 0);
+ fl_set_object_callback(obj, C_LyXVC_logClose, 0);
obj = fl_add_button(FL_NORMAL_BUTTON,370,340,90,30,
idex(_("Update|#Uu")));
fl_set_button_shortcut(obj,scex(_("Update|#Uu")),1);
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
- fl_set_object_callback(obj,logUpdate,0);
+ fl_set_object_callback(obj, C_LyXVC_logUpdate,0);
fl_end_form();
fl_set_form_atclose(browser->LaTeXLog, CancelCloseBoxCB, 0);
}
/// Returns the userid of the person who has locked the doc.
string const getLocker() const;
+
+ ///
+ static void logClose(FL_OBJECT*, long);
+ ///
+ static void logUpdate(FL_OBJECT*, long);
protected:
private:
///
///
FD_LaTeXLog *browser; // FD_LaTeXLog is just a browser with a
// close button. Unfortunately we can not use the standard callbacks.
- ///
- static void logClose(FL_OBJECT*, long);
- ///
- static void logUpdate(FL_OBJECT*, long);
};
#endif
extern void AllFloats(char flag, char figmar);
extern void LaTeXOptions();
+// A bunch of wrappers
+
+extern "C" void C_Menus_ShowFileMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowFileMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowFileMenu2(FL_OBJECT *ob, long data)
+{
+ Menus::ShowFileMenu2(ob, data);
+}
+
+extern "C" void C_Menus_ShowEditMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowEditMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowLayoutMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowLayoutMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowInsertMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowInsertMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowMathMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowMathMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowOptionsMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowOptionsMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowBufferMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowBufferMenu(ob, data);
+}
+
+extern "C" void C_Menus_ShowHelpMenu(FL_OBJECT *ob, long data)
+{
+ Menus::ShowHelpMenu(ob, data);
+}
+
+
Menus::Menus(LyXView *view,int air)
: _view(view)
{
mbheight,_("File"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
- fl_set_object_callback(obj,ShowFileMenu, 0);
+ fl_set_object_callback(obj,C_Menus_ShowFileMenu, 0);
obj->u_ldata = (long)this;
// Edit menu button
mbheight,_("Edit"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#E")),1);
- fl_set_object_callback(obj,ShowEditMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowEditMenu,0);
obj->u_ldata = (long) this;
// Layout menu button
mbheight,_("Layout"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#L")), 1);
- fl_set_object_callback(obj,ShowLayoutMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowLayoutMenu,0);
obj->u_ldata = (long) this;
// Insert menu button button
mbheight,_("Insert"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#I")), 1);
- fl_set_object_callback(obj,ShowInsertMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowInsertMenu,0);
obj->u_ldata = (long) this;
// Math menu button
mbheight,_("Math"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#M")), 1);
- fl_set_object_callback(obj,ShowMathMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowMathMenu,0);
obj->u_ldata = (long) this;
// Options menu button
mbheight,_("Options"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
- fl_set_object_callback(obj,ShowOptionsMenu, 0);
+ fl_set_object_callback(obj,C_Menus_ShowOptionsMenu, 0);
obj->u_ldata = (long) this;
// Documents menu button
mbheight,_("Documents"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#D")), 1);
- fl_set_object_callback(obj,ShowBufferMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowBufferMenu,0);
obj->u_ldata = (long) this;
// Help menu button
mbheight,_("Help"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
- fl_set_object_callback(obj,ShowHelpMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowHelpMenu,0);
obj->u_ldata = (long) this;
fl_end_group();
mbheight,_("File"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
- fl_set_object_callback(obj,ShowFileMenu2, 0);
+ fl_set_object_callback(obj,C_Menus_ShowFileMenu2, 0);
obj->u_ldata = (long)this;
// Options menu button
mbheight,_("Options"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
- fl_set_object_callback(obj,ShowOptionsMenu, 0);
+ fl_set_object_callback(obj,C_Menus_ShowOptionsMenu, 0);
obj->u_ldata = (long) this;
// Help menu button
mbheight,_("Help"));
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
- fl_set_object_callback(obj,ShowHelpMenu,0);
+ fl_set_object_callback(obj,C_Menus_ShowHelpMenu,0);
obj->u_ldata = (long) this;
fl_end_group();
void hideMenus();
///
void openByName(string const &menuName);
-private:
- ///
- void create_menus(int air);
- ///
- void ScreenOptions();
- ///
- void showCopyright();
- ///
- void showLicense();
- ///
- void MenuDocu(string const & docname);
- ///
- void handleBufferMenu(int choice);
-
///
static void ShowFileMenu(FL_OBJECT *ob, long);
///
static void ShowBufferMenu(FL_OBJECT *ob, long);
///
static void ShowHelpMenu(FL_OBJECT *ob, long);
+private:
+ ///
+ void create_menus(int air);
+ ///
+ void ScreenOptions();
+ ///
+ void showCopyright();
+ ///
+ void showLicense();
+ ///
+ void MenuDocu(string const & docname);
+ ///
+ void handleBufferMenu(int choice);
+
///
BufferView *currentView();
///
obj->Init();
}
+extern "C" void C_MiniBuffer_TimerCB(FL_OBJECT *ob, long data)
+{
+ MiniBuffer::TimerCB(ob, data);
+}
void MiniBuffer::ExecutingCB(FL_OBJECT *ob, long)
{
return ;
}
+extern "C" void C_MiniBuffer_ExecutingCB(FL_OBJECT *ob, long data)
+{
+ MiniBuffer::TimerCB(ob, data);
+}
+
+// This is not as dirty as it seems, the hidden buttons removed by this
+// function were just kludges for an uncomplete keyboard callback (ale)
+int MiniBuffer::peek_event(FL_OBJECT *ob, int event, FL_Coord, FL_Coord,
+ int key, void */*xev*/)
+{
+ MiniBuffer *mini = (MiniBuffer*)ob->u_vdata;
+
+ if (event==FL_KEYBOARD){
+ switch (key) {
+ case XK_Down:
+ mini->history_idx++;
+ if (!mini->getHistory().empty()) {
+ fl_set_input(ob, mini->getHistory().c_str());
+ } else
+ mini->history_idx--;
+ return 1;
+ case XK_Up:
+ if (mini->history_idx > 0) mini->history_idx--;
+ fl_set_input(ob, mini->getHistory().c_str());
+ return 1;
+ case 9:
+ case XK_Tab:
+ {
+ // complete or increment the command
+ const char *s = lyxaction.getApproxFuncName(fl_get_input(ob));
+ if (s && s[0])
+ fl_set_input(ob, s);
+ return 1;
+ }
+ case 27:
+ case XK_Escape:
+ // Abort
+ fl_set_focus_object(mini->owner->getForm(),
+ mini->owner->currentView()->getWorkArea());
+ mini->Init();
+ return 1;
+ case 13:
+ case XK_Return:
+ // Execute a command.
+ mini->cur_cmd = string(fl_get_input(ob));
+ ExecutingCB(ob, 0);
+ return 1;
+ default:
+ return 0;
+ }
+ }
+ return 0;
+}
+
+extern "C" int C_MiniBuffer_peek_event(FL_OBJECT *ob, int event,
+ FL_Coord, FL_Coord,
+ int key, void *xev)
+{
+ return MiniBuffer::peek_event(ob,event,0,0,key,xev);
+}
+
void MiniBuffer::ExecCommand()
{
fl_set_object_gravity(obj, SouthWestGravity, SouthEastGravity);
fl_set_object_color(obj,FL_MCOL,FL_MCOL);
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
- fl_set_object_callback(obj,ExecutingCB, 0);
+ fl_set_object_callback(obj,C_MiniBuffer_ExecutingCB, 0);
// To intercept Up, Down, Table for history
- fl_set_object_prehandler(obj, peek_event);
+ fl_set_object_prehandler(obj, C_MiniBuffer_peek_event);
obj->u_vdata = (void*)this;
obj->wantkey = FL_KEY_TAB;
// timer
timer = fl_add_timer(FL_HIDDEN_TIMER, 0,0,0,0, "Timer");
- fl_set_object_callback(timer, TimerCB, (long)this);
+ fl_set_object_callback(timer, C_MiniBuffer_TimerCB, (long)this);
fl_set_input(the_buffer, text.c_str());
return obj;
}
-// This is not as dirty as it seems, the hidden buttons removed by this
-// function were just kludges for an uncomplete keyboard callback (ale)
-int MiniBuffer::peek_event(FL_OBJECT *ob, int event, FL_Coord, FL_Coord,
- int key, void */*xev*/)
-{
- MiniBuffer *mini = (MiniBuffer*)ob->u_vdata;
-
- if (event==FL_KEYBOARD){
- switch (key) {
- case XK_Down:
- mini->history_idx++;
- if (!mini->getHistory().empty()) {
- fl_set_input(ob, mini->getHistory().c_str());
- } else
- mini->history_idx--;
- return 1;
- case XK_Up:
- if (mini->history_idx > 0) mini->history_idx--;
- fl_set_input(ob, mini->getHistory().c_str());
- return 1;
- case 9:
- case XK_Tab:
- {
- // complete or increment the command
- const char *s = lyxaction.getApproxFuncName(fl_get_input(ob));
- if (s && s[0])
- fl_set_input(ob, s);
- return 1;
- }
- case 27:
- case XK_Escape:
- // Abort
- fl_set_focus_object(mini->owner->getForm(),
- mini->owner->currentView()->getWorkArea());
- mini->Init();
- return 1;
- case 13:
- case XK_Return:
- // Execute a command.
- mini->cur_cmd = string(fl_get_input(ob));
- ExecutingCB(ob, 0);
- return 1;
- default:
- return 0;
- }
- }
- return 0;
-}
-
void Activate();
///
void Deactivate();
+ ///
+ static void ExecutingCB(FL_OBJECT *ob, long);
+ ///
+ static void TimerCB(FL_OBJECT *ob, long);
+ ///
+ static int peek_event(FL_OBJECT *, int, FL_Coord, FL_Coord,
+ int, void *);
private:
///
LyXView *owner;
string text_stored;
///
FL_OBJECT *add(int, FL_Coord, FL_Coord, FL_Coord, FL_Coord);
- ///
- static void ExecutingCB(FL_OBJECT *ob, long);
- ///
- static void TimerCB(FL_OBJECT *ob, long);
- ///
- static int peek_event(FL_OBJECT *, int, FL_Coord, FL_Coord,
- int, void *);
///
FL_OBJECT *timer;
///
// timer-cb for bubble-help (Matthias)
-void Toolbar::BubbleTimerCB(FL_OBJECT *, long data){
+void Toolbar::BubbleTimerCB(FL_OBJECT *, long data)
+{
FL_OBJECT* ob = (FL_OBJECT*) data;
char* help = (char*) ob->u_vdata;
fl_show_oneliner(help, ob->form->x + ob->x,
ob->form->y + ob->y + ob->h);
}
+extern "C" void C_Toolbar_BubbleTimerCB(FL_OBJECT *ob, long data)
+{
+ Toolbar::BubbleTimerCB(ob, data);
+}
// post_handler for bubble-help (Matthias)
int Toolbar::BubblePost(FL_OBJECT *ob, int event,
if(event == FL_ENTER && !help.empty()){
fl_set_object_callback(t->bubble_timer,
- BubbleTimerCB, (long) ob);
+ C_Toolbar_BubbleTimerCB, (long) ob);
fl_set_timer(t->bubble_timer, 1);
}
else if(event != FL_MOTION){
return 0;
}
+extern "C" int C_Toolbar_BubblePost(FL_OBJECT *ob, int event,
+ FL_Coord /*mx*/, FL_Coord /*my*/,
+ int key, void *xev)
+{
+ return Toolbar::BubblePost(ob,event,0,0,key,xev);
+}
void Toolbar::activate()
{
lyxerr[Debug::TOOLBAR] << res << endl;
}
+extern "C" void C_Toolbar_ToolbarCB(FL_OBJECT *ob, long data)
+{
+ Toolbar::ToolbarCB(ob, data);
+}
int Toolbar::get_toolbar_func(string const & func)
{
fl_set_object_gravity(obj,
NorthWestGravity,
NorthWestGravity);
- fl_set_object_callback(obj,ToolbarCB,
+ fl_set_object_callback(obj,C_Toolbar_ToolbarCB,
(long)item->action);
#if FL_REVISION >85
// Remove the blue feedback rectangle
// belongs too. (Lgb)
obj->u_ldata = (long) this;
- fl_set_object_posthandler(obj, BubblePost);
+ fl_set_object_posthandler(obj, C_Toolbar_BubblePost);
fl_set_pixmapbutton_data(obj,item->pixmap);
item = item->next;
/// deactivates the toolbar
void deactivate();
+ ///
+ static void ToolbarCB(FL_OBJECT*, long);
+ ///
+ static void BubbleTimerCB(FL_OBJECT *, long);
+ ///
+ static int BubblePost(FL_OBJECT *ob, int event,
+ FL_Coord mx, FL_Coord my, int key, void *xev);
+
private:
///
struct toolbarItem
char **getPixmap(kb_action, string const & arg=string());
/// removes all toolbar buttons from the toolbar.
void clean();
- ///
- static void ToolbarCB(FL_OBJECT*, long);
- ///
- static void BubbleTimerCB(FL_OBJECT *, long);
- ///
- static int BubblePost(FL_OBJECT *ob, int event,
- FL_Coord mx, FL_Coord my, int key, void *xev);
/** more...
*/