10 #INCLUDE ONCE "Gir/Gtk-3.0.bi"
30 BYVAL Model
AS GtkTreeModel
PTR _
31 ,
BYVAL Path
AS GtkTreePath
PTR _
32 ,
BYVAL Iter
AS GtkTreeIter
PTR _
33 ,
BYVAL UserData
AS gpointer)
AS gboolean
34 WITH *
CAST(
TS_add PTR, UserData)
36 gtk_tree_model_get(Model, Iter _
39 , COL__LOADER, @.Loa _
43 IF .Nam = *n
ANDALSO .Fol = *p
THEN .Got = TRUE
46 IF NULL = p
ANDALSO .Fol = *n
THEN .Par = gtk_tree_iter_copy(Iter)
47 END IF : g_free(p) : g_free(n) :
RETURN .Got
66 CONSTRUCTOR TS_add(
BYVAL N
AS CONST gchar
PTR)
68 VAR p =
INSTRREV(*N, *G_DIR_SEPARATOR_S)
71 VAR model = GTK_TREE_MODEL(.STO)
72 gtk_tree_model_foreach(model _
74 IF Got
THEN EXIT CONSTRUCTOR
76 VAR tl =
NEW TrackLoader(N)
77 IF tl->Az >= 0
THEN Loa =
CAST(gpointer, tl) _
78 ELSE ?"**load error: ";*tl->Errr;
" in file ";*N :
DELETE(tl) :
EXIT CONSTRUCTOR
80 DIM AS GtkTreeIter new_par, iter
81 VAR sto = GTK_TREE_STORE(.STO)
83 gtk_tree_store_insert_with_values(sto, @new_par, NULL, -1 _
84 , COL__ENABLE, FALSE _
85 , COL__SELECT, FALSE _
86 , COL_VISIBLE, FALSE _
95 gtk_tree_store_insert_with_values(sto, @iter,
IIF(Par, Par, @new_par), -1 _
97 , COL__SELECT, FALSE _
101 , COL_P_WIDTH,
PEEK(
UBYTE, def->P) _
102 , COL_L_WIDTH,
PEEK(
UBYTE, def->L) _
103 , COL_P_COLOR, def->P[1] _
104 , COL_L_COLOR, def->L[1] _
107 VAR s = gtk_tree_model_get_string_from_iter(model, @iter)
108 PEEK(TrackLoader, Loa).Path = *s
111 IF Par
THEN gtk_tree_iter_free(Par) :
EXIT CONSTRUCTOR
113 VAR path = gtk_tree_model_get_path(model, @new_par)
114 gtk_tree_view_expand_row(GTK_TREE_VIEW(.TVT), path, FALSE)
115 gtk_tree_path_free(path)
134 BYVAL Model
AS GtkTreeModel
PTR _
135 ,
BYVAL Path
AS GtkTreePath
PTR _
136 ,
BYVAL Iter
AS GtkTreeIter
PTR _
137 ,
BYVAL UserData
AS gpointer)
AS gboolean
138 DIM AS TrackLoader
PTR loa
139 DIM AS gchar
PTR pcs, lcs, nam, fol
140 gtk_tree_model_get(Model, Iter _
141 , COL____PATH, @fol _
142 , COL____NAME, @nam _
143 , COL_P_COLOR, @pcs _
144 , COL_L_COLOR, @lcs _
145 , COL__LOADER, @loa _
147 IF pcs
THEN g_free(pcs)
148 IF lcs
THEN g_free(lcs)
149 IF fol
THEN g_free(fol)
150 IF nam
THEN g_free(nam)
151 IF loa
THEN DELETE(loa)
166 gtk_tree_model_foreach(GTK_TREE_MODEL(.STO) _
168 gtk_tree_store_clear(GTK_TREE_STORE(.STO))
181 SUB TS_remove(
BYVAL Child
AS GtkTreeIter
PTR)
183 VAR model = GTK_TREE_MODEL(.STO)
184 DIM AS GtkTreeIter parent
185 gtk_tree_model_iter_parent(model, @parent, Child)
187 gtk_tree_store_remove(GTK_TREE_STORE(.STO), Child)
188 IF FALSE = gtk_tree_model_iter_has_child(model, @parent) _
189 THEN gtk_tree_store_remove(GTK_TREE_STORE(.STO), @parent)
210 BYVAL Model
AS GtkTreeModel
PTR _
211 ,
BYVAL Path
AS GtkTreePath
PTR _
212 ,
BYVAL Iter
AS GtkTreeIter
PTR _
213 ,
BYVAL UserData
AS gpointer)
AS gboolean
214 DIM AS TrackLoader
PTR loa
216 gtk_tree_model_get(Model, Iter _
218 , COL__LOADER, @loa _
220 IF FALSE = en
ORELSE NULL = loa
THEN RETURN FALSE
222 VAR d = loa->Nearest(.Lat, .Lon) _
223 , d0 = .Res(0).Dist - d, ii = -1L
224 FOR i
AS LONG = 0
TO UBOUND(.Res)
226 IF 0 = .Loa
THEN .Dist = d : .Loa = loa :
RETURN FALSE
227 IF .Dist <= d
THEN CONTINUE FOR
229 IF di < d0
THEN ii = i : d0 = di
232 IF ii >= 0
THEN .Res(ii).Dist = d : .Res(ii).Loa = loa
255 gtk_tree_model_foreach(GTK_TREE_MODEL(GUI->STO) _
274 BYVAL Model
AS GtkTreeModel
PTR _
275 ,
BYVAL Path
AS GtkTreePath
PTR _
276 ,
BYVAL Iter
AS GtkTreeIter
PTR _
277 ,
BYVAL UserData
AS gpointer)
AS gboolean
278 DIM AS TrackLoader
PTR loa
280 gtk_tree_model_get(Model, Iter _
282 , COL__LOADER, @loa _
284 IF NULL = loa
THEN RETURN FALSE
288 IF .La0 > loa->Mn.Lat
THEN .La0 = loa->Mn.Lat
289 IF .La1 < loa->Mx.Lat
THEN .La1 = loa->Mx.Lat
290 IF .Lo0 > loa->Mn.Lon
THEN .Lo0 = loa->Mn.Lon
291 IF .Lo1 < loa->Mx.Lon
THEN .Lo1 = loa->Mx.Lon
307 CONSTRUCTOR TS_bbox(
BYVAL Mo
AS gboolean)
310 gtk_tree_model_foreach(GTK_TREE_MODEL(GUI->STO) _
332 STATIC AS STRING last
333 IF 0 =
LEN(Path)
THEN EXIT SUB
335 DIM AS GtkTreeIter iter
336 VAR store = GTK_TREE_STORE(.STO) _
337 , model = GTK_TREE_MODEL(.STO)
339 gtk_tree_model_get_iter_from_string(model, @iter, last)
340 gtk_tree_store_set(store, @iter, COL__SELECT, FALSE, -1)
343 gtk_tree_model_get_iter_from_string(model, @iter, last)
344 gtk_tree_store_set(store, @iter, COL__SELECT, TRUE, -1)
345 DIM AS TrackLoader
PTR loa
346 gtk_tree_model_get(model, @iter, COL__LOADER, @loa, -1)
348 VAR p = gtk_tree_path_new_from_string(last)
349 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(.TVT), p)
350 gtk_tree_path_free(p)
369 IF NULL = Loa
THEN EXIT SUB
371 DIM AS gchar
PTR lc, pc, nam
372 DIM AS GtkTreeIter iter
374 VAR model = GTK_TREE_MODEL(.STO)
376 gtk_tree_model_get_iter_from_string(model, @iter, Loa->Path)
377 gtk_tree_model_get(model, @iter _
378 , COL____NAME, @nam _
385 IF gdk_rgba_parse(@x, pc)
THEN _
386 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(.BPC), @x)
388 IF gdk_rgba_parse(@x, lc)
THEN _
389 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(.BLC), @x)
391 gtk_adjustment_set_value(GTK_ADJUSTMENT(.APW), (pw
AND &b1111)
SHL 1)
392 gtk_combo_box_set_active( GTK_COMBO_BOX(.CPD), (pw
SHR 4)
AND &b11)
393 gtk_combo_box_set_active( GTK_COMBO_BOX(.CPC), (pw
SHR 6)
AND &b11)
394 gtk_adjustment_set_value(GTK_ADJUSTMENT(.ALW), lw)
395 gtk_window_set_title(GTK_WINDOW(.DTP), nam)
398 gtk_label_set_text(GTK_LABEL(GUI->LTD), .Desc)
399 gtk_label_set_text(GTK_LABEL(GUI->LTE), _
400 .Mn.Lon*Rad2Deg &
" to " & .Mx.Lon*Rad2Deg & !
"\n" _
401 & .Mn.Lat*Rad2Deg &
" to " & .Mx.Lat*Rad2Deg & !
"\n" _
402 & .Mn.Ele &
" to " & .Mx.Ele & !
"\n" _
403 & .Mn.Spd &
" to " & .Mx.Spd & !
"\n" _
404 & .Mn.Ang &
" to " & .Mx.Ang _
408 SELECT CASE AS CONST gtk_dialog_run(GTK_DIALOG(.DTP))
410 lw =
CAST(gint, gtk_adjustment_get_value(GTK_ADJUSTMENT(.ALW)))
411 pw =
CAST(gint, gtk_adjustment_get_value(GTK_ADJUSTMENT(.APW)))
SHR 1 _
412 +
CAST(gint, *gtk_combo_box_get_active_id(GTK_COMBO_BOX(.CPD)))
SHL 4 _
413 +
CAST(gint, *gtk_combo_box_get_active_id(GTK_COMBO_BOX(.CPC)))
SHL 6
414 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(.BLC), @x)
415 lc = gdk_rgba_to_string(@x)
416 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(.BPC), @x)
417 pc = gdk_rgba_to_string(@x)
418 gtk_tree_store_set(GTK_TREE_STORE(.STO), @iter _
432 gtk_widget_hide(GTK_WIDGET(.DTP))