X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetInfo.h;h=12932025b08e57cb098305b68134ed37a86fea94;hb=e4c46abeb7385960c9dd42494e3c7c1f3e699b56;hp=c3459bbea072a4c17e1eed3b3f82293993e4978a;hpb=f7b1c86393d890d5d473279d88e26bb78f8c1275;p=lyx.git diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h index c3459bbea0..12932025b0 100644 --- a/src/insets/InsetInfo.h +++ b/src/insets/InsetInfo.h @@ -12,67 +12,143 @@ #ifndef INSET_INFO_H #define INSET_INFO_H -#include "InsetText.h" -#include "RenderButton.h" -#include "gettext.h" -#include "Cursor.h" -#include "support/Translator.h" +#include "InsetCollapsable.h" namespace lyx { -/** Used to insert index labels - */ -class InsetInfo : public InsetText { +class Cursor; + +/* InsetInfo displays shortcuts, lyxrc, package and textclass +availability and menu information in a non-editable boxed InsetText. + +Output of such an inset may vary from system to system, depending +on LyX and LaTeX configurations. Two LyX help files, LaTeXConfig.lyx +and Shortcuts.lyx make heavy use of this inset. The former uses it +to display the availability of packages and textclasses, the latter +uses it to display currently used shortcuts. + +This inset has two arguments: the type and argument of the information. The +screen and latex output is the content of the information. An InsetInfo can +have type "shortcuts", "shortcut", "lyxrc", "package", "textclass", "menu", +or "buffer". Arguments and outputs vary by type. + +shortcuts: argument of this type of InsetInfo is the name of the LFUN such as + "math-insert \alpha". The syntax is the same as what is used in the bind + and ui files. The output of this inset is all shortcuts for this LFUN + separated by comma. + +shortcut: the same as shortcuts, but only output the last shortcut. + +lyxrc: argument is the name of the rc entry such as "bind_file". Look in + src/LyXRC.h for available entries. The output is the content of this RC + entry. + +package: argument is the name of a latex package such as "listings". The + output is "yes" or "no", indicating the availability of this package. + +textclass: argument is the name a textclass such as "article". The output is + "yes" or "no", indicating the availability of this textclass. + +menu: argument is the name of the LFUN such as "paste". The syntax is the same + as what is used in the bind and ui files. The output is the menu item that + triggers this LFUN. For example, "File > Paste", where '>' is actually + \lyxarrow (an InsetSpecialChar). + +icon: argument is the name of the LFUN such as "paste". The syntax is the same + as what is used in the bind and ui files. The output is the icon use in + the toolbar for this LFUN. Alternatively, argument can be the icon path + without extension specified with respect to the images directory. + +buffer: argument can be one of "name", "path", "class". This inset output the + filename, path, and textclass of this buffer. + +lyxinfo: argument must (presently) be "version". This inset outputs information + about the version of LyX currently in use. + +There is currently no GUI, no menu entry for this inset. A user can define a +shortcut for "info-insert" (e.g. C-S-I), and + +1. input the type and argument of this inset, e.g. "menu paste", in + the work area. +2. select the text and run "info-insert" (e.g. press C-S-I). + +An alternative method is to enter command "info-insert type arg" in +the command buffer (view->Toolbar->Command Buffer). + +*/ + +class InsetInfo : public InsetCollapsable { public: enum info_type { UNKNOWN_INFO, // Invalid type + SHORTCUTS_INFO, // Keyboard shortcuts SHORTCUT_INFO, // Keyboard shortcut LYXRC_INFO, // RC entry PACKAGE_INFO, // Availability of package TEXTCLASS_INFO, // Availability of textclass MENU_INFO, // Which menu item is used for certain function + ICON_INFO, // which toolbar icon is used for certain function + BUFFER_INFO, // Buffer related information + LYX_INFO // LyX version information }; /// - InsetInfo(BufferParams const & bp, std::string const & info = std::string()); + InsetInfo(Buffer * buf, std::string const & info = std::string()); + /// + InsetCode lyxCode() const { return INFO_CODE; } + /// + docstring layoutName() const; /// Inset * editXY(Cursor & cur, int x, int y); /// - EDITABLE editable() const { return NOT_EDITABLE; } + bool editable() const { return false; } /// - void draw(PainterInfo & pi, int x, int y) const; + bool hasSettings() const { return true; } /// - void read(Buffer const &, Lexer & lex); + void read(Lexer & lex); /// - void write(Buffer const & buf, std::ostream & os) const; + void write(std::ostream & os) const; /// - void doDispatch(Cursor & cur, FuncRequest & cmd); + std::string infoType() const; /// - InsetCode lyxCode() const { return INFO_CODE; } + std::string infoName() const { return name_; } + /// + bool validateModifyArgument(docstring const & argument) const; + /// + bool showInsetDialog(BufferView * bv) const; + /// + bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; + /// + void doDispatch(Cursor & cur, FuncRequest & cmd); /// void setInfo(std::string const & info); + /// update info_ and text + void updateInfo(); + /// + docstring toolTip(BufferView const & bv, int x, int y) const; + /// + std::string contextMenu(BufferView const &, int, int) const; /// - bool setMouseHover(bool mouse_hover); + std::string contextMenuName() const; + /// should paragraph indendation be ommitted in any case? + bool neverIndent() const { return true; } private: - /// The translator between the information type enum and corresponding string. - Translator const & nameTranslator() const; - /// update info_ and text - void updateInfo(); /// virtual Inset * clone() const { return new InsetInfo(*this); } /// + void error(std::string const & err); + /// + void setText(docstring const & str); + // make sure that the other version of setText is still available. + using InsetCollapsable::setText; + /// info_type type_; /// std::string name_; - /// store the buffer parameter - BufferParams const & bp_; - /// - bool mouse_hover_; }; - } // namespace lyx #endif