Class: RBT::GUI::UniversalWidgets::CompileProgram

Inherits:
Base show all
Includes:
UniversalWidgets::BaseModule
Defined in:
lib/rbt/gui/universal_widgets/compile_program/compile_program.rb

Overview

RBT::GUI::UniversalWidgets::CompileProgram

Constant Summary collapse

USE_THESE_CSS_RULES =
#

USE_THESE_CSS_RULES

#
'
'
STATUS_BAR_CONTEXT_ID =
#

STATUS_BAR_CONTEXT_ID

#
'CompileProgram'
TITLE =
#

TITLE

#
'Compile a program'
WIDTH =
#

WIDTH

#
'85% or minimum 1480px'
HEIGHT =
#

HEIGHT

#
'46% or minimum 520px'
USE_THIS_FONT =
#

USE_THIS_FONT

#
:dejavu_condensed_20
LARGER_FONT =
#

LARGER_FONT

#
:dejavu_condensed_22
SMALLER_FONT =
#

SMALLER_FONT

#
:dejavu_condensed_18

Constants inherited from LeanPrototype

LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#cat, #cd_back_to_the_current_working_directory, #consider_reporting_how_many_programs_are_registered, #cookbook_files?, #copy_recursively, #delete_code_of_conduct?, #determine_appdir_prefix_from_this_input, #directory_validation?, #do_not_show_names, #fast_return_file_size_of_this_program, #file_last_symlinked_program?, #file_programs_version_url, #gem_version, #is_a_64bit_system?, #is_ccache_available?, #is_porg_available?, #is_this_binary_registered?, #is_this_program_included?, #make_command?, #make_install_command?, #new_cookbook_instance_for, #program_exists?, #publish_list_of_all_programs_version, #rcp, registered_binaries?, #remove_symlink, #rename_kde_konsole_tab, #repackage, #report_n_programs, #report_working_directory, #return_compile_time_statistics, #return_n_random_characters, #return_version_of_this_program, #run_make_then_make_install, #sanitize_url1_entry, #set_source_directory, #show_overview_over_available_utility_scripts, #symlink_all_files_from_this_directory_to_that_directory, #system_tags?, #upload_list_of_all_programs_version, #use_yaml_database_for_tags?, #warn_and_exit, #wget

Methods inherited from LeanPrototype

