module RBT::GUI::Gtk::CompileProgramModule
Constants
- HEIGHT
#¶ ↑
HEIGHT
¶ ↑#¶ ↑
- STATUS_BAR_CONTEXT_ID
#¶ ↑
STATUS_BAR_CONTEXT_ID
¶ ↑#¶ ↑
- TITLE
#¶ ↑
TITLE
¶ ↑#¶ ↑
- USE_THIS_FONT
#¶ ↑
USE_THIS_FONT
¶ ↑#¶ ↑
- WIDTH
#¶ ↑
WIDTH
¶ ↑#¶ ↑
Public Class Methods
new( commandline_arguments = ARGV, text_for_the_compile_button = 'Compile', run_already = true )
click to toggle source
#¶ ↑
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.
#¶ ↑
Calls superclass method
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 62 def initialize( commandline_arguments = ARGV, text_for_the_compile_button = 'Compile', run_already = true ) super(:vertical) reset set_commandline_arguments( commandline_arguments ) set_text_on_the_compile_button( text_for_the_compile_button ) run if run_already end
run( i = ARGV )
click to toggle source
#¶ ↑
RBT::GUI::Gtk::CompileProgramModule.run
¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 489 def self.run( i = ARGV ) require 'gtk_paradise/run' _ = ::RBT::GUI::Gtk::CompileProgram.new(i) r = ::Gtk.run r << _ r.add_shortcut(1, 'focus_on_entry', :alt) r.add_shortcut(:a, 'focus_on_entry', :alt) r.modify_background(:normal, :white) r.automatic_title r.determine_the_size_from_the_child_widget r.top_left_then_run end
Public Instance Methods
add_msg(i = 'Starting')
click to toggle source
available_programs?()
click to toggle source
border_size?()
click to toggle source
compile_program_in_thread(i)
click to toggle source
#¶ ↑
compile_program_in_thread
¶ ↑
The argument to this method should be the name of the program, such as “htop”.
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 585 def compile_program_in_thread(i) @thread = Thread.new { @compile = RBT::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_skeleton()
click to toggle source
#¶ ↑
connect_skeleton
(connect tag)¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 219 def connect_skeleton abort_on_exception hbox_containing_the_label_compile_and_the_entry_compile_this_program = gtk_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 = gtk_vbox 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) maximal(@frame, 8) end
create_gtk_combo_box()
click to toggle source
#¶ ↑
create_gtk_combo_box
¶ ↑
It appears as if the gtk-combo-box is currently (March 2021) not in use.
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 355 def create_gtk_combo_box @combo_box_entry = gtk_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_gtk_entries_and_completions()
click to toggle source
#¶ ↑
create_gtk_entries_and_completions
¶ ↑
Completion for our EntryCompletion.
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 389 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 = gtk_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_list_store(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_skeleton()
click to toggle source
#¶ ↑
create_skeleton
(create tag)¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 338 def create_skeleton create_the_main_vbox_in_the_middle create_gtk_entries_and_completions create_the_labels create_the_statusbar create_the_main_gtk_frame create_the_buttons create_the_checkboxes create_the_widget_holding_information_about_a_particular_program create_gtk_combo_box end
create_the_checkboxes()
click to toggle source
#¶ ↑
create_the_checkboxes
¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 186 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: /usr/' @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_labels()
click to toggle source
#¶ ↑
create_the_labels
¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 118 def create_the_labels # ======================================================================= # # === @label_compile # ======================================================================= # @label_compile = label( 'Input which program you wish to compile → ' ) @label_compile.make_selectable @label_compile.set_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_gtk_frame()
click to toggle source
#¶ ↑
create_the_main_gtk_frame
¶ ↑
This is the outer gtk-frame.
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 156 def create_the_main_gtk_frame @frame = gtk_frame @frame.set_border_width(15) @frame.label_widget = gtk_label.set_markup( %Q(<span size="large" weight="bold" foreground="#183503"> RBT Version: #{RBT::VERSION} </span>), true ) end
create_the_main_vbox_in_the_middle()
click to toggle source
create_the_statusbar()
click to toggle source
#¶ ↑
create_the_statusbar
¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 143 def create_the_statusbar @status_bar = gtk_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_program()
click to toggle source
#¶ ↑
create_the_widget_holding_information_about_a_particular_program
(middle tag)¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 268 def create_the_widget_holding_information_about_a_particular_program @widget_holding_information_about_a_particular_program = gtk_hbox button = gtk_button("_Show information about\nthis program →") button.bblack2 button.modify_background(:active, :coral) button.modify_background(:normal, :cornsilk) button.modify_background(:prelight, :aliceblue) button.fancy_tooltips = ' 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 = gtk_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 = gtk_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 ) @text_buffer_showing_information_about_the_given_program = gtk_text_buffer @source_view_showing_information_about_the_given_program = gtk_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 = gtk_scrolled_window( @source_view_showing_information_about_the_given_program ) @widget_holding_information_about_a_particular_program.maximal( @scrolled_window ) end
do_compile_program( _ = @entry_compile_this_program.text? )
click to toggle source
#¶ ↑
do_compile_program
¶ ↑
Use this is you want to compile something.
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 555 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_pid()
click to toggle source
entry_for_compiling_this_program?()
click to toggle source
focus_on_entry()
click to toggle source
padding?()
click to toggle source
reset()
click to toggle source
#¶ ↑
reset (reset tag)¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 81 def reset reset_the_internal_variables infer_the_namespace # ======================================================================= # # === @configuration # ======================================================================= # @configuration = [true, __dir__, namespace?] title_width_height_font(TITLE, WIDTH, HEIGHT, USE_THIS_FONT) # ======================================================================= # # === @active_counter # ======================================================================= # @active_counter = 0 # will denote which program is active # ======================================================================= # # === @compile # ======================================================================= # @compile = nil use_gtk_paradise_project_css_file infer_the_size_automatically end
run()
click to toggle source
set_show_more_information_about_this_program(i)
click to toggle source
show_information_about_the_given_program( i = @entry_show_information_about_this_program.text? )
click to toggle source
#¶ ↑
show_information_about_the_given_program
¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 515 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
text_buffer_showing_information_about_the_given_program?()
click to toggle source
#¶ ↑
text_buffer_showing_information_about_the_given_program?¶ ↑
#¶ ↑
# File lib/rbt/gui/shared_code/compile_program/compile_program_module.rb, line 331 def text_buffer_showing_information_about_the_given_program? @text_buffer_showing_information_about_the_given_program end
Also aliased as: text_buffer?