rbt 0.10.143 → 0.10.144

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rbt might be problematic. Click here for more details.

Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +31 -55
  3. data/doc/todo/numbered_todo_entries.md +16 -19
  4. data/lib/rbt/cookbooks/sanitize_cookbook/sanitize_cookbook.rb +3 -1
  5. data/lib/rbt/gui/gtk2/recipe_maker.rb +24 -302
  6. data/lib/rbt/gui/gtk3/notebook/notebook.rb +14 -12
  7. data/lib/rbt/gui/gtk3/recipe_maker/recipe_maker.rb +550 -0
  8. data/lib/rbt/toplevel_methods/determine_appdir_prefix_from_this_input.rb +2 -1
  9. data/lib/rbt/toplevel_methods/determine_appdir_prefix_from_this_input_by_guessing_the_program_version.rb +31 -0
  10. data/lib/rbt/toplevel_methods/return_version_of_this_program.rb +4 -1
  11. data/lib/rbt/version/version.rb +1 -1
  12. data/lib/rbt/yaml/chained_programs/chained_programs.yml +41 -41
  13. data/lib/rbt/yaml/cookbooks/adwaitaicontheme.yml +2 -2
  14. data/lib/rbt/yaml/cookbooks/gnomebackgrounds.yml +2 -2
  15. data/lib/rbt/yaml/cookbooks/gnomeboxes.yml +2 -2
  16. data/lib/rbt/yaml/cookbooks/libtorrentrasterbar.yml +6 -247
  17. data/lib/rbt/yaml/cookbooks/libvirt.yml +2 -2
  18. data/lib/rbt/yaml/cookbooks/php.yml +1 -1
  19. data/lib/rbt/yaml/expanded_cookbooks/adwaitaicontheme.yml +8 -8
  20. data/lib/rbt/yaml/expanded_cookbooks/gnomebackgrounds.yml +8 -8
  21. data/lib/rbt/yaml/expanded_cookbooks/gnomeboxes.yml +8 -8
  22. data/lib/rbt/yaml/expanded_cookbooks/libvirt.yml +8 -8
  23. data/lib/rbt/yaml/expanded_cookbooks/php.yml +1 -1
  24. data/lib/rbt/yaml/programs_version/available_programs_versions.md +5 -5
  25. data/lib/rbt/yaml/programs_version/programs_version.yml +4 -3
  26. data/lib/rbt/yaml/these_programs_were_updated.yml +4 -0
  27. metadata +4 -2
@@ -119,16 +119,6 @@ class Notebook < ::Gtk::Box
119
119
  @notebook.allow_scrolling
120
120
  end
121
121
 
122
- # ========================================================================= #
123
- # === return_widget_containing_recipe_related_components
124
- # ========================================================================= #
125
- def return_widget_containing_recipe_related_components
126
- vbox = gtk_vbox
127
- vbox.set_border_width(2)
128
- vbox.add(gtk_label('Unfinished'))
129
- return vbox
130
- end
131
-
132
122
  # ========================================================================= #
133
123
  # === return_widget_containing_compile_related_components
134
124
  # ========================================================================= #
@@ -265,8 +255,9 @@ class Notebook < ::Gtk::Box
265
255
  "There are a total of <b>#{RBT.available_programs?.size}</b> "\
266
256
  "programs available in the RBT project."
267
257
  )
268
- vbox.minimal(label_n_programs_are_registered)
269
- vbox.minimal(@label_total_size_of_all_archives)
258
+ label_n_programs_are_registered.left_align
259
+ vbox.minimal(label_n_programs_are_registered, 2)
260
+ vbox.minimal(@label_total_size_of_all_archives, 2)
270
261
  return vbox
271
262
  end
272
263
 
@@ -330,6 +321,17 @@ class Notebook < ::Gtk::Box
330
321
  }
331
322
  end
332
323
 
324
+ # ========================================================================= #
325
+ # === return_widget_containing_recipe_related_components
326
+ # ========================================================================= #
327
+ def return_widget_containing_recipe_related_components
328
+ require 'rbt/gui/gtk3/recipe_maker/recipe_maker.rb'
329
+ vbox = gtk_vbox
330
+ vbox.set_border_width(2)
331
+ vbox.maximal(RBT::GUI::Gtk::RecipeMaker.new, 1)
332
+ return vbox
333
+ end
334
+
333
335
  end; end; end; end
