30 FUNCTION colTrans(
BYVAL Col
AS GdkRGBA
PTR)
AS guint32
32 CUSHORT(255 * Col->red)
SHL 16 _
33 +
CUSHORT(255 * Col->green)
SHL 8 _
34 +
CUSHORT(255 * Col->blue)
49 FUNCTION updateScheme(
BYVAL Array
AS GObject
PTR PTR)
AS gchar
PTR
50 IF NAME(
"dat/fbdebugger.xml",
"dat/fbdebugger.tmp")
THEN _
51 RETURN __(
"Cannot rename dat/fbdebugger.xml")
53 IF OPEN(
"dat/fbdebugger.tmp" FOR INPUT AS f_in)
THEN _
54 RETURN __(
"Cannot read dat/fbdebugger.tmp")
56 IF OPEN(
"dat/fbdebugger.xml" FOR OUTPUT AS fout)
THEN _
57 CLOSE #f_in :
RETURN __(
"Cannot write dat/fbdebugger.xml")
59 VAR allready_done = 0, l =
""
62 IF INSTR(l,
"<color ")
THEN
63 IF allready_done
THEN CONTINUE WHILE
65 DIM AS GdkRGBA
PTR col
67 #DEFINE COL_OUT(_I_,_N_) _
68 g_object_get(Array[_I_],
"rgba", @col, NULL) : _
69 PRINT #fout, !
"\t<color name='" & _N_ &
"' value='#" &
HEX(
colTrans(col), 6) &
"'/>"
73 COL_OUT( 2,
"line_highlight")
74 COL_OUT( 3,
"line_no_bg")
75 COL_OUT( 4,
"keyword_color")
76 COL_OUT( 5,
"string_color")
77 COL_OUT( 6,
"prepro_color")
78 COL_OUT( 7,
"comment_color")
79 COL_OUT( 8,
"number_color")
80 COL_OUT( 9,
"escape_color")
81 COL_OUT(10,
"error_color")
85 WEND :
CLOSE #f_in :
CLOSE #fout
87 gtk_source_style_scheme_manager_force_rescan(.Manager)
88 .SchemeID = @
"fbdebugger"
90 IF KILL(
"dat/fbdebugger.tmp")
THEN _
91 RETURN __(
"Cannot remove dat/fbdebugger.tmp")
117 STATIC AS GObject
PTR _
118 colForegr, colBackgr, colBackgrCur, colLineNo _
119 , colKeyword, colStrings, colPrepro, colComment, colNumbers, colEscape, colCursor _
120 , boolTooltips, boolVerbose, boolScreen, boolFileLog _
121 , boolProctrace, boolLinetrace _
122 , boolLineno, boolSyntax _
123 , entryFbc, entryIDE, entryCmdl, entryDbg, entryLogfile _
124 , numDelay, numCurpos, fontSource, boxSchema _
127 IF 0 = fontSource
THEN
131 colBackgrCur = gtk_builder_get_object(xml,
"colorbutton510")
132 colForegr = gtk_builder_get_object(xml,
"colorbutton501")
133 colBackgr = gtk_builder_get_object(xml,
"colorbutton509")
134 colLineNo = gtk_builder_get_object(xml,
"colorbutton502")
135 colKeyword = gtk_builder_get_object(xml,
"colorbutton513")
136 colStrings = gtk_builder_get_object(xml,
"colorbutton514")
137 colPrepro = gtk_builder_get_object(xml,
"colorbutton515")
138 colComment = gtk_builder_get_object(xml,
"colorbutton516")
139 colNumbers = gtk_builder_get_object(xml,
"colorbutton517")
140 colEscape = gtk_builder_get_object(xml,
"colorbutton518")
141 colCursor = gtk_builder_get_object(xml,
"colorbutton519")
143 boolSyntax = gtk_builder_get_object(xml,
"checkbutton501")
144 boolVerbose = gtk_builder_get_object(xml,
"checkbutton502")
145 boolScreen = gtk_builder_get_object(xml,
"checkbutton503")
146 boolFileLog = gtk_builder_get_object(xml,
"checkbutton504")
147 boolLinetrace = gtk_builder_get_object(xml,
"checkbutton505")
148 boolProctrace = gtk_builder_get_object(xml,
"checkbutton506")
149 boolTooltips = gtk_builder_get_object(xml,
"checkbutton507")
150 boolLineno = gtk_builder_get_object(xml,
"checkbutton508")
152 entryFbc = gtk_builder_get_object(xml,
"entry501")
153 entryIde = gtk_builder_get_object(xml,
"entry502")
154 entryCmdl = gtk_builder_get_object(xml,
"entry503")
155 entryDbg = gtk_builder_get_object(xml,
"entry504")
156 entryLogfile = gtk_builder_get_object(xml,
"entry505")
157 fontSource = gtk_builder_get_object(xml,
"fontbutton502")
159 numDelay = gtk_builder_get_object(xml,
"adjustment501")
160 numCurpos = gtk_builder_get_object(xml,
"adjustment502")
161 boxSchema = gtk_builder_get_object(xml,
"comboboxtext501")
165 .Manager = gtk_source_style_scheme_manager_get_default()
166 gtk_source_style_scheme_manager_prepend_search_path(.Manager, @
"dat")
168 VAR list = gtk_source_style_scheme_manager_get_scheme_ids(.Manager) _
171 gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(boxSchema), list[i], list[i])
176 g_object_set_data( colForegr,
"TestId",
CAST(gpointer,
STYLE_COLOR))
177 g_object_set_data( colBackgr,
"TestId",
CAST(gpointer,
STYLE_COLOR))
178 g_object_set_data(colBackgrCur,
"TestId",
CAST(gpointer,
STYLE_COLOR))
179 g_object_set_data( colLineNo,
"TestId",
CAST(gpointer,
STYLE_COLOR))
180 g_object_set_data( colKeyword,
"TestId",
CAST(gpointer,
STYLE_COLOR))
181 g_object_set_data( colStrings,
"TestId",
CAST(gpointer,
STYLE_COLOR))
182 g_object_set_data( colPrepro,
"TestId",
CAST(gpointer,
STYLE_COLOR))
183 g_object_set_data( colComment,
"TestId",
CAST(gpointer,
STYLE_COLOR))
184 g_object_set_data( colNumbers,
"TestId",
CAST(gpointer,
STYLE_COLOR))
185 g_object_set_data( colEscape,
"TestId",
CAST(gpointer,
STYLE_COLOR))
186 g_object_set_data( colCursor,
"TestId",
CAST(gpointer,
STYLE_COLOR))
187 g_object_set_data( boolSyntax,
"TestId",
CAST(gpointer,
STYLE_SYNTAX))
188 g_object_set_data( boolLineno,
"TestId",
CAST(gpointer,
STYLE_LINENO))
189 g_object_set_data( fontSource,
"TestId",
CAST(gpointer,
STYLE_FONT))
190 g_object_set_data( numCurpos,
"TestId",
CAST(gpointer,
STYLE_SCROLL))
191 g_object_set_data( boxSchema,
"TestId",
CAST(gpointer,
STYLE_SCHEME))
193 array( 0) = colForegr
194 array( 1) = colBackgr
195 array( 2) = colBackgrCur
196 array( 3) = colLineNo
197 array( 4) = colKeyword
198 array( 5) = colStrings
199 array( 6) = colPrepro
200 array( 7) = colComment
201 array( 8) = colNumbers
202 array( 9) = colEscape
203 array(10) = colCursor
205 g_object_set_data(boxSchema,
"WidgetArray", @array(0))
209 SELECT CASE AS CONST Mo
211 DIM AS GdkRGBA
PTR col
212 g_object_get( colForegr,
"rgba", @col, NULL) : .ColForegr =
colTrans(col) : gdk_rgba_free(col)
213 g_object_get( colBackgr,
"rgba", @col, NULL) : .ColBackgr =
colTrans(col) : gdk_rgba_free(col)
214 g_object_get(colBackgrCur,
"rgba", @col, NULL) : .ColBackgrCur =
colTrans(col) : gdk_rgba_free(col)
217 g_object_get( colLineNo,
"rgba", @col, NULL) : .ColLineNo =
colTrans(col) : gdk_rgba_free(col)
218 g_object_get( colKeyword,
"rgba", @col, NULL) : .ColKeyword =
colTrans(col) : gdk_rgba_free(col)
219 g_object_get( colStrings,
"rgba", @col, NULL) : .ColStrings =
colTrans(col) : gdk_rgba_free(col)
220 g_object_get( colPrepro,
"rgba", @col, NULL) : .ColPrepro =
colTrans(col) : gdk_rgba_free(col)
221 g_object_get( colComment,
"rgba", @col, NULL) : .ColComment =
colTrans(col) : gdk_rgba_free(col)
222 g_object_get( colNumbers,
"rgba", @col, NULL) : .ColNumbers =
colTrans(col) : gdk_rgba_free(col)
223 g_object_get( colEscape,
"rgba", @col, NULL) : .ColEscape =
colTrans(col) : gdk_rgba_free(col)
224 g_object_get( colCursor,
"rgba", @col, NULL) : .ColCursor =
colTrans(col) : gdk_rgba_free(col)
227 g_object_get( boolTooltips,
"active", @bool, NULL) : .Bool(.FTT) = bool
228 g_object_get( boolVerbose,
"active", @bool, NULL) : .Bool(.FVM) = bool
229 g_object_get( boolScreen,
"active", @bool, NULL) : .Bool(.FSL) = bool
230 g_object_get( boolFileLog,
"active", @bool, NULL) : .Bool(.FFL) = bool
231 g_object_get(boolProctrace,
"active", @bool, NULL) : .Bool(.FPT) = bool
232 g_object_get(boolLinetrace,
"active", @bool, NULL) : .Bool(.FLT) = bool
233 g_object_get( boolLineno,
"active", @bool, NULL) : .Bool(.FLN) = bool
234 g_object_get( boolSyntax,
"active", @bool, NULL) : .Bool(.FSH) = bool
236 DIM AS gchar
PTR char
237 g_object_get( entryFbc,
"text", @char, NULL) : .FbcExe = *char : g_free(char)
238 g_object_get( entryIde,
"text", @char, NULL) : .IdeExe = *char : g_free(char)
239 g_object_get( entryCmdl,
"text", @char, NULL) : .CmdlFbc = *char : g_free(char)
240 g_object_get( entryDbg,
"text", @char, NULL) : .CmdExe(0) = *char : g_free(char)
241 g_object_get( entryLogfile,
"text", @char, NULL) : .FnamLog = *char : g_free(char)
242 g_object_get( fontSource,
"font", @char, NULL) : .FontSrc = *char : g_free(char)
243 g_object_get(boxSchema,
"active-id", @char, NULL) : .StlSchm = *char : g_free(char)
246 g_object_get( numDelay,
"value", @num, NULL) : .DelVal =
CAST(guint32, num)
247 g_object_get( numCurpos,
"value", @num, NULL) : .CurPos =
CAST(guint32, num * 1000)
249 VAR r = .saveIni() :
IF r
THEN ?PROJ_NAME &
": " & *r
250 SRC->ScrollPos = 1. / 99000 * .CurPos
251 SRC->settingsChanged()
254 gdk_rgba_parse(@col,
"#" &
HEX( .ColForegr, 6)) : g_object_set( colForegr,
"rgba", @col, NULL)
255 gdk_rgba_parse(@col,
"#" &
HEX( .ColBackgr, 6)) : g_object_set( colBackgr,
"rgba", @col, NULL)
256 gdk_rgba_parse(@col,
"#" &
HEX(.ColBackgrCur, 6)) : g_object_set(colBackgrCur,
"rgba", @col, NULL)
259 gdk_rgba_parse(@col,
"#" &
HEX( .ColLineNo, 6)) : g_object_set( colLineNo,
"rgba", @col, NULL)
260 gdk_rgba_parse(@col,
"#" &
HEX( .ColKeyword, 6)) : g_object_set( colKeyword,
"rgba", @col, NULL)
261 gdk_rgba_parse(@col,
"#" &
HEX( .ColStrings, 6)) : g_object_set( colStrings,
"rgba", @col, NULL)
262 gdk_rgba_parse(@col,
"#" &
HEX( .ColPrepro, 6)) : g_object_set( colPrepro,
"rgba", @col, NULL)
263 gdk_rgba_parse(@col,
"#" &
HEX( .ColComment, 6)) : g_object_set( colComment,
"rgba", @col, NULL)
264 gdk_rgba_parse(@col,
"#" &
HEX( .ColNumbers, 6)) : g_object_set( colNumbers,
"rgba", @col, NULL)
265 gdk_rgba_parse(@col,
"#" &
HEX( .ColEscape, 6)) : g_object_set( colEscape,
"rgba", @col, NULL)
266 gdk_rgba_parse(@col,
"#" &
HEX( .ColCursor, 6)) : g_object_set( colCursor,
"rgba", @col, NULL)
268 g_object_set( boolTooltips,
"active", .Bool(.FTT), NULL)
269 g_object_set( boolVerbose,
"active", .Bool(.FVM), NULL)
270 g_object_set( boolScreen,
"active", .Bool(.FSL), NULL)
271 g_object_set( boolFileLog,
"active", .Bool(.FFL), NULL)
272 g_object_set(boolProctrace,
"active", .Bool(.FPT), NULL)
273 g_object_set(boolLinetrace,
"active", .Bool(.FLT), NULL)
274 g_object_set( boolLineno,
"active", .Bool(.FLN), NULL)
275 g_object_set( boolSyntax,
"active", .Bool(.FSH), NULL)
277 g_object_set( entryFbc,
"text",
IIF(
LEN( .FbcExe),
SADD(.FbcExe), @
""), NULL)
278 g_object_set( entryIde,
"text",
IIF(
LEN( .IdeExe),
SADD(.IdeExe), @
""), NULL)
279 g_object_set( entryCmdl,
"text",
IIF(
LEN(.CmdlFbc),
SADD(.CmdlFbc), @
""), NULL)
280 g_object_set( entryDbg,
"text",
IIF(
LEN(.CmdExe(0)),
SADD(.CmdExe(0)), @
""), NULL)
281 g_object_set( entryLogfile,
"text",
IIF(
LEN(.FnamLog),
SADD(.FnamLog), @
""), NULL)
283 g_object_set( fontSource,
"font",
IIF(
LEN(.FontSrc),
SADD(.FontSrc), @
""), NULL)
284 g_object_set( numDelay,
"value",
CAST(gdouble, .DelVal), NULL)
285 g_object_set( numCurpos,
"value",
CAST(gdouble, .CurPos / 1000), NULL)
287 IF gtk_combo_box_set_active_id(GTK_COMBO_BOX(boxSchema),
SADD(
INI->StlSchm))
THEN
288 INI->StlSchm =
"fbdebugger"
289 gtk_combo_box_set_active_id(GTK_COMBO_BOX(boxSchema),
SADD(
INI->StlSchm))
292 VAR bool =
IIF(.StlSchm =
"fbdebugger", TRUE, FALSE)
295 gtk_widget_set_sensitive(GTK_WIDGET(array(i)), bool)
299 ELSE SRC->SchemeID =
SADD(.StlSchm)
300 SRC->FontID = .FontSrc
301 SRC->ScrollPos = 1. / 99000 * .CurPos
302 SRC->settingsChanged()
319 BYVAL action
AS GtkAction
PTR, _
320 BYVAL user_data
AS gpointer)
EXPORT
322 ?" --> callback act_Settings"
323 SELECT CASE AS CONST gtk_dialog_run(user_data)
325 ?" --> callback act_Settings -> save dialog settings"
328 ?" --> callback act_Settings -> dialog canceled, restore form"
331 gtk_widget_hide(user_data)
351 BYVAL Entry
AS GtkEntry
PTR, _
352 BYVAL IconPos
AS GtkEntryIconPosition, _
353 BYVAL Event
AS GdkEvent
PTR, _
354 BYVAL user_data
AS gpointer)
EXPORT
356 IF IconPos <> GTK_ENTRY_ICON_SECONDARY
THEN EXIT SUB
358 VAR fnam = *gtk_entry_get_text(Entry)
359 VAR dia = DBG_FILE_SAVE(
"Select log file name")
361 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dia), fnam)
363 IF GTK_RESPONSE_ACCEPT = gtk_dialog_run(GTK_DIALOG(dia))
THEN
364 VAR fnam = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dia))
365 gtk_entry_set_text(Entry, fnam)
369 gtk_widget_destroy(dia)
387 BYVAL Entry
AS GtkEntry
PTR, _
388 BYVAL IconPos
AS GtkEntryIconPosition, _
389 BYVAL Event
AS GdkEvent
PTR, _
390 BYVAL user_data
AS gpointer)
EXPORT
392 IF IconPos <> GTK_ENTRY_ICON_SECONDARY
THEN EXIT SUB
394 VAR dia = DBG_FILE_OPEN(
"Select executable")
395 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dia),
dbg_exe_filter())
397 IF GTK_RESPONSE_ACCEPT = gtk_dialog_run(GTK_DIALOG(dia))
THEN
398 VAR fnam = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dia))
399 gtk_entry_set_text(Entry, fnam)
403 gtk_widget_destroy(dia)
417 BYVAL Objct
AS GObject
PTR, _
418 BYVAL user_data
AS gpointer)
EXPORT
420 ?" --> callback on_settings_changed"
423 VAR page = gtk_notebook_get_current_page(GTK_NOTEBOOK(.NoteBok)) _
424 , widg = gtk_notebook_get_nth_page(GTK_NOTEBOOK(.NoteBok), page)
426 SELECT CASE AS CONST g_object_get_data(Objct,
"TestId")
429 g_object_get(Objct,
"active", @fsh, NULL)
431 VAR buff = g_object_get_data(G_Object(widg),
"Buffer")
432 gtk_source_buffer_set_highlight_syntax(GTKSOURCE_SOURCE_BUFFER(.BuffCur), fsh)
433 gtk_source_buffer_set_highlight_syntax(buff, fsh)
436 g_object_get(Objct,
"active", @fln, NULL)
438 VAR srcv = g_object_get_data(G_Object(widg),
"SrcView")
439 gtk_source_view_set_show_line_numbers(GTKSOURCE_SOURCE_VIEW(srcv), fLn)
441 DIM AS gchar
PTR fontsrc
442 g_object_get(Objct,
"font", @fontsrc, NULL)
447 VAR srcv = g_object_get_data(G_Object(widg),
"SrcView")
448 gtk_widget_override_font(GTK_WIDGET(srcv), .Font)
450 DIM AS gdouble scroll
451 g_object_get(Objct,
"value", @scroll, NULL)
453 VAR buff = g_object_get_data(G_Object(widg),
"Buffer") _
454 , srcv = g_object_get_data(G_Object(widg),
"SrcView") _
455 , mark = gtk_text_buffer_get_insert(buff)
456 gtk_text_view_scroll_to_mark(srcv, mark, .0, TRUE, .0, 1. / 99 * scroll)
458 updateScheme(g_object_get_data(user_data,
"WidgetArray"))
460 VAR buff = g_object_get_data(G_Object(widg),
"Buffer")
461 gtk_source_buffer_set_style_scheme(buff, .Schema)
463 DIM AS gchar
PTR stlschm
464 DIM AS GtkWidget
PTR PTR array = g_object_get_data(Objct,
"WidgetArray")
466 g_object_get(Objct,
"active-id", @stlschm, NULL)
467 VAR bool =
IIF(*stlschm =
"fbdebugger", TRUE, FALSE)
473 gtk_widget_set_sensitive(array[i], bool)
477 VAR buff = g_object_get_data(G_Object(widg),
"Buffer")
478 gtk_source_buffer_set_style_scheme(buff, .Schema)