lyx_mirror/src/frontends/qt/GuiToolbar.h
Jean-Marc Lasgouttes c293be56bd Rename frontend qt4 to qt
In particular, the directory frontends/qt4 is renamed to frontends/qt.

Many configurations file have to be updated. All mentions of qt4 in
the source have been audited, and changed to qt if necessary.

The only part that has not been updated is the CMake build system.
2019-07-20 23:39:40 +02:00

197 lines
3.5 KiB
C++

// -*- C++ -*-
/**
* \file GuiToolbar.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
* \author John Levon
* \author Jean-Marc Lasgouttes
* \author Angus Leeming
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef GUITOOLBAR_H
#define GUITOOLBAR_H
#include <QList>
#include <QToolBar>
#include <QToolButton>
#include "support/strfwd.h"
class QSettings;
namespace lyx {
class DocumentClass;
class Inset;
namespace frontend {
class Action;
class GuiCommandBuffer;
class GuiLayoutFilterModel;
class GuiToolbar;
class GuiView;
class LayoutBox;
class ToolbarInfo;
class ToolbarItem;
class MenuButtonBase : public QToolButton
{
Q_OBJECT
public:
///
MenuButtonBase(GuiToolbar * bar, ToolbarItem const & item);
protected:
///
virtual void initialize() = 0;
///
GuiToolbar * bar_;
///
ToolbarItem const & tbitem_;
protected Q_SLOTS:
///
void actionTriggered(QAction * action);
///
virtual void updateTriggered() = 0;
};
class StaticMenuButton : public MenuButtonBase
{
Q_OBJECT
public:
///
StaticMenuButton(GuiToolbar * bar, ToolbarItem const & item,
bool const sticky = false);
protected:
///
void initialize();
protected Q_SLOTS:
///
void updateTriggered();
};
/// A menu which can be populated on the fly.
/// The 'type' of menu must be given in the toolbar file
/// (stdtoolbars.inc, usually) and must be one of:
/// dynamic-custom-insets
/// dynamic-char-styles
/// textstyle-apply
/// paste
/// To add a new one of these, you must add a routine, like
/// loadFlexInsets, that will populate the menu, and call it from
/// updateTriggered. Make sure to add the new type to isMenuType().
class DynamicMenuButton : public MenuButtonBase
{
Q_OBJECT
public:
///
DynamicMenuButton(GuiToolbar * bar, ToolbarItem const & item);
///
~DynamicMenuButton();
///
static bool isMenuType(std::string const & s);
protected:
///
void initialize();
///
void loadFlexInsets();
/// pimpl so we don't have to include big files
class Private;
Private * d;
protected Q_SLOTS:
///
void updateTriggered();
};
class GuiToolbar : public QToolBar
{
Q_OBJECT
public:
///
GuiToolbar(ToolbarInfo const &, GuiView &);
/// Reimplemented from QToolbar to detect whether the
/// toolbar is restored with MainWindow::restoreState().
void setVisible(bool visible);
///
void setVisibility(int visibility);
/// Add a button to the bar.
void add(ToolbarItem const & item);
/// Session key.
/**
* This key must be used for any session setting.
**/
QString sessionKey() const;
/// Save session settings.
void saveSession(QSettings & settings) const;
/// Restore session settings.
void restoreSession();
///
bool isRestored() const;
/// Refresh the contents of the bar.
void update(int context = 0);
///
void toggle();
/// toggles movability
void movable(bool silent = false);
///
GuiCommandBuffer * commandBuffer() { return command_buffer_; }
///
Action * addItem(ToolbarItem const & item);
///
GuiView const & owner() { return owner_; }
Q_SIGNALS:
///
void updated();
private:
// load flags with saved values
void initFlags();
///
void fill();
///
void showEvent(QShowEvent *);
///
QList<Action *> actions_;
/// initial visibility flags
int visibility_;
///
GuiView & owner_;
///
GuiCommandBuffer * command_buffer_;
///
ToolbarInfo const & tbinfo_;
///
bool filled_;
///
bool restored_;
};
} // namespace frontend
} // namespace lyx
#endif // GUITOOLBAR_H