class RBT::GUI::UniversalWidgets::InstalledPrograms

Constants

FEEDBACK_EXTENDED_INFORMATION
#

FEEDBACK_EXTENDED_INFORMATION

#
HEIGHT
#

HEIGHT

#
LARGER_FONT
#

LARGER_FONT

#
SMALLER_FONT
#

SMALLER_FONT

#
TITLE
#

TITLE

#
USE_DATABASE
#

USE_DATABASE

#
USE_THESE_CSS_RULES
#

USE_THESE_CSS_RULES

#
USE_THIS_FONT
#

USE_THIS_FONT

#
USE_THIS_MONOSPACED_FONT
#

USE_THIS_MONOSPACED_FONT

#
WIDTH
#

WIDTH

#

Public Class Methods

[](i = ARGV) click to toggle source
#

RBT::GUI::UniversalWidgets::InstalledPrograms[]

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 411
def self.[](i = ARGV)
  new(i)
end
new( commandline_arguments = ARGV, run_already = true ) click to toggle source
#

initialize

#
Calls superclass method RBT::LeanPrototype::new
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 94
def initialize(
    commandline_arguments       = ARGV,
    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
  run if run_already
end
run( i = ARGV ) click to toggle source
#

RBT::GUI::Gtk::InstalledPrograms.run

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 393
def self.run(
    i = ARGV
  )
  require 'gtk_paradise/run'
  _ = ::RBT::GUI::Gtk::InstalledPrograms.new(i)
  r = ::Gtk.run
  _.set_parent_widget(r) # Must come before we enable the key-combinations.
  r << _
  r.automatic_size_then_automatic_title
  r.enable_quick_exit
  r.set_background :white
  r.is_resizable # <- This line was added due to a possible prior .maximize action.
  r.top_left_then_run
end

Public Instance Methods

border_size?() click to toggle source
#

border_size?

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 266
def border_size?
  2
end
connect_the_skeleton() click to toggle source
#

connect_the_skeleton (connect tag)

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 338
def connect_the_skeleton
  abort_on_exception

  outer_vbox = create_vbox # A new vbox.
  mini_hbox = create_hbox
  mini_hbox.minimal(@button_update, 4)
  @v_box.add(@tree_view).add(mini_hbox)
  @scrolled_window.add_with_viewport(@v_box)
  outer_vbox.add(@scrolled_window)

  window = create_window_or_runner
  window << outer_vbox

  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_the_buttons() click to toggle source
#

create_the_buttons (button tag, buttons tag)

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 370
def create_the_buttons
  @button_update = create_button('_Update')
  @button_update.clear_background
  @button_update.bblack2
  @button_update.on_clicked {
    e 'Updating the listing now.'
    update_listing
  }
  @button_update.modify_background(:active,   :coral)
  @button_update.modify_background(:normal,   :mediumaquamarine)
  @button_update.modify_background(:prelight, :darkgreen) 
end
create_the_liststore() click to toggle source
#

create_the_liststore

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 323
def create_the_liststore
  @list_store = ::Gtk::ListStore.new(String, String, String)
  update_the_liststore
end
create_the_scrolled_window() click to toggle source
#

create_the_scrolled_window

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 210
def create_the_scrolled_window
  @scrolled_window = create_scrolled_window
  @scrolled_window.shadow_in
  @scrolled_window.policy = [:never, :automatic]
  @scrolled_window.set_size_request(800, 600)
end
create_the_skeleton() click to toggle source
#

create_the_skeleton (create tag, skeleton tag)

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 298
def create_the_skeleton
  create_the_vbox
  create_the_scrolled_window
  create_the_liststore
  create_the_treeview
  create_the_buttons
end
create_the_treeview() click to toggle source
#

create_the_treeview

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 273
def create_the_treeview
  @tree_view = create_tree_view(@list_store)
  @tree_view.do_use_clickable_headers
  @tree_view.use_these_headers('Program Name', 'Program Version')
  @tree_view.enable_drag_and_drop
  @tree_view.on_button_press_event { |widget, event|
    if    event.event_type == Gdk::EventType::BUTTON2_PRESS and event.button == 1 # event.event_type.name
    elsif event.event_type == :button_press # left click here.
      # =================================================================== #
      # If the user clicks on the left name, we will feedback
      # extended information, if a top-constant was set to true.
      # =================================================================== #
      if feedback_extended_information?
        if @tree_view and @tree_view.selection and @tree_view.selection.selected
          program_name = @tree_view.selection.selected[0]
          return_dataset(program_name).report
        end
      end
    end
  }
end
create_the_vbox() click to toggle source
#

create_the_vbox

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 331
def create_the_vbox
  @v_box = create_vbox
end
favicon?() click to toggle source
#

favicon?

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 147
def favicon?
  :tabble
end
feedback_extended_information?() click to toggle source
#

feedback_extended_information?

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 316
def feedback_extended_information?
  FEEDBACK_EXTENDED_INFORMATION
end
handle_CSS_rules() click to toggle source
#

handle_CSS_rules (CSS tag)

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 161
def handle_CSS_rules
  use_gtk_paradise_project_css_file
  append_project_css_file
  more_CSS_then_apply_it(USE_THESE_CSS_RULES)
end
padding?() click to toggle source
#

padding?

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 259
def padding?
  2
end
reset() click to toggle source
#

reset (reset tag)

#
Calls superclass method RBT::LeanPrototype#reset
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 111
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
  # ======================================================================= #
  # === @use_database
  # ======================================================================= #
  @use_database = USE_DATABASE
  # ======================================================================= #
  # === @array_lsmod_result
  # ======================================================================= #
  @array_lsmod_result = []
  # ======================================================================= #
  # === @renderer
  # ======================================================================= #
  @renderer = cell_renderer_text
  @renderer.editable = true
end
reset_the_shared_module() click to toggle source
#

reset_the_shared_module

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

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 173
def reset_the_shared_module
end
return_dataset(i) click to toggle source
#

return_dataset

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 179
def return_dataset(i)
  action(:SanitizeCookbook, i) { :fast }
end
run() click to toggle source
#

run (run tag)

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 309
def run
  run_super
end
Also aliased as: start_gui_application
sanitize_data() click to toggle source
#

sanitize_data

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 186
def sanitize_data
  _ = ''
  if @use_database
    x = StdDatabases.new
    x.set_handle
    x.sqlite3_select_all
    _ = x.sqlite3_return_all_programs
  else # else we use RBT.
    _ = RBT.available_programs?
    _.map! {|entry|
      version = RBT.swift_return_version_of(entry) # sanitize_cookbook_dataset.version?
      # =================================================================== #
      # Store the name and the version.
      # =================================================================== #
      [entry, version]
    }
    # We must add the versions in this case though.
  end
  return _ 
end
smaller_font?() click to toggle source
#

smaller_font?

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 154
def smaller_font?
  SMALLER_FONT
end
start_gui_application()
Alias for: run
update_listing() click to toggle source
#

update_listing

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 220
def update_listing
  sanitize_data
  update_the_liststore
end
update_the_liststore() click to toggle source
#

update_the_liststore

#
# File lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb, line 228
def update_the_liststore
  dataset = sanitize_data
  array = []
  # ======================================================================= #
  # The dataset can be a String or an Array. If it is a String, we must
  # convert it into an Array first.
  # ======================================================================= #
  _ = dataset
  if _.is_a? String
    _ = dataset.split(N)
    _.each { |entry|
      # =================================================================== #
      # We split on ' →' Strings.
      # =================================================================== #
      array << [
        entry.split(' →')[0].downcase.to_s,
        entry.split(' →')[1].to_s
      ]
    }
    _ = array
  end
  _.sort.each { |entry|
    iter = @list_store.append
    iter.set_value(0, entry[0] )
    iter.set_value(1, entry[1] )
  }
end