mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-16 21:10:26 +00:00
c293be56bd
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.
161 lines
3.4 KiB
C++
161 lines
3.4 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file Toolbars.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Jean-Marc Lasgouttes
|
|
* \author John Levon
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef TOOLBAR_BACKEND_H
|
|
#define TOOLBAR_BACKEND_H
|
|
|
|
#include "FuncRequest.h"
|
|
|
|
#include <vector>
|
|
#include <map>
|
|
#include <memory>
|
|
|
|
|
|
namespace lyx {
|
|
|
|
class Lexer;
|
|
|
|
namespace frontend {
|
|
|
|
class ToolbarItem {
|
|
public:
|
|
enum Type {
|
|
/// command/action
|
|
COMMAND,
|
|
/// the command buffer
|
|
MINIBUFFER,
|
|
/// adds space between buttons in the toolbar
|
|
SEPARATOR,
|
|
/// a special combox insead of a button
|
|
LAYOUTS,
|
|
/// a special widget to insert tabulars
|
|
TABLEINSERT,
|
|
/// a button that expands a menu
|
|
POPUPMENU,
|
|
/// a button that expands a menu but remembers the last choice
|
|
STICKYPOPUPMENU,
|
|
///
|
|
ICONPALETTE,
|
|
///
|
|
DYNAMICMENU
|
|
};
|
|
|
|
ToolbarItem(Type type,
|
|
FuncRequest const & func,
|
|
docstring const & label = docstring());
|
|
|
|
ToolbarItem(Type type,
|
|
std::string const & name = std::string(),
|
|
docstring const & label = docstring());
|
|
|
|
/// item type
|
|
Type type_;
|
|
/// action
|
|
std::shared_ptr<FuncRequest> func_; // non-null
|
|
/// label/tooltip
|
|
docstring label_;
|
|
/// name
|
|
std::string name_;
|
|
};
|
|
|
|
|
|
///
|
|
class ToolbarInfo {
|
|
public:
|
|
/// the toolbar items
|
|
typedef std::vector<ToolbarItem> Items;
|
|
|
|
typedef Items::const_iterator item_iterator;
|
|
|
|
explicit ToolbarInfo(std::string const & name = std::string())
|
|
: name(name) {}
|
|
|
|
/// toolbar name
|
|
std::string name;
|
|
/// toolbar GUI name
|
|
docstring gui_name;
|
|
/// toolbar contents
|
|
Items items;
|
|
|
|
/// read a toolbar from the file
|
|
ToolbarInfo & read(Lexer &);
|
|
|
|
private:
|
|
/// add toolbar item
|
|
void add(ToolbarItem const &);
|
|
};
|
|
|
|
|
|
///
|
|
class Toolbars {
|
|
public:
|
|
/// toolbar visibility flags
|
|
enum Visibility {
|
|
ON = 1, //< show
|
|
OFF = 2, //< do not show
|
|
TOP = 4, //< show at top
|
|
BOTTOM = 8, //< show at bottom
|
|
LEFT = 16, //< show at left
|
|
RIGHT = 32, //< show at right
|
|
AUTO = 64, //< only if AUTO is set, when MATH, TABLE and REVIEW is used
|
|
MATH = 128, //< show when in math
|
|
TABLE = 256, //< show when in table
|
|
REVIEW = 512, //< show when change tracking is enabled
|
|
MATHMACROTEMPLATE = 1024, //< show in math macro template
|
|
SAMEROW = 2048, //< place to the current row, no new line
|
|
IPA = 4096, //< show when in IPA inset
|
|
MINIBUFFER = 8192, //< show when command-execute has been invoked
|
|
MINIBUFFER_FOCUS = 16384, //< set focus to minibuffer
|
|
ALLOWAUTO = MATH | TABLE | REVIEW | MATHMACROTEMPLATE | IPA | MINIBUFFER
|
|
};
|
|
|
|
typedef std::vector<ToolbarInfo> Infos;
|
|
|
|
Toolbars() {}
|
|
|
|
///
|
|
void reset();
|
|
|
|
/// iterator for all toolbars
|
|
Infos::const_iterator begin() const { return toolbar_info_.begin(); }
|
|
|
|
Infos::const_iterator end() const { return toolbar_info_.end(); }
|
|
|
|
Infos::iterator begin() { return toolbar_info_.begin(); }
|
|
|
|
Infos::iterator end() { return toolbar_info_.end(); }
|
|
|
|
/// read toolbars from the file
|
|
void readToolbars(Lexer &);
|
|
|
|
/// read ui toolbar settings
|
|
void readToolbarSettings(Lexer &);
|
|
|
|
///
|
|
ToolbarInfo const * info(std::string const & name) const;
|
|
///
|
|
int defaultVisibility(std::string const & name) const;
|
|
///
|
|
bool isMainToolbar(std::string const & name) const;
|
|
|
|
private:
|
|
/// all the defined toolbars
|
|
Infos toolbar_info_;
|
|
///
|
|
std::map<std::string, int> toolbar_visibility_;
|
|
};
|
|
|
|
} // namespace frontend
|
|
} // namespace lyx
|
|
|
|
#endif // TOOLBAR_BACKEND_H
|