#a_or_an?, #abbreviations?, #absolute_path, #action, #add_to_the_commandline_arguments, #all_binaries?, #all_files_from, #all_libraries?, #allowed_cookbook_entries?, #appdir_location_of?, #append_onto_the_internal_hash, #append_what_into, #archive_type_of?, #be_quiet?, #be_verbose?, #begins_with_a_comment?, #capitalize_first_alphabetical_character, #cd_to_the_log_directory, #cd_to_the_temp_directory, #change_directory, #change_permission, #cheering_person?, #chmod, #chop_off_archive, #clear_commandline_options, #cliner, #coloured_and_padded_e, #coloured_and_padded_esystem, #coloured_esystem, #colourize_directory_for_system_results, #colourize_this_error, #colourize_this_file_path, #colourize_this_warning, #commandline_arguments?, #commandline_arguments_without_hyphens?, #comment, #convert_dd_mm_yyyy_to_its_long_variant, #convert_env_variable, #copy_directory, #copy_files, #cpr, #create_directory, #current_hour?, #dd_mmm_yyy, #debug, #debug?, #directory_expanded_cookbooks?, #disable_colours, #display_md5sum?, #do_not_debug, #does_the_cookbook_include_this_program?, #does_this_expanded_cookbook_file_exist_for_this_program?, #does_this_file_exist?, #does_this_file_exist_and_is_it_a_file?, #e, #eblue, #ecomment, #ecrimson, #edir, #editor?, #efancy, #eimp, #enable_colours, #enable_debug, #ensure_main_encoding_for, #eparse, #esystem, #esystem_gold, #etomato, #ewarn, #exit_program, #expanded_cookbooks_directory_exists?, #extract_this_archive, #extract_to?, #file_compiled_programs?, #file_dirname_retaining_trailing_slash, #file_predefined_installation_instructions?, #file_specification_of_registered_cookbook_entries, #find_cookbook_alias_for, #find_this_yaml_file, #first_argument?, #first_non_hyphen_argument?, #get_all_directories_from, #get_all_files_from, #get_all_programs, #get_date, #get_extended_date, #get_files_and_directories_from, #go_to_base_dir, #home_dir?, #host_system?, #infer_the_namespace, #internal_hash?, #internal_hash_set_commandline_arguments, #is_an_archive?, #is_directory?, #is_file?, #is_github_url?, #is_make_available?, #is_on_gobolinux?, #is_on_windows?, #is_roebe?, #is_superuser?, #is_symlink?, #is_this_a_header?, #is_this_a_library?, #is_this_program_included?, #iso_encoding?, #load_dataset_from_this_expanded_cookbook, #load_yaml, #load_yaml_file_from_the_cookbook_directory_for_this_program, #log_directory?, #main_encoding?, #meson_build_file_exists?, #months?, #move_file, #n_programs_are_available?, #n_programs_available?, #namespace?, #no_directory_exists_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #packages_directory?, #path_to_this_expanded_cookbooks_dataset, #pkgconfig_directory?, #populate_the_internal_hash_with_default_values, #predefined_installation_instructions?, #prepend_this_commandline_argument, #program_version_of?, #project_base_directory?, #project_yaml_directory?, #query_path?, #rarrow?, #read_file, #read_file_in_default_encoding, #read_file_with_default_encoding, #readlines, #readlines_with_proper_encoding, #register_sigint, #registered_cookbook_entries?, #remove, #remove_archive_from_the_end, #remove_comments_from_each_line, #remove_directory, #remove_double_slashes, #remove_file, #remove_newlines, #remove_parens, #remove_symlink, #remove_this_commandline_argument, #remove_this_entry_from_the_commandline_arguments, #remove_trailing_ANSII_escape_code, #remove_unnecessary_data_from_url, #rename, #report_pwd, #require_the_rbt_aliases, #reset_the_internal_hash, #return_all_archives_from_this_directory, #return_appdir_prefix, #return_commandline_arguments_with_leading_hyphens, #return_current_hour_minutes_second, #return_date, #return_day_of_the_month_based_on_utc, #return_full_time, #return_hours_minutes_seconds_based_on_utc, #return_location_to_this_programs_yaml_file, #return_month_based_on_this_number, #return_month_based_on_utc, #return_opnn, #return_program_information, #return_program_name_for_gobolinux_systems, #return_pwd, #return_unicode_warning_symbol_or_empty_string, #return_utc, #return_utc_time_in_a_format_similar_to_slackware, #return_weekday_based_on_utc, #return_year_based_on_utc, #rev, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_opn, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #silently_create_this_directory_if_it_does_not_yet_exist, #simp, #source_base_directory?, #ssym, #stderr, #store_into_this_directory?, #string_right_arrow?, #swarn, #symlink, #sysbin_directory?, #sysetc_directory?, #sysinclude_directory?, #syslib_directory?, #sysshare_directory?, #system_directory?, #temp_directory?, #to_bool, #to_camelcase, #to_iso_encoding, #to_unicode, #today?, #touch, #try_to_require_beautiful_url, #try_to_require_the_environment_information_gem, #try_to_require_the_extracter_gem, #try_to_require_the_open_gem, #try_to_require_the_xorg_buffer, #try_to_require_wget, #try_to_return_a_special_compile_component, #unicode_cliner, #unicode_middle_cliner, #use_colours=, #use_colours?, #use_opn=, #use_opn?, #utf_encoding?, #verbose_truth, #word_wrap, #write_what_into, #write_what_into_via_unicode, #yes_or_no

Constructor Details

#initialize(commandline_arguments = ARGV, text_for_the_compile_button = 'Compile', run_already = true) ⇒ CompileProgram

#

initialize

