Module: Gtk::FileViewerModule

Includes:
BaseModule
Included in:
FileViewer
Defined in:
lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
TITLE =
#

TITLE

#
'File Viewer'
LIMIT =
#

LIMIT

#
80
WIDTH =
#

WIDTH

#
1400
HEIGHT =
#

HEIGHT

#
800
FONT_TO_USE =
#

FONT_TO_USE

#
:dejavu_condensed_22

Constants included from BaseModule

BaseModule::HASH_USE_THESE_PERCENTAGE_VALUES_FOR_THE_HEADERS, BaseModule::IMG_DIR

Class Method Summary collapse

Instance Method Summary collapse

Methods included from BaseModule

#abort_on_exception, #absolute_file_path, #add_a_horizontal_spacer, #add_css_rules, #add_horizontal_spacer, #add_notebook, #add_or_append, #add_table3, #all_buttons?, #all_check_buttons?, #all_entries?, #all_labels?, #all_toggle_buttons?, #allow_only_numbers, #always_scrolled_window, #app_chooser_button, #append_gtk_paradise_project_css_file, #append_onto_the_CSS_rules, #append_project_css_file, #append_the_default_css_rules, #apply_the_default_CSS_rules, #automatic_scrolled_window, #automatically_create_widgets_based_on_this_dataset, #automatically_created_widgets?, #button_hover_colour, #button_themed_icon, #cairo_context, #cell_renderer_progress, #centered_cell_renderer_text, #centered_text, #change_directory, #check_button_is_checked, #check_for_a_manifest_yaml_file, #cliner, #clipboard_text?, #coloured_quit_button, #configuration?, #connect_the_skeleton, #create_a_new_file_chooser_dialog, #create_and_add_gtk_accel_group, #create_bold_cell_renderer, #create_centered_entry, #create_clipboard, #create_combobox_text, #create_context_menu, #create_entry_with_text_and_max_length, #create_font_chooser_dialog, #create_paned_hbox_first_big, #create_paned_vbox, #create_paned_vbox_last_big, #create_skeleton_then_connect_skeleton, #create_skeleton_then_connect_skeleton_then_apply_the_CSS_rules, #create_sourceview, #crimson, #css_background1, #css_provider?, #css_rules_to_apply?, #current_event?, #current_font_in_use?, #dd_mm_yy, #debug?, #default_application, #default_entry, default_gtk_adjustment?, #default_gtk_settings?, #default_notebook, #default_renderer, #delayed_css_change, #destroy_then_quit, #directory_content_widget, #directory_to_the_images?, #display_the_CSS_rules, #div, #do_apply_the_CSS_rules, #do_enable_debug, #do_popup, #drag_start, #drag_stop, #draggable_from_the_left_to_the_right_side, #draggable_left_to_right_pane, #drop_down_find_box, #e, #efancy, #eight_strings, #emoji, #emoji_image, #enable_default_grid_settings_for, #enable_these_key_combinations, #entry_with_this_completion, #esystem, #event_left_mouse_button_click?, #event_middle_mouse_button_click?, #event_right_mouse_button_click?, #ewarn, #exit_program, extended, #five_strings, #font_chooser_dialog, #four_strings, #gdk_screen, #gdk_selection_clipboard, #generate_css_class, #group_maximal, #gtk_about_dialog, #gtk_accel_group, #gtk_adjustment, #gtk_alignment, #gtk_application_window, #gtk_base_module, #gtk_bold_button, #gtk_bold_check_button, #gtk_bold_entry, #gtk_bold_frame, #gtk_bold_label, #gtk_bold_text_left_aligned, #gtk_button, #gtk_button_accel, #gtk_button_box, #gtk_button_box_spread, #gtk_button_with_label, #gtk_button_with_this_image, #gtk_button_xorg_buffer, #gtk_cell_renderer_centered_text, #gtk_cell_renderer_combo, #gtk_cell_renderer_pixbuf, #gtk_cell_renderer_right_aligned, #gtk_cell_renderer_text, #gtk_centered_spin_button, #gtk_check_button, #gtk_colour_black, #gtk_colour_button, #gtk_colour_grey, #gtk_colour_selection_dialog, #gtk_coloured_bar, #gtk_coloured_button, #gtk_combo_box, #gtk_combo_box_entry, #gtk_combo_box_text, #gtk_dialog, #gtk_drawing_area, #gtk_dropdown, #gtk_entry, #gtk_entry_completion, #gtk_entry_with_icon_name, #gtk_entry_with_secondary_icon_name, #gtk_eventbox, #gtk_expanded_expander, #gtk_expander, #gtk_file_chooser_button, #gtk_file_chooser_dialog, #gtk_file_filter, #gtk_fixed, #gtk_frame, #gtk_grid, #gtk_hbox, #gtk_hbox_with_vertical_pane, #gtk_hbutton_box, #gtk_header_bar, #gtk_hpaned, #gtk_hscale, #gtk_hseparator, #gtk_image, #gtk_image_menu_item, #gtk_input_field, #gtk_label, #gtk_left_aligned_bold_label, #gtk_left_aligned_button, #gtk_list_store, #gtk_list_store_table2, #gtk_list_store_table3, #gtk_list_store_table4, #gtk_main_quit, #gtk_markified_text, #gtk_markup, #gtk_menu, #gtk_menu_bar, #gtk_menu_item, #gtk_message_dialog, #gtk_message_dialog_run_then_destroy, #gtk_notebook, #gtk_option_menu, #gtk_password, #gtk_pixbuf, #gtk_popover, #gtk_progress_bar, #gtk_radio_button, #gtk_radio_menu_item, #gtk_resize_grip, #gtk_right_aligned_label, #gtk_runner_module, #gtk_scrollbar, #gtk_scrolled_window, #gtk_search_bar, #gtk_search_entry, #gtk_separator_menu_item, #gtk_size_group, #gtk_source_buffer, #gtk_source_view, #gtk_spin_button, #gtk_spinner, #gtk_state_normal, #gtk_status_icon, #gtk_statusbar, #gtk_statusbar_with_handle, #gtk_switch, #gtk_table, #gtk_table2, #gtk_table3, #gtk_text, #gtk_text_buffer, #gtk_text_left_aligned, #gtk_text_view, #gtk_themed_icon, #gtk_toggle_button, #gtk_toolbar, #gtk_tooltip_set_tip, #gtk_tooltip_widget, #gtk_tree_store, #gtk_tree_view, #gtk_tree_view_column, #gtk_vbox, #gtk_vbutton_box, #gtk_vpaned, #gtk_vruler, #gtk_vscale, #gtk_vseparator, #gtk_window, #h1, #h2, #h3, #h4, #h5, #h6, #hbox_text, #hbutton_box, #hcentered_entry, #horizontal_spacer, #html_table2, #icon_theme?, #icon_theme_default, #image_accessories_text_editor, #image_accessories_text_editor_symbolic_symbolic, #image_application_exit, #image_applications_system, #image_applications_system_symbolic_symbolic, #image_audio_speakers, #image_audio_volume_high, #image_audio_volume_low, #image_audio_x_generic_symbolic, #image_avatar_default, #image_bookmark_new, #image_cellular_signal_excellent_symbolic_symbolic, #image_computer, #image_dialog_question, #image_document_open, #image_document_revert, #image_document_save_as_symbolic_symbolic, #image_emblem_urgent, #image_folder_visiting_symbolic, #image_from_file, #image_from_pixbuf, #image_go_down, #image_go_up, #image_information, #image_inode_directory, #image_input_mouse, #image_left_arrow, #image_list_remove, #image_media_optical, #image_network_cellular_connected_symbolic_symbolic, #image_network_wireless_signal_excellent_symbolic, #image_play_button, #image_quit_action, #image_software_update_urgent, #image_starred, #image_system_search, #image_trophy_gold, #image_view_refresh_symbolic_symbolic, #image_web_browser, #increase_font_size, #initialize_gtk3, #interactive_change_the_font, #is_it_an_enter_key?, #is_mouse_button_event?, #is_mouse_button_release_event?, #is_not_decorated, #is_on_roebe?, #is_on_windows?, #label_then_entry, #left_aligned_selectable_text, #left_arrow_emoji, #left_label, #lightblue, #load_rules_from_the_project_css_file, #load_this_yaml_file, #main_file?, #main_font?, #max_height?, #max_resolution?, #max_width?, #mediumseagreen, #minimal_spacer, #missing_the_internal_hash?, #modify_bold_label, #modify_foreground, #modify_label, #more_css_then_apply_the_CSS_rules, #mouse_button_double_click?, #my_title?, #name_of_this_event?, #new_open_file_dialog, #no_file_exists_at, #options, #override_normal_background_color, #p, #padded_hbox, #padded_vbox, #paned_hbox, #paned_vbox, #pango_font_description, #parse_this_file_into_a_table, #percentage_widget, #percentage_widget_with_this_text, #pixbuf_from_file, #pixbuf_loader, #populate_the_internal_hash_with_the_default_values, #populate_this_list_store, #populate_this_list_store3, #populate_this_list_store4, #popup_over_this_widget, #popup_this_text_over_that_widget, #pre, #project_base_directory?, #project_yaml_directory?, #quit_button, #random_colour, #raw_cd, #read_in_from_this_css_theme, #register_sigint, #remove_all_pages, #remove_html, #replace_with_proper_tags, #report_current_dir, #reset_the_internal_variables, #reset_the_internal_variables_as_well_as_the_internal_hash, #resize_based_on_width_and_height_attributes, #response_type_ok?, #return_active_spinner, #return_combo_box_entry, #return_corresponding_gtk_stock_item, #return_current_time, #return_current_time_hh_mm_only, #return_debug_widget, #return_default_CSS_rules, #return_default_grid, #return_editable_cell_renderer_text, #return_emoji, #return_inactive_spinner, #return_p_tag, #return_pixbuf_based_on_the_default_icon_theme, #return_popover, #return_pwd, #return_scale_button, #return_scrollable_CSS_in_use_widget, #return_the_html_colours, #return_the_path_to_the_file_called_project_css, #return_the_title_from_the_config_file, #return_this_image_based_on_the_default_icon_theme, #return_top_bar, #rev, #right_arrow_emoji, #run_in_background, #run_in_background_if_is_on_roebe?, #run_main, #sbr, #scroll_down?, #scroll_up?, #sdir, #selectable_text, #set_background, #set_font, #set_font_in_use, #set_font_in_use_for_this_application, #set_this_widget, #set_width, #seven_strings, #sfancy, #sfile, #show_all, #show_debug_information, #simple_quit_button, #simplified_button_box, #six_strings, #smiley1, #smiley2, #smiley3, #smiley4, #smiley5, #spacer, #standard_file_chooser_dialog, #steelblue, #store_the_CSS_rules_into_a_local_file, #string_list_store, #swarn, #table2, #table3, #table4, #text_then_entry, #three_strings, #title?, #title_font, #title_height_width, #title_width_height, #title_width_height_font, #to_font_description, #to_utf, #tomato, #top_left, #try_to_require_the_open_gem, #try_to_set_the_xorg_buffer, #two_strings, #ungrab_application, #unicode_horizontal_spacer, #upon_delete_event_quit_the_application, #use_a_popular_reset_variant, #use_config_file?, #use_gtk?, #use_gtk_paradise_project_css_file, #use_lean_CSS_rules, #use_libui?, #use_these_css_classes, #uses_gtk2?, #uses_gtk3?, #uses_gtk4?, #vbutton_box, #vertical_spacer, #vte_terminal, #we_use_this_gtk_version?, #white_background, #width_height, #width_height_font, #width_title_height, #window_manager_name?, #window_or_vbox, #word_wrap, #write_what_into, #xid_value?

