Class: RBT::GUI::UniversalWidgets::InstalledPrograms

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

Overview

RBT::GUI::UniversalWidgets::InstalledPrograms

Constant Summary collapse

USE_DATABASE =
#

USE_DATABASE

#
false
FEEDBACK_EXTENDED_INFORMATION =
#

FEEDBACK_EXTENDED_INFORMATION

#
true
USE_THESE_CSS_RULES =
#

USE_THESE_CSS_RULES

#
'
'
TITLE =
#

TITLE

#
'Installed Programs'
WIDTH =
#

WIDTH

#
'82% or minimum 1280px'
HEIGHT =
#

HEIGHT

#
'40% or minimum 300px'
USE_THIS_FONT =
#

USE_THIS_FONT

#
:dejavu_condensed_20
LARGER_FONT =
#

LARGER_FONT

#
:dejavu_condensed_22
SMALLER_FONT =
#

SMALLER_FONT

#
:dejavu_condensed_18
USE_THIS_MONOSPACED_FONT =
#

USE_THIS_MONOSPACED_FONT

#
:hack_16

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?, #available_programs?, #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, run_already = true) ⇒ InstalledPrograms

#

initialize

#


94
95
96
97
98
99
100
101
102
103
104
105
106
# 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

Class Method Details

.[](i = ARGV) ⇒ Object

#

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

#


411
412
413
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 411

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

.run(i = ARGV) ⇒ Object

#

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

#


393
394
395
396
397
398
399
400
401
402
403
404
405
406
# 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

Instance Method Details

#border_size?Boolean

#

border_size?

#

Returns:

  • (Boolean)


266
267
268
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 266

def border_size?
  2
end

#connect_the_skeletonObject

#

connect_the_skeleton (connect tag)

#


338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
# 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_buttonsObject

#

create_the_buttons (button tag, buttons tag)

#


370
371
372
373
374
375
376
377
378
379
380
381
# 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_liststoreObject

#

create_the_liststore

#


323
324
325
326
# 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_windowObject

#

create_the_scrolled_window

#


210
211
212
213
214
215
# 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_skeletonObject

#

create_the_skeleton (create tag, skeleton tag)

#


298
299
300
301
302
303
304
# 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_treeviewObject

#

create_the_treeview

#


273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
# 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_vboxObject

#

create_the_vbox

#


331
332
333
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 331

def create_the_vbox
  @v_box = create_vbox
end
#
#


386
387
388
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 386

def do_all_startup_related_actions
  sanitize_data
end

#favicon?Boolean

#

favicon?

#

Returns:

  • (Boolean)


147
148
149
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 147

def favicon?
  :tabble
end

#feedback_extended_information?Boolean

#

feedback_extended_information?

#

Returns:

  • (Boolean)


316
317
318
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 316

def feedback_extended_information?
  FEEDBACK_EXTENDED_INFORMATION
end

#handle_CSS_rulesObject

#

handle_CSS_rules (CSS tag)

#


161
162
163
164
165
# 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?Boolean

#

padding?

#

Returns:

  • (Boolean)


259
260
261
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 259

def padding?
  2
end

#resetObject

#

reset (reset tag)

#


111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# 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_moduleObject

#

reset_the_shared_module

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

#


173
174
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 173

def reset_the_shared_module
end

#return_dataset(i) ⇒ Object

#

return_dataset

#


179
180
181
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 179

def return_dataset(i)
  action(:SanitizeCookbook, i) { :fast }
end

#runObject

#

run (run tag)

#


309
310
311
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 309

def run
  run_super
end

#sanitize_dataObject

#

sanitize_data

#


186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# 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?Boolean

#

smaller_font?

#

Returns:

  • (Boolean)


154
155
156
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 154

def smaller_font?
  SMALLER_FONT
end

#update_listingObject

#

update_listing

#


220
221
222
223
# File 'lib/rbt/gui/universal_widgets/installed_programs/installed_programs.rb', line 220

def update_listing
  sanitize_data
  update_the_liststore
end

#update_the_liststoreObject

#

update_the_liststore

#


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
253
254
# 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