The second argument is the text which can be shown on the compile-button. The default text is ‘Compile’. The reason why this option exists is because we may want to have this widget ‘Install’ rather than ‘Compile’ sometimes.

#


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 83

def initialize(
    commandline_arguments       = ARGV,
    text_for_the_compile_button = 'Compile',
    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
  )
  on_delete_event_quit_the_application
  set_text_on_the_compile_button(
    text_for_the_compile_button
  )
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::GUI::UniversalWidgets::CompileProgram[]

#


746
747
748
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 746

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

.run(i = ARGV) ⇒ Object

#

RBT::GUI::Gtk::CompileProgram.run

#


727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 727

def self.run(
    i = ARGV
  )
  require 'gtk_paradise/run'
  _ = ::RBT::GUI::Gtk::CompileProgram.new(i)
  r = ::Gtk.run
  _.set_parent_widget(r) # Must come before we enable the key-combinations.
  r << _
  r.add_shortcut(1,  'focus_on_entry', :alt)
  r.add_shortcut(:a, 'focus_on_entry', :alt)
  r.automatic_size_then_automatic_title
  r.enable_quick_exit
  r.set_background :white
  r.top_left_then_run
end

Instance Method Details

#add_msg(i = 'Starting') ⇒ Object

#

add_msg

Add a message to the statusbar.

#


354
355
356
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 354

def add_msg(i = 'Starting')
  @status_bar.push(@status_bar_context_id, i)
end

#available_programs?Boolean

#

available_programs?

#

Returns:

  • (Boolean)


197
198
199
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 197

def available_programs?
  ::RBT.available_programs?
end

#border_size?Boolean

#

border_size?

#

Returns:

  • (Boolean)


174
175
176
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 174

def border_size?
  2
end

#compile_program_in_thread(i) ⇒ Object

#

compile_program_in_thread

The argument to this method should be the name of the program, such as “htop”.

#


328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 328

def compile_program_in_thread(i)
  @thread = Thread.new {
    @compile = RBT::Action::Installer.new(i, :do_not_run_yet)
    if ::RBT.is_this_program_included?(i)
      set_show_more_information_about_this_program(i)
    end
    if @button_traditional.active?
      _ = :traditional
    elsif @button_non_traditional.active?
      _ = :non_traditional
    end
    @compile.prefix = _
    @compile.run
    add_msg 'Finished compiling the program '\
            'called `'+i.to_s+'`! End-Time: '+
            return_current_time
  }
 # @thread.join
 @thread = nil
end

#connect_the_skeletonObject

#

connect_the_skeleton (connect tag)

#


502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 502

def connect_the_skeleton
  abort_on_exception

  outer_vbox = create_vbox # A new vbox.

  hbox_containing_the_label_compile_and_the_entry_compile_this_program = create_hbox
  hbox_containing_the_label_compile_and_the_entry_compile_this_program.minimal(
    @label_compile, 2
  )
  hbox_containing_the_label_compile_and_the_entry_compile_this_program.maximal(
    @entry_compile_this_program, 2
  )
  hbox_containing_the_label_compile_and_the_entry_compile_this_program.minimal(
    @button_compile, 2
  )

  outer_vbox.add(
    hbox_containing_the_label_compile_and_the_entry_compile_this_program
  )
  # ======================================================================= #
  # Build up the vBox that is in the middle.
  # ======================================================================= #
  vbox_middle = vbox
  vbox_middle.minimal(@button_check)
  vbox_middle.minimal(@button_traditional)
  vbox_middle.minimal(@button_non_traditional)
  # ======================================================================= #
  # The arguments to .attach_defaults() are:
  #
  #   left_attach, right_attach, top_attach, bottom_attach
  #
  # ======================================================================= #
  @main_vbox_in_the_middle.minimal(vbox_middle)

  outer_vbox.maximal(@main_vbox_in_the_middle, 4)
  hbox1 = hbox
  hbox1.minimal(@button_kill_the_main_pid)
  outer_vbox.minimal(hbox1, 4)

  @main_vbox_in_the_middle.maximal(
    @widget_holding_information_about_a_particular_program, 1
  )

  outer_vbox.minimal(@status_bar)
  @frame.add(outer_vbox)

  window = create_window_or_runner
  window << @frame

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

