mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 22:06:15 +00:00
More cleanups of the toolbar. The buttons are now toggled/disabled when needed
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@905 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
2984f46a03
commit
2fe7465d03
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
||||
2000-07-20 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
|
||||
|
||||
* src/lyxfunc.C (Dispatch): use LyXView::ShowState instead of
|
||||
setting explicitely the minibuffer.
|
||||
* src/BufferView_pimpl.C (workAreaButtonRelease): ditto.
|
||||
|
||||
* src/LyXView.C (showState): new function. Shows font information
|
||||
in minibuffer and update toolbar state.
|
||||
(LyXView): call Toolbar::update after creating the
|
||||
view.
|
||||
|
||||
* src/toolbar.C: change toollist to be a vector instead of a
|
||||
linked list.
|
||||
(BubbleTimerCB): get help string directly from the callback
|
||||
argument of the corresponding icon (which is the action)
|
||||
(set): remove unnecessary ugliness.
|
||||
(update): new function. update the icons (depressed, disabled)
|
||||
depending of the status of the corresponding action.
|
||||
|
||||
* src/toolbar.h: remove help in toolbarItem
|
||||
|
||||
2000-07-19 Dekel Tsur <dekel@math.tau.ac.il>
|
||||
|
||||
* src/Painter.C (text): Added code for using symbol glyphs from
|
||||
|
@ -754,7 +754,7 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
|
||||
if (button >= 2) return;
|
||||
|
||||
bv_->setState();
|
||||
owner_->getMiniBuffer()->Set(CurrentState(bv_));
|
||||
owner_->showState();
|
||||
|
||||
// Did we hit an editable inset?
|
||||
if (inset_hit != 0) {
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "menus.h"
|
||||
#include "frontends/Dialogs.h"
|
||||
#include "lyx_gui_misc.h" // [update,Close]AllBufferRelatedDialogs
|
||||
#include "bufferview_funcs.h" // CurrentState()
|
||||
|
||||
using std::endl;
|
||||
|
||||
@ -63,6 +64,9 @@ LyXView::LyXView(int width, int height)
|
||||
lyxfunc = new LyXFunc(this);
|
||||
intl = new Intl;
|
||||
|
||||
// Make sure the buttons are disabled if needed.
|
||||
toolbar->update();
|
||||
|
||||
dialogs_ = new Dialogs(this);
|
||||
// temporary until all dialogs moved into Dialogs.
|
||||
dialogs_->updateBufferDependent
|
||||
@ -440,3 +444,10 @@ void LyXView::updateWindowTitle()
|
||||
last_title = title;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LyXView::showState()
|
||||
{
|
||||
getMiniBuffer()->Set(CurrentState(view()));
|
||||
getToolbar()->update();
|
||||
}
|
||||
|
@ -92,6 +92,10 @@ public:
|
||||
/// Updates the title of the window
|
||||
void updateWindowTitle();
|
||||
|
||||
|
||||
/// Show state (toolbar and font in minibuffer)
|
||||
void showState();
|
||||
|
||||
/// Reset autosave timer
|
||||
void resetAutosaveTimer();
|
||||
private:
|
||||
|
111
src/lyxfunc.C
111
src/lyxfunc.C
@ -179,7 +179,7 @@ void LyXFunc::moveCursorUpdate(bool selecting)
|
||||
|
||||
/* ---> Everytime the cursor is moved, show the current font state. */
|
||||
// should this too me moved out of this func?
|
||||
//owner->getMiniBuffer()->Set(CurrentState());
|
||||
//owner->showState();
|
||||
owner->view()->setState();
|
||||
}
|
||||
|
||||
@ -220,7 +220,7 @@ int LyXFunc::processKeyEvent(XEvent * ev)
|
||||
owner->view()->unlockInset(tli);
|
||||
owner->view()->text->CursorRight(owner->view());
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
} else {
|
||||
tli->UnlockInsetInInset(owner->view(),
|
||||
tli->GetLockingInset(),true);
|
||||
@ -593,29 +593,26 @@ string LyXFunc::Dispatch(int ac,
|
||||
case LFUN_BREAKLINE:
|
||||
owner->view()->text->CursorRight(owner->view());
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
case LFUN_RIGHT:
|
||||
if (!owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
|
||||
owner->view()->text->CursorRight(owner->view());
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->
|
||||
Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
}
|
||||
return string();
|
||||
case LFUN_LEFT:
|
||||
if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
|
||||
owner->view()->text->CursorRight(owner->view());
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->
|
||||
Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
}
|
||||
return string();
|
||||
case LFUN_DOWN:
|
||||
owner->view()->text->CursorDown(owner->view());
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->
|
||||
Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
return string();
|
||||
default:
|
||||
break;
|
||||
@ -999,13 +996,13 @@ string LyXFunc::Dispatch(int ac,
|
||||
case LFUN_FREE:
|
||||
Free(owner->view());
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_TEX:
|
||||
Tex(owner->view());
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
#ifndef NEW_INSETS
|
||||
case LFUN_MELT:
|
||||
@ -1228,52 +1225,52 @@ string LyXFunc::Dispatch(int ac,
|
||||
case LFUN_LANGUAGE:
|
||||
Lang(owner->view(), argument);
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_EMPH:
|
||||
Emph(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_BOLD:
|
||||
Bold(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_NOUN:
|
||||
Noun(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_CODE:
|
||||
Code(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_SANS:
|
||||
Sans(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_ROMAN:
|
||||
Roman(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_DEFAULT:
|
||||
StyleReset(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_UNDERLINE:
|
||||
Underline(owner->view());
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_FONT_SIZE:
|
||||
FontSize(owner->view(), argument);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_FONT_STATE:
|
||||
@ -1381,7 +1378,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
tmptext->CursorRight(owner->view(), false);
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1417,7 +1414,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1427,7 +1424,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorUp(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_DOWN:
|
||||
@ -1437,7 +1434,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorDown(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_UP_PARAGRAPH:
|
||||
@ -1447,7 +1444,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorUpParagraph(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_DOWN_PARAGRAPH:
|
||||
@ -1457,7 +1454,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorDownParagraph(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_PRIOR:
|
||||
@ -1467,7 +1464,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->cursorPrevious();
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_NEXT:
|
||||
@ -1477,7 +1474,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->cursorNext();
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_HOME:
|
||||
@ -1487,7 +1484,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorHome(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_END:
|
||||
@ -1497,7 +1494,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorEnd(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_SHIFT_TAB:
|
||||
@ -1508,7 +1505,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorTab(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_WORDRIGHT:
|
||||
@ -1521,7 +1518,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorRightOneWord(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_WORDLEFT:
|
||||
@ -1534,7 +1531,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorLeftOneWord(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_BEGINNINGBUF:
|
||||
@ -1544,7 +1541,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorTop(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_ENDBUF:
|
||||
@ -1554,7 +1551,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorBottom(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
|
||||
@ -1567,7 +1564,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorRight(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_LEFTSEL:
|
||||
@ -1578,7 +1575,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorLeft(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_UPSEL:
|
||||
@ -1586,7 +1583,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorUp(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_DOWNSEL:
|
||||
@ -1594,7 +1591,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorDown(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_UP_PARAGRAPHSEL:
|
||||
@ -1602,7 +1599,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorUpParagraph(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_DOWN_PARAGRAPHSEL:
|
||||
@ -1610,7 +1607,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorDownParagraph(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_PRIORSEL:
|
||||
@ -1618,7 +1615,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->cursorPrevious();
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_NEXTSEL:
|
||||
@ -1626,7 +1623,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->cursorNext();
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_HOMESEL:
|
||||
@ -1634,7 +1631,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorHome(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_ENDSEL:
|
||||
@ -1642,7 +1639,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorEnd(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_WORDRIGHTSEL:
|
||||
@ -1653,7 +1650,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorRightOneWord(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_WORDLEFTSEL:
|
||||
@ -1664,7 +1661,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorLeftOneWord(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_BEGINNINGBUFSEL:
|
||||
@ -1672,7 +1669,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorTop(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
case LFUN_ENDBUFSEL:
|
||||
@ -1680,7 +1677,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->CursorBottom(owner->view());
|
||||
owner->view()->text->FinishUndo();
|
||||
moveCursorUpdate(true);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
// --- text changing commands ------------------------
|
||||
@ -1735,7 +1732,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->cut();
|
||||
}
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
owner->view()->setState();
|
||||
break;
|
||||
|
||||
@ -1789,7 +1786,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->DeleteWordForward(owner->view());
|
||||
owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
/* -------> Delete word backward. */
|
||||
@ -1798,7 +1795,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->DeleteWordBackward(owner->view());
|
||||
owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
|
||||
moveCursorUpdate(false);
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
|
||||
/* -------> Kill to end of line. */
|
||||
@ -1843,7 +1840,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
} else {
|
||||
owner->view()->cut();
|
||||
}
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
owner->view()->setState();
|
||||
}
|
||||
break;
|
||||
@ -1887,7 +1884,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->sel_cursor =
|
||||
owner->view()->text->cursor;
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1899,7 +1896,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->text->sel_cursor =
|
||||
owner->view()->text->cursor;
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1934,7 +1931,7 @@ string LyXFunc::Dispatch(int ac,
|
||||
owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
|
||||
owner->view()->text->sel_cursor = cursor;
|
||||
owner->view()->setState();
|
||||
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
|
||||
owner->showState();
|
||||
}
|
||||
break;
|
||||
|
||||
|
176
src/toolbar.C
176
src/toolbar.C
@ -66,8 +66,11 @@ Toolbar::Toolbar(LyXView * o, int x, int y)
|
||||
void Toolbar::BubbleTimerCB(FL_OBJECT *, long data)
|
||||
{
|
||||
FL_OBJECT * ob = reinterpret_cast<FL_OBJECT*>(data);
|
||||
char * help = static_cast<char*>(ob->u_vdata);
|
||||
fl_show_oneliner(help, ob->form->x + ob->x,
|
||||
// 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);
|
||||
fl_show_oneliner(help.c_str(), ob->form->x + ob->x,
|
||||
ob->form->y + ob->y + ob->h);
|
||||
}
|
||||
|
||||
@ -83,10 +86,10 @@ int Toolbar::BubblePost(FL_OBJECT *ob, int event,
|
||||
FL_Coord /*mx*/, FL_Coord /*my*/,
|
||||
int /*key*/, void */*xev*/)
|
||||
{
|
||||
string help = static_cast<char *>(ob->u_vdata);
|
||||
Toolbar * t = reinterpret_cast<Toolbar*>(ob->u_ldata);
|
||||
Toolbar * t = reinterpret_cast<Toolbar*>(ob->u_vdata);
|
||||
|
||||
if(event == FL_ENTER && !help.empty()){
|
||||
// We do not test for empty help here, since this can never happen
|
||||
if(event == FL_ENTER){
|
||||
fl_set_object_callback(t->bubble_timer,
|
||||
C_Toolbar_BubbleTimerCB,
|
||||
reinterpret_cast<long>(ob));
|
||||
@ -111,39 +114,58 @@ extern "C" int C_Toolbar_BubblePost(FL_OBJECT * ob, int event,
|
||||
|
||||
void Toolbar::activate()
|
||||
{
|
||||
toolbarItem * tmp= 0;
|
||||
toolbarItem * item = toollist;
|
||||
while(item){
|
||||
tmp = item->next;
|
||||
if (item->icon) {
|
||||
fl_activate_object(item->icon);
|
||||
ToolbarList::const_iterator p = toollist.begin();
|
||||
for (; p != toollist.end(); ++p) {
|
||||
if (p->icon) {
|
||||
fl_activate_object(p->icon);
|
||||
}
|
||||
item = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Toolbar::deactivate()
|
||||
{
|
||||
toolbarItem * tmp= 0;
|
||||
toolbarItem * item = toollist;
|
||||
while(item){
|
||||
tmp = item->next;
|
||||
if (item->icon) {
|
||||
fl_deactivate_object(item->icon);
|
||||
ToolbarList::const_iterator p = toollist.begin();
|
||||
for (; p != toollist.end(); ++p) {
|
||||
if (p->icon) {
|
||||
fl_deactivate_object(p->icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Toolbar::update()
|
||||
{
|
||||
ToolbarList::const_iterator p = toollist.begin();
|
||||
for (; p != toollist.end(); ++p) {
|
||||
if (p->icon) {
|
||||
int status = owner->getLyXFunc()->getStatus(p->action);
|
||||
if (status & LyXFunc::ToggleOn) {
|
||||
// I'd like to use a different color
|
||||
// here, but then the problem is to
|
||||
// know how to use transparency with
|
||||
// Xpm library. It seems pretty
|
||||
// complicated to me (JMarc)
|
||||
fl_set_object_boxtype(p->icon, FL_DOWN_BOX);
|
||||
} else {
|
||||
fl_set_object_boxtype(p->icon, FL_UP_BOX);
|
||||
}
|
||||
|
||||
if (status & LyXFunc::Disabled) {
|
||||
// Is there a way here to specify a
|
||||
// mask in order to show that the
|
||||
// button is disabled? (JMarc)
|
||||
fl_deactivate_object(p->icon);
|
||||
}
|
||||
else
|
||||
fl_activate_object(p->icon);
|
||||
}
|
||||
item = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Toolbar::ToolbarCB(FL_OBJECT * ob, long ac)
|
||||
{
|
||||
#if FL_REVISION >= 89
|
||||
Toolbar * t = static_cast<Toolbar*>(ob->u_vdata);
|
||||
#else
|
||||
Toolbar * t = reinterpret_cast<Toolbar*>(ob->u_ldata);
|
||||
#endif
|
||||
|
||||
string res = t->owner->getLyXFunc()->Dispatch(int(ac));
|
||||
if(!res.empty())
|
||||
@ -223,7 +245,6 @@ void Toolbar::set(bool doingmain)
|
||||
if (!cleaned) return;
|
||||
|
||||
FL_OBJECT * obj;
|
||||
toolbarItem * item = toollist;
|
||||
|
||||
if (!doingmain) {
|
||||
fl_freeze_form(owner->getForm());
|
||||
@ -237,11 +258,11 @@ void Toolbar::set(bool doingmain)
|
||||
xpos, ypos, 0, 0, "Timer");
|
||||
#endif
|
||||
|
||||
while(item != 0) {
|
||||
ToolbarList::iterator item = toollist.begin();
|
||||
for (; item != toollist.end(); ++item) {
|
||||
switch(item->action){
|
||||
case TOOL_SEPARATOR:
|
||||
xpos += sepspace;
|
||||
item = item->next;
|
||||
break;
|
||||
case TOOL_LAYOUTS:
|
||||
xpos += standardspacing;
|
||||
@ -251,7 +272,6 @@ void Toolbar::set(bool doingmain)
|
||||
combox->setcallback(LayoutsCB);
|
||||
combox->resize(FL_RESIZE_ALL);
|
||||
combox->gravity(NorthWestGravity, NorthWestGravity);
|
||||
item = item->next;
|
||||
xpos += 135;
|
||||
break;
|
||||
default:
|
||||
@ -261,39 +281,28 @@ void Toolbar::set(bool doingmain)
|
||||
xpos, ypos,
|
||||
buttonwidth,
|
||||
height, "");
|
||||
fl_set_object_boxtype(obj, FL_UP_BOX);
|
||||
fl_set_object_color(obj, FL_MCOL, FL_BLUE);
|
||||
fl_set_object_resize(obj, FL_RESIZE_ALL);
|
||||
fl_set_object_gravity(obj,
|
||||
NorthWestGravity,
|
||||
NorthWestGravity);
|
||||
fl_set_object_callback(obj, C_Toolbar_ToolbarCB,
|
||||
static_cast<long>(item->action));
|
||||
fl_set_object_color(obj, FL_MCOL, FL_BLUE);
|
||||
// Remove the blue feedback rectangle
|
||||
fl_set_pixmapbutton_focus_outline(obj, 0);
|
||||
|
||||
// set the bubble-help (Matthias)
|
||||
#if FL_REVISION >= 89
|
||||
// Set the tooltip
|
||||
fl_set_object_helper(obj, item->help.c_str());
|
||||
// The toolbar that this object belongs too.
|
||||
obj->u_vdata = this;
|
||||
|
||||
|
||||
#if FL_REVISION >= 89
|
||||
string help = lyxaction.helpText(action);
|
||||
fl_set_object_helper(obj, help.c_str());
|
||||
#else
|
||||
#ifdef WITH_WARNINGS
|
||||
#warning This is dangerous!
|
||||
#endif
|
||||
obj->u_vdata = const_cast<char*>(item->help.c_str());
|
||||
// we need to know what toolbar this item
|
||||
// belongs too. (Lgb)
|
||||
obj->u_ldata = reinterpret_cast<long>(this);
|
||||
|
||||
fl_set_object_posthandler(obj, C_Toolbar_BubblePost);
|
||||
#endif
|
||||
|
||||
// The toolbar that this object belongs too.
|
||||
obj->u_vdata = this;
|
||||
|
||||
setPixmap(obj, item->action, buttonwidth, height);
|
||||
item = item->next;
|
||||
// we must remember to update the positions
|
||||
xpos += buttonwidth;
|
||||
// ypos is constant
|
||||
@ -311,7 +320,10 @@ void Toolbar::set(bool doingmain)
|
||||
// Should be safe to do this here.
|
||||
owner->updateLayoutChoice();
|
||||
}
|
||||
|
||||
|
||||
// set the state of the icons
|
||||
//update();
|
||||
|
||||
cleaned = false;
|
||||
}
|
||||
|
||||
@ -325,21 +337,18 @@ void Toolbar::add(int action, bool doclean)
|
||||
if (!doclean && owner) {
|
||||
// first "hide" the toolbar buttons. This is not a real hide
|
||||
// actually it deletes and frees the button altogether.
|
||||
lyxerr << "Toolbar::add: \"hide\" the toolbar buttons." << endl;
|
||||
toolbarItem * tmp= 0;
|
||||
toolbarItem * item = toollist;
|
||||
lyxerr << "Toolbar::add: \"hide\" the toolbar buttons."
|
||||
<< endl;
|
||||
|
||||
lightReset();
|
||||
|
||||
fl_freeze_form(owner->getForm());
|
||||
while(item){
|
||||
tmp = item->next;
|
||||
if (item->icon) {
|
||||
fl_delete_object(item->icon);
|
||||
fl_free_object(item->icon);
|
||||
}
|
||||
item = tmp;
|
||||
|
||||
ToolbarList::iterator p = toollist.begin();
|
||||
for (; p != toollist.end(); ++p) {
|
||||
p->clean();
|
||||
}
|
||||
|
||||
if (combox) {
|
||||
delete combox;
|
||||
combox = 0;
|
||||
@ -351,44 +360,30 @@ void Toolbar::add(int action, bool doclean)
|
||||
// there exist some special actions not part of
|
||||
// kb_action: SEPARATOR, LAYOUTS
|
||||
|
||||
toolbarItem * newItem, * tmp;
|
||||
|
||||
// adds an item to the list
|
||||
newItem = new toolbarItem;
|
||||
newItem->action = action;
|
||||
newItem->help = lyxaction.helpText(action);
|
||||
// the new item is placed at the end of the list
|
||||
tmp = toollist;
|
||||
if (tmp != 0){
|
||||
while(tmp->next != 0)
|
||||
tmp = tmp->next;
|
||||
// here is tmp->next == 0
|
||||
tmp->next = newItem;
|
||||
} else
|
||||
toollist = newItem;
|
||||
toolbarItem newItem;
|
||||
newItem.action = action;
|
||||
toollist.push_back(newItem);
|
||||
}
|
||||
|
||||
|
||||
void Toolbar::clean()
|
||||
{
|
||||
toolbarItem * tmp = 0;
|
||||
toolbarItem * item = toollist;
|
||||
|
||||
reset();
|
||||
//reset(); // I do not understand what this reset() is, anyway
|
||||
|
||||
//now delete all the objects..
|
||||
if (owner)
|
||||
fl_freeze_form(owner->getForm());
|
||||
while (item) {
|
||||
tmp = item->next;
|
||||
delete item;
|
||||
item = tmp;
|
||||
}
|
||||
|
||||
// G++ vector does not have clear defined
|
||||
//toollist.clear();
|
||||
toollist.erase(toollist.begin(), toollist.end());
|
||||
|
||||
lyxerr[Debug::TOOLBAR] << "Combox: " << combox << endl;
|
||||
if (combox) {
|
||||
delete combox;
|
||||
combox = 0;
|
||||
}
|
||||
|
||||
if (owner)
|
||||
fl_unfreeze_form(owner->getForm());
|
||||
lyxerr[Debug::TOOLBAR] << "toolbar cleaned" << endl;
|
||||
@ -401,20 +396,13 @@ void Toolbar::push(int nth)
|
||||
lyxerr[Debug::TOOLBAR] << "Toolbar::push: trying to trigger no `"
|
||||
<< nth << '\'' << endl;
|
||||
|
||||
if (nth == 0) return;
|
||||
|
||||
int count = 0;
|
||||
toolbarItem * tmp = toollist;
|
||||
while (tmp) {
|
||||
++count;
|
||||
if (count == nth) {
|
||||
fl_trigger_object(tmp->icon);
|
||||
return;
|
||||
}
|
||||
tmp = tmp->next;
|
||||
if (nth <= 0 || nth >= int(toollist.size())) {
|
||||
// item nth not found...
|
||||
LyXBell();
|
||||
return;
|
||||
}
|
||||
// item nth not found...
|
||||
LyXBell();
|
||||
|
||||
fl_trigger_object(toollist[nth - 1].icon);
|
||||
}
|
||||
|
||||
|
||||
@ -433,7 +421,7 @@ void Toolbar::add(string const & func, bool doclean)
|
||||
|
||||
void Toolbar::reset()
|
||||
{
|
||||
toollist = 0;
|
||||
//toollist = 0; // what is this supposed to do?
|
||||
cleaned = false;
|
||||
lightReset();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
#include FORMS_H_LOCATION
|
||||
#include "lyxfunc.h"
|
||||
#include "combox.h"
|
||||
@ -69,7 +70,8 @@ public:
|
||||
void activate();
|
||||
/// deactivates the toolbar
|
||||
void deactivate();
|
||||
|
||||
/// update the state of the icons
|
||||
void update();
|
||||
///
|
||||
static void ToolbarCB(FL_OBJECT *, long);
|
||||
|
||||
@ -85,32 +87,41 @@ private:
|
||||
///
|
||||
struct toolbarItem
|
||||
{
|
||||
///
|
||||
toolbarItem * next;
|
||||
///
|
||||
int action;
|
||||
///
|
||||
string help;
|
||||
///
|
||||
FL_OBJECT * icon;
|
||||
///
|
||||
toolbarItem() {
|
||||
next = 0;
|
||||
action = LFUN_NOACTION;
|
||||
icon = 0;
|
||||
}
|
||||
///
|
||||
~toolbarItem() {
|
||||
void clean() {
|
||||
if (icon) {
|
||||
fl_delete_object(icon);
|
||||
fl_free_object(icon);
|
||||
icon = 0;
|
||||
}
|
||||
}
|
||||
///
|
||||
~toolbarItem() {
|
||||
clean();
|
||||
}
|
||||
|
||||
toolbarItem & operator=(const toolbarItem & ti) {
|
||||
// do we have to check icon and IsBitmap too?
|
||||
action = ti.action;
|
||||
icon = 0; // locally we need to get the icon anew
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
/// a list containing all the buttons
|
||||
toolbarItem * toollist;
|
||||
/// typedef to simplify things
|
||||
typedef std::vector<toolbarItem> ToolbarList;
|
||||
/// The list containing all the buttons
|
||||
ToolbarList toollist;
|
||||
///
|
||||
LyXView * owner;
|
||||
#if FL_REVISION < 89
|
||||
|
Loading…
Reference in New Issue
Block a user