Class: Roebe::GUI::UniversalWidgets::CodeGenerator

Inherits:
Base
  • Object
show all
Includes:
UniversalWidgets::BaseModule
Defined in:
lib/roebe/gui/universal_widgets/code_generator/code_generator.rb

Overview

Roebe::GUI::UniversalWidgets::CodeGenerator

Constant Summary collapse

TITLE =
#

TITLE

#
'Code Generator'
WIDTH =
#

WIDTH

#
'95% or minimum 1280px'
HEIGHT =
#

HEIGHT

#
'40% or minimum 300px'
USE_THIS_FONT =
#

USE_THIS_FONT

#
:hack_20
LARGER_FONT =
#

LARGER_FONT

#
:hack_24
SMALLER_FONT =
#

SMALLER_FONT

#
:hack_28
TODO_DIRECTORY =
#

TODO_DIRECTORY

#
'/home/x/data/personal/todo/'

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(commandline_arguments = nil, run_already = true) ⇒ CodeGenerator

#

initialize

#


71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 71

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  super(:vertical) if use_gtk3?
  determine_the_GUI_to_be_used(commandline_arguments) # This must come first, even before reset().
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

Roebe::GUI::UniversalWidgets::CodeGenerator[]

#


349
350
351
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 349

def self.[](i = ARGV)
  new(i)
end

.run(i = ARGV) ⇒ Object

#

Roebe::GUI::Gtk::CodeGenerator.run

#


334
335
336
337
338
339
340
341
342
343
344
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 334

def self.run(
    i = ARGV
  )
  require 'gtk_paradise/run'
  _ = ::Roebe::GUI::Gtk::CodeGenerator.new(i)
  r = ::Gtk.run
  r << _
  r.automatic_size
  r.automatic_title
  r.top_left_then_run
end

Instance Method Details

#border_size?Boolean

#

border_size?

#

Returns:

  • (Boolean)


259
260
261
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 259

def border_size?
  2
end

#connect_the_skeletonObject

#

connect_the_skeleton (connect tag)

#


280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 280

def connect_the_skeleton
  abort_on_exception

  first_two_widgets = draggable_horizontal_bar(
    @widget_ruby_head,
    @widget_ruby_use_config
  )
  first_two_widgets.position = 70
  third_widget = draggable_horizontal_bar(
    first_two_widgets,
    @widget_ruby_end
  )
  third_widget.position = 160


  window = create_window_or_runner(third_widget, width?, height?, title?)

  properly_prepare_this_window(window,
    {
      title:       title?,
      font:        font?,
      width:       width?,
      height:      height?,
      padding:     padding?,
      border_size: border_size?
    }
  )
  window.show_all
  run_main
end

#create_the_buttonsObject

#

create_the_buttons (buttons tag)

All buttons are aggregated here.

#


119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 119

def create_the_buttons
  # ======================================================================= #
  # === The ruby-head method
  # ======================================================================= #
  @button_generate_ruby_head = button('Generate ruby head'.ljust(20), self) {
    :do_generate_ruby_head
  }
  @button_generate_ruby_head.on_hover(:lightblue)
  @button_generate_ruby_head.hint = 'Click this button '\
    'in order to generate the <b>typical header for a .rb file</b>.'

  # ======================================================================= #
  # === The use-config method
  # ======================================================================= #
  @button_generate_ruby_use_config = button('Generate ruby-gtk use config method', self) {
    :do_generate_ruby_use_config
  }
  @button_generate_ruby_use_config.on_hover(:lightblue)
  @button_generate_ruby_use_config.hint = 'Click this button '\
    'in order to generate the <b>typical header for a .rb file</b>.'

  # ======================================================================= #
  # === The use-config method
  # ======================================================================= #
  @button_generate_ruby_end = button('Generate ruby end statement', self) {
    :do_generate_ruby_end_statement
  }
  @button_generate_ruby_end.on_hover(:lightblue)
  @button_generate_ruby_end.hint = 'Click this button in order to '\
                                   'generate the <b>typical end of '\
                                   'a .rb file</b>.'
end

#create_the_skeletonObject Also known as: create_skeleton

#

create_skeleton (create tag, skeleton tag)

#


155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 155