#create_gtk_entries_and_completionsObject

#

create_gtk_entries_and_completions

Completion for our EntryCompletion.

#


606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 606

def create_gtk_entries_and_completions
  # ======================================================================= #
  # === @entry_compile_this_program
  #
  # This is the entry that will keep track of the programs that can
  # be compiled.
  # ======================================================================= #
  @entry_compile_this_program = create_entry
  @entry_compile_this_program.bblack1
  @entry_compile_this_program.yellow_background

  completion = gtk_entry_completion
  @entry_compile_this_program.completion = completion

  @list_store = ::Gtk::ListStore.new(String)
  available_programs?.each { |word|
    iter = @list_store.append
    iter[0] = word
  }
  @entry_compile_this_program.on_key_press_event { |widget, event|
    do_compile_the_program if ::Gdk::Keyval.to_name(event.keyval) == 'Return'
  }

  completion.model = @list_store
  completion.text_column = 0
  @entry_compile_this_program.set_max_length(80)
  @entry_compile_this_program.set_text('')
  @entry_compile_this_program.do_focus
  @entry_compile_this_program.align_into_the_middle
  @entry_compile_this_program.enable_scroll_events
  @entry_compile_this_program.signal_connect(:event) { |widget, event|
    case event.event_type.name
    when 'GDK_KEY_PRESS' # on-key-press events
      if enter_key?(event)
        do_compile_this_program(
          @entry_compile_this_program.text?
        )
      end
    else
      # =================================================================== #
      # === Scroll up event
      # =================================================================== #
      if scroll_up?(event)
        unless @active_counter < 1
          @active_counter -= 1
          @combo_box_entry.active = @active_counter
        end
      # =================================================================== #
      # === Scroll down event
      # =================================================================== #
      elsif scroll_down?(event)
        unless @active_counter >= available_programs?.size 
          @active_counter += 1
          @combo_box_entry.active = @active_counter
        end
      end
    end
  }
end

#create_the_buttonsObject

#

create_the_buttons (buttons tag, button tag)

#


361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 361

def create_the_buttons
  # ======================================================================= #
  # === @button_kill_the_main_pid
  # ======================================================================= #
  @button_kill_the_main_pid = button(
    '_Stop the current compilation run', self, :use_mnemonics
  ) {
    :do_kill_the_main_pid
  }
  @button_kill_the_main_pid.clear_background
  @button_kill_the_main_pid.bblack1
  @button_kill_the_main_pid.set_size_request(120, 30)
  @button_kill_the_main_pid.on_hover(:lightblue)
  # ======================================================================= #
  # === @button_compile
  #
  # Add the compile-button next.
  # ======================================================================= #
  @button_compile = button("_#{@text_on_the_compile_button}")
  @button_compile.on_clicked { do_compile_program }
  @button_compile.modify_background(:active,   :coral)
  @button_compile.modify_background(:normal,   :cornsilk)
  @button_compile.modify_background(:prelight, :aliceblue)
  @button_compile.bblack2
  @button_compile.hint =
    'Compile the given program by <b>clicking on this button</b>.'
end

#create_the_checkboxesObject

#

create_the_checkboxes

#


223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 223

def create_the_checkboxes
  @button_check           = check_button('Include Dependencies', :do_not_underline)
  @button_check.hint = 'Check this button if you want to compile '\
    'dependencies as well. This may lead to problems, though, so '\
    'it is almost always better to compile single programs, as-is.'
  @button_traditional     = check_button('traditional')
  @button_traditional.hint =
    'This will use the following target prefix: <b>/usr/</b>' 
  @button_non_traditional = check_button('non-traditional')
  @button_non_traditional.hint = 'This will use the app-dir '\
    'prefix for the program that is to be compiled.'
  # ======================================================================= #
  # By default, the traditional button is enabled.
  # ======================================================================= #
  @button_traditional.set_active(true)
  @button_traditional.on_clicked {
    if @button_traditional.active?
      @button_non_traditional.is_inactive
    else
      @button_non_traditional.is_active
    end
  }
  @button_non_traditional.on_clicked {
    if @button_non_traditional.active?
      @button_traditional.is_inactive
    else
      @button_traditional.is_active
    end
  }
