MENU, // A menu entry
TOOLBAR, // A toolbar icon
KEYBOARD, // a keyboard binding
- COMMANDBUFFER
+ COMMANDBUFFER,
+ TOC
};
/// just for putting these things in std::container
widget_->updateView();
}
+void GuiToc::doDispatch(Cursor & cur, FuncRequest const & cmd)
+{
+ widget_->doDispatch(cur, cmd);
+}
+
Dialog * createGuiToc(GuiView & lv)
{
void dispatchParams();
///
bool isBufferDependent() const { return true; }
+ ///
+ void doDispatch(Cursor & cur, FuncRequest const & fr);
private:
///
#include "GuiCompleter.h"
#include "GuiWorkArea.h"
#include "GuiKeySymbol.h"
+#include "GuiToc.h"
#include "GuiToolbar.h"
#include "Menus.h"
#include "TocModel.h"
if (cmd.origin == FuncRequest::MENU && !hasFocus())
buf = 0;
+ if (cmd.origin == FuncRequest::TOC) {
+ //FIXME: dispatch this to the toc
+ return true;
+ }
+
switch(cmd.action) {
case LFUN_BUFFER_WRITE:
enable = buf && (buf->isUnnamed() || !buf->isClean());
bv->cursor().updateFlags(Update::None);
bool dispatched = true;
+ if (cmd.origin == FuncRequest::TOC) {
+ GuiToc * toc = static_cast<GuiToc*>(findOrBuild("toc", false));
+ toc->doDispatch(bv->cursor(), cmd);
+ return true;
+ }
+
switch(cmd.action) {
case LFUN_BUFFER_IMPORT:
importDocument(to_utf8(cmd.argument()));
MenuItem(Kind kind,
QString const & label,
FuncRequest const & func,
- bool optional = false)
+ bool optional = false,
+ FuncRequest::Origin origin = FuncRequest::MENU)
: kind_(kind), label_(label), func_(func), optional_(optional)
{
- func_.origin = FuncRequest::MENU;
+ func_.origin = origin;
}
// boost::shared_ptr<MenuDefinition> needs this apprently...
lex.next(true);
string const command = lex.getString();
FuncRequest func = lyxaction.lookupFunc(command);
- add(MenuItem(MenuItem::Command, toqstr(name), func, optional));
+ FuncRequest::Origin origin = FuncRequest::MENU;
+ if (name_.startsWith("context-toc-"))
+ origin = FuncRequest::TOC;
+ add(MenuItem(MenuItem::Command, toqstr(name), func, optional, origin));
optional = false;
break;
}
#include "Buffer.h"
#include "FuncRequest.h"
#include "LyXFunc.h"
+#include "Menus.h"
#include "support/debug.h"
#include "support/lassert.h"
#include <QHeaderView>
+#include <QMenu>
#include <QTimer>
#include <vector>
// Buffer.
enableControls(false);
+ // make us responsible for the context menu of the tabbar
+ setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
+ this, SLOT(showContextMenu(const QPoint &)));
+ connect(tocTV, SIGNAL(customContextMenuRequested(const QPoint &)),
+ this, SLOT(showContextMenu(const QPoint &)));
+
init(QString());
}
+void TocWidget::showContextMenu(const QPoint & pos)
+{
+ std::string name = "context-toc-" + fromqstr(current_type_);
+ QMenu * menu = guiApp->menus().menu(toqstr(name), gui_view_);
+ if (!menu)
+ return;
+ menu->exec(mapToGlobal(pos));
+}
+
+
+void TocWidget::doDispatch(Cursor const & cur, FuncRequest const & cmd)
+{
+ switch(cmd.action) {
+ default:
+ break;
+ }
+}
+
+
void TocWidget::on_tocTV_activated(QModelIndex const & index)
{
goTo(index);
#include "ui_TocUi.h"
+#include "Cursor.h"
+
#include <QWidget>
class QModelIndex;
/// Initialise GUI.
void init(QString const & str);
+ void doDispatch(Cursor const & cur, FuncRequest const & fr);
+
public Q_SLOTS:
/// Update the display of the dialog whilst it is still visible.
void updateView();
void on_moveInTB_clicked();
void on_moveOutTB_clicked();
+ void showContextMenu(const QPoint & pos);
+
private:
///
void enableControls(bool enable = true);