Methods included from InternalHashModule

#clear_the_internal_hash, #commandline_arguments?, #first_argument?, #height?, #infer_the_namespace, #internal_hash?, #my_title?, #namespace?, #parent_widget?, #reset_the_internal_hash, #set_commandline_arguments, #set_height, #set_my_title, #set_parent_widget, #set_width, #width?

Class Method Details

.runObject

#

Gtk::FileViewerModule.run

#


234
235
236
237
238
239
240
241
242
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 234

def self.run
  require 'gtk_paradise/run'
  _ = ::Gtk::FileViewer.new
  r = ::Gtk.run
  r << _
  r.infer_the_size
  r.automatic
  r.top_left_then_run
end

Instance Method Details

#border_size?Boolean

#

border_size?

#

Returns:

  • (Boolean)


120
121
122
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 120

def border_size?
  2
end

#connect_skeletonObject

#

connect_skeleton (connect tag)

#


223
224
225
226
227
228
229
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 223

def connect_skeleton
  abort_on_exception
  minimal(@menu,             0)
  minimal(@file_path_widget, 0)
  maximal(@scrolled_window,  0)
  minimal(@button_quit,      0)
end

#create_buttonsObject

#

create_buttons

#


192
193
194
195
196
197
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 192

def create_buttons
  # ======================================================================= #
  # Next, add the quit-button:
  # ======================================================================= #
  @button_quit = quit_button('_Quit') { :exit_on_click_event }
end

#create_file_path_widgetObject

#

create_file_path_widget

#


185
186
187
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 185

def create_file_path_widget
  @file_path_widget = ::Gtk::FilePathWidget.new
end

#create_skeletonObject

#

create_skeleton

#


140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 140

def create_skeleton
  @source_buffer = create_text_buffer
  file_handle = ''.dup
  if File.exist? @display_this_file
    file_handle << File.readlines(@display_this_file).join
  end
  # ======================================================================= #
  # Zwischen 80 und 300 denken wir, das es eine sehr lange command line is.
  # ======================================================================= #
  if file_handle.size > 80 and file_handle.size < 300
    file_handle.insert(80, "\n")
  end
  @source_buffer.text = file_handle
  @text_field = create_text_view(@source_buffer)
  if @text_field.respond_to? :show_line_numbers=
    @text_field.show_line_numbers = true
  end
  if @text_field.respond_to? :tab_width=
    @text_field.tab_width = 2
  end
  if @text_field.respond_to? :auto_indent=
    @text_field.auto_indent = true
  end
  # @text_field.show_line_markers = true
  # @text_field.smart_home_end = true
  # @text_field.show_margin=true 
  if @use_numbered_lines_widget
    require 'gtk_paradise/widgets/gtk3/numbered_lines/numbered_lines.rb'
    hbox = gtk_hbox
    n_lines = @text_field.buffer?.text.split("\n").size
    @numbered_lines_widget = ::Gtk::NumberedLines.new {{ specify_n_lines: n_lines }}
    @numbered_lines_widget.set_size_request(50, 200)
    hbox.minimal(@numbered_lines_widget, 1)
    hbox.maximal(@text_field, 0)
    @scrolled_window = create_scrolled_window(hbox)
  else
    @scrolled_window = create_scrolled_window(@text_field)
  end
  create_buttons
  create_file_path_widget