end

#create_the_combo_boxObject

#

create_the_combo_box

It appears as if the gtk-combo-box is currently (March 2021) not in use.

#


572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 572

def create_the_combo_box
  @combo_box_entry = create_combo_box_entry
  available_programs?.each { |val|
    @combo_box_entry.append_text(val)
  }
  @combo_box_entry.add_tearoffs = true
  @combo_box_entry.active = 0
  # @combo_box_entry.on_changed {
  #   # ===================================================================== #
  #   # Whenever the main entry in the combo-box is changed, we will
  #   # also update other parts of this widget.
  #   # ===================================================================== #
  #   @entry_compile_this_program.set_text(
  #     @combo_box_entry.active_text.to_s
  #   )
  #   @entry_show_information_about_this_program.set_text(
  #     @combo_box_entry.active_text.to_s
  #   )
  #   show_information_about_the_given_program # And update the view on the bottom right as well.
  # }
end

#create_the_labelsObject

#

create_the_labels

#


683
684
685
686
687
688
689
690
691
692
693
694
695
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 683

def create_the_labels
  # ======================================================================= #
  # === @label_compile
  # ======================================================================= #
  @label_compile = create_label(
    'Input the program you wish to compile there → '
  )
  @label_compile.make_selectable
  @label_compile.use_this_font = :hack_18
  @label_compile.hint =
    'Type <b>the name of the program</b> that you '\
    '<b>wish to compile</b> here.'
end

#create_the_main_frameObject

#

create_the_main_frame (frame tag)

This is the outer gtk-frame.

#


465
466
467
468
469
470
471
472
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 465

