2007-10-11 14:52:00 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/**
|
|
|
|
* \file InsetInfo.h
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Bo Peng
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef INSET_INFO_H
|
|
|
|
#define INSET_INFO_H
|
|
|
|
|
|
|
|
#include "InsetText.h"
|
|
|
|
#include "RenderButton.h"
|
|
|
|
#include "Cursor.h"
|
2008-03-06 21:50:27 +00:00
|
|
|
|
|
|
|
#include "support/gettext.h"
|
2007-10-11 14:52:00 +00:00
|
|
|
#include "support/Translator.h"
|
|
|
|
|
2007-10-13 20:49:06 +00:00
|
|
|
/* InsetInfo displays shortcuts, lyxrc, package and textclass
|
|
|
|
availability and menu information in a non-editable boxed InsetText.
|
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
Output of such an inset may vary from system to system, depending
|
2007-10-13 20:49:06 +00:00
|
|
|
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.
|
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
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
|
2007-12-19 18:09:00 +00:00
|
|
|
have type "shortcut", "lyxrc", "package", "textclass", "menu", or "buffer".
|
|
|
|
Arguments and outputs vary by type.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
shortcut: 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.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
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
|
2007-10-14 00:47:52 +00:00
|
|
|
entry.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
package: argument is the name of a latex package such as "listings". The
|
|
|
|
output is "yes" or "no", indicating the availability of this package.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
textclass: argument is the name a textclass such as "article". The output is
|
|
|
|
"yes" or "no", indicating the availability of this textclass.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
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).
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-12-19 18:09:00 +00:00
|
|
|
buffer: argument can be one of "name", "path", "class". This inset output the
|
|
|
|
filename, path, and textclass of this buffer.
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-12-19 18:09:00 +00:00
|
|
|
There is currently no GUI, no menu entry for this inset. A user can define a
|
2007-10-14 00:47:52 +00:00
|
|
|
shortcut for "info-insert" (e.g. C-S-I), and
|
2007-10-13 20:49:06 +00:00
|
|
|
|
2007-10-14 00:47:52 +00:00
|
|
|
1. input the type and argument of this inset, e.g. "menu paste", in
|
|
|
|
the work area.
|
2007-10-13 20:49:06 +00:00
|
|
|
2. select the text and run "info-insert" (e.g. press C-S-I).
|
|
|
|
|
2007-10-14 01:37:02 +00:00
|
|
|
An alternative method is to enter command "info-insert type arg" in
|
2007-10-14 00:47:52 +00:00
|
|
|
the command buffer (view->Toolbar->Command Buffer).
|
|
|
|
|
2007-10-13 20:49:06 +00:00
|
|
|
*/
|
|
|
|
|
2007-10-11 14:52:00 +00:00
|
|
|
namespace lyx {
|
|
|
|
|
|
|
|
/** Used to insert index labels
|
|
|
|
*/
|
|
|
|
class InsetInfo : public InsetText {
|
|
|
|
public:
|
|
|
|
enum info_type {
|
|
|
|
UNKNOWN_INFO, // Invalid type
|
|
|
|
SHORTCUT_INFO, // Keyboard shortcut
|
2007-10-11 15:23:52 +00:00
|
|
|
LYXRC_INFO, // RC entry
|
2007-10-11 14:52:00 +00:00
|
|
|
PACKAGE_INFO, // Availability of package
|
|
|
|
TEXTCLASS_INFO, // Availability of textclass
|
2007-10-11 15:14:11 +00:00
|
|
|
MENU_INFO, // Which menu item is used for certain function
|
2007-12-19 18:09:00 +00:00
|
|
|
BUFFER_INFO, // Buffer related information
|
2007-10-11 14:52:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
///
|
2008-03-04 22:28:18 +00:00
|
|
|
InsetInfo(Buffer const & buf, std::string const & info = std::string());
|
2007-10-11 14:52:00 +00:00
|
|
|
///
|
|
|
|
Inset * editXY(Cursor & cur, int x, int y);
|
|
|
|
///
|
|
|
|
EDITABLE editable() const { return NOT_EDITABLE; }
|
|
|
|
///
|
|
|
|
void draw(PainterInfo & pi, int x, int y) const;
|
|
|
|
///
|
2008-02-27 20:43:16 +00:00
|
|
|
void read(Lexer & lex);
|
2007-10-11 14:52:00 +00:00
|
|
|
///
|
2008-02-27 20:43:16 +00:00
|
|
|
void write(std::ostream & os) const;
|
2007-10-11 14:52:00 +00:00
|
|
|
///
|
|
|
|
void doDispatch(Cursor & cur, FuncRequest & cmd);
|
|
|
|
///
|
2007-10-13 09:04:52 +00:00
|
|
|
InsetCode lyxCode() const { return INFO_CODE; }
|
2007-10-11 14:52:00 +00:00
|
|
|
///
|
|
|
|
void setInfo(std::string const & info);
|
2007-12-19 18:09:00 +00:00
|
|
|
/// update info_ and text
|
2008-02-27 20:43:16 +00:00
|
|
|
void updateInfo();
|
2007-10-11 14:52:00 +00:00
|
|
|
///
|
|
|
|
bool setMouseHover(bool mouse_hover);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/// The translator between the information type enum and corresponding string.
|
|
|
|
Translator<info_type, std::string> const & nameTranslator() const;
|
|
|
|
///
|
|
|
|
virtual Inset * clone() const { return new InsetInfo(*this); }
|
|
|
|
///
|
|
|
|
info_type type_;
|
|
|
|
///
|
|
|
|
std::string name_;
|
|
|
|
///
|
|
|
|
bool mouse_hover_;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
|
|
|
|
#endif
|