end

#do_open_a_fileObject

#

do_open_a_file

#


127
128
129
130
131
132
133
134
135
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 127

def do_open_a_file
  this_file = ::Gtk.file_selection
  this_file = this_file.first
  if File.exist? this_file
    @file_path_widget << this_file
    file_content = File.read(this_file)
    @source_buffer.set_text(file_content)
  end
end

#initialize(i = ARGV, run_already = true) ⇒ Object

#

initialize

#


58
59
60
61
62
63
64
65
66
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 58

def initialize(
    i           = ARGV,
    run_already = true
  )
  super(:vertical)
  reset
  set_display_this_file(i) if i
  run if run_already
end

#padding?Boolean

#

padding?

#

Returns:

  • (Boolean)


113
114
115
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 113

def padding?
  2
end

#resetObject

#

reset

#


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 71

def reset
  reset_the_internal_variables
  # ======================================================================= #
  # === @configuration
  # ======================================================================= #  
  @configuration = [true, __dir__, NAMESPACE]
  set_use_this_font(FONT_TO_USE)
  # ======================================================================= #
  # === @display_this_file
  # ======================================================================= #
  @display_this_file = nil
  # ======================================================================= #
  # === @title
  # ======================================================================= #
  @title  = TITLE
  # ======================================================================= #
  # === @width
  # ======================================================================= #
  set_width(WIDTH)
  # ======================================================================= #
  # === @height
  # ======================================================================= #
  set_height(HEIGHT)
  # ======================================================================= #
  # === @use_numbered_lines_widget
  # ======================================================================= #
  @use_numbered_lines_widget = true
  use_gtk_paradise_project_css_file
  increase_font_size
end

#runObject

#

run

#


215
216
217
218
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 215

def run
  try_to_load_gtksourceview2
  create_skeleton_then_connect_skeleton
end

#set_display_this_file(i) ⇒ Object

#

set_display_this_file

#


105
106
107
108
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 105

def set_display_this_file(i)
  i = i.first.to_s if i.is_a? Array
  @display_this_file = i
end

#startObject

#

run

#

start



218
219
220
221
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 218

def run
  try_to_load_gtksourceview2
  create_skeleton_then_connect_skeleton
end

#try_to_load_gtksourceview2Object

#

try_to_load_gtksourceview2

#


202
203
204
205
206
207
208
209
210
# File 'lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb', line 202

def try_to_load_gtksourceview2
  begin
    require 'gtksourceview2'
  rescue LoadError
    if ::Gtk.is_on_roebe?
      puts 'gtksourceview2 is not available.'
    end
  end
end