Mercurial > hg > forks > geeqie
annotate src/toolbar.c @ 2916:ae6cdcd69d9f default tip
Merge with upstream/master.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 14 May 2019 11:46:50 +0300 |
parents | e88128f85953 |
children |
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}, |
2851
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
103 {"RotateCW", N_("Rotate clockwise"), PIXBUF_INLINE_ICON_CW}, |
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
104 {"RotateCCW", N_("Rotate counterclockwise"), PIXBUF_INLINE_ICON_CCW}, |
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
105 {"Rotate180", N_("Rotate 180"), PIXBUF_INLINE_ICON_180}, |
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
106 {"Mirror", N_("Mirror"), PIXBUF_INLINE_ICON_MIRROR}, |
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
107 {"Flip", N_("Flip"), PIXBUF_INLINE_ICON_FLIP}, |
e88128f85953
Permit rotate commands to be on toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2817
diff
changeset
|
108 {"AlterNone", N_("Original state"), PIXBUF_INLINE_ICON_ORIGINAL}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
109 {"ZoomIn", N_("Zoom in"), GTK_STOCK_ZOOM_IN}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
110 {"ZoomOut", N_("Zoom out"), GTK_STOCK_ZOOM_OUT}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
111 {"Zoom100", N_("Zoom 1:1"), GTK_STOCK_ZOOM_100}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
112 {"ZoomFit", N_("Zoom to fit"), GTK_STOCK_ZOOM_FIT}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
113 {"ZoomFillHor", N_("Fit Horizontaly"), PIXBUF_INLINE_ICON_ZOOMFILLHOR}, |
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
114 {"ZoomFillVert", N_("Fit vertically"), PIXBUF_INLINE_ICON_ZOOMFILLVERT}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
115 {"Zoom200", N_("Zoom 2:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
116 {"Zoom300", N_("Zoom 3:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
117 {"Zoom400", N_("Zoom 4:1"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
118 {"Zoom50", N_("Zoom 1:2"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
119 {"Zoom33", N_("Zoom1:3"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
120 {"Zoom25", N_("Zoom 1:4"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
121 {"ConnectZoomIn", N_("Connected Zoom in"), GTK_STOCK_ZOOM_IN}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
122 {"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
|
123 {"SlideShowPause", N_("Pause slideshow"), GTK_STOCK_MEDIA_PAUSE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
124 {"SlideShowFaster", N_("Slideshow Faster"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
125 {"SlideShowSlower", N_("Slideshow Slower"), GTK_STOCK_FILE}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
126 {"Refresh", N_("Refresh"), GTK_STOCK_REFRESH}, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
127 {"HelpContents", N_("Help"), GTK_STOCK_HELP}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
128 {"ExifWin", N_("Exif window"), PIXBUF_INLINE_ICON_EXIF}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
129 {"Thumbnails", N_("Show thumbnails"), PIXBUF_INLINE_ICON_THUMB}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
130 {"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
|
131 {"ImageGuidelines", N_("Show guidelines"), PIXBUF_INLINE_ICON_GUIDELINES}, |
2801
3e9ca298bb1d
Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents:
2795
diff
changeset
|
132 {"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
|
133 {"FloatTools", N_("Float file list"), PIXBUF_INLINE_ICON_FLOAT}, |
2795
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
134 {"SBar", N_("Info sidebar"), PIXBUF_INLINE_ICON_INFO}, |
684ca84becd2
Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents:
2794
diff
changeset
|
135 {"SBarSort", N_("Sort manager"), PIXBUF_INLINE_ICON_SORT}, |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
136 {"Quit", N_("Quit"), GTK_STOCK_QUIT}, |
2632
22a9496e46c0
Fixing missing field initializer
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2625
diff
changeset
|
137 {NULL, NULL, NULL} |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
138 }; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
139 |
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 * @brief |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
142 * @param widget Not used |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
143 * @param data Pointer to vbox list item |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
144 * @param up Up/Down movement |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
145 * @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
|
146 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
147 */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
148 static void toolbar_item_move(GtkWidget *widget, gpointer data, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
149 gboolean up, gboolean single_step) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
150 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
151 GtkWidget *list_item = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
152 GtkWidget *box; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
153 gint pos = 0; |
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 (!list_item) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
156 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
|
157 if (!box) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
158 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
159 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
|
160 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
161 if (single_step) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
162 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
163 pos = up ? (pos - 1) : (pos + 1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
164 if (pos < 0) pos = 0; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
165 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
166 else |
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 pos = up ? 0 : -1; |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
171 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
|
172 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
173 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
174 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
|
175 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
176 toolbar_item_move(widget, data, TRUE, TRUE); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
179 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
|
180 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
181 toolbar_item_move(widget, data, FALSE, TRUE); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
184 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
|
185 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
186 toolbar_item_move(widget, data, TRUE, FALSE); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
189 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
|
190 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
191 toolbar_item_move(widget, data, FALSE, FALSE); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
194 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
|
195 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
196 gtk_widget_destroy(data); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
199 static void toolbar_menu_popup(GtkWidget *widget) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
200 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
201 GtkWidget *menu; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
202 GtkWidget *vbox; |
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 vbox = gtk_widget_get_parent(widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
205 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
206 menu = popup_menu_short_lived(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
207 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
208 if (widget) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
209 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
210 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
|
211 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
|
212 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
|
213 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
|
214 menu_item_add_divider(menu); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
215 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
|
216 menu_item_add_divider(menu); |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
219 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
|
220 } |
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 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
|
223 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
224 ToolbarButtonData *button_data = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
225 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
226 if (event->button == MOUSE_BUTTON_RIGHT) |
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 toolbar_menu_popup(button_data->button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
229 return TRUE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
230 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
231 return FALSE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
232 } |
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 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
|
235 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
236 const UseableToolbarItems *list = useable_toolbar_items; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
237 *label = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
238 *stock_id = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
239 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
240 while (list->name) |
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 if (g_strcmp0(list->name, name) == 0) |
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 *label = g_strdup(list->label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
245 *stock_id = g_strdup(list->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
246 break; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
247 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
248 list++; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
249 } |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
252 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
253 static void toolbar_item_free(ToolbarButtonData *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 if (!tbbd) return; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
256 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
257 g_free(tbbd->name); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
258 g_free(tbbd->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
259 g_free(tbbd); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
260 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
261 |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
262 static void toolbar_button_free(GtkWidget *widget) |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
263 { |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
264 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
|
265 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
|
266 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
|
267 } |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
268 |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
269 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
|
270 const gchar *stock_id, GtkBox *box) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
271 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
272 ToolbarButtonData *toolbar_entry; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
273 GtkWidget *hbox; |
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 toolbar_entry = g_new(ToolbarButtonData,1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
276 toolbar_entry->button = gtk_button_new(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
277 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
|
278 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
|
279 gtk_widget_show(toolbar_entry->button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
280 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
281 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
|
282 toolbar_entry, (GDestroyNotify)toolbar_item_free); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
283 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
284 hbox = gtk_hbox_new(FALSE, PREF_PAD_BUTTON_GAP); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
285 gtk_container_add(GTK_CONTAINER(toolbar_entry->button), hbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
286 gtk_widget_show(hbox); |
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 toolbar_entry->button_label = gtk_label_new(label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
289 toolbar_entry->name = g_strdup(name); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
290 toolbar_entry->stock_id = g_strdup(stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
291 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
|
292 G_CALLBACK(toolbar_press_cb), toolbar_entry); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
293 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
294 if (toolbar_entry->stock_id) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
295 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
296 GdkPixbuf *pixbuf; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
297 gchar *iconl; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
298 iconl = path_from_utf8(toolbar_entry->stock_id); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
299 pixbuf = gdk_pixbuf_new_from_file(iconl, NULL); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
300 g_free(iconl); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
301 if (pixbuf) |
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 GdkPixbuf *scaled; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
304 gint w, h; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
305 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
306 w = h = 16; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
307 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
|
308 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
309 scaled = gdk_pixbuf_scale_simple(pixbuf, w, h, |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
310 GDK_INTERP_BILINEAR); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
311 toolbar_entry->image = gtk_image_new_from_pixbuf(scaled); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
312 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
313 g_object_unref(scaled); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
314 g_object_unref(pixbuf); |
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(toolbar_entry->stock_id, |
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 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
322 else |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
323 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
324 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
|
325 GTK_ICON_SIZE_BUTTON); |
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 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
|
328 gtk_widget_show(toolbar_entry->image); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
329 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
|
330 gtk_widget_show(toolbar_entry->button_label); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
331 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
332 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
333 static void toolbarlist_add_cb(GtkWidget *widget, gpointer data) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
334 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
335 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
|
336 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
|
337 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
|
338 ToolbarData *tbbd = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
339 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
340 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
|
341 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
342 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
343 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
|
344 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
345 GList *editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
346 GList *work; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
347 *label = NULL; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
348 *stock_id = NULL; |
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 editors_list = editor_list_get(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
351 work = editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
352 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
353 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
354 const EditorDescription *editor = work->data; |
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 if (g_strcmp0(name, editor->key) == 0) |
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 *label = g_strdup(editor->name); |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
359 *stock_id = g_strconcat(editor->icon, ".desktop", NULL); |
2623
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
360 break; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
361 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
362 work = work->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
363 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
364 g_list_free(editors_list); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
365 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
366 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
367 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
|
368 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
369 GtkWidget *menu; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
370 GList *editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
371 GList *work; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
372 ToolbarData *toolbarlist = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
373 const UseableToolbarItems *list = useable_toolbar_items; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
374 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
375 menu = popup_menu_short_lived(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
376 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
377 /* get standard menu item data */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
378 while (list->name) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
379 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
380 GtkWidget *item; |
2625
3b73a30e2e9f
Addl #444: Change format for Add button menu
Colin Clark <colin.clark@cclark.uk>
parents:
2623
diff
changeset
|
381 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
|
382 G_CALLBACK(toolbarlist_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
383 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
|
384 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
|
385 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
|
386 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
|
387 list++; |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
390 /* get desktop file data */ |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
391 editors_list = editor_list_get(); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
392 work = editors_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
393 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
394 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
395 const EditorDescription *editor = work->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
396 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
397 GtkWidget *item; |
2652
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
398 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
|
399 |
4635d9347338
Addl fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
2632
diff
changeset
|
400 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
|
401 G_CALLBACK(toolbarlist_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
402 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
|
403 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
|
404 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
|
405 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
|
406 work = work->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
407 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
408 g_list_free(editors_list); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
409 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
410 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
|
411 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
412 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
413 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
|
414 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
415 ToolbarData *toolbarlist = data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
416 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
417 toolbar_menu_add_popup(widget, toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
418 return TRUE; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
419 } |
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 /** |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
422 * @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
|
423 * |
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 void toolbar_apply() |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
426 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
427 LayoutWindow *lw; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
428 GList *work_windows; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
429 GList *work_toolbar; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
430 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
431 work_windows = layout_window_list; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
432 while (work_windows) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
433 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
434 lw = work_windows->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
435 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
436 layout_toolbar_clear(lw, TOOLBAR_MAIN); |
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 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
|
439 while (work_toolbar) |
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 GtkButton *button = work_toolbar->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
442 ToolbarButtonData *tbbd; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
443 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
444 tbbd = g_object_get_data(G_OBJECT(button),"toolbarbuttondata"); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
445 layout_toolbar_add(lw, TOOLBAR_MAIN, tbbd->name); |
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 work_toolbar = work_toolbar->next; |
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 g_list_free(work_toolbar); |
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 work_windows = work_windows->next; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
452 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
453 |
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 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
456 /** |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
457 * @brief Load the current toolbar items into the vbox |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
458 * @param lw |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
459 * @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
|
460 * |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
461 * 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
|
462 * and desktop items, and load them into the vbox |
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 static void toolbarlist_populate(LayoutWindow *lw, GtkBox *box) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
465 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
466 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
|
467 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
468 while (work) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
469 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
470 gchar *name = work->data; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
471 gchar *label; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
472 gchar *icon; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
473 work = work->next; |
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 if (file_extension_match(name, ".desktop")) |
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 get_desktop_data(name, &label, &icon); |
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 else |
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 get_toolbar_item(name, &label, &icon); |
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 toolbarlist_add_button(name, label, icon, box); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
484 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
485 } |
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 GtkWidget *toolbar_select_new(LayoutWindow *lw) |
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 GtkWidget *scrolled; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
490 GtkWidget *tbar; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
491 GtkWidget *add_box; |
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 if (!lw) return NULL; |
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 if (!toolbarlist) |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
496 { |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
497 toolbarlist = g_new0(ToolbarData, 1); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
498 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
499 toolbarlist->lw = lw; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
500 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
501 toolbarlist->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
502 gtk_widget_show(toolbarlist->widget); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
503 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
504 scrolled = gtk_scrolled_window_new(NULL, NULL); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
505 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
506 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
507 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
|
508 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
|
509 gtk_widget_show(scrolled); |
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 toolbarlist->vbox = gtk_vbox_new(FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
512 gtk_widget_show(toolbarlist->vbox); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
513 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
|
514 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
|
515 GTK_SHADOW_NONE); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
516 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
517 add_box = gtk_vbox_new(FALSE, 0); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
518 gtk_widget_show(add_box); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
519 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
|
520 tbar = pref_toolbar_new(add_box, GTK_TOOLBAR_ICONS); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
521 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
|
522 _("Add Toolbar Item"), |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
523 G_CALLBACK(toolbar_menu_add_cb), toolbarlist); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
524 gtk_widget_show(toolbarlist->add_button); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
525 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
526 toolbarlist_populate(lw,GTK_BOX(toolbarlist->vbox)); |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
527 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
528 return toolbarlist->widget; |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
529 } |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
530 |
f5886b8e1968
Fix #444: User-definable toolbar
Colin Clark <colin.clark@cclark.uk>
parents:
diff
changeset
|
531 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |