pavi  0.0
Map Path Viewer
gui.bas
Go to the documentation of this file.
1 
9 
10 #INCLUDE ONCE "Gir/OsmGpsMap-1.0.bi"
11 #INCLUDE ONCE "Gir/_GLibMacros-2.0.bi"
12 #INCLUDE ONCE "track_layer.bi"
13 #INCLUDE ONCE "track_store.bi"
14 #INCLUDE ONCE "gui.bi"
15 #INCLUDE ONCE "debug.bi"
16 
17 
18 FUNCTION TVT_select( _
19  BYVAL Sel AS GtkTreeSelection PTR _
20 , BYVAL Model AS GtkTreeModel PTR _
21 , BYVAL Path AS GtkTreePath PTR _
22 , BYVAL Mode AS gboolean _
23 , BYVAL Ud AS gpointer) AS gboolean
24 
25 WITH *GUI
26  IF .TSnoPref THEN .TSnoPref = FALSE : RETURN FALSE ' button clicked
27  track_layer_redraw(TRACK_LAYER(GUI->TRL))
28  DIM AS GtkTreeIter iter
29  DIM AS TrackLoader PTR loa
30  gtk_tree_model_get_iter(Model, @iter, Path)
31  gtk_tree_model_get(Model, @iter _
32  , COL__LOADER, @loa _
33  , -1)
34  IF loa THEN TS_preference(loa)
35  RETURN FALSE
36 END WITH
37 END FUNCTION
38 
39 
40 CONSTRUCTOR GUIdata(BYREF Fnam AS STRING, BYVAL Appli AS GApplication PTR)
41  VAR er = gtk_check_version(3, 22, 0)
42  IF er THEN g_error("failed: " & *er) : g_application_quit(Appli)
43 
44  DIM AS GError PTR errr
45  VAR xml = gtk_builder_new()
46  IF 0 = gtk_builder_add_from_file(xml, FNam, @errr) THEN
47  g_error("GTK-Builder: " & *errr->message)
48  g_object_unref(xml)
49  g_error_free(errr)
50  g_application_quit(Appli)
51  END IF
52 
53  APP = G_OBJECT(Appli)
54  WIN = gtk_builder_get_object(xml, "WinMain")
55  ScrollMaps = gtk_builder_get_object(xml, "ScrollMaps")
56  ScrollTracks = gtk_builder_get_object(xml, "ScrollTracks")
57  STO = gtk_builder_get_object(xml, "TSTracks")
58  TVT = gtk_builder_get_object(xml, "TVTracks")
59  DTL = gtk_builder_get_object(xml, "DialogTrackLoad")
60  DTP = gtk_builder_get_object(xml, "DialogTrackPref")
61  LTD = gtk_builder_get_object(xml, "LabelDesc")
62  LTE = gtk_builder_get_object(xml, "LabelExtrema")
63  APW = gtk_builder_get_object(xml, "AdjTrackPoint")
64  BPC = gtk_builder_get_object(xml, "ColorTrackPoint")
65  CPD = gtk_builder_get_object(xml, "ComboDiameter")
66  CPC = gtk_builder_get_object(xml, "ComboColor")
67  ALW = gtk_builder_get_object(xml, "AdjTrackLine")
68  BLC = gtk_builder_get_object(xml, "ColorTrackLine")
69  TBL = gtk_builder_get_object(xml, "TBLayer")
70  MAP = g_object_new(OSM_TYPE_GPS_MAP _
71  , "tile-cache", OSM_GPS_MAP_CACHE_AUTO _
72  , "expand", TRUE _
73  , NULL)
74  OSD = g_object_new(OSM_TYPE_GPS_MAP_OSD _
75  , "show-scale", TRUE _
76  , "show-crosshair", TRUE _
77  , "show-dpad", TRUE _
78  , "show-zoom", TRUE _
79  , "dpad-radius", 30 _
80  , "show-gps-in-dpad", TRUE _
81  , "show-gps-in-zoom", FALSE _
82  , "show-coordinates", FALSE _
83  , NULL)
84 
85  VAR mawi = GTK_WIDGET(MAP)
86  gtk_widget_set_size_request(mawi, PAR->MapW, PAR->MapH)
87  gtk_widget_set_can_focus(mawi, TRUE)
88  gtk_widget_set_focus_on_click(mawi, TRUE)
89  gtk_widget_grab_focus(mawi)
90  gtk_widget_add_events(mawi _
91  , GDK_BUTTON_PRESS_MASK + GDK_BUTTON_RELEASE_MASK _
92  + GDK_POINTER_MOTION_MASK + GDK_SCROLL_MASK _
93  + GDK_KEY_PRESS_MASK + GDK_KEY_RELEASE_MASK) ' + GDK_SMOOTH_SCROLL_MASK)
94  gtk_container_add(GTK_CONTAINER(gtk_builder_get_object(xml, "BoxMain")), mawi)
95  gtk_widget_show_all(mawi)
96 
97  TRL = track_layer_new(MAP)
98  g_object_set(TRL _
99  , "font-type", PAR->InfoFontType _
100  , "font-size", PAR->InfoFontSize _
101  , NULL)
102  osm_gps_map_layer_render(OSM_GPS_MAP_LAYER(OSD), OSM_GPS_MAP(MAP))
103 
104  VAR src1 = OSM_GPS_MAP_SOURCE_NULL
105  VAR listo = GTK_LIST_STORE(gtk_builder_get_object(xml, "LSMaps"))
106  FOR i AS INTEGER = 1 TO OSM_GPS_MAP_SOURCE_LAST - 1
107  IF 0 = osm_gps_map_source_is_valid(i) THEN CONTINUE FOR
108  gtk_list_store_insert_with_values(listo, NULL, -1 _
109  , 0, osm_gps_map_source_get_friendly_name(i) _
110  , 1, STR(i) _
111  ,-1)
112  IF 0 = src1 THEN src1 = i
113  NEXT
114  g_object_set(MAP _
115  , "map-source", src1 _
116  , NULL)
117  gtk_window_set_title(GTK_WINDOW(WIN), osm_gps_map_source_get_friendly_name(src1))
118 
119  VAR sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(TVT))
120  gtk_tree_selection_set_select_function(sel, @TVT_select(), NULL, NULL)
121  gtk_builder_connect_signals(xml, NULL)
122 
123  g_object_ref(STO)
124  g_object_unref(xml)
125  gtk_application_add_window(GTK_APPLICATION(App), GTK_WINDOW(WIN))
126 END CONSTRUCTOR
127 
128 
129 
136 DESTRUCTOR GUIdata()
137  TS_finalize()
138  g_object_unref(TRL)
139  g_object_unref(STO)
140  g_object_unref(OSD)
141 END DESTRUCTOR
142 
143 
144 
151 SUB PARdata.Map_store(BYVAL Ind AS gint)
152  IF Ind > UBOUND(MapSlots) THEN EXIT SUB
153 WITH MapSlots(Ind)
154  DIM AS OsmGpsMapPoint p0, p1
155  osm_gps_map_get_bbox(OSM_GPS_MAP(GUI->MAP), @p0, @p1)
156  .La0 = p0.rlat
157  .La1 = p1.rlat
158  .Lo0 = p0.rlon
159  .Lo1 = p1.rlon
160 END WITH
161 END SUB
162 
163 
164 
173 SUB PARdata.Map_restore(BYVAL Ind AS gint)
174  IF Ind > UBOUND(MapSlots) THEN EXIT SUB
175 WITH MapSlots(Ind)
176  IF .La0 > PId2 THEN EXIT SUB ' invalid slot
177  track_layer_set_bbox(TRACK_LAYER(GUI->TRL), .La0, .La1, .Lo0, .Lo1)
178 END WITH
179 END SUB
180 
PARdata::Map_store
SUB Map_store(BYVAL_AS_gint)
Remember bounding box.
Definition: gui.bas:151
track_store.bi
Header for tree store of tracks handling.
TS_finalize
SUB TS_finalize()
Remove all tracks from store.
Definition: track_store.bas:165
track_layer_set_bbox
SUB_CDECL track_layer_set_bbox(BYVAL_AS_TrackLayer_PTR Lay, BYVAL_AS_float La0, BYVAL_AS_float La1, BYVAL_AS_float Lo0, BYVAL_AS_float Lo1)
Set map segment to the given bounding box.
Definition: track_layer.bas:964
GUIdata::GUIdata
GUIdata(BYREF_AS_STRING, BYVAL_AS_GApplication_PTR)
Definition: gui.bas:40
GUIdata::~GUIdata
~GUIdata()
DTOR to free memory.
Definition: gui.bas:136
track_layer_redraw
SUB_CDECL track_layer_redraw(BYVAL_AS_TrackLayer_PTR Lay)
Redraw surface.
Definition: track_layer.bas:897
track_layer_new
FUNCTION_AS_TrackLayer_PTR track_layer_new(BYVAL_AS_GObject_PTR Map)
Creates a new instance of TrackLayer.
Definition: track_layer.bas:497
TS_preference
SUB TS_preference(BYVAL_AS_TrackLoader_PTR Loa)
Open the preference dialog.
Definition: track_store.bas:368
PARdata::Map_restore
SUB Map_restore(BYVAL_AS_gint)
Restore a memory slot.
Definition: gui.bas:173
debug.bi
TVT_select
FUNCTION_AS_gboolean TVT_select(BYVAL_AS_GtkTreeSelection_PTR Sel, BYVAL_AS_GtkTreeModel_PTR Model, BYVAL_AS_GtkTreePath_PTR Path, BYVAL_AS_gboolean Mode, BYVAL_AS_gpointer Ud)
Definition: gui.bas:18
track_layer.bi
Header for advanced tracks layer.
gui.bi
Header containing Glade ui file pointers.