def create_the_skeleton
  create_the_buttons
  @text_view1 = create_text_view
  @text_view1.bblack2
  @text_view2 = create_text_view
  @text_view2.bblack2
  @text_view3 = create_text_view
  @text_view3.bblack2

  # ======================================================================= #
  # === @widget_ruby_head
  # ======================================================================= #
  @widget_ruby_head = create_hbox
  @widget_ruby_head.pad2px
  @widget_ruby_head.minimal(bold_label('1'), 2)
  @widget_ruby_head.minimal(@button_generate_ruby_head, 2)
  scrolled_window1 = create_scrolled_window(@text_view1)
  scrolled_window1.set_size_request(450, 100)
  scrolled_window1.set_font(:hack_16)
  scrolled_window1.bblack1
  @widget_ruby_head.maximal(scrolled_window1)

  # ======================================================================= #
  # === @widget_ruby_use_config
  # ======================================================================= #
  @widget_ruby_use_config = create_hbox
  @widget_ruby_use_config.pad2px
  @widget_ruby_use_config.minimal(bold_label('2'), 2)
  @widget_ruby_use_config.minimal(@button_generate_ruby_use_config, 2)
  scrolled_window2 = create_scrolled_window(@text_view2)
  scrolled_window2.set_size_request(450, 100)
  scrolled_window2.set_font(:hack_16)
  scrolled_window2.bblack1
  @widget_ruby_use_config.maximal(scrolled_window2)

  # ======================================================================= #
  # === @widget_ruby_end
  # ======================================================================= #
  @widget_ruby_end = create_hbox
  @widget_ruby_end.pad2px
  @widget_ruby_end.minimal(bold_label('3'), 2)
  @widget_ruby_end.minimal(@button_generate_ruby_end, 2)
  scrolled_window3 = create_scrolled_window(@text_view3)
  scrolled_window3.set_size_request(450, 100)
  scrolled_window3.set_font(:hack_16)
  scrolled_window3.bblack1
  @widget_ruby_end.maximal(scrolled_window3)
end

#create_the_text_bufferObject

#

create_the_text_buffer

#


266
267
268
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 266

def create_the_text_buffer
  @text_buffer = Gtk::BaseModuleBox.new.create_text_buffer if use_gtk3?
end

#determine_the_content_for_the_main_string_in_useObject

#

determine_the_content_for_the_main_string_in_use

The @text variable will contain the content of the scrolled-window.

#


216
217
218
219
220
221
222
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 216

def determine_the_content_for_the_main_string_in_use
  @text = ''.dup
  @aliases.each_pair {|key, value|
    @text << "#{key}: #{value}\n"
  }
  @text.strip!
end

#do_generate_ruby_end_statementObject

#

do_generate_ruby_end_statement

#


110
111
112
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 110

def do_generate_ruby_end_statement
  @text_view3.set_text(Roebe.ruby_main_string.to_s)
end

#do_generate_ruby_head(use_this_text_view = @text_view1) ⇒ Object

#

do_generate_ruby_head

#


227
228
229
230
231
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 227

def do_generate_ruby_head(use_this_text_view = @text_view1)
  _ = Roebe.return_ruby_header
  use_this_text_view.set_text(_)
  XorgBuffer.set(_)
end

#do_generate_ruby_use_config(use_this_text_view = @text_view2) ⇒ Object

#

do_generate_ruby_use_config

#


236
237
238
239
240
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 236

def do_generate_ruby_use_config(use_this_text_view = @text_view2)
  _ = Roebe.return_ruby_use_config_file
  use_this_text_view.set_text(_)
  XorgBuffer.set(_)
end

#do_style_all_buttons_uniformlyObject

#

do_style_all_buttons_uniformly

#


314
315
316
317
318
319
320
321
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 314

def do_style_all_buttons_uniformly
  return_all_buttons.each {|this_button|
    this_button.clear_background
    this_button.bblack1
    this_button.css_class('darkblue')
    this_button.set_size_request(520, 60)
  }
end

#do_update_the_content_for_the_scrolled_windowObject

#

do_update_the_content_for_the_scrolled_window (clicked tag)

#


207
208
209
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 207

def do_update_the_content_for_the_scrolled_window
  @sourcecode_widget.set_text(@text)
end

#favicon?Boolean

#

favicon?

#

Returns:

  • (Boolean)


245
246
247
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 245

def favicon?
  :tabble
end

#main_font?Boolean

#

main_font?

#

Returns:

  • (Boolean)


273
274
275
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 273

def main_font?
  :hack_15
end

#padding?Boolean

#

padding?

#

Returns:

  • (Boolean)


252
253
254
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 252

def padding?
  0
end

#resetObject

#

reset (reset tag)

#


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 87

def reset
  super() if respond_to?(:super)
  reset_the_base_module
  reset_the_internal_variables
  infer_the_namespace
  # ======================================================================= #
  # === @configuration
  # ======================================================================= #
  @configuration = [true, __dir__, namespace?]
  # ======================================================================= #
  # === Set the title, width, height and the font in use.
  # ======================================================================= #
  title_width_height_font(TITLE, WIDTH, HEIGHT, USE_THIS_FONT)
  determine_the_aliases_in_use
  if use_gtk3?
    use_gtk_paradise_project_css_file
  end  
  infer_the_size_automatically
end

#runObject

#

run (run tag)

#


326
327
328
329
# File 'lib/roebe/gui/universal_widgets/code_generator/code_generator.rb', line 326

def run
  do_style_all_buttons_uniformly
  run_super
end