Mercurial > hg > forks > geeqie
annotate src/toolbar.c @ 2817:e6f95baec8b5
Fix #624: Filter files by shell or regular expression pattern
https://github.com/BestImageViewer/geeqie/issues/624
An option on Select/Show File Filter (or the toolbar) to provide regular
expression file-filtering of the currently displayed folder.
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Wed, 15 Aug 2018 19:43:06 +0100 |
parents | 865f7eab9b6d |
children | e88128f85953 |
rev | line source |
---|---|
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
1 /* |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
2 * Copyright (C) 2004 John Ellis |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
3 * Copyright (C) 2008 - 2017 The Geeqie Team |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
4 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
5 * Author: Colin Clark |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
6 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
7 * This program is free software; you can redistribute it and/or modify |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
8 * it under the terms of the GNU General Public License as published by |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
9 * the Free Software Foundation; either version 2 of the License, or |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
10 * (at your option) any later version. |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
11 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
15 * GNU General Public License for more details. |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
16 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU General Public License along |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
18 * with this program; if not, write to the Free Software Foundation, Inc., |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
20 */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
21 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
22 #include "main.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
23 #include "toolbar.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
24 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
25 #include "collect.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
26 #include "layout_util.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
27 #include "ui_fileops.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
28 #include "ui_misc.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
29 #include "pixbuf_util.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
30 #include "ui_menu.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
31 #include "editors.h" |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
32 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
33 /** Implements the user-definable toolbar function |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
34 * Called from the Preferences/toolbar tab |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
35 **/ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
36 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
37 typedef struct _ToolbarData ToolbarData; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
38 struct _ToolbarData |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
39 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
40 GtkWidget *widget; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
41 GtkWidget *vbox; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
42 GtkWidget *add_button; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
43 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
44 LayoutWindow *lw; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
45 }; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
46 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
47 typedef struct _ToolbarButtonData ToolbarButtonData; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
48 struct _ToolbarButtonData |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
49 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
50 GtkWidget *button; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
51 GtkWidget *button_label; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
52 GtkWidget *image; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
53 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
54 gchar *name; /* GtkActionEntry terminology */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
55 gchar *stock_id; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
56 }; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
57 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
58 static ToolbarData *toolbarlist; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
59 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
60 typedef struct _UseableToolbarItems UseableToolbarItems; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
61 struct _UseableToolbarItems |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
62 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
63 gchar *name; /* GtkActionEntry terminology */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
64 gchar *label; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
65 gchar *stock_id; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
66 }; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
67 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
68 /* FIXME Should be created by program from menu_entries[] |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
69 * in layout_util.c */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
70 /** The user is limited to selecting from this list of menu items |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
71 * plus any desktop files |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
72 **/ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
73 static const UseableToolbarItems useable_toolbar_items[] = { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
74 {"FirstImage", N_("First Image"), GTK_STOCK_GOTO_TOP}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
75 {"PrevImage", N_("Previous Image"), GTK_STOCK_GO_UP}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
76 {"NextImage", N_("Next Image"), GTK_STOCK_GO_DOWN}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
77 {"LastImage", N_("Last Image"), GTK_STOCK_GOTO_BOTTOM}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
78 {"Back", N_("Back"), GTK_STOCK_GO_BACK}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
79 {"Forward", N_("Forward"), GTK_STOCK_GO_FORWARD}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
80 {"Home", N_("Home"), GTK_STOCK_HOME}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
81 {"Up", N_("Up"), GTK_STOCK_GO_UP}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
82 {"NewWindow", N_("New _window"), GTK_STOCK_NEW}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
83 {"NewCollection", N_("New collection"), GTK_STOCK_INDEX}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
84 {"OpenCollection", N_("Open collection"), GTK_STOCK_OPEN}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
85 {"Search", N_("Search"), GTK_STOCK_FIND}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
86 {"FindDupes", N_("Find duplicates"), GTK_STOCK_FIND}, |
2812
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
87 {"NewFolder", N_("New folder"),GTK_STOCK_DIRECTORY}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
88 {"Copy", N_("Copy"), GTK_STOCK_COPY}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
89 {"Move", N_("Move"), PIXBUF_INLINE_ICON_MOVE}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
90 {"Rename", N_("Rename"), PIXBUF_INLINE_ICON_RENAME}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
91 {"Delete", N_("Delete"), GTK_STOCK_DELETE}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
92 {"CloseWindow", N_("Close Window"), GTK_STOCK_CLOSE}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
93 {"PanView", N_("Pan view"), PIXBUF_INLINE_ICON_PANORAMA}, |
2812
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
94 {"SelectAll", N_("Select all"), PIXBUF_INLINE_ICON_SELECT_ALL}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
95 {"SelectNone", N_("Select none"), PIXBUF_INLINE_ICON_SELECT_NONE}, |
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
96 {"SelectInvert", N_("Select invert"), PIXBUF_INLINE_ICON_SELECT_INVERT}, |
2817
e6f95baec8b5
Fix #624: Filter files by shell or regular expression pattern
Colin Clark <colin.clark@cclark.uk>
parents:
2812
diff
changeset
|
97 {"ShowFileFilter", N_("Show file filter"), PIXBUF_INLINE_ICON_FILE_FILTER}, |
2812
865f7eab9b6d
Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2801
diff
changeset
|
98 {"RectangularSelection", N_("Select rectangle"), PIXBUF_INLINE_ICON_SELECT_RECTANGLE}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
99 {"Print", N_("Print"), GTK_STOCK_PRINT}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
100 {"Preferences", N_("Preferences"), GTK_STOCK_PREFERENCES}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
101 {"LayoutConfig", N_("Configure this window"), GTK_STOCK_PREFERENCES}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
102 {"Maintenance", N_("Cache maintenance"), PIXBUF_INLINE_ICON_MAINTENANCE}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
103 {"ZoomIn", N_("Zoom in"), GTK_STOCK_ZOOM_IN}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
104 {"ZoomOut", N_("Zoom out"), GTK_STOCK_ZOOM_OUT}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
105 {"Zoom100", N_("Zoom 1:1"), GTK_STOCK_ZOOM_100}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
106 {"ZoomFit", N_("Zoom to fit"), GTK_STOCK_ZOOM_FIT}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
107 {"ZoomFillHor", N_("Fit Horizontaly"), PIXBUF_INLINE_ICON_ZOOMFILLHOR}, |
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
108 {"ZoomFillVert", N_("Fit vertically"), PIXBUF_INLINE_ICON_ZOOMFILLVERT}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
109 {"Zoom200", N_("Zoom 2:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
110 {"Zoom300", N_("Zoom 3:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
111 {"Zoom400", N_("Zoom 4:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
112 {"Zoom50", N_("Zoom 1:2"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
113 {"Zoom33", N_("Zoom1:3"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
114 {"Zoom25", N_("Zoom 1:4"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
115 {"ConnectZoomIn", N_("Connected Zoom in"), GTK_STOCK_ZOOM_IN}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
116 {"HideTools", N_("Hide file list"), PIXBUF_INLINE_ICON_HIDETOOLS}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
117 {"SlideShowPause", N_("Pause slideshow"), GTK_STOCK_MEDIA_PAUSE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
118 {"SlideShowFaster", N_("Slideshow Faster"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
119 {"SlideShowSlower", N_("Slideshow Slower"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
120 {"Refresh", N_("Refresh"), GTK_STOCK_REFRESH}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
121 {"HelpContents", N_("Help"), GTK_STOCK_HELP}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
122 {"ExifWin", N_("Exif window"), PIXBUF_INLINE_ICON_EXIF}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
123 {"Thumbnails", N_("Show thumbnails"), PIXBUF_INLINE_ICON_THUMB}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
124 {"ShowMarks", N_("Show marks"), PIXBUF_INLINE_ICON_MARKS}, |
2794
780a9b685335
Ref #331: Overimposed custom composition rule lines
Colin Clark <colin.clark@cclark.uk>
parents:
2753
diff
changeset
|
125 {"ImageGuidelines", N_("Show guidelines"), PIXBUF_INLINE_ICON_GUIDELINES}, |
2801
3e9ca298bb1d
Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents:
2795
diff
changeset
|
126 {"DrawRectangle", N_("Draw Rectangle"), PIXBUF_INLINE_ICON_DRAW_RECTANGLE}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
127 {"FloatTools", N_("Float file list"), PIXBUF_INLINE_ICON_FLOAT}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
128 {"SBar", N_("Info sidebar"), PIXBUF_INLINE_ICON_INFO}, |
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
129 {"SBarSort", N_("Sort manager"), PIXBUF_INLINE_ICON_SORT}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
130 {"Quit", N_("Quit"), GTK_STOCK_QUIT}, |
2632
22a9496e46c0
Fixing missing field initializer
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2625
diff
changeset
|
131 {NULL, NULL, NULL} |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
132 }; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
133 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
134 /** |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
135 * @brief |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
136 * @param widget Not used |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
137 * @param data Pointer to vbox list item |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
138 * @param up Up/Down movement |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
139 * @param single_step Move up/down one step, or to top/bottom |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
140 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
141 */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
142 static void toolbar_item_move(GtkWidget *widget, gpointer data, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
143 gboolean up, gboolean single_step) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
144 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
145 GtkWidget *list_item = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
146 GtkWidget *box; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
147 gint pos = 0; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
148 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
149 if (!list_item) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
150 box = gtk_widget_get_ancestor(list_item, GTK_TYPE_BOX); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
151 if (!box) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
152 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
153 gtk_container_child_get(GTK_CONTAINER(box), list_item, "position", &pos, NULL); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
154 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
155 if (single_step) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
156 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
157 pos = up ? (pos - 1) : (pos + 1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
158 if (pos < 0) pos = 0; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
159 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
160 else |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
161 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
162 pos = up ? 0 : -1; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
163 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
164 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
165 gtk_box_reorder_child(GTK_BOX(box), list_item, pos); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
166 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
167 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
168 static void toolbar_item_move_up_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
169 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
170 toolbar_item_move(widget, data, TRUE, TRUE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
171 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
172 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
173 static void toolbar_item_move_down_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
174 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
175 toolbar_item_move(widget, data, FALSE, TRUE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
176 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
177 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
178 static void toolbar_item_move_top_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
179 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
180 toolbar_item_move(widget, data, TRUE, FALSE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
181 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
182 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
183 static void toolbar_item_move_bottom_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
184 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
185 toolbar_item_move(widget, data, FALSE, FALSE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
186 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
187 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
188 static void toolbar_item_delete_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
189 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
190 gtk_widget_destroy(data); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
191 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
192 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
193 static void toolbar_menu_popup(GtkWidget *widget) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
194 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
195 GtkWidget *menu; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
196 GtkWidget *vbox; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
197 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
198 vbox = gtk_widget_get_parent(widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
199 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
200 menu = popup_menu_short_lived(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
201 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
202 if (widget) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
203 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
204 menu_item_add_stock(menu, _("Move to _top"), GTK_STOCK_GOTO_TOP, G_CALLBACK(toolbar_item_move_top_cb), widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
205 menu_item_add_stock(menu, _("Move _up"), GTK_STOCK_GO_UP, G_CALLBACK(toolbar_item_move_up_cb), widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
206 menu_item_add_stock(menu, _("Move _down"), GTK_STOCK_GO_DOWN, G_CALLBACK(toolbar_item_move_down_cb), widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
207 menu_item_add_stock(menu, _("Move to _bottom"), GTK_STOCK_GOTO_BOTTOM, G_CALLBACK(toolbar_item_move_bottom_cb), widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
208 menu_item_add_divider(menu); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
209 menu_item_add_stock(menu, _("Remove"), GTK_STOCK_DELETE, G_CALLBACK(toolbar_item_delete_cb), widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
210 menu_item_add_divider(menu); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
211 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
212 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
213 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, vbox, 0, GDK_CURRENT_TIME); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
214 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
215 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
216 static gboolean toolbar_press_cb(GtkWidget *button, GdkEventButton *event, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
217 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
218 ToolbarButtonData *button_data = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
219 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
220 if (event->button == MOUSE_BUTTON_RIGHT) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
221 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
222 toolbar_menu_popup(button_data->button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
223 return TRUE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
224 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
225 return FALSE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
226 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
227 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
228 static void get_toolbar_item(const gchar *name, gchar **label, gchar **stock_id) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
229 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
230 const UseableToolbarItems *list = useable_toolbar_items; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
231 *label = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
232 *stock_id = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
233 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
234 while (list->name) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
235 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
236 if (g_strcmp0(list->name, name) == 0) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
237 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
238 *label = g_strdup(list->label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
239 *stock_id = g_strdup(list->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
240 break; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
241 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
242 list++; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
243 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
244 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
245 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
246 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
247 static void toolbar_item_free(ToolbarButtonData *tbbd) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
248 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
249 if (!tbbd) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
250 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
251 g_free(tbbd->name); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
252 g_free(tbbd->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
253 g_free(tbbd); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
254 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
255 |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
256 static void toolbar_button_free(GtkWidget *widget) |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
257 { |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
258 g_free(g_object_get_data(G_OBJECT(widget), "toolbar_add_name")); |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
259 g_free(g_object_get_data(G_OBJECT(widget), "toolbar_add_label")); |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
260 g_free(g_object_get_data(G_OBJECT(widget), "toolbar_add_stock_id")); |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
261 } |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
262 |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
263 static void toolbarlist_add_button(const gchar *name, const gchar *label, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
264 const gchar *stock_id, GtkBox *box) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
265 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
266 ToolbarButtonData *toolbar_entry; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
267 GtkWidget *hbox; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
268 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
269 toolbar_entry = g_new(ToolbarButtonData,1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
270 toolbar_entry->button = gtk_button_new(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
271 gtk_button_set_relief(GTK_BUTTON(toolbar_entry->button), GTK_RELIEF_NONE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
272 gtk_box_pack_start(GTK_BOX(box), toolbar_entry->button, FALSE, FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
273 gtk_widget_show(toolbar_entry->button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
274 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
275 g_object_set_data_full(G_OBJECT(toolbar_entry->button), "toolbarbuttondata", |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
276 toolbar_entry, (GDestroyNotify)toolbar_item_free); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
277 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
278 hbox = gtk_hbox_new(FALSE, PREF_PAD_BUTTON_GAP); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
279 gtk_container_add(GTK_CONTAINER(toolbar_entry->button), hbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
280 gtk_widget_show(hbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
281 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
282 toolbar_entry->button_label = gtk_label_new(label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
283 toolbar_entry->name = g_strdup(name); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
284 toolbar_entry->stock_id = g_strdup(stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
285 g_signal_connect(G_OBJECT(toolbar_entry->button), "button_release_event", |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
286 G_CALLBACK(toolbar_press_cb), toolbar_entry); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
287 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
288 if (toolbar_entry->stock_id) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
289 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
290 GdkPixbuf *pixbuf; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
291 gchar *iconl; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
292 iconl = path_from_utf8(toolbar_entry->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
293 pixbuf = gdk_pixbuf_new_from_file(iconl, NULL); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
294 g_free(iconl); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
295 if (pixbuf) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
296 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
297 GdkPixbuf *scaled; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
298 gint w, h; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
299 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
300 w = h = 16; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
301 gtk_icon_size_lookup(GTK_ICON_SIZE_BUTTON, &w, &h); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
302 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
303 scaled = gdk_pixbuf_scale_simple(pixbuf, w, h, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
304 GDK_INTERP_BILINEAR); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
305 toolbar_entry->image = gtk_image_new_from_pixbuf(scaled); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
306 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
307 g_object_unref(scaled); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
308 g_object_unref(pixbuf); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
309 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
310 else |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
311 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
312 toolbar_entry->image = gtk_image_new_from_stock(toolbar_entry->stock_id, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
313 GTK_ICON_SIZE_BUTTON); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
314 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
315 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
316 else |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
317 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
318 toolbar_entry->image = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
319 GTK_ICON_SIZE_BUTTON); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
320 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
321 gtk_box_pack_start(GTK_BOX(hbox), toolbar_entry->image, FALSE, FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
322 gtk_widget_show(toolbar_entry->image); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
323 gtk_box_pack_start(GTK_BOX(hbox), toolbar_entry->button_label, FALSE, FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
324 gtk_widget_show(toolbar_entry->button_label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
325 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
326 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
327 static void toolbarlist_add_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
328 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
329 const gchar *name = g_object_get_data(G_OBJECT(widget), "toolbar_add_name"); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
330 const gchar *label = g_object_get_data(G_OBJECT(widget), "toolbar_add_label"); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
331 const gchar *stock_id = g_object_get_data(G_OBJECT(widget), "toolbar_add_stock_id"); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
332 ToolbarData *tbbd = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
333 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
334 toolbarlist_add_button(name, label, stock_id, GTK_BOX(tbbd->vbox)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
335 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
336 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
337 static void get_desktop_data(const gchar *name, gchar **label, gchar **stock_id) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
338 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
339 GList *editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
340 GList *work; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
341 *label = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
342 *stock_id = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
343 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
344 editors_list = editor_list_get(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
345 work = editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
346 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
347 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
348 const EditorDescription *editor = work->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
349 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
350 if (g_strcmp0(name, editor->key) == 0) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
351 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
352 *label = g_strdup(editor->name); |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
353 *stock_id = g_strconcat(editor->icon, ".desktop", NULL); |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
354 break; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
355 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
356 work = work->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
357 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
358 g_list_free(editors_list); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
359 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
360 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
361 static void toolbar_menu_add_popup(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
362 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
363 GtkWidget *menu; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
364 GList *editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
365 GList *work; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
366 ToolbarData *toolbarlist = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
367 const UseableToolbarItems *list = useable_toolbar_items; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
368 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
369 menu = popup_menu_short_lived(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
370 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
371 /* get standard menu item data */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
372 while (list->name) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
373 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
374 GtkWidget *item; |
2625
3b73a30e2e9f
Addl #444: Change format for Add button menu
Colin Clark <colin.clark@cclark.uk>
parents:
2623
diff
changeset
|
375 item = menu_item_add_stock(menu, list->label, list->stock_id, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
376 G_CALLBACK(toolbarlist_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
377 g_object_set_data(G_OBJECT(item), "toolbar_add_name", g_strdup(list->name)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
378 g_object_set_data(G_OBJECT(item), "toolbar_add_label", g_strdup(list->label)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
379 g_object_set_data(G_OBJECT(item), "toolbar_add_stock_id", g_strdup(list->stock_id)); |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
380 g_signal_connect(G_OBJECT(item), "destroy", G_CALLBACK(toolbar_button_free), item); |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
381 list++; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
382 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
383 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
384 /* get desktop file data */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
385 editors_list = editor_list_get(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
386 work = editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
387 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
388 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
389 const EditorDescription *editor = work->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
390 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
391 GtkWidget *item; |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
392 gchar *icon = g_strconcat(editor->icon, ".desktop", NULL); |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
393 |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
394 item = menu_item_add_stock(menu, editor->name, icon, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
395 G_CALLBACK(toolbarlist_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
396 g_object_set_data(G_OBJECT(item), "toolbar_add_name", g_strdup(editor->key)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
397 g_object_set_data(G_OBJECT(item), "toolbar_add_label", g_strdup(editor->name)); |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
398 g_object_set_data(G_OBJECT(item), "toolbar_add_stock_id", icon); |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
399 g_signal_connect(G_OBJECT(item), "destroy", G_CALLBACK(toolbar_button_free), item); |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
400 work = work->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
401 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
402 g_list_free(editors_list); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
403 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
404 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, widget, 0, GDK_CURRENT_TIME); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
405 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
406 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
407 static gboolean toolbar_menu_add_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
408 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
409 ToolbarData *toolbarlist = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
410 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
411 toolbar_menu_add_popup(widget, toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
412 return TRUE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
413 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
414 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
415 /** |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
416 * @brief For each layoutwindow, clear toolbar and reload with current selection |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
417 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
418 */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
419 void toolbar_apply() |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
420 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
421 LayoutWindow *lw; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
422 GList *work_windows; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
423 GList *work_toolbar; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
424 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
425 work_windows = layout_window_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
426 while (work_windows) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
427 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
428 lw = work_windows->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
429 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
430 layout_toolbar_clear(lw, TOOLBAR_MAIN); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
431 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
432 work_toolbar = gtk_container_get_children(GTK_CONTAINER(toolbarlist->vbox)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
433 while (work_toolbar) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
434 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
435 GtkButton *button = work_toolbar->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
436 ToolbarButtonData *tbbd; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
437 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
438 tbbd = g_object_get_data(G_OBJECT(button),"toolbarbuttondata"); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
439 layout_toolbar_add(lw, TOOLBAR_MAIN, tbbd->name); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
440 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
441 work_toolbar = work_toolbar->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
442 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
443 g_list_free(work_toolbar); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
444 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
445 work_windows = work_windows->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
446 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
447 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
448 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
449 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
450 /** |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
451 * @brief Load the current toolbar items into the vbox |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
452 * @param lw |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
453 * @param box The vbox displayed in the preferences Toolbar tab |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
454 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
455 * Get the current contents of the toolbar, both menu items |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
456 * and desktop items, and load them into the vbox |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
457 */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
458 static void toolbarlist_populate(LayoutWindow *lw, GtkBox *box) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
459 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
460 GList *work = g_list_first(lw->toolbar_actions[TOOLBAR_MAIN]); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
461 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
462 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
463 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
464 gchar *name = work->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
465 gchar *label; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
466 gchar *icon; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
467 work = work->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
468 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
469 if (file_extension_match(name, ".desktop")) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
470 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
471 get_desktop_data(name, &label, &icon); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
472 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
473 else |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
474 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
475 get_toolbar_item(name, &label, &icon); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
476 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
477 toolbarlist_add_button(name, label, icon, box); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
478 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
479 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
480 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
481 GtkWidget *toolbar_select_new(LayoutWindow *lw) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
482 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
483 GtkWidget *scrolled; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
484 GtkWidget *tbar; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
485 GtkWidget *add_box; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
486 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
487 if (!lw) return NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
488 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
489 if (!toolbarlist) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
490 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
491 toolbarlist = g_new0(ToolbarData, 1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
492 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
493 toolbarlist->lw = lw; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
494 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
495 toolbarlist->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
496 gtk_widget_show(toolbarlist->widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
497 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
498 scrolled = gtk_scrolled_window_new(NULL, NULL); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
499 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
500 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
501 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_NONE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
502 gtk_box_pack_start(GTK_BOX(toolbarlist->widget), scrolled, TRUE, TRUE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
503 gtk_widget_show(scrolled); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
504 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
505 toolbarlist->vbox = gtk_vbox_new(FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
506 gtk_widget_show(toolbarlist->vbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
507 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), toolbarlist->vbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
508 gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN(scrolled))), |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
509 GTK_SHADOW_NONE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
510 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
511 add_box = gtk_vbox_new(FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
512 gtk_widget_show(add_box); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
513 gtk_box_pack_end(GTK_BOX(toolbarlist->widget), add_box, FALSE, FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
514 tbar = pref_toolbar_new(add_box, GTK_TOOLBAR_ICONS); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
515 toolbarlist->add_button = pref_toolbar_button(tbar, GTK_STOCK_ADD, "NULL", FALSE, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
516 _("Add Toolbar Item"), |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
517 G_CALLBACK(toolbar_menu_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
518 gtk_widget_show(toolbarlist->add_button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
519 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
520 toolbarlist_populate(lw,GTK_BOX(toolbarlist->vbox)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
521 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
522 return toolbarlist->widget; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
523 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
524 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
525 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |