[EMAIL PROTECTED] wrote:
Is there a way to assign an icon to a command
sequence?
a year ago i hacked together the attached...
also see here:
http://bugzilla.lyx.org/show_bug.cgi?id=2262
? tb.diff
Index: lib/ui/stdtoolbars.ui
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/lib/ui/stdtoolbars.ui,v
retrieving revision 1.19
diff -u -p -r1.19 stdtoolbars.ui
--- lib/ui/stdtoolbars.ui 22 May 2005 23:01:21 -0000 1.19
+++ lib/ui/stdtoolbars.ui 31 Jan 2006 16:33:59 -0000
@@ -18,11 +18,11 @@
#
# Only four commands are allowed inside the begin_toolbar and end_toolbar
# directives:
-# Item "The tooltip" "<action> [<parameter>]" adds an icon to the toolbar performing
+# Item "The tooltip" "<action> [<parameter>]" "icon" adds an icon to the toolbar performing
# "<action> <parameter>"
# Examples:
-# Item "Small font" "font-size small"
-# Item Emphasized set-emph
+# Item "Small font" "font-size small" "font-size small"
+# Item "Small font" "command-sequence float-insert table;self-insert Change this!;break-paragraph;tabular-insert 5 5" "custom1"
#
# Layouts adds the layouts combo-box to the toolbar
#
@@ -41,104 +41,104 @@
Toolbar "standard" "Standard"
Layouts
- Item "New document" "buffer-new"
- Item "Open document" "file-open"
- Item "Save document" "buffer-write"
- Item "Print document" "dialog-show print"
- Separator
- Item "Undo" "undo"
- Item "Redo" "redo"
- Item "Cut" "cut"
- Item "Copy" "copy"
- Item "Paste" "paste"
- Item "Find and replace" "dialog-show findreplace"
- Separator
- Item "Toggle emphasis" "font-emph"
- Item "Toggle noun" "font-noun"
- Item "Apply last" "font-free-apply"
- Separator
- Item "Insert math" "math-mode"
- Item "Insert graphics" "dialog-show-new-inset graphics"
- Item "Insert table" "tabular-insert"
+ Item "New document" "buffer-new" "buffer-new"
+ Item "Open document" "file-open" "file-open"
+ Item "Save document" "buffer-write" "buffer-write"
+ Item "Print document" "dialog-show print" "dialog-show print"
+ Separator
+ Item "Undo" "undo" "undo"
+ Item "Redo" "redo" "redo"
+ Item "Cut" "cut" "cut"
+ Item "Copy" "copy" "copy"
+ Item "Paste" "paste" "paste"
+ Item "Find and replace" "dialog-show findreplace" "dialog-show findreplace"
+ Separator
+ Item "Toggle emphasis" "font-emph" "font-emph"
+ Item "Toggle noun" "font-noun" "font-noun"
+ Item "Apply last" "font-free-apply" "font-free-apply"
+ Separator
+ Item "Insert math" "math-mode" "math-mode"
+ Item "Insert graphics" "dialog-show-new-inset graphics" "dialog-show-new-inset graphics"
+ Item "Insert table" "tabular-insert" "tabular-insert"
End
Toolbar "extra" "Extra"
- Item "Numbered list" "layout Enumerate"
- Item "Itemized list" "layout Itemize"
- Item "List" "layout List"
- Item "Description" "layout Description"
- Item "Increase depth" "depth-increment"
- Item "Decrease depth" "depth-decrement"
- Separator
- Item "Insert figure float" "float-insert figure"
- Item "Insert table float" "float-insert table"
- Item "Insert label" "label-insert"
- Item "Insert cross-reference" "dialog-show-new-inset ref"
- Item "Insert citation" "dialog-show-new-inset citation"
- Item "Insert index entry" "index-insert"
- Separator
- Item "Insert footnote" "footnote-insert"
- Item "Insert margin note" "marginalnote-insert"
- Item "Insert note" "note-insert"
- Item "Insert URL" "url-insert"
- Item "Insert TeX Code" "ert-insert"
- Item "Include file" "dialog-show-new-inset include"
- Separator
- Item "Text style" "dialog-show character"
- Item "Paragraph settings" "layout-paragraph"
- Item "Table of contents" "toc-view"
- Item "Check spelling" "dialog-show spellchecker"
- Item "Thesaurus" "thesaurus-entry"
+ Item "Numbered list" "layout Enumerate" "layout Enumerate"
+ Item "Itemized list" "layout Itemize" "layout Itemize"
+ Item "List" "layout List" "layout List"
+ Item "Description" "layout Description" "layout Description"
+ Item "Increase depth" "depth-increment" "depth-increment"
+ Item "Decrease depth" "depth-decrement" "depth-decrement"
+ Separator
+ Item "Insert figure float" "float-insert figure" "float-insert figure"
+ Item "Insert table float" "float-insert table" "float-insert table"
+ Item "Insert label" "label-insert" "label-insert"
+ Item "Insert cross-reference" "dialog-show-new-inset ref" "dialog-show-new-inset ref"
+ Item "Insert citation" "dialog-show-new-inset citation" "dialog-show-new-inset citation"
+ Item "Insert index entry" "index-insert" "index-insert"
+ Separator
+ Item "Insert footnote" "footnote-insert" "footnote-insert"
+ Item "Insert margin note" "marginalnote-insert" "marginalnote-insert"
+ Item "Insert note" "note-insert" "note-insert"
+ Item "Insert URL" "url-insert" "url-insert"
+ Item "Insert TeX Code" "ert-insert" "ert-insert"
+ Item "Include file" "dialog-show-new-inset include" "dialog-show-new-inset include"
+ Separator
+ Item "Text style" "dialog-show character" "dialog-show character"
+ Item "Paragraph settings" "layout-paragraph" "layout-paragraph"
+ Item "Table of contents" "toc-view" "toc-view"
+ Item "Check spelling" "dialog-show spellchecker" "dialog-show spellchecker"
+ Item "Thesaurus" "thesaurus-entry" "thesaurus-entry"
End
Toolbar "table" "Table"
- Item "Add row" "tabular-feature append-row"
- Item "Add column" "tabular-feature append-column"
- Item "Delete row" "tabular-feature delete-row"
- Item "Delete column" "tabular-feature delete-column"
- Separator
- Item "Set top line" "tabular-feature toggle-line-top"
- Item "Set bottom line" "tabular-feature toggle-line-bottom"
- Item "Set left line" "tabular-feature toggle-line-left"
- Item "Set right line" "tabular-feature toggle-line-right"
- Item "Set all lines" "tabular-feature set-all-lines"
- Item "Unset all lines" "tabular-feature unset-all-lines"
- Separator
- Item "Align left" "tabular-feature align-left"
- Item "Align center" "tabular-feature align-center"
- Item "Align right" "tabular-feature align-right"
- Separator
- Item "Align top" "tabular-feature valign-top"
- Item "Align middle" "tabular-feature valign-middle"
- Item "Align bottom" "tabular-feature valign-bottom"
- Separator
- Item "Rotate cell" "tabular-feature set-rotate-cell"
- Item "Rotate table" "tabular-feature set-rotate-tabular"
- Item "Set multi-column" "tabular-feature multicolumn"
+ Item "Add row" "tabular-feature append-row" "tabular-feature append-row"
+ Item "Add column" "tabular-feature append-column" "tabular-feature append-column"
+ Item "Delete row" "tabular-feature delete-row" "tabular-feature delete-row"
+ Item "Delete column" "tabular-feature delete-column" "tabular-feature delete-column"
+ Separator
+ Item "Set top line" "tabular-feature toggle-line-top" "tabular-feature toggle-line-top"
+ Item "Set bottom line" "tabular-feature toggle-line-bottom" "tabular-feature toggle-line-bottom"
+ Item "Set left line" "tabular-feature toggle-line-left" "tabular-feature toggle-line-left"
+ Item "Set right line" "tabular-feature toggle-line-right" "tabular-feature toggle-line-right"
+ Item "Set all lines" "tabular-feature set-all-lines" "tabular-feature set-all-lines"
+ Item "Unset all lines" "tabular-feature unset-all-lines" "tabular-feature unset-all-lines"
+ Separator
+ Item "Align left" "tabular-feature align-left" "tabular-feature align-left"
+ Item "Align center" "tabular-feature align-center" "tabular-feature align-center"
+ Item "Align right" "tabular-feature align-right" "tabular-feature align-right"
+ Separator
+ Item "Align top" "tabular-feature valign-top" "tabular-feature valign-top"
+ Item "Align middle" "tabular-feature valign-middle" "tabular-feature valign-middle"
+ Item "Align bottom" "tabular-feature valign-bottom" "tabular-feature valign-bottom"
+ Separator
+ Item "Rotate cell" "tabular-feature set-rotate-cell" "tabular-feature set-rotate-cell"
+ Item "Rotate table" "tabular-feature set-rotate-tabular" "tabular-feature set-rotate-tabular"
+ Item "Set multi-column" "tabular-feature multicolumn" "tabular-feature multicolumn"
End
Toolbar "math" "Math"
- Item "Show math panel" "dialog-show mathpanel"
- Item "Set display mode" "math-display"
- Item "Subscript" "math-subscript"
- Item "Superscript" "math-superscript"
- Item "Insert root" "math-insert \root"
- Item "Insert square root" "math-insert \sqrt"
- Item "Insert sum" "math-insert \sum"
- Item "Insert integral" "math-insert \int"
- Item "Insert product" "math-insert \prod"
- Separator
- Item "Insert fraction" "math-insert \frac"
- Item "Insert ( )" "math-delim ( )"
- Item "Insert [ ]" "math-delim [ ]"
- Item "Insert { }" "math-delim { }"
- Separator
- Item "Insert matrix" "math-matrix 2 2"
- Item "Insert cases" "math-insert \cases"
- Item "Add row" "tabular-feature append-row"
- Item "Add column" "tabular-feature append-column"
- Item "Delete row" "tabular-feature delete-row"
- Item "Delete column" "tabular-feature delete-column"
+ Item "Show math panel" "dialog-show mathpanel" "dialog-show mathpanel"
+ Item "Set display mode" "math-display" "math-display"
+ Item "Subscript" "math-subscript" "math-subscript"
+ Item "Superscript" "math-superscript" "math-superscript"
+ Item "Insert root" "math-insert \root" "math-insert \root"
+ Item "Insert square root" "math-insert \sqrt" "math-insert \sqrt"
+ Item "Insert sum" "math-insert \sum" "math-insert \sum"
+ Item "Insert integral" "math-insert \int" "math-insert \int"
+ Item "Insert product" "math-insert \prod" "math-insert \prod"
+ Separator
+ Item "Insert fraction" "math-insert \frac" "math-insert \frac"
+ Item "Insert ( )" "math-delim ( )" "math-delim ( )"
+ Item "Insert [ ]" "math-delim [ ]" "math-delim [ ]"
+ Item "Insert { }" "math-delim { }" "math-delim { }"
+ Separator
+ Item "Insert matrix" "math-matrix 2 2" "math-matrix 2 2"
+ Item "Insert cases" "math-insert \cases" "math-insert \cases"
+ Item "Add row" "tabular-feature append-row" "tabular-feature append-row"
+ Item "Add column" "tabular-feature append-column" "tabular-feature append-column"
+ Item "Delete row" "tabular-feature delete-row" "tabular-feature delete-row"
+ Item "Delete column" "tabular-feature delete-column" "tabular-feature delete-column"
End
Toolbar "minibuffer" "Command Buffer"
Index: src/ToolbarBackend.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ToolbarBackend.C,v
retrieving revision 1.26
diff -u -p -r1.26 ToolbarBackend.C
--- src/ToolbarBackend.C 8 Nov 2004 10:54:27 -0000 1.26
+++ src/ToolbarBackend.C 31 Jan 2006 16:33:59 -0000
@@ -103,7 +103,11 @@ void ToolbarBackend::read(LyXLex & lex)
FuncRequest func =
lyxaction.lookupFunc(func_arg);
- add(tb, func, tooltip);
+ lex.next(true);
+ string const icon = lex.getString();
+ lyxerr[Debug::PARSER] << "icon: " << icon << endl;
+
+ add(tb, func, icon, tooltip);
}
break;
@@ -204,37 +208,39 @@ void ToolbarBackend::readToolbars(LyXLex
void ToolbarBackend::add(Toolbar & tb,
- FuncRequest const & func, string const & tooltip)
+ FuncRequest const & func, string const & icon, string const & tooltip)
{
- tb.items.push_back(make_pair(func, tooltip));
- tb.items.back().first.origin = FuncRequest::UI;
+ Item item;
+ item.action = func;
+ item.action.origin = FuncRequest::UI;
+ item.icon = icon;
+ item.tooltip = tooltip;
+ tb.items.push_back(item);
}
-string const ToolbarBackend::getIcon(FuncRequest const & f)
+string const ToolbarBackend::getIcon(FuncRequest const & f, std::string const & icon)
{
using lyx::frontend::find_xpm;
string fullname;
if (f.action == LFUN_INSERT_MATH) {
- if (!f.argument.empty())
+ if (!f.argument.empty())
fullname = find_xpm(f.argument.substr(1));
} else if (f.action == LFUN_MATH_DELIM) {
fullname = find_xpm(f.argument);
- } else {
+ } else fullname = LibFileSearch("images", icon, "xpm");
+
+ // if icon cannot be found, fall back on the action name
+ if (fullname.empty()) {
string const name = lyxaction.getActionName(f.action);
string xpm_name(name);
- if (!f.argument.empty())
+ if (!f.argument.empty()) {
xpm_name = subst(name + ' ' + f.argument, ' ', '_');
-
- fullname = LibFileSearch("images", xpm_name, "xpm");
-
- if (fullname.empty()) {
- // try without the argument
- fullname = LibFileSearch("images", name, "xpm");
}
+ fullname = LibFileSearch("images", xpm_name, "xpm");
}
if (!fullname.empty()) {
Index: src/ToolbarBackend.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ToolbarBackend.h,v
retrieving revision 1.12
diff -u -p -r1.12 ToolbarBackend.h
--- src/ToolbarBackend.h 21 Apr 2004 00:19:26 -0000 1.12
+++ src/ToolbarBackend.h 31 Jan 2006 16:33:59 -0000
@@ -34,8 +34,12 @@ public:
LAYOUTS = -1,
};
- /// action, tooltip
- typedef std::pair<FuncRequest, std::string> Item;
+ /// action, tooltip, icon
+ struct Item {
+ FuncRequest action;
+ std::string tooltip;
+ std::string icon;
+ };
/// the toolbar items
typedef std::vector<Item> Items;
@@ -86,11 +90,13 @@ public:
void readToolbars(LyXLex &);
/// return a full path of an XPM for the given action
- static std::string const getIcon(FuncRequest const &);
+ static std::string const getIcon(FuncRequest const &,
+ std::string const & icon = std::string());
private:
- /// add the given lfun with tooltip if relevant
+ /// add the given lfun with icon and with tooltip if relevant
void add(Toolbar & tb, FuncRequest const &,
+ std::string const & icon = std::string(),
std::string const & tooltip = std::string());
/// all the toolbars
Index: src/frontends/Toolbars.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/Toolbars.h,v
retrieving revision 1.2
diff -u -p -r1.2 Toolbars.h
--- src/frontends/Toolbars.h 9 Nov 2004 12:40:33 -0000 1.2
+++ src/frontends/Toolbars.h 31 Jan 2006 16:33:59 -0000
@@ -51,6 +51,7 @@ public:
virtual ~Toolbar() {}
/// Add a button to the bar.
virtual void add(FuncRequest const & func,
+ std::string const & icon,
std::string const & tooltip) = 0;
/** Hide the bar.
Index: src/frontends/qt2/QLToolbar.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QLToolbar.C,v
retrieving revision 1.17
diff -u -p -r1.17 QLToolbar.C
--- src/frontends/qt2/QLToolbar.C 9 Nov 2004 12:40:33 -0000 1.17
+++ src/frontends/qt2/QLToolbar.C 31 Jan 2006 16:33:59 -0000
@@ -174,11 +174,11 @@ QLToolbar::QLToolbar(ToolbarBackend::Too
ToolbarBackend::item_iterator it = tbb.items.begin();
ToolbarBackend::item_iterator end = tbb.items.end();
for (; it != end; ++it)
- add(it->first, it->second);
+ add(it->action, it->icon, it->tooltip);
}
-void QLToolbar::add(FuncRequest const & func, string const & tooltip)
+void QLToolbar::add(FuncRequest const & func, string const & icon, string const & tooltip)
{
switch (func.action) {
case ToolbarBackend::SEPARATOR:
@@ -194,7 +194,7 @@ void QLToolbar::add(FuncRequest const &
default: {
if (owner_.getLyXFunc().getStatus(func).unknown())
break;
- QPixmap p = QPixmap(toolbarbackend.getIcon(func).c_str());
+ QPixmap p = QPixmap(toolbarbackend.getIcon(func,icon).c_str());
QToolButton * button =
new QToolButton(p, toqstr(tooltip), "",
this, SLOT(clicked()), toolbar_);
Index: src/frontends/qt2/QLToolbar.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QLToolbar.h,v
retrieving revision 1.8
diff -u -p -r1.8 QLToolbar.h
--- src/frontends/qt2/QLToolbar.h 19 May 2004 15:11:33 -0000 1.8
+++ src/frontends/qt2/QLToolbar.h 31 Jan 2006 16:33:59 -0000
@@ -61,7 +61,7 @@ class QLToolbar : public QObject, public
Q_OBJECT
public:
QLToolbar(ToolbarBackend::Toolbar const &, LyXView &);
- void add(FuncRequest const & func, std::string const & tooltip);
+ void add(FuncRequest const & func, std::string const & icon, std::string const & tooltip);
void hide(bool);
void show(bool);
void update();