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.
- checksums.yaml +4 -4
- data/README.md +31 -55
- data/doc/todo/numbered_todo_entries.md +16 -19
- data/lib/rbt/cookbooks/sanitize_cookbook/sanitize_cookbook.rb +3 -1
- data/lib/rbt/gui/gtk2/recipe_maker.rb +24 -302
- data/lib/rbt/gui/gtk3/notebook/notebook.rb +14 -12
- data/lib/rbt/gui/gtk3/recipe_maker/recipe_maker.rb +550 -0
- data/lib/rbt/toplevel_methods/determine_appdir_prefix_from_this_input.rb +2 -1
- data/lib/rbt/toplevel_methods/determine_appdir_prefix_from_this_input_by_guessing_the_program_version.rb +31 -0
- data/lib/rbt/toplevel_methods/return_version_of_this_program.rb +4 -1
- data/lib/rbt/version/version.rb +1 -1
- data/lib/rbt/yaml/chained_programs/chained_programs.yml +41 -41
- data/lib/rbt/yaml/cookbooks/adwaitaicontheme.yml +2 -2
- data/lib/rbt/yaml/cookbooks/gnomebackgrounds.yml +2 -2
- data/lib/rbt/yaml/cookbooks/gnomeboxes.yml +2 -2
- data/lib/rbt/yaml/cookbooks/libtorrentrasterbar.yml +6 -247
- data/lib/rbt/yaml/cookbooks/libvirt.yml +2 -2
- data/lib/rbt/yaml/cookbooks/php.yml +1 -1
- data/lib/rbt/yaml/expanded_cookbooks/adwaitaicontheme.yml +8 -8
- data/lib/rbt/yaml/expanded_cookbooks/gnomebackgrounds.yml +8 -8
- data/lib/rbt/yaml/expanded_cookbooks/gnomeboxes.yml +8 -8
- data/lib/rbt/yaml/expanded_cookbooks/libvirt.yml +8 -8
- data/lib/rbt/yaml/expanded_cookbooks/php.yml +1 -1
- data/lib/rbt/yaml/programs_version/available_programs_versions.md +5 -5
- data/lib/rbt/yaml/programs_version/programs_version.yml +4 -3
- data/lib/rbt/yaml/these_programs_were_updated.yml +4 -0
- 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
|
-
|
269
|
-
vbox.minimal(
|
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
|