def create_the_main_frame
  @frame = create_frame
  @frame.set_border_width(15)
  @frame.label_widget = create_label.set_markup(
    %Q(<span size="large" weight="bold" foreground="#183503"> RBT Version: #{RBT::VERSION} </span>), use_underline: true
  )
  @frame.label_widget.make_selectable
end

#create_the_main_vbox_in_the_middleObject

#

create_the_main_vbox_in_the_middle

#


392
393
394
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 392

def create_the_main_vbox_in_the_middle
  @main_vbox_in_the_middle = create_vbox
end

#create_the_skeletonObject

#

create_the_skeleton (create tag, skeleton tag)

#


181
182
183
184
185
186
187
188
189
190
191
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 181

def create_the_skeleton
  create_the_labels
  create_the_main_vbox_in_the_middle
  create_gtk_entries_and_completions
  create_the_statusbar
  create_the_main_frame
  create_the_buttons
  create_the_checkboxes
  create_the_widget_holding_information_about_a_particular_program
  create_the_combo_box
end

#create_the_statusbarObject

#

create_the_statusbar

#


484
485
486
487
488
489
490
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 484

def create_the_statusbar
  @status_bar = create_statusbar { :has_resize_grip }
  if @status_bar.respond_to? :has_resize_grip=
    @status_bar.has_resize_grip = true
  end
  @status_bar_context_id = @status_bar.get_context_id(STATUS_BAR_CONTEXT_ID)
end

#create_the_widget_holding_information_about_a_particular_programObject

#

create_the_widget_holding_information_about_a_particular_program (middle tag)

#


406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 406

def create_the_widget_holding_information_about_a_particular_program
  @widget_holding_information_about_a_particular_program = create_hbox
  button = create_button("_Show information about\nthis program →")
  button.bblack2
  button.modify_background(:active, :coral)
  button.modify_background(:normal, :cornsilk)
  button.modify_background(:prelight, :aliceblue)
  button.hint = ' Clicking on this button will <b>display information '\
                ' about the program</b> on the right-hand side. '
  button.on_clicked {
    show_information_about_the_given_program
  }
  @widget_holding_information_about_a_particular_program.minimal(
    button, 3
  )
  # ======================================================================= #
  # === @entry_show_information_about_this_program
  #
  # Next add the user-input for the program the user wants to see
  # more information about.
  # ======================================================================= #
  @entry_show_information_about_this_program = create_entry
  @entry_show_information_about_this_program.bblack1
  @entry_show_information_about_this_program.center
  @entry_show_information_about_this_program.on_enter {
    show_information_about_the_given_program
  }
  vbox = create_vbox
  _ = image_accessories_text_editor_symbolic_symbolic
  _.hint = 'Input the name of the program that you want to see '\
           'more information shown about, below this image.'
  vbox.minimal(_, 2)
  vbox.maximal(@entry_show_information_about_this_program, 2)
  @widget_holding_information_about_a_particular_program.minimal(
    vbox, 3
  )
  # Next create, then add, the text-buffer and text-view.
  @text_buffer_showing_information_about_the_given_program = create_text_buffer
  @source_view_showing_information_about_the_given_program = create_text_view(
    @text_buffer_showing_information_about_the_given_program
  )
  @source_view_showing_information_about_the_given_program.css_class('blightgreen1')
  @source_view_showing_information_about_the_given_program.set_font(:noto_mono_18)
  @source_view_showing_information_about_the_given_program.set_size_request(
    400, 200
  )
  @scrolled_window = create_scrolled_window(
    @source_view_showing_information_about_the_given_program
  )
  @widget_holding_information_about_a_particular_program.maximal(
    @scrolled_window
  )
end

#deselect_the_first_labelObject

#

deselect_the_first_label

#


676
677
678
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 676

def deselect_the_first_label
  @label_compile.deselect
end

#deselect_the_frameObject

#

deselect_the_frame

#


477
478
479
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 477

def deselect_the_frame
  @frame.label_widget.deselect
end
#
#


714
715
716
717
718
719
720
721
722
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 714

def do_all_startup_related_actions
  Thread.new {
    sleep 0.0002
    deselect_the_frame
    deselect_the_first_label
    jump_into_the_main_textview
    jump_into_the_main_entry
  }
end

#do_compile_program(_ = @entry_compile_this_program.text?) ⇒ Object Also known as: compile_program, do_compile_the_program, do_compile_this_program

#

do_compile_program

Use this is you want to compile something.

#


305
306
307
308
309
310
311
312
313
314
315
316
317
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 305

def do_compile_program(
    _ = @entry_compile_this_program.text?
  )
  if _.empty?
    add_msg('Please supply a valid program name.')
  else
    e "Compiling #{_} now."
    add_msg 'Trying to compile the program '\
            'called `'+_+'` now. Start-Time: '+
            return_current_time
    compile_program_in_thread(_)
  end
end

#do_kill_the_main_pidObject

#

do_kill_the_main_pid

#


700
701
702
703
704
705
706
707
708
709
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 700

def do_kill_the_main_pid
  if @compile
    if is_on_roebe?
      e ::Colours.steelblue(
        'Now delegating towards the compile-object, to kill the main PID.'
        )
    end
    @compile.kill_the_main_pid
  end
end

#entry_for_compiling_this_program?Boolean

#

entry_for_compiling_this_program?

#

Returns:

  • (Boolean)


597
598
599
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 597

def entry_for_compiling_this_program?
  @entry_compile_this_program
end

#favicon?Boolean

#

favicon?

#

Returns:

  • (Boolean)


135
136
137
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 135

def favicon?
  :tabble
end

#focus_on_entryObject Also known as: jump_into_the_main_entry

#

focus_on_entry

#


216
217
218
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 216

def focus_on_entry
  @entry_compile_this_program.do_focus 
end

#handle_CSS_rulesObject

#

handle_CSS_rules (CSS tag)

#


149
150
151
152
153
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 149

def handle_CSS_rules
  use_gtk_paradise_project_css_file
  append_project_css_file
  more_CSS_then_apply_it(USE_THESE_CSS_RULES)
end

#jump_into_the_main_textviewObject

#

jump_into_the_main_textview

#


669
670
671
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 669

def jump_into_the_main_textview
  @source_view_showing_information_about_the_given_program.do_focus
end

#padding?Boolean

#

padding?

#

Returns:

  • (Boolean)


167
168
169
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 167

def padding?
  10
end

#resetObject

#

reset (reset tag)

#


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 104

def reset
  super() if respond_to?(:super)
  reset_the_shared_module # This can come early.
  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)
  if use_gtk3?
    handle_CSS_rules
  end
  infer_the_size_automatically
  # ======================================================================= #
  # === @active_counter
  # ======================================================================= #
  @active_counter = 0 # will denote which program is active
  # ======================================================================= #
  # === @compile
  # ======================================================================= #
  @compile = nil
