class Gtk::InstalledPrograms

Constants

FEEDBACK_EXTENDED_INFORMATION
#

FEEDBACK_EXTENDED_INFORMATION

#
N
#

N

#
USE_DATABASE
#

USE_DATABASE

#

Public Class Methods

new() click to toggle source
#

initialize

#
Calls superclass method
# File lib/rbt/gui/gtk/installed_programs.rb, line 56
def initialize
  super('InstalledPrograms')
  reset
  sanitize_data
  create_vbox
  create_scrolled_window
  create_liststore
  create_treeview
  create_buttons
  connect_skeleton
end

Public Instance Methods

connect_skeleton() click to toggle source
#

connect_skeleton

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

create_buttons

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 164
def create_buttons
  @button_update = gtk_button('_Update')
  @button_update.signal_connect(:clicked) {
    e 'Updating Listing'
    update_listing
  }
  @button_update.modify_bg( Gtk::StateType::ACTIVE, CORAL )
  @button_update.modify_bg( Gtk::StateType::NORMAL, MEDIUMAQUAMARINE)
  @button_update.modify_bg( Gtk::StateType::PRELIGHT, DARKGREEN ) 
end
create_liststore() click to toggle source
#

create_liststore

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 178
def create_liststore
  @list_store = Gtk::ListStore.new(String, String, String)
  update_liststore
end
create_scrolled_window() click to toggle source
#

create_scrolled_window

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 118
def create_scrolled_window
  @scrolled_window = gtk_scrolled_window # Gtk::ScrolledWindow.new
  @scrolled_window.set_shadow_type(Gtk::SHADOW_IN)
  @scrolled_window.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
end
create_treeview() click to toggle source
#

create_treeview

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 127
def create_treeview
  @tree_view = Gtk::TreeView.new(@list_store)
  @tree_view.insert_column(-1, 'ProgramName',    @renderer, :text => 0)
  @tree_view.insert_column(-1, 'ProgramVersion', @renderer, :text => 1)
  @tree_view.enable_model_drag_source(Gdk::Window::BUTTON1_MASK, 
    [ 
      ['GTK_TREE_MODEL_ROW', 0, 0] 
    ],
    Gdk::DragContext::ACTION_COPY|Gdk::DragContext::ACTION_MOVE
  )
  @tree_view.enable_model_drag_dest([ ['GTK_TREE_MODEL_ROW', 0, 0] ], 
  Gdk::DragContext::ACTION_COPY|Gdk::DragContext::ACTION_MOVE)
  @tree_view.signal_connect(: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 == Gdk::Event::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?
        program_name = @tree_view.selection.selected[0]
        return_dataset(program_name).report
      end
    end
  }
end
create_vbox() click to toggle source
#

create_vbox

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 186
def create_vbox
  @v_box = Gtk::VBox.new
end
feedback_extended_information?() click to toggle source
#

feedback_extended_information?

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 157
def feedback_extended_information?
  FEEDBACK_EXTENDED_INFORMATION
end
height?() click to toggle source
#

height?

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 209
def height?
  500
end
reset() click to toggle source
#

reset

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 71
def reset
  @use_database = USE_DATABASE
  @array_lsmod_result = []
  @renderer = gtk_cell_renderer_text
  @renderer.editable = true
end
return_dataset(i) click to toggle source
#

return_dataset

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 240
def return_dataset(i)
  RBT::Cookbooks::Cookbook.new(i) { :bypass_menu_check }
end
sanitize_data() click to toggle source
#

sanitize_data

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 216
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/gtk/installed_programs.rb, line 81
def update_listing
  sanitize_data
  update_liststore
end
update_liststore() click to toggle source
#

update_liststore

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 89
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
width?() click to toggle source
#

width?

#
# File lib/rbt/gui/gtk/installed_programs.rb, line 202
def width?
  820
end