module RBT::GUI::Gtk::InstalledProgramsModule

Constants

FEEDBACK_EXTENDED_INFORMATION
#

FEEDBACK_EXTENDED_INFORMATION

#
HEIGHT
#

HEIGHT

#
N
#

N

#
TITLE
#

TITLE

#
USE_DATABASE
#

USE_DATABASE

#
WIDTH
#

WIDTH

#

Public Class Methods

new( run_already = true ) click to toggle source
#

initialize

#
Calls superclass method
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 66
def initialize(
    run_already = true
  )
  super(:vertical)
  reset
  run if run_already
end
run( i = ARGV ) click to toggle source
#

RBT::GUI::Gtk::InstalledProgramsModule.run

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 290
def self.run(
    i = ARGV
  )
  require 'gtk_paradise/run'
  _ = ::RBT::GUI::Gtk::InstalledPrograms.new(i)
  r = ::Gtk.run
  r << _
  r.set_size_request(_.width?, _.height?)
  r.top_left_then_run
end

Public Instance Methods

border_size?() click to toggle source
#

border_size?

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 111
def border_size?
  2
end
connect_skeleton() click to toggle source
#

connect_skeleton (connect tag)

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 229
def connect_skeleton
  abort_on_exception
  @v_box.add(@tree_view).
         add(@button_update)
  @scrolled_window.add_with_viewport(@v_box)
  add(@scrolled_window)
end
create_buttons() click to toggle source
#

create_buttons (button tag, buttons tag)

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 199
def create_buttons
  @button_update = gtk_button('_Update')
  @button_update.bblack2
  @button_update.on_clicked {
    e 'Updating Listing'
    update_listing
  }
  @button_update.modify_background(:active,   :coral)
  @button_update.modify_background(:normal,   :mediumaquamarine)
  @button_update.modify_background(:prelight, :darkgreen) 
end
create_liststore() click to toggle source
#

create_liststore

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 214
def create_liststore
  @list_store = gtk_liststore(String, String, String)
  update_liststore
end
create_scrolled_window() click to toggle source
#

create_scrolled_window

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 157
def create_scrolled_window
  @scrolled_window = gtk_scrolled_window
  @scrolled_window.shadow_in
  @scrolled_window.policy = [:never, :automatic]
  @scrolled_window.set_size_request(800, 600)
end
create_skeleton() click to toggle source
#

create_skeleton (create tag)

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 264
def create_skeleton
  create_vbox
  create_scrolled_window
  create_liststore
  create_treeview
  create_buttons
end
create_treeview() click to toggle source
#

create_treeview

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 167
def create_treeview
  @tree_view = gtk_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::Event::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_vbox() click to toggle source
#

create_vbox

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 222
def create_vbox
  @v_box = gtk_vbox
end
feedback_extended_information?() click to toggle source
#

feedback_extended_information?

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 192
def feedback_extended_information?
  FEEDBACK_EXTENDED_INFORMATION
end
padding?() click to toggle source
#

padding?

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

reset (reset tag)

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 77
def reset
  infer_the_namespace
  # ======================================================================= #
  # === @configuration
  # ======================================================================= #
  @configuration = [true, __dir__, namespace?]
  title_width_height_font(TITLE, WIDTH, HEIGHT, :dejavu_condensed_22)
  # ======================================================================= #
  # === @use_database
  # ======================================================================= #
  @use_database = USE_DATABASE
  # ======================================================================= #
  # === @array_lsmod_result
  # ======================================================================= #
  @array_lsmod_result = []
  # ======================================================================= #
  # === @renderer
  # ======================================================================= #
  @renderer = gtk_cell_renderer_text
  @renderer.editable = true
  use_gtk_paradise_project_css_file
  infer_the_size_automatically
end
return_dataset(i) click to toggle source
#

return_dataset

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 275
def return_dataset(i)
  RBT::Cookbooks::SanitizeCookbook.new(i) { :fast }
end
run() click to toggle source
#

run (run tag)

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 282
def run
  sanitize_data
  create_skeleton_then_connect_skeleton
end
sanitize_data() click to toggle source
#

sanitize_data

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 240
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
update_listing() click to toggle source
#

update_listing

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 118
def update_listing
  sanitize_data
  update_liststore
end
update_liststore() click to toggle source
#

update_liststore

#
# File lib/rbt/gui/shared_code/installed_programs/installed_programs_module.rb, line 126
def update_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