end

#reset_the_shared_moduleObject

#

reset_the_shared_module

This method can be used for ruby-gtk3 and ruby-libui, among other toolkits.

#


161
162
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 161

def reset_the_shared_module
end

#runObject

#

run (run tag)

#


495
496
497
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 495

def run
  run_super
end

#set_show_more_information_about_this_program(i) ⇒ Object

#

set_show_more_information_about_this_program

#


257
258
259
260
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 257

def set_show_more_information_about_this_program(i)
  @entry_show_information_about_this_program.set_text(i)
  show_information_about_the_given_program
end

#set_text_on_the_compile_button(i) ⇒ Object

#

set_text_on_the_compile_button

#


204
205
206
207
208
209
210
211
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 204

def set_text_on_the_compile_button(
    i
  )
  if i.is_a? Array
    i = i.join(' ').strip
  end
  @text_on_the_compile_button = i
end

#show_information_about_the_given_program(i = @entry_show_information_about_this_program.text?) ⇒ Object

#

show_information_about_the_given_program

#


265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 265

def show_information_about_the_given_program(
    i = @entry_show_information_about_this_program.text?
  )
  if i.empty?
    do_popup(
      message:          'Please supply a name for a program.',
      over_this_widget: @entry_show_information_about_this_program
    )
  else
    # ===================================================================== #
    # Next, we will build up the string that will be displayed in the
    # text-buffer.
    # ===================================================================== #
    dataset = RBT.cookbook_dataset_for(i) # This will return a Hash.
    binaries = dataset[:binaries]
    _ = ''.dup
    _ << '<b>short description</b>: '+dataset[:short_description].to_s+N
    _ << '<b>description</b>: '+
          RBT.word_wrap(dataset[:description].to_s, 45).strip+N
    if binaries and !binaries.empty?
      _ << '<b>binaries installed by this program</b>: '+
            binaries.join(', ').strip+"\n"
    end
    _ << '<b>url1</b>: '+dataset[:url1].to_s+N
    _ << '<b>url2</b>: '+dataset[:url2].to_s+N
    _ << '<b>homepage</b>: '+dataset[:homepage].to_s+N
    _ << '<b>last_update</b>: '+dataset[:last_update].to_s+N
    # ===================================================================== #
    # Modify the text. The variable next is a Gtk::TextView instance.
    # ===================================================================== #
    text_buffer?.set_text(_)
    text_buffer?.do_markify
  end
end

#smaller_font?Boolean

#

smaller_font?

#

Returns:

  • (Boolean)


142
143
144
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 142

def smaller_font?
  SMALLER_FONT
end

#text_buffer_showing_information_about_the_given_program?Boolean Also known as: text_buffer?

#

text_buffer_showing_information_about_the_given_program?

#

Returns:

  • (Boolean)


399
400
401
# File 'lib/rbt/gui/universal_widgets/compile_program/compile_program.rb', line 399

def text_buffer_showing_information_about_the_given_program?
  @text_buffer_showing_information_about_the_given_program
end