334
336
 
335
337
  if __FILE__ == $PROGRAM_NAME
@@ -0,0 +1,550 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === RBT::GUI::Gtk::RecipeMaker
6
+ #
7
+ # This class shall provide a ruby-gtk3 interface to the create-a-cookbook
8
+ # functionality of the RBT project.
9
+ # =========================================================================== #
10
+ # require 'rbt/gui/gtk3/recipe_maker/recipe_maker.rb'
11
+ # RBT::GUI::Gtk::RecipeMaker.new(ARGV)
12
+ # =========================================================================== #
13
+ require 'gtk_paradise/require_gtk3'
14
+
15
+ module RBT
16
+
17
+ module GUI
18
+
19
+ module Gtk
20
+
21
+ class RecipeMaker < ::Gtk::Box
22
+
23
+ require 'rbt/toplevel_methods/author_name.rb'
24
+ require 'rbt/toplevel_methods/split_at.rb'
25
+ require 'rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb'
26
+ require 'rbt/requires/require_the_cookbook_class.rb'
27
+
28
+ require 'gtk_paradise/requires/require_the_base_module.rb'
29
+ include ::Gtk::BaseModule
30
+
31
+ begin
32
+ require 'cliner/module'
33
+ rescue LoadError; end
34
+
35
+ begin
36
+ require 'wget'
37
+ rescue LoadError; end
38
+
39
+ # ========================================================================= #
40
+ # === NAMESPACE
41
+ # ========================================================================= #
42
+ NAMESPACE = inspect
43
+
44
+ # ========================================================================= #
45
+ # === TITLE
46
+ # ========================================================================= #
47
+ TITLE = 'Recipe Maker'
48
+
49
+ # ========================================================================= #
50
+ # === WIDTH
51
+ # ========================================================================= #
52
+ WIDTH = 1300
53
+
54
+ # ========================================================================= #
55
+ # === HEIGHT
56
+ # ========================================================================= #
57
+ HEIGHT = 580
58
+
59
+ # ========================================================================= #
60
+ # === USE_THIS_FONT
61
+ # ========================================================================= #
62
+ USE_THIS_FONT = :dejavu_condensed_20
63
+
64
+ # ========================================================================= #
65
+ # === GUESS_NAME
66
+ # ========================================================================= #
67
+ GUESS_NAME = true # if true, we attempt to guess the name
68
+
69
+ # ========================================================================= #
70
+ # === DEBUG
71
+ # ========================================================================= #
72
+ DEBUG = false # set this to false to recieve no debug info
73
+
74
+ # ========================================================================= #
75
+ # === VERSION_RECIPE_MAKER
76
+ # ========================================================================= #
77
+ VERSION_RECIPE_MAKER = '1.0.7' # which version do we have?
78
+
79
+ # ========================================================================= #
80
+ # === USE_OVERRIDE
81
+ # ========================================================================= #
82
+ USE_OVERRIDE = false # if this is true, we set the override var
83
+
84
+ # ========================================================================= #
85
+ # === AUTHOR_NAME
86
+ # ========================================================================= #
87
+ AUTHOR_NAME = RBT.author_name? # your name
88
+
89
+ # ========================================================================= #
90
+ # === DEFAULT_FONT_SIZE
91
+ # ========================================================================= #
92
+ DEFAULT_FONT_SIZE = '16'
93
+
94
+ # ========================================================================= #
95
+ # === ARRAY_WITH_PROGRAM_DIRS
96
+ # ========================================================================= #
97
+ ARRAY_WITH_PROGRAM_DIRS = [
98
+ '','RB', 'PHP', 'PYTHON','AUD','VID',
99
+ 'EDITORS',
100
+ 'GCC',
101
+ 'GNOME',
102
+ 'IMG',
103
+ 'GAMES',
104
+ 'KDE'
105
+ ]
106
+
107
+ # ========================================================================= #
108
+ # === ARRAY_AVAILABLE_PROGRAMS
109
+ # ========================================================================= #
110
+ ARRAY_AVAILABLE_PROGRAMS = ::RBT.available_programs?
111
+
112
+ # ========================================================================= #
113
+ # === initialize
114
+ # ========================================================================= #
115
+ def initialize(
116
+ commandline_arguments = ARGV,
117
+ run_already = true
118
+ )
119
+ super(:vertical)
120
+ reset
121
+ set_border_width(0)
122
+ set_commandline_arguments(
123
+ commandline_arguments
124
+ )
125
+ run if run_already
126
+ end
127
+
128
+ # ========================================================================= #
129
+ # === reset (reset tag)
130
+ # ========================================================================= #
131
+ def reset
132
+ reset_the_internal_variables
133
+ # ======================================================================= #
134
+ # === @configuration
135
+ # ======================================================================= #
136
+ @configuration = [true, __dir__, NAMESPACE]
137
+ # ======================================================================= #
138
+ # === @title
139
+ # ======================================================================= #
140
+ @title = TITLE
141
+ # ======================================================================= #
142
+ # === @width
143
+ # ======================================================================= #
144
+ @width = WIDTH
145
+ # ======================================================================= #
146
+ # === @height
147
+ # ======================================================================= #
148
+ @height = HEIGHT
149
+ set_use_this_font(USE_THIS_FONT)
150
+ use_gtk_paradise_project_css_file # or use use_project_css_file
151
+ infer_the_size_automatically
152
+ # _ = RBT::Cookbooks::CreateCookbookYamlFile.new(ARGV) { :do_not_run_yet }
153
+ end
154
+
155
+ # ========================================================================= #
156
+ # === padding?
157
+ # ========================================================================= #
158
+ def padding?
159
+ 0
160
+ end
161
+
162
+ # ========================================================================= #
163
+ # === border_size?
164
+ # ========================================================================= #
165
+ def border_size?
166
+ 0
167
+ end
168
+
169
+ # ========================================================================= #
170
+ # === create_skeleton (create tag)
171
+ # ========================================================================= #
172
+ def create_skeleton
173
+ create_buttons
174
+ create_text_buffer
175
+ end
176
+
177
+ # ========================================================================= #
178
+ # === RBT::GUI::Gtk::RecipeMaker.height?
179
+ # ========================================================================= #
180
+ def self.height?
181
+ HEIGHT
182
+ end
183
+
184
+ # ========================================================================= #
185
+ # === RBT::GUI::Gtk::RecipeMaker.width?
186
+ # ========================================================================= #
187
+ def self.width?
188
+ WIDTH
189
+ end
190
+
191
+ # ========================================================================= #
192
+ # === create_a_new_gtk_about_dialog
193
+ #
194
+ # This creates our about dialog.
195
+ # ========================================================================= #
196
+ def create_a_new_gtk_about_dialog
197
+ @about_dialog = gtk_about_dialog
198
+ @about_dialog.artists = [ AUTHOR_NAME ]
199
+ @about_dialog.authors = [ AUTHOR_NAME ]
200
+ @about_dialog.comments = 'This Script creates recipe information '\
201
+ 'which will be stored in sources.yaml'
202
+ @about_dialog.copyright = 'None'
203
+ @about_dialog.documenters = ['']
204
+ @about_dialog.license = 'This program is licenced under the same license '\
205
+ 'as Ruby. There is one additional license part - which simply '\
206
+ 'encourages you to send bug reports to '\
207
+ 'me so that I can improve the program. ;-)'
208
+ @about_dialog.name = 'Ruby::Gtk::ReciperMaker'
209
+ # @about_dialog.translator_credits = "Here you can insert the credits of the translator.\n"
210
+ @about_dialog.version = VERSION_RECIPE_MAKER
211
+ @about_dialog.website = 'https://rubygems.org/gems/rbt'
212
+ @about_dialog.website_label = 'RBT on rubygems.org'
213
+ _ = ENV['IMG'].to_s+'/STD/UHR.png'
214
+ if File.exist? _
215
+ @about_dialog.logo = GdkPixbuf::Pixbuf.new(file: _)
216
+ end
217
+ @about_dialog.popup
218
+ end
219
+
220
+ # ========================================================================= #
221
+ # === connect_skeleton (connect tag)
222
+ # ========================================================================= #
223
+ def connect_skeleton
224
+ abort_on_exception
225
+ _ = default_top_bar
226
+ _.title = 'Recipe maker - create a new .yml file, a recipe'
227
+ _.css_class('pad0px')
228
+ button_about_dialog = gtk_button('About')
229
+ button_about_dialog.bblack1
230
+ button_about_dialog.on_clicked {
231
+ create_a_new_gtk_about_dialog
232
+ }
233
+ _.pack_end(button_about_dialog)
234
+ minimal(_)
235
+ hbox_for_the_name_of_the_program = gtk_hbox
236
+ hbox_for_the_name_of_the_program.minimal(
237
+ text('Input the name of the program:', 2)
238
+ )
239
+ @entry_name_of_the_program = gtk_entry('htop')
240
+ @entry_name_of_the_program.yellow_background
241
+ @entry_name_of_the_program.bblack1
242
+ @entry_name_of_the_program.css_class('pad8px')
243
+ @entry_name_of_the_program.on_click_select_everything
244
+ @entry_name_of_the_program.width_height(250, 50)
245
+ @entry_name_of_the_program.center
246
+ # @entry_name_of_the_program.set_completion(
247
+ # ARRAY_AVAILABLE_PROGRAMS
248
+ # ) if @entry_name_of_the_program.respond_to? :set_completion
249
+ @entry_name_of_the_program.do_focus
250
+ @entry_name_of_the_program.on_enter {
251
+ do_assign_data_from_this_program
252
+ }
253
+ hbox_for_the_name_of_the_program.minimal(@entry_name_of_the_program, 2)
254
+ button_assign_data_to_the_buffer = gtk_button('_Assign')
255
+ button_assign_data_to_the_buffer.hint = 'Click this button in '\
256
+ 'order to assign to the text view below this widget.'
257
+ button_assign_data_to_the_buffer.bblack1
258
+ button_assign_data_to_the_buffer.on_clicked {
259
+ do_assign_data_from_this_program(@entry_name_of_the_program.text?)
260
+ }
261
+ hbox_for_the_name_of_the_program.minimal(button_assign_data_to_the_buffer, 2)
262
+
263
+ button_clear = gtk_button('_Clear')
264
+ button_clear.hint = 'Click this button in '\
265
+ 'order to clear the content of the text view component, '\
266
+ 'below this widget.'
267
+ button_clear.bblack1
268
+ button_clear.on_clicked {
269
+ @entry_name_of_the_program.clear
270
+ main_text_view?.clear
271
+ }
272
+ hbox_for_the_name_of_the_program.minimal(button_clear, 2)
273
+
274
+ hbox_for_the_name_of_the_program.minimal(@button_traditional, 2)
275
+
276
+ button_save = gtk_button('_Save')
277
+ button_save.hint = 'Click this button in '\
278
+ 'order to save the content of the text view component, '\
279
+ 'below this widget.'
280
+ button_save.bblack1
281
+ button_save.on_clicked {
282
+ do_save_the_buffer
283
+ }
284
+ hbox_for_the_name_of_the_program.minimal(button_save, 2)
285
+
286
+ minimal(hbox_for_the_name_of_the_program, 4)
287
+ minimal(@outermost_vbox, 1)
288
+ end
289
+
290
+ # ========================================================================= #
291
+ # === append
292
+ #
293
+ # This will, by default, append via a newline. See the second argument
294
+ # to this method.
295
+ # ========================================================================= #
296
+ def append(i, append_this_string = "\n")
297
+ @text_buffer.append(
298
+ "#{i}#{append_this_string}"
299
+ )
300
+ end
301
+
302
+ # ========================================================================= #
303
+ # === main_buffer?
304
+ # ========================================================================= #
305
+ def main_buffer?
306
+ @text_buffer
307
+ end
308
+
309
+ # ========================================================================= #
310
+ # === colourize_the_buffer
311
+ #
312
+ # This method will colourize the buffer at hand.
313
+ # ========================================================================= #
314
+ def colourize_the_buffer
315
+ _ = @text_buffer.text?
316
+ @text_buffer.clear
317
+ iter = @text_buffer.start_iter
318
+ _.split(N).each { |line|
319
+ case line
320
+ when /name:$/,
321
+ /^#{program_name?}:$/
322
+ @text_buffer.insert(iter, line+N,tags: ['bold','seagreen'])
323
+ when /program_name/
324
+ @text_buffer.insert(iter, line+N,tags: ['bold','darkblue'])
325
+ when /description/
326
+ @text_buffer.insert(iter, line+N,tags: ['bold','darkgreen'])
327
+ when /required_debs/
328
+ @text_buffer.insert(iter, line+N,tags: ['bold','slateblue'])
329
+ when /true/, / t$/
330
+ line.gsub!(/ true/,'')
331
+ line.gsub!(/ t$/,'') if line =~ / t$/
332
+ @text_buffer.insert(iter, line)
333
+ @text_buffer.insert(iter, ' t'+N, tags: ['bold','red'])
334
+ when /false/, / f$/
335
+ line.gsub!(/ false/,'')
336
+ line.gsub!(/ f$/,'') if line =~ / f$/
337
+ @text_buffer.insert(iter, line)
338
+ @text_buffer.insert(iter, ' f'+N, tags: ['bold','red'])
339
+ else
340
+ @text_buffer.insert(iter, line+N)
341
+ end
342
+ }
343
+ end
344
+
345
+ # ========================================================================= #
346
+ # === create_text_buffer
347
+ #
348
+ # This method will create the textedit stuff.
349
+ # ========================================================================= #
350
+ def create_text_buffer
351
+ @outermost_vbox = gtk_vbox
352
+ @text_buffer = gtk_text_buffer
353
+ @text_buffer = ::Gtk::TextBufferTags.create_my_tags(@text_buffer)
354
+ @text_view_left = gtk_text_view(@text_buffer)
355
+ # @text_view_left.it_can_not_be_edited
356
+ @text_view_left.use_this_font = :hack_15
357
+ @scrolled_window = gtk_scrolled_window(@text_view_left)
358
+ @scrolled_window.set_policy(:never, :always)
359
+ @scrolled_window.bblack3
360
+ @scrolled_window.width_height(600, 450)
361
+ @scrolled_window.css_class('pad5px')
362
+ @outermost_vbox.minimal(@scrolled_window, 1)
363
+ end
364
+
365
+ # ========================================================================= #
366
+ # === main_text_view?
367
+ # ========================================================================= #
368
+ def main_text_view?
369
+ @text_view_left
370
+ end
371
+
372
+ # ========================================================================= #
373
+ # === run (run tag)
374
+ # ========================================================================= #
375
+ def run
376
+ create_skeleton_then_connect_skeleton
377
+ Thread.new {
378
+ sleep 0.1
379
+ do_assign_data_from_this_program
380
+ }
381
+ end
382
+
383
+ # ========================================================================= #
384
+ # === RBT::GUI::Gtk::RecipeMaker.run
385
+ # ========================================================================= #
386
+ def self.run(
387
+ i = ARGV
388
+ )
389
+ require 'gtk_paradise/run'
390
+ _ = ::RBT::GUI::Gtk::RecipeMaker.new(i)
391
+ r = ::Gtk.run
392
+ r << _
393
+ r.automatic_size
394
+ r.automatic_title
395
+ r.enable_quick_exit
396
+ r.resizable = true # <- This line was added due to a possible prior .maximize action.
397
+ r.start_in_the_middle
398
+ end
399
+
400
+ require 'rbt/toplevel_methods/save_file.rb'
401
+ # ========================================================================= #
402
+ # === do_save_the_buffer
403
+ # ========================================================================= #
404
+ def do_save_the_buffer
405
+ what = main_buffer?.text.to_s
406
+ into = main_entry?.text.to_s+'.yml'
407
+ e "Saving into `#{into}`."
408
+ RBT.write_what_into(what, into)
409
+ end
410
+
411
+ # ========================================================================= #
412
+ # === main_entry?
413
+ # ========================================================================= #
414
+ def main_entry?
415
+ @entry_name_of_the_program
416
+ end
417
+
418
+ # ========================================================================= #
419
+ # === program_name?
420
+ # ========================================================================= #
421
+ def program_name?
422
+ @entry_name_of_the_program.text?
423
+ end; alias compile_this_program? program_name? # === compile_this_program?
424
+
425
+ # ========================================================================= #
426
+ # === mass_append
427
+ #
428
+ # The first argument to this method must be a Hash that contains all
429
+ # relevant data.
430
+ #
431
+ # Whenever this method is used, the old text-buffer is cleared.
432
+ # ========================================================================= #
433
+ def mass_append(hash)
434
+ @text_buffer.clear # Clear the old content first.
435
+ append(hash[:short_name].to_s+':') # This entry is mandatory.
436
+ append(' # blfs:')
437
+ append(' # -')
438
+ unless hash[:binaries].empty?
439
+ append(' binaries:')
440
+ append(' - ')
441
+ end
442
+ append(
443
+ ' # program_name_and_program_version: '+hash[:program_name_and_program_version]
444
+ )
445
+ append(' configure_options: |')
446
+ append(' enable-shared')
447
+ if hash.has_key? :short_description
448
+ append(' short_description: |')
449
+ append(' '+hash[:short_description])
450
+ end
451
+ append(' description: |')
452
+ append(
453
+ ' '+RBT.word_wrap(hash[:description], 60)
454
+ )
455
+ append(' extra_information: |')
456
+ append(' '+hash[:extra_information].to_s)
457
+ append(' licence: '+hash[:licence].to_s)
458
+ append(' url1: '+hash[:url1].to_s)
459
+ append(' url1: '+hash[:url2].to_s)
460
+ append(' homepage: '+hash[:homepage].to_s)
461
+ append(' git_url: '+hash[:git_url].to_s) if hash[:git_url]
462
+ append(' prefix: '+hash[:prefix].to_s)
463
+ append(' use_autogen: '+hash[:use_autogen].to_s)
464
+ append(' keep_extracted: '+hash[:keep_extracted].to_s)
465
+ append(' use_build_directory: '+hash[:use_build_directory].to_s)
466
+ if hash[:tags] and hash[:tags].is_a? Array
467
+ append(' tags:')
468
+ hash[:tags].each {|inner_entry|
469
+ append(' - '+inner_entry.to_s)
470
+ }
471
+ end
472
+ append(' required_deps_on:')
473
+ append(' - '+hash[:required_deps_on].join(','))
474
+ append(' last_update: '+hash[:last_update].to_s)
475
+ colourize_the_buffer
476
+ end
477
+
478
+ # ========================================================================= #
479
+ # === return_hash_from_sanitize_cookbook
480
+ # ========================================================================= #
481
+ def return_hash_from_sanitize_cookbook(
482
+ for_this_program = @entry_name_of_the_program.text?
483
+ )
484
+ _ = RBT::Cookbooks::SanitizeCookbook.new(for_this_program)
485
+ binaries = _.binaries?
486
+ hash = {
487
+ short_name: _.short_name?,
488
+ binaries: binaries,
489
+ program_name_and_program_version: _.program_name_and_program_version?,
490
+ short_description: _.short_description?,
491
+ description: _.description?,
492
+ extra_information: _.extra_information?,
493
+ licence: _.licence?,
494
+ url1: _.url1?,
495
+ url2: _.url2?,
496
+ homepage: _.homepage?,
497
+ git_url: _.git_url?,
498
+ prefix: _.prefix?,
499
+ use_autogen: _.use_autogen?,
500
+ keep_extracted: _.keep_extracted?,
501
+ use_build_directory: _.use_build_directory?,
502
+ tags: _.tags?,
503
+ required_deps_on: _.required_deps_on?,
504
+ last_update: _.last_update?
505
+ }
506
+ return hash
507
+ end
508
+
509
+ # ========================================================================= #
510
+ # === do_assign_data_from_this_program
511
+ # ========================================================================= #
512
+ def do_assign_data_from_this_program(
513
+ this_program = @entry_name_of_the_program.text?
514
+ )
515
+ if ::RBT.is_this_program_included? this_program
516
+ mass_append(
517
+ return_hash_from_sanitize_cookbook(this_program)
518
+ )
519
+ else
520
+ e 'The program '+this_program+' is not included.'
521
+ end
522
+ end
523
+
524
+ require 'rbt/toplevel_methods/determine_appdir_prefix_from_this_input_by_guessing_the_program_version.rb'
525
+ # ========================================================================= #
526
+ # === create_buttons
527
+ # ========================================================================= #
528
+ def create_buttons
529
+ # ======================================================================= #
530
+ # === The traditional button aka prefix: t
531
+ # ======================================================================= #
532
+ @button_traditional = gtk_check_button('_Traditional')
533
+ @button_traditional.on_toggled { |widget|
534
+ this_program = compile_this_program?
535
+ hash = return_hash_from_sanitize_cookbook(this_program)
536
+ if widget.active?
537
+ hash[:prefix] = '/usr/'
538
+ else
539
+ hash[:prefix] =
540
+ RBT.determine_appdir_prefix_from_this_input_by_guessing_the_program_version(this_program)
541
+ end
542
+ mass_append(hash)
543
+ }
544
+ end
545
+
546
+ end; end; end; end
547
+
548
+ if __FILE__ == $PROGRAM_NAME
549
+ RBT::GUI::Gtk::RecipeMaker.run
550
+ end