pavi  0.0
Map Path Viewer
callbacks.bas
Go to the documentation of this file.
1 
9 
10 #INCLUDE ONCE "Gir/OsmGpsMap-1.0.bi"
11 #INCLUDE ONCE "track_store.bi"
12 #INCLUDE ONCE "track_layer.bi"
13 #INCLUDE ONCE "gui.bi"
14 #INCLUDE ONCE "debug.bi"
15 
16 
17 
26 SUB on_TrackEnable_toggled CDECL ALIAS "on_TrackEnable_toggled"( _
27  BYVAL Cell AS GtkCellRendererToggle PTR _
28 , BYVAL Path AS gchar PTR _
29 , BYVAL UDat AS gpointer) EXPORT
30  GUI->TSnoPref = TRUE
31  DIM AS GtkTreeIter iter
32  gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(UDat), @iter, Path)
33 
34  VAR x = IIF(gtk_cell_renderer_toggle_get_active(Cell), FALSE, TRUE)
35  gtk_tree_store_set(GTK_TREE_STORE(UDat), @iter, COL__ENABLE, x, -1)
36 END SUB
37 
38 
39 
48 SUB on_TrackSel_clicked CDECL ALIAS "on_TrackSel_clicked"( _
49  BYVAL Cell AS GtkCellRendererToggle PTR _
50 , BYVAL Path AS gchar PTR _
51 , BYVAL UDat AS gpointer) EXPORT
52  GUI->TSnoPref = TRUE
53  TS_select(*Path)
54 END SUB
55 
56 
57 
66 SUB on_Load_clicked CDECL ALIAS "on_Load_clicked"( _
67  BYVAL Butt AS GtkButton PTR _
68 , BYVAL UDat AS gpointer) EXPORT
69 WITH *GUI
70  IF GTK_RESPONSE_OK = gtk_dialog_run(GTK_DIALOG(.DTL)) THEN
71  DIM AS TrackLoader PTR last
72  VAR list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(.DTL))
73  WHILE list
74  WITH TYPE<TS_add>(list->data)
75  IF .Got THEN ?" old entry: ",.Nam,.Fol,.Loa
76  last = .Loa
77  END WITH
78 
79  g_free(list->data)
80  list = list->next
81  WEND : TS_select(last->Path)
82  g_slist_free(list)
83  END IF
84  gtk_widget_hide(GTK_WIDGET(.DTL))
85 END WITH
86 END SUB
87 
88 
89 
99 SUB on_Map_selected CDECL ALIAS "on_Map_selected"( _
100  BYVAL Tree AS GtkTreeView PTR _
101 , BYVAL Path AS GtkTreePath PTR _
102 , BYVAL Clmn AS GtkTreeViewColumn PTR _
103 , BYVAL UDat AS gpointer) EXPORT
104 WITH *GUI
105  osm_gps_map_download_cancel_all(OSM_GPS_MAP(.MAP))
106 
107  VAR model = gtk_tree_view_get_model(Tree)
108  DIM AS GtkTreeIter iter
109  DIM AS gchar PTR nam, id
110  gtk_tree_model_get_iter(model, @iter, Path)
111  gtk_tree_model_get(model, @iter, 0, @nam, 1, @id, -1)
112 
113  g_object_set(.MAP, "map-source", VALINT(*id), NULL)
114  gtk_window_set_title(GTK_WINDOW(.WIN), nam)
115  g_free(nam) : g_free(id)
116  gtk_popover_popdown(GTK_POPOVER(UDat))
117 END WITH
118 END SUB
119 
120 
121 
129 SUB on_Poov_limit_size CDECL ALIAS "on_Poov_limit_size"( _
130  BYVAL Cont AS GtkContainer PTR _
131 , BYVAL UDat AS gpointer) EXPORT
132 WITH *GUI
133  VAR adj = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(UDat))
134  VAR upp = gtk_adjustment_get_upper(adj)
135 
136  VAR w = gtk_widget_get_allocated_width(GTK_WIDGET(.MAP))
137  VAR h = gtk_widget_get_allocated_height(GTK_WIDGET(.MAP))
138  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(UDat) _
139  , IIF(upp < w, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS), GTK_POLICY_AUTOMATIC)
140  g_object_set(G_OBJECT(UDat) _
141  , "max_content_height", (h - 25) _
142  , "max_content_width", (w - 25), NULL)
143  gtk_widget_queue_draw(GTK_WIDGET(UDat))
144 END WITH
145 END SUB
146 
147 
148 
158 SUB on_Layer_toggled CDECL ALIAS "on_Layer_toggled"( _
159  BYVAL Butt AS GtkToggleButton PTR _
160 , BYVAL UDat AS gpointer) EXPORT
161 WITH *GUI
162  IF gtk_toggle_button_get_active(Butt) THEN
163  PAR->LayOn = TRUE
164  osm_gps_map_layer_add(OSM_GPS_MAP(.MAP), OSM_GPS_MAP_LAYER(.OSD))
165  ELSE
166  PAR->LayOn = FALSE
167  osm_gps_map_layer_remove(OSM_GPS_MAP(.MAP), OSM_GPS_MAP_LAYER(.OSD))
168  END IF
169  gtk_widget_queue_draw(GTK_WIDGET(.MAP))
170 END WITH
171 END SUB
172 
173 
174 
185 FUNCTION on_WIN_state CDECL ALIAS "on_WIN_state"( _
186  BYVAL Wid AS GtkWidget PTR _
187 , BYVAL Event AS GdkEventWindowState PTR _
188 , BYVAL Ud AS gpointer) AS gboolean EXPORT
189  GUI->WIN_state = Event->new_window_state
190  RETURN FALSE
191 END FUNCTION
192 
193 
194 
195 #MACRO GENERAL_KEYS()
196 _0_GENERAL:
197 WITH *GUI
198  SELECT CASE Event->keyval
199  CASE GDK_KEY_Plus, GDK_KEY_asterisk, GDK_KEY_KP_Add
200  osm_gps_map_zoom_in(OSM_GPS_MAP(GUI->MAP)) : RETURN TRUE
201  CASE GDK_KEY_minus, GDK_KEY_underscore, GDK_KEY_KP_Subtract
202  osm_gps_map_zoom_out(OSM_GPS_MAP(GUI->MAP)) : RETURN TRUE
203  CASE GDK_KEY_l, GDK_KEY_L_
204  VAR tb = GTK_TOGGLE_BUTTON(.TBL)
205  gtk_toggle_button_set_active(tb, _
206  IIF(gtk_toggle_button_get_active(tb), FALSE, TRUE)) : RETURN TRUE
207  END SELECT
208 END WITH
209 #ENDMACRO
210 #MACRO BLANK_KEYS()
211 _1_BLANK:
212 WITH *PAR
213  VAR osm = OSM_GPS_MAP(GUI->MAP)
214  SELECT CASE Event->keyval
215  CASE GDK_KEY_0 : PAR->Map_restore(0) : RETURN TRUE
216  CASE GDK_KEY_1 : PAR->Map_restore(1) : RETURN TRUE
217  CASE GDK_KEY_2 : PAR->Map_restore(2) : RETURN TRUE
218  CASE GDK_KEY_3 : PAR->Map_restore(3) : RETURN TRUE
219  CASE GDK_KEY_4 : PAR->Map_restore(4) : RETURN TRUE
220  CASE GDK_KEY_5 : PAR->Map_restore(5) : RETURN TRUE
221  CASE GDK_KEY_6 : PAR->Map_restore(6) : RETURN TRUE
222  CASE GDK_KEY_7 : PAR->Map_restore(7) : RETURN TRUE
223  CASE GDK_KEY_8 : PAR->Map_restore(8) : RETURN TRUE
224  CASE GDK_KEY_9 : PAR->Map_restore(9) : RETURN TRUE
225  CASE GDK_KEY_space : DIM AS TS_bbox x = (FALSE) : RETURN TRUE
226  CASE GDK_KEY_KP_6, GDK_KEY_Right : osm_gps_map_scroll(osm, .MapW \ 4, 0)
227  CASE GDK_KEY_KP_4, GDK_KEY_Left : osm_gps_map_scroll(osm,-.MapW \ 4, 0)
228  CASE GDK_KEY_KP_8, GDK_KEY_Up : osm_gps_map_scroll(osm, 0,-.MapH \ 4)
229  CASE GDK_KEY_KP_2, GDK_KEY_Down : osm_gps_map_scroll(osm, 0, .MapH \ 4)
230  CASE GDK_KEY_KP_9 : osm_gps_map_scroll(osm, .MapW \ 4,-.MapH \ 4)
231  CASE GDK_KEY_KP_3 : osm_gps_map_scroll(osm, .MapW \ 4, .MapH \ 4)
232  CASE GDK_KEY_KP_1 : osm_gps_map_scroll(osm,-.MapW \ 4, .MapH \ 4)
233  CASE GDK_KEY_KP_7 : osm_gps_map_scroll(osm,-.MapW \ 4,-.MapH \ 4)
234  CASE GDK_KEY_F11
235  IF GDK_WINDOW_STATE_FULLSCREEN AND GUI->WIN_state _
236  THEN gtk_window_unfullscreen(GTK_WINDOW(GUI->WIN)) _
237  ELSE gtk_window_fullscreen(GTK_WINDOW(GUI->WIN))
238  CASE ELSE : RETURN FALSE
239  END SELECT : RETURN TRUE
240 END WITH
241 #ENDMACRO
242 #MACRO SHIFT_CONTROL_KEYS()
243 _2_SHIFT_CONTROL:
244  VAR trl = TRACK_LAYER(GUI->TRL)
245  IF GDK_CONTROL_MASK AND state THEN
246  SELECT CASE AS CONST Event->keyval
247  CASE GDK_KEY_Right : track_layer_point_move(trl, @">")
248  CASE GDK_KEY_Left : track_layer_point_move(trl, @"<")
249  CASE GDK_KEY_Up : track_layer_point_move(trl, @"}")
250  CASE GDK_KEY_Down : track_layer_point_move(trl, @"{")
251  CASE ELSE : RETURN FALSE
252  END SELECT : RETURN TRUE
253  END IF
254 
255  SELECT CASE Event->keyval
256  CASE GDK_KEY_I_ : TS_preference(track_layer_get_loader(trl))
257  CASE GDK_KEY_space : track_layer_center_track(trl)
258  CASE GDK_KEY_Right : track_layer_point_move(trl, @"+")
259  CASE GDK_KEY_Left : track_layer_point_move(trl, @"-")
260  CASE GDK_KEY_Up : track_layer_point_move(trl, @"f")
261  CASE GDK_KEY_Down : track_layer_point_move(trl, @"b")
262  CASE GDK_KEY_Page_Up : track_layer_point_move(trl, @"F")
263  CASE GDK_KEY_Page_Down : track_layer_point_move(trl, @"B")
264  CASE GDK_KEY_Home : track_layer_point_move(trl, @"H")
265  CASE GDK_KEY_End : track_layer_point_move(trl, @"E")
266  CASE GDK_KEY_M_ : track_layer_point_move(trl, @"M")
267  CASE GDK_KEY_KP_1, GDK_KEY_KP_End : track_layer_point_move(trl, @"1")
268  CASE GDK_KEY_KP_2, GDK_KEY_KP_Down : track_layer_point_move(trl, @"2")
269  CASE GDK_KEY_KP_3, GDK_KEY_KP_Next : track_layer_point_move(trl, @"3")
270  CASE GDK_KEY_KP_4, GDK_KEY_KP_Left : track_layer_point_move(trl, @"4")
271  CASE GDK_KEY_KP_5, GDK_KEY_KP_Begin : track_layer_point_move(trl, @"5")
272  CASE GDK_KEY_KP_6, GDK_KEY_KP_Right : track_layer_point_move(trl, @"6")
273  CASE GDK_KEY_KP_7, GDK_KEY_KP_Home : track_layer_point_move(trl, @"7")
274  CASE GDK_KEY_KP_8, GDK_KEY_KP_Up : track_layer_point_move(trl, @"8")
275  CASE GDK_KEY_KP_9, GDK_KEY_KP_Prior : track_layer_point_move(trl, @"9")
276  CASE ELSE : RETURN FALSE
277  END SELECT : RETURN TRUE
278 #ENDMACRO
279 #MACRO CONTROL_KEYS()
280 _1_CONTROL:
281 WITH *GUI
282  SELECT CASE AS CONST Event->keyval
283  CASE GDK_KEY_0 : PAR->Map_store(0) : RETURN TRUE
284  CASE GDK_KEY_1 : PAR->Map_store(1) : RETURN TRUE
285  CASE GDK_KEY_2 : PAR->Map_store(2) : RETURN TRUE
286  CASE GDK_KEY_3 : PAR->Map_store(3) : RETURN TRUE
287  CASE GDK_KEY_4 : PAR->Map_store(4) : RETURN TRUE
288  CASE GDK_KEY_5 : PAR->Map_store(5) : RETURN TRUE
289  CASE GDK_KEY_6 : PAR->Map_store(6) : RETURN TRUE
290  CASE GDK_KEY_7 : PAR->Map_store(7) : RETURN TRUE
291  CASE GDK_KEY_8 : PAR->Map_store(8) : RETURN TRUE
292  CASE GDK_KEY_9 : PAR->Map_store(9) : RETURN TRUE
293  CASE GDK_KEY_o : on_Load_clicked(NULL, NULL) : RETURN TRUE
294  'CASE GDK_KEY_p : '!! print / pref
295  'CASE GDK_KEY_s : '!! save
296  CASE GDK_KEY_q : g_application_quit(G_APPLICATION(.APP))
297  CASE GDK_KEY_space : DIM AS TS_bbox x = (TRUE) : RETURN TRUE
298  END SELECT
299 END WITH
300 #ENDMACRO
301 #MACRO ALT_KEYS()
302 _1_ALTERNATE:
303 WITH *GUI
304  SELECT CASE AS CONST Event->keyval
305  CASE GDK_KEY_o : on_Load_clicked(NULL, NULL) : return TRUE
306  CASE GDK_KEY_q : g_application_quit(G_APPLICATION(.APP)) ': return TRUE
307  END SELECT
308 END WITH
309 #ENDMACRO
310 
311 FUNCTION on_Map_keypress CDECL ALIAS "on_Map_keypress"( _
312  BYVAL Wid AS GtkWidget PTR _
313 , BYVAL Event AS GdkEventKey PTR _
314 , BYVAL UDat AS gpointer) AS gboolean EXPORT
315 
316  VAR state = Event->state XOR GDK_MOD2_MASK
317  GENERAL_KEYS()
318  SELECT CASE AS CONST state
319  CASE 0
320  BLANK_KEYS()
321  CASE GDK_CONTROL_MASK
322  CONTROL_KEYS()
323  CASE GDK_MOD1_MASK
324  ALT_KEYS()
325  CASE ELSE
326  IF NOT(GDK_CONTROL_MASK + GDK_SHIFT_MASK + GDK_LOCK_MASK) AND state THEN RETURN FALSE
327  SHIFT_CONTROL_KEYS()
328  END SELECT : RETURN FALSE
329 END FUNCTION
330 
on_Map_selected
SUB_CDECL_ALIAS on_Map_selected(BYVAL_AS_GtkTreeView_PTR Tree, BYVAL_AS_GtkTreePath_PTR Path, BYVAL_AS_GtkTreeViewColumn_PTR Clmn, BYVAL_AS_gpointer UDat)
Callback fetching a new map source selection.
Definition: callbacks.bas:99
on_Load_clicked
SUB_CDECL_ALIAS on_Load_clicked(BYVAL_AS_GtkButton_PTR Butt, BYVAL_AS_gpointer UDat)
Call back handling the load action.
Definition: callbacks.bas:66
on_Map_keypress
FUNCTION_CDECL_ALIAS_AS_gboolean on_Map_keypress(BYVAL_AS_GtkWidget_PTR Wid, BYVAL_AS_GdkEventKey_PTR Event, BYVAL_AS_gpointer UDat)
Definition: callbacks.bas:201
on_Poov_limit_size
SUB_CDECL_ALIAS on_Poov_limit_size(BYVAL_AS_GtkContainer_PTR Cont, BYVAL_AS_gpointer UDat)
FIXME.
Definition: callbacks.bas:129
track_store.bi
Header for tree store of tracks handling.
TS_select
SUB TS_select(BYVAL_AS_STRING Path)
Handle new selection.
Definition: track_store.bas:332
on_TrackSel_clicked
SUB_CDECL_ALIAS on_TrackSel_clicked(BYVAL_AS_GtkCellRendererToggle_PTR Cell, BYVAL_AS_gchar_PTR Path, BYVAL_AS_gpointer UDat)
Callback handling the track selection.
Definition: callbacks.bas:48
debug.bi
track_layer.bi
Header for advanced tracks layer.
on_WIN_state
FUNCTION_CDECL_ALIAS_AS_gboolean on_WIN_state(BYVAL_AS_GtkWidget_PTR Wid, BYVAL_AS_GdkEventWindowState_PTR Event, BYVAL_AS_gpointer Ud)
Callback fetching state changes.
Definition: callbacks.bas:185
gui.bi
Header containing Glade ui file pointers.
on_Layer_toggled
SUB_CDECL_ALIAS on_Layer_toggled(BYVAL_AS_GtkToggleButton_PTR Butt, BYVAL_AS_gpointer UDat)
Callback fetching the layer state.
Definition: callbacks.bas:158
on_TrackEnable_toggled
SUB_CDECL_ALIAS on_TrackEnable_toggled(BYVAL_AS_GtkCellRendererToggle_PTR Cell, BYVAL_AS_gchar_PTR Path, BYVAL_AS_gpointer UDat)
Callback handling the enable button in the track view.
Definition: callbacks.bas:26