26 #DEFINE ACCELL_FILE
"dat/accelerators.rc"
39 STATIC AS GtkTreeIter iter
40 STATIC AS GtkAccelKey acck
42 VAR action = GTK_ACTION(Act)
43 VAR accel_path = gtk_action_get_accel_path(action)
45 IF 0 = accel_path
THEN EXIT SUB
46 IF 0 = gtk_accel_map_lookup_entry(accel_path, @acck) _
47 THEN gtk_accel_map_add_entry(accel_path, 0, 0)
49 gtk_list_store_append(Store, @iter)
50 gtk_list_store_set(Store, @iter _
52 , 1, acck.accel_mods _
53 , 2, gtk_action_get_label(action) _
54 , 3, gtk_action_get_tooltip(action) _
72 BYVAL Tree
AS GtkTreeModel
PTR _
73 ,
BYVAL Path
AS GtkTreePath
PTR _
74 ,
BYVAL Iter
AS GtkTreeIter
PTR _
75 ,
BYVAL user_data
AS gpointer)
AS gboolean
77 DIM AS gpointer accel_path
78 DIM AS guint accel_key, accel_mods
79 gtk_tree_model_get(Tree, Iter _
84 gtk_accel_map_change_entry(accel_path, accel_key, accel_mods, TRUE)
104 STATIC AS GtkListStore
PTR store
105 STATIC AS GObject
PTR actgrp
109 store = GTK_LIST_STORE(gtk_builder_get_object(xml,
"liststore600"))
110 actgrp = gtk_builder_get_object(xml,
"actiongroup1")
113 SELECT CASE AS CONST Mo
116 gtk_accel_map_save(ACCELL_FILE)
118 gtk_accel_map_load(ACCELL_FILE)
119 gtk_list_store_clear(store)
120 VAR list = gtk_action_group_list_actions(GTK_ACTION_GROUP(actgrp))
138 BYVAL Action
AS GtkAction
PTR, _
139 BYVAL Dialog
AS gpointer)
EXPORT
141 ?" --> callback act_Shortcut"
143 SELECT CASE AS CONST gtk_dialog_run(Dialog)
145 ?" --> callback act_Shortcut -> get changed settings"
148 ?" --> callback act_Shortcut -> dialog canceled, restore form"
151 gtk_widget_hide(Dialog)
167 BYVAL Accel
AS GtkCellRendererAccel
PTR, _
168 BYVAL PathString
AS gchar
PTR, _
169 BYVAL Store
AS gpointer)
EXPORT
171 DIM AS GtkTreeIter iter
172 VAR model = GTK_TREE_MODEL(Store)
173 gtk_tree_model_get_iter_from_string(model, @iter, PathString)
174 gtk_list_store_set(Store, @iter _
175 , 0,
CAST(guint, 0) _
176 , 1,
CAST(guint, 0) _
198 BYVAL Accel
AS GtkCellRendererAccel
PTR _
199 ,
BYVAL PathString
AS gchar
PTR _
200 ,
BYVAL AccelKey
AS guint _
201 ,
BYVAL AccelMods
AS GdkModifierType _
202 ,
BYVAL HardwareKeycode
AS guint _
203 ,
BYVAL Store
AS gpointer)
EXPORT
205 VAR model = GTK_TREE_MODEL(Store)
208 DIM AS GtkTreeIter search
209 IF gtk_tree_model_get_iter_first(model, @search)
THEN
211 gtk_tree_model_get(model, @search, 0, @k, 1, @m, -1)
212 IF k <> AccelKey
ORELSE m <> AccelMods
THEN CONTINUE DO
215 gtk_tree_model_get(model, @search, 2, @txt, -1)
216 VAR dia = gtk_message_dialog_new_with_markup(GTK_WINDOW(GUI.window1) _
217 , GTK_DIALOG_MODAL
OR GTK_DIALOG_DESTROY_WITH_PARENT _
218 , GTK_MESSAGE_QUESTION _
219 , GTK_BUTTONS_YES_NO _
221 *__(!
"Shortcut already defined for\n\n") _
222 & *__(!
"<b>%s</b>\n\n") _
223 & *__(!
"Override existing\n") _
229 VAR r = gtk_dialog_run(GTK_DIALOG(dia))
230 gtk_widget_destroy(dia) :
IF r <> GTK_RESPONSE_YES
THEN EXIT SUB
231 gtk_list_store_set(Store, @search _
232 , 0,
CAST(guint, 0) _
233 , 1,
CAST(guint, 0) _
235 LOOP UNTIL 0 = gtk_tree_model_iter_next(model, @search)
238 IF 0 = AccelMods
THEN
239 VAR dia = gtk_message_dialog_new_with_markup(GTK_WINDOW(GUI.window1) _
240 , GTK_DIALOG_MODAL
OR GTK_DIALOG_DESTROY_WITH_PARENT _
241 , GTK_MESSAGE_QUESTION _
242 , GTK_BUTTONS_YES_NO _
244 *__(!
"Shortcut has no modifier\n\n") _
245 & *__(!
"This interferes with the search\n") _
246 & *__(!
"function in the tree views\n\n") _
247 & *__(!
"Anyway, use it ...") _
251 VAR r = gtk_dialog_run(GTK_DIALOG(dia))
252 gtk_widget_destroy(dia) :
IF r <> GTK_RESPONSE_YES
THEN EXIT SUB
255 DIM AS GtkTreeIter iter
256 gtk_tree_model_get_iter_from_string(model, @iter, PathString)
257 gtk_list_store_set(Store, @iter _