Module: PdfParadise::GUI::Gtk::PdfViewerModule

Includes:
Gtk::BaseModule
Included in:
PdfViewer
Defined in:
lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
TITLE =
#

TITLE

#
'View .pdf files'
WIDTH =
#

WIDTH

#
1600
HEIGHT =
#

HEIGHT

#
600

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.runObject

#

PdfParadise::GUI::Gtk::PdfViewerModule.run

#


277
278
279
280
281
282
283
284
285
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 277

def self.run
  require 'gtk_paradise/run'
  _ = ::PdfParadise::GUI::Gtk::PdfViewer.new
  r = ::Gtk.run
  _.set_parent_widget(r)
  r << _
  r.automatic_title_and_size
  r.top_left_then_run
end

Instance Method Details

#border_size?Boolean

#

border_size?

#

Returns:

  • (Boolean)


99
100
101
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 99

def border_size?
  2
end

#connect_skeletonObject

#

connect_skeleton (connect tag)

#


180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 180

def connect_skeleton
  abort_on_exception
  # ======================================================================= #
  # === @entry_this_is_the_pdf_file
  # ======================================================================= #
  @entry_this_is_the_pdf_file = gtk_entry(
    '/Depot/j/test.pdf'
  )
  @entry_this_is_the_pdf_file.yellow_background
  top_hbox = gtk_hbox
  top_hbox.maximal(@entry_this_is_the_pdf_file, 3)
  top_hbox.maximal(@button_view_this_pdf_file,  3)
  top_hbox.minimal(@button_file_picker,         3)
  top_hbox.minimal(@button_clear,               3)
  minimal(top_hbox)
  maximal(@scrolled_window)
end

#create_skeletonObject

#

create_skeleton

#


106
107
108
109
110
111
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 106

def create_skeleton
  @text_buffer = gtk_text_buffer
  create_the_text_view
  create_the_buttons
  create_the_scrolled_window
end

#create_the_buttonsObject

#

create_the_buttons

#


156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 156

def create_the_buttons
  @button_view_this_pdf_file = gtk_button('View this .pdf file')
  @button_view_this_pdf_file.set_name('button1')
  @button_view_this_pdf_file.hint = 'Click on '\
    'this button to view the content of the .pdf file.'
  @button_view_this_pdf_file.on_clicked {
    do_the_conversion(@entry_this_is_the_pdf_file.text.to_s)
  }
  @button_clear = gtk_button('Clear')
  @button_clear.hint = 'Click this button '\
    'to clear the buffer shown below.'
  @button_clear.on_clicked {
    @text_buffer.clear
  }
  @button_file_picker = gtk_button('_Pick a file')
  @button_file_picker.hint = 'Pick a local .pdf file.'
  @button_file_picker.on_clicked {
    do_pick_a_file
  }
end

#create_the_scrolled_windowObject

#

create_the_scrolled_window

#


116
117
118
119
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 116

def create_the_scrolled_window
  @scrolled_window = gtk_scrolled_window(@text_view) { :always_show_the_scrollbars }
  @scrolled_window.css_class('bblack1')
end

#create_the_text_viewObject

#

create_the_text_view

#


124
125
126
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 124

def create_the_text_view
  @text_view = gtk_text_view(@text_buffer)
end

#do_pick_a_fileObject

#

do_pick_a_file

#


226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 226

def do_pick_a_file
  begin
    require 'gtk_paradise/toplevel_methods/toplevel_methods.rb'
  rescue LoadError; end
  filename = ::Gtk.select_file(@parent_widget) {{
    current_folder:             '/Depot/j/',
    show_hidden:                true,
    add_these_shortcut_folders: ['/Depot/j/'],
    use_this_file_filter:       '*.pdf'
  }}
  if File.exist? filename
    set_this_as_the_active_pdf_file_then_trigger_the_conversion(filename)
  end
end

#do_the_conversion(i = @entry_this_is_the_pdf_file.text.to_s) ⇒ Object Also known as: trigger_the_conversion

#

do_the_conversion

This method will do the actual file-conversion.

#


133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 133

def do_the_conversion(
    i = @entry_this_is_the_pdf_file.text.to_s
  )
  if File.exist? i
    location_of_the_newly_generated_file = '/Depot/j/converted_pdf_file.md'
    # ===================================================================== #
    # Next, do the conversion.
    # ===================================================================== #
    `pdftotext #{i} #{location_of_the_newly_generated_file}`
    if File.exist? location_of_the_newly_generated_file
      dataset = File.read(location_of_the_newly_generated_file).to_s
      set_text_in_the_main_buffer(dataset)
    else
      e 'No file exists at '+location_of_the_newly_generated_file+'.'
    end
  else
    e 'No file exists at '+::Colours.sfile(i)+'.'
  end
end

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

#

initialize

#


47
48
49
50
51
52
53
54
55
56
57
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 47

def initialize(
    commandline_arguments = ARGV,
    run_already           = true
  )
  super(:vertical)
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end
#

menu (menu tag)

#


262
263
264
265
266
267
268
269
270
271
272
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 262

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    if File.exist? i
      set_this_as_the_active_pdf_file_then_trigger_the_conversion(i)
    end
  end
end

#padding?Boolean

#

padding?

#

Returns:

  • (Boolean)


92
93
94
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 92

def padding?
  2
end

#resetObject

#

reset

#


62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 62

def reset
  reset_the_internal_variables
  # ======================================================================= #
  # === @configuration
  # ======================================================================= #
  @configuration = [true, __dir__, NAMESPACE]
  # ======================================================================= #
  # === @parent_widget
  # ======================================================================= #
  @parent_widget = nil
  # ======================================================================= #
  # === @title
  # ======================================================================= #
  @title  = TITLE
  # ======================================================================= #
  # === @width
  # ======================================================================= #
  set_width(WIDTH)
  # ======================================================================= #
  # === @height
  # ======================================================================= #
  set_height(HEIGHT)
  set_use_this_font(:dejavu_condensed_23)
  use_project_css_file
  infer_the_size_automatically
end

#runObject

#

run

#


254
255
256
257
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 254

def run
  create_skeleton_then_connect_skeleton
  menu
end

#set_parent_widget(i) ⇒ Object

#

set_parent_widget

#


201
202
203
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 201

def set_parent_widget(i)
  @parent_widget = i
end

#set_text_in_the_main_buffer(i) ⇒ Object

#

set_text_in_the_main_buffer

#


208
209
210
211
212
213
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 208

def set_text_in_the_main_buffer(i)
  i = i.to_s.dup.strip
  i.delete!('®') # Do a bit ad-hoc deletion.
  @text_buffer.set_text(i.to_s.dup)
  GC.start
end

#set_this_as_the_active_pdf_file(i) ⇒ Object

#

set_this_as_the_active_pdf_file

#


218
219
220
221
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 218

def set_this_as_the_active_pdf_file(i)
  i = i.to_s.dup
  @entry_this_is_the_pdf_file.set_text(i)
end

#set_this_as_the_active_pdf_file_then_trigger_the_conversion(filename) ⇒ Object

#

set_this_as_the_active_pdf_file_then_trigger_the_conversion

#


244
245
246
247
248
249
# File 'lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb', line 244

def set_this_as_the_active_pdf_file_then_trigger_the_conversion(
    filename
  )
  set_this_as_the_active_pdf_file(filename)
  trigger_the_conversion
end