pdf_paradise 0.1.43

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pdf_paradise might be problematic. Click here for more details.

Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +376 -0
  3. data/bin/automatic_pdf_title +7 -0
  4. data/bin/convert_markdown_to_pdf +7 -0
  5. data/bin/convert_pdf_to_text +7 -0
  6. data/bin/merge_then_open +7 -0
  7. data/bin/n_pages +10 -0
  8. data/bin/open_main_pdf +7 -0
  9. data/bin/pdf_paradise +7 -0
  10. data/bin/set_main_book +7 -0
  11. data/bin/set_title_of_this_pdf_file +15 -0
  12. data/doc/README.gen +348 -0
  13. data/doc/todo/todo.md +2 -0
  14. data/lib/pdf_paradise.rb +5 -0
  15. data/lib/pdf_paradise/base/base.rb +173 -0
  16. data/lib/pdf_paradise/commandline/help.rb +69 -0
  17. data/lib/pdf_paradise/commandline/menu.rb +160 -0
  18. data/lib/pdf_paradise/compress_this_pdf_file.rb +82 -0
  19. data/lib/pdf_paradise/constants/constants.rb +59 -0
  20. data/lib/pdf_paradise/convert_text_to_pdf.rb +94 -0
  21. data/lib/pdf_paradise/css/project.css +17 -0
  22. data/lib/pdf_paradise/djvu_to_pdf.rb +85 -0
  23. data/lib/pdf_paradise/gui/README.md +6 -0
  24. data/lib/pdf_paradise/gui/fox/split_pdf_file.rb +77 -0
  25. data/lib/pdf_paradise/gui/gtk2/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file.rb +39 -0
  26. data/lib/pdf_paradise/gui/gtk2/pdf_viewer/pdf_viewer.rb +34 -0
  27. data/lib/pdf_paradise/gui/gtk2/split_pdf_file/split_pdf_file.rb +34 -0
  28. data/lib/pdf_paradise/gui/gtk2/statistics_widget/statistics_widget.rb +34 -0
  29. data/lib/pdf_paradise/gui/gtk2/to_pdf/to_pdf.rb +32 -0
  30. data/lib/pdf_paradise/gui/gtk3/controller/controller.rb +197 -0
  31. data/lib/pdf_paradise/gui/gtk3/convert_pdf_to_text/convert_pdf_to_text.rb +34 -0
  32. data/lib/pdf_paradise/gui/gtk3/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file.rb +39 -0
  33. data/lib/pdf_paradise/gui/gtk3/pdf_viewer/pdf_viewer.rb +34 -0
  34. data/lib/pdf_paradise/gui/gtk3/split_pdf_file/split_pdf_file.rb +34 -0
  35. data/lib/pdf_paradise/gui/gtk3/statistics_widget/statistics_widget.rb +34 -0
  36. data/lib/pdf_paradise/gui/gtk3/to_pdf/to_pdf.rb +32 -0
  37. data/lib/pdf_paradise/gui/shared_code/convert_pdf_to_text/convert_pdf_to_text_module.rb +277 -0
  38. data/lib/pdf_paradise/gui/shared_code/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file_module.rb +428 -0
  39. data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer.css +5 -0
  40. data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb +284 -0
  41. data/lib/pdf_paradise/gui/shared_code/split_pdf_file/split_pdf_file.css +0 -0
  42. data/lib/pdf_paradise/gui/shared_code/split_pdf_file/split_pdf_file_module.rb +294 -0
  43. data/lib/pdf_paradise/gui/shared_code/statistics_widget/statistics_widget_module.rb +333 -0
  44. data/lib/pdf_paradise/gui/shared_code/to_pdf/to_pdf_module.rb +273 -0
  45. data/lib/pdf_paradise/main_pdf/main_pdf.rb +437 -0
  46. data/lib/pdf_paradise/merge_pdf/menu.rb +63 -0
  47. data/lib/pdf_paradise/merge_pdf/merge_pdf.rb +292 -0
  48. data/lib/pdf_paradise/merge_pdf_namespace.rb +9 -0
  49. data/lib/pdf_paradise/merge_then_open/merge_then_open.rb +105 -0
  50. data/lib/pdf_paradise/pdf_file_n_total_pages.rb +227 -0
  51. data/lib/pdf_paradise/project/project_base_directory.rb +22 -0
  52. data/lib/pdf_paradise/remove_pdf_password.rb +392 -0
  53. data/lib/pdf_paradise/requires/batch_require_toplevel_files.rb +22 -0
  54. data/lib/pdf_paradise/requires/colours.rb +7 -0
  55. data/lib/pdf_paradise/requires/colours_and_esystem_and_save_file_and_fileutils_and_opn.rb +11 -0
  56. data/lib/pdf_paradise/requires/esystem_and_colours.rb +10 -0
  57. data/lib/pdf_paradise/requires/esystem_and_opn_and_colours.rb +8 -0
  58. data/lib/pdf_paradise/requires/require_the_whole_project.rb +25 -0
  59. data/lib/pdf_paradise/requires/require_utility_scripts.rb +7 -0
  60. data/lib/pdf_paradise/rotate_pdf_file.rb +144 -0
  61. data/lib/pdf_paradise/set_main_book.rb +156 -0
  62. data/lib/pdf_paradise/set_pdf_title.rb +218 -0
  63. data/lib/pdf_paradise/sinatra/embeddable_interface.rb +315 -0
  64. data/lib/pdf_paradise/toplevel_methods/automatic_pdf_title.rb +55 -0
  65. data/lib/pdf_paradise/toplevel_methods/convert_epub_to_pdf.rb +27 -0
  66. data/lib/pdf_paradise/toplevel_methods/convert_markdown_to_pdf.rb +43 -0
  67. data/lib/pdf_paradise/toplevel_methods/convert_ppt_to_pdf.rb +35 -0
  68. data/lib/pdf_paradise/toplevel_methods/e.rb +16 -0
  69. data/lib/pdf_paradise/toplevel_methods/esystem.rb +19 -0
  70. data/lib/pdf_paradise/toplevel_methods/misc.rb +52 -0
  71. data/lib/pdf_paradise/toplevel_methods/number_pages.rb +38 -0
  72. data/lib/pdf_paradise/toplevel_methods/opened_pdf_files.rb +191 -0
  73. data/lib/pdf_paradise/toplevel_methods/query_pdf_title.rb +182 -0
  74. data/lib/pdf_paradise/toplevel_methods/reduce_size_of_this_pdf_file.rb +43 -0
  75. data/lib/pdf_paradise/toplevel_methods/roebe.rb +17 -0
  76. data/lib/pdf_paradise/toplevel_methods/to_pdf.rb +38 -0
  77. data/lib/pdf_paradise/utility_scripts/README.md +3 -0
  78. data/lib/pdf_paradise/utility_scripts/convert_pdf_to_text.rb +166 -0
  79. data/lib/pdf_paradise/utility_scripts/delete_first_page_of_this_pdf_file.rb +185 -0
  80. data/lib/pdf_paradise/utility_scripts/delete_last_page_of_this_pdf_file.rb +180 -0
  81. data/lib/pdf_paradise/utility_scripts/delete_this_page_of_this_pdf_file.rb +310 -0
  82. data/lib/pdf_paradise/utility_scripts/extract_pdf_page.rb +280 -0
  83. data/lib/pdf_paradise/utility_scripts/pdf_optimizer.rb +113 -0
  84. data/lib/pdf_paradise/utility_scripts/pdf_statistics.rb +150 -0
  85. data/lib/pdf_paradise/utility_scripts/remove_images.rb +110 -0
  86. data/lib/pdf_paradise/utility_scripts/split_pdf.rb +294 -0
  87. data/lib/pdf_paradise/utility_scripts/to_qdf.rb +82 -0
  88. data/lib/pdf_paradise/version/version.rb +19 -0
  89. data/lib/pdf_paradise/www/README.md +2 -0
  90. data/lib/pdf_paradise/www/sinatra/app.rb +276 -0
  91. data/pdf_paradise.gemspec +64 -0
  92. data/test/testing_pdf_paradise.rb +9 -0
  93. metadata +216 -0
@@ -0,0 +1,17 @@
1
+ button {
2
+ border: 2px solid black;
3
+ }
4
+
5
+ .BG_yellow {
6
+ background-color: yellow;
7
+ }
8
+
9
+ .BG_floralwhite {
10
+ background-color: floralwhite;
11
+ }
12
+
13
+ scrolledwindow {
14
+ border: 1px solid black;
15
+ padding: 4px;
16
+ margin: 4px;
17
+ }
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::DjvuToPdf
6
+ #
7
+ # Convert a .djvu file to a .pdf file. This functionality depends on
8
+ # bin/ddjvu from the ddjvulibre package.
9
+ #
10
+ # Usage example:
11
+ # PdfParadise::DjvuToPdf.new
12
+ # =========================================================================== #
13
+ # require 'pdf_paradise/djvu_to_pdf.rb'
14
+ # =========================================================================== #
15
+ require 'pdf_paradise/base/base.rb'
16
+
17
+ module PdfParadise
18
+
19
+ class DjvuToPdf < Base # === PdfParadise::DjvuToPdf
20
+
21
+ # ========================================================================= #
22
+ # === initialize
23
+ # ========================================================================= #
24
+ def initialize(
25
+ commandline_arguments = nil,
26
+ run_already = true
27
+ )
28
+ reset
29
+ set_commandline_arguments(
30
+ commandline_arguments
31
+ )
32
+ run if run_already
33
+ end
34
+
35
+ # ========================================================================= #
36
+ # === reset (reset tag)
37
+ # ========================================================================= #
38
+ def reset
39
+ super()
40
+ end
41
+
42
+ # ========================================================================= #
43
+ # === set_input
44
+ # ========================================================================= #
45
+ def set_commandline_arguments(i = '')
46
+ i = [i].flatten.compact
47
+ @commandline_arguments = i
48
+ end
49
+
50
+ # ========================================================================= #
51
+ # === commandline_arguments?
52
+ # ========================================================================= #
53
+ def commandline_arguments?
54
+ @commandline_arguments
55
+ end
56
+
57
+ # ========================================================================= #
58
+ # === first_argument?
59
+ # ========================================================================= #
60
+ def first_argument?
61
+ @commandline_arguments.first
62
+ end
63
+
64
+ # ========================================================================= #
65
+ # === run (run tag)
66
+ # ========================================================================= #
67
+ def run
68
+ first = first_argument?
69
+ cmd = 'ddjvu -format=pdf -quality=85 -verbose '+first+' '+
70
+ first.sub(/#{File.extname(first)}$/, '')+'.pdf'
71
+ esystem cmd
72
+ end
73
+
74
+ # ========================================================================= #
75
+ # === PdfParadise::DjvuToPdf[]
76
+ # ========================================================================= #
77
+ def self.[](i = '')
78
+ self.new(i)
79
+ end
80
+
81
+ end; end
82
+
83
+ if __FILE__ == $PROGRAM_NAME
84
+ PdfParadise::DjvuToPdf.new(ARGV)
85
+ end # djvu_to_pdf
@@ -0,0 +1,6 @@
1
+ This directory will contain code that can be used for various GUI
2
+ bindings, in particular ruby-gtk2 bindings.
3
+
4
+ There will probably be only a very few GUIs, though.
5
+
6
+ The directory fox/ refers to the fxruby bindings to the FOX toolkit.
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::Gtk::SplitPdfFile
6
+ #
7
+ # This is a simple fox-GUI wrapper over the split-pdf functionality
8
+ # of the PdfParadise project.
9
+ #
10
+ # In FOX we can use FXHorizontalFrame for horizontal alignment and
11
+ # FXVerticalFrame for vertical alignment.
12
+ # =========================================================================== #
13
+ # require 'pdf_paradise/gui/fox/split_pdf_file.rb'
14
+ # =========================================================================== #
15
+ require 'pdf_paradise'
16
+ require 'fox16'
17
+
18
+ module PdfParadise
19
+
20
+ module FOX
21
+
22
+ class SplitPdfFile < Fox::FXMainWindow # === PdfParadise::FOX::SplitPdfFile
23
+
24
+ alias e puts
25
+
26
+ # ========================================================================= #
27
+ # === initialize
28
+ # ========================================================================= #
29
+ def initialize(i)
30
+ super(
31
+ i,
32
+ 'Split Pdf',
33
+ width: 500, height: 250
34
+ )
35
+ # ======================================================================= #
36
+ # Separator
37
+ # ======================================================================= #
38
+ Fox::FXVerticalSeparator.new(self,
39
+ Fox::LAYOUT_SIDE_RIGHT|Fox::LAYOUT_FILL_Y|Fox::SEPARATOR_GROOVE)
40
+ statusbar = Fox::FXStatusBar.new(self,
41
+ Fox::LAYOUT_SIDE_BOTTOM|Fox::LAYOUT_FILL_X|Fox::STATUSBAR_WITH_DRAGCORNER
42
+ )
43
+ buttons = Fox::FXHorizontalFrame.new(self, Fox::LAYOUT_SIDE_BOTTOM|Fox::LAYOUT_FILL_X|Fox::PACK_UNIFORM_WIDTH)
44
+ button2 = Fox::FXButton.new(buttons, 'Input the 1')
45
+ button2.connect(Fox::SEL_COMMAND) {|sender, selector, event|
46
+ e 'HMM'
47
+ }
48
+ button3 = Fox::FXButton.new(buttons, '2')
49
+ button4 = Fox::FXButton.new(buttons, '3')
50
+ end
51
+
52
+ # ========================================================================= #
53
+ # === create
54
+ # ========================================================================= #
55
+ def create
56
+ super
57
+ show(Fox::PLACEMENT_SCREEN)
58
+ end
59
+
60
+ end; end
61
+
62
+ # =========================================================================== #
63
+ # === PdfParadise.start_fox_gui
64
+ # =========================================================================== #
65
+ def self.start_fox_gui
66
+ Fox::FXApp.new { |app|
67
+ PdfParadise::FOX::SplitPdfFile.new(app)
68
+ app.create
69
+ app.run
70
+ }
71
+ end
72
+
73
+ end
74
+
75
+ if __FILE__ == $PROGRAM_NAME
76
+ PdfParadise.start_fox_gui
77
+ end # start_fox_gui
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::GUI::Gtk::DeleteTheFirstOrTheLastPageOfThisPdfFile
6
+ #
7
+ # This is a simple gtk-GUI wrapper over the remove-first-page and the
8
+ # remove-last-page functionality of the PdfParadise project. The
9
+ # main box is a VBox (vertical box).
10
+ # =========================================================================== #
11
+ # require 'pdf_paradise/gui/gtk2/remove_first_page_of_pdf_file.rb'
12
+ # PdfParadise.return_widget_remove_first_page_of_pdf_file
13
+ # PdfParadise.start_gtk_gui_remove_first_page_of_pdf_file
14
+ # =========================================================================== #
15
+ require 'gtk_paradise/require_gtk2'
16
+
17
+ module PdfParadise
18
+
19
+ module GUI
20
+
21
+ module Gtk
22
+
23
+ class DeleteTheFirstOrTheLastPageOfThisPdfFile < ::Gtk::VBox # === PdfParadise::GUI::Gtk::DeleteTheFirstOrTheLastPageOfThisPdfFile
24
+
25
+ require 'pdf_paradise/gui/shared_code/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file_module.rb'
26
+ include ::PdfParadise::GUI::Gtk::DeleteTheFirstOrTheLastPageOfThisPdfFileModule
27
+
28
+ # ========================================================================= #
29
+ # === PdfParadise::GUI::Gtk::DeleteTheFirstOrTheLastPageOfThisPdfFile.run
30
+ # ========================================================================= #
31
+ def self.run
32
+ ::PdfParadise::GUI::Gtk::DeleteTheFirstOrTheLastPageOfThisPdfFileModule.run
33
+ end
34
+
35
+ end; end; end; end
36
+
37
+ if __FILE__ == $PROGRAM_NAME
38
+ PdfParadise.start_gtk_gui_remove_first_page_of_pdf_file
39
+ end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::GUI::Gtk::PdfViewer
6
+ # =========================================================================== #
7
+ # require 'pdf_paradise/gui/gtk2/pdf_viewer/pdf_viewer.rb'
8
+ # PdfParadise::GUI::Gtk::PdfViewer.run
9
+ # =========================================================================== #
10
+ require 'gtk_paradise/require_gtk2'
11
+
12
+ module PdfParadise
13
+
14
+ module GUI
15
+
16
+ module Gtk
17
+
18
+ class PdfViewer < ::Gtk::VBox
19
+
20
+ require 'pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb'
21
+ include ::PdfParadise::GUI::Gtk::PdfViewerModule
22
+
23
+ # ========================================================================= #
24
+ # === PdfParadise::GUI::Gtk::PdfViewer.run
25
+ # ========================================================================= #
26
+ def self.run
27
+ ::PdfParadise::GUI::Gtk::PdfViewerModule.run
28
+ end
29
+
30
+ end; end; end; end
31
+
32
+ if __FILE__ == $PROGRAM_NAME
33
+ PdfParadise::GUI::Gtk::PdfViewer.run
34
+ end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::GUI::Gtk::SplitPdfFile
6
+ # =========================================================================== #
7
+ # require 'pdf_paradise/gui/gtk2/split_pdf_file/split_pdf_file.rb'
8
+ # PdfParadise::GUI::Gtk::SplitPdfFile.run
9
+ # =========================================================================== #
10
+ require 'gtk_paradise/require_gtk2'
11
+
12
+ module PdfParadise
13
+
14
+ module GUI
15
+
16
+ module Gtk
17
+
18
+ class SplitPdfFile < ::Gtk::VBox
19
+
20
+ require 'pdf_paradise/gui/shared_code/split_pdf_file/split_pdf_file_module.rb'
21
+ include ::PdfParadise::GUI::Gtk::SplitPdfFileModule
22
+
23
+ # ========================================================================= #
24
+ # === PdfParadise::GUI::Gtk::SplitPdfFile.run
25
+ # ========================================================================= #
26
+ def self.run
27
+ ::PdfParadise::GUI::Gtk::SplitPdfFileModule.run
28
+ end
29
+
30
+ end; end; end; end
31
+
32
+ if __FILE__ == $PROGRAM_NAME
33
+ PdfParadise::GUI::Gtk::SplitPdfFile.run
34
+ end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::GUI::Gtk::StatisticsWidget
6
+ # =========================================================================== #
7
+ # require 'pdf_paradise/gui/gtk2/statistics_widget/statistics_widget.rb'
8
+ # PdfParadise.return_widget_about_this_pdf_file
9
+ # =========================================================================== #
10
+ require 'gtk_paradise/require_gtk2.rb'
11
+
12
+ module PdfParadise
13
+
14
+ module GUI
15
+
16
+ module Gtk
17
+
18
+ class StatisticsWidget < ::Gtk::VBox # === PdfParadise::GUI::Gtk::StatisticsWidget
19
+
20
+ require 'pdf_paradise/gui/shared_code/statistics_widget/statistics_widget_module.rb'
21
+ include ::PdfParadise::GUI::Gtk::StatisticsWidgetModule
22
+
23
+ # ========================================================================= #
24
+ # === PdfParadise::GUI::Gtk::StatisticsWidget.run
25
+ # ========================================================================= #
26
+ def self.run
27
+ ::PdfParadise::GUI::Gtk::StatisticsWidgetModule.run
28
+ end
29
+
30
+ end; end; end; end
31
+
32
+ if __FILE__ == $PROGRAM_NAME
33
+ PdfParadise.start_gtk_gui_statistics_widget
34
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'pdf_paradise/toplevel_methods/to_pdf.rb'
6
+ # PdfParadise::Gtk::ToPdf
7
+ # =========================================================================== #
8
+ require 'gtk_paradise/require_gtk2'
9
+
10
+ module PdfParadise
11
+
12
+ module GUI
13
+
14
+ module Gtk
15
+
16
+ class ToPdf < ::Gtk::VBox # === PdfParadise::Gtk::ToPdf
17
+
18
+ require 'pdf_paradise/gui/shared_code/to_pdf/to_pdf_module.rb'
19
+ include ::PdfParadise::GUI::Gtk::ToPdfModule
20
+
21
+ # ========================================================================= #
22
+ # === PdfParadise::GUI::Gtk::ToPdf.run
23
+ # ========================================================================= #
24
+ def self.run
25
+ ::PdfParadise::GUI::Gtk::ToPdfModule.run
26
+ end
27
+
28
+ end; end; end; end
29
+
30
+ if __FILE__ == $PROGRAM_NAME
31
+ PdfParadise::GUI::Gtk::ToPdf.run
32
+ end
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::GUI::Gtk::Controller
6
+ #
7
+ # This widget simply aggregates the other ruby-gtk widgets that are part
8
+ # of the pdf-paradise project.
9
+ # =========================================================================== #
10
+ # require 'pdf_paradise/gui/gtk3/controller/controller.rb'
11
+ # PdfParadise::GUI::Gtk::Controller.run
12
+ # =========================================================================== #
13
+ require 'gtk_paradise/require_gtk3'
14
+
15
+ module PdfParadise
16
+
17
+ module GUI
18
+
19
+ module Gtk
20
+
21
+ class Controller < ::Gtk::Box # === PdfParadise::GUI::Gtk::Controller
22
+
23
+ require 'gtk_paradise/requires/require_the_base_module.rb'
24
+ include ::Gtk::BaseModule
25
+
26
+ # ========================================================================= #
27
+ # === NAMESPACE
28
+ # ========================================================================= #
29
+ NAMESPACE = inspect
30
+
31
+ # ========================================================================= #
32
+ # === TITLE
33
+ # ========================================================================= #
34
+ TITLE = '.pdf-related actions'
35
+
36
+ # ========================================================================= #
37
+ # === WIDTH
38
+ # ========================================================================= #
39
+ WIDTH = 1400
40
+
41
+ # ========================================================================= #
42
+ # === HEIGHT
43
+ # ========================================================================= #
44
+ HEIGHT = 1000
45
+
46
+ # ========================================================================= #
47
+ # === USE_THIS_FONT
48
+ # ========================================================================= #
49
+ USE_THIS_FONT = :dejavu_condensed_22
50
+
51
+ # ========================================================================= #
52
+ # === initialize
53
+ # ========================================================================= #
54
+ def initialize(
55
+ commandline_arguments = ARGV,
56
+ run_already = true
57
+ )
58
+ super(:horizontal)
59
+ reset
60
+ set_commandline_arguments(
61
+ commandline_arguments
62
+ )
63
+ run if run_already
64
+ end
65
+
66
+ # ========================================================================= #
67
+ # === reset (reset tag)
68
+ # ========================================================================= #
69
+ def reset
70
+ reset_the_internal_variables
71
+ # ======================================================================= #
72
+ # === @configuration
73
+ # ======================================================================= #
74
+ @configuration = [true, __dir__, NAMESPACE]
75
+ # ======================================================================= #
76
+ # === @title
77
+ # ======================================================================= #
78
+ @title = TITLE
79
+ # ======================================================================= #
80
+ # === @width
81
+ # ======================================================================= #
82
+ @width = WIDTH
83
+ # ======================================================================= #
84
+ # === @height
85
+ # ======================================================================= #
86
+ @height = HEIGHT
87
+ set_use_this_font(USE_THIS_FONT)
88
+ use_gtk_paradise_project_css_file # or use use_project_css_file
89
+ infer_the_size_automatically
90
+ end
91
+
92
+ # ========================================================================= #
93
+ # === padding?
94
+ # ========================================================================= #
95
+ def padding?
96
+ 0
97
+ end
98
+
99
+ # ========================================================================= #
100
+ # === border_size?
101
+ # ========================================================================= #
102
+ def border_size?
103
+ 0
104
+ end
105
+
106
+ require 'pdf_paradise/gui/gtk3/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file.rb'
107
+ require 'pdf_paradise/gui/gtk3/split_pdf_file/split_pdf_file.rb'
108
+ require 'pdf_paradise/gui/gtk3/statistics_widget/statistics_widget.rb'
109
+ require 'pdf_paradise/gui/gtk3/pdf_viewer/pdf_viewer.rb'
110
+ require 'pdf_paradise/gui/gtk3/to_pdf/to_pdf.rb'
111
+
112
+ # ========================================================================= #
113
+ # === create_skeleton (create tag)
114
+ # ========================================================================= #
115
+ def create_skeleton
116
+ @notebook = gtk_notebook
117
+ # ======================================================================= #
118
+ # === 01
119
+ #
120
+ # Add the first tab.
121
+ # ======================================================================= #
122
+ tab_title = 'Statistics Widget'
123
+ @notebook.add_tab(
124
+ PdfParadise::GUI::Gtk::StatisticsWidget.new, title: tab_title
125
+ )
126
+ # ======================================================================= #
127
+ # === 02
128
+ #
129
+ # Add the second tab.
130
+ # ======================================================================= #
131
+ tab_title = 'Remove the first page of a .pdf file'
132
+ @notebook.add_tab(
133
+ ::PdfParadise.return_widget_remove_first_page_of_pdf_file,
134
+ title: tab_title
135
+ )
136
+ # ======================================================================= #
137
+ # === 03
138
+ # ======================================================================= #
139
+ tab_title = 'convert to .pdf'
140
+ @notebook.add_tab(
141
+ ::PdfParadise::GUI::Gtk::ToPdf.new,
142
+ title: tab_title
143
+ )
144
+ # ======================================================================= #
145
+ # === 04
146
+ #
147
+ # Add the fourth tab, for the split-pdf functionality.
148
+ # ======================================================================= #
149
+ tab_title = 'Split .pdf files'
150
+ @notebook.add_tab(
151
+ PdfParadise::GUI::Gtk::SplitPdfFile.new, title: tab_title
152
+ )
153
+ # ======================================================================= #
154
+ # === 05
155
+ # ======================================================================= #
156
+ tab_title = 'pdf-viewer'
157
+ @notebook.add_tab(
158
+ PdfParadise::GUI::Gtk::PdfViewer.new, title: tab_title
159
+ )
160
+ end
161
+
162
+ # ========================================================================= #
163
+ # === connect_skeleton (connect tag)
164
+ # ========================================================================= #
165
+ def connect_skeleton
166
+ abort_on_exception
167
+ minimal(
168
+ @notebook
169
+ )
170
+ end
171
+
172
+ # ========================================================================= #
173
+ # === run (run tag)
174
+ # ========================================================================= #
175
+ def run
176
+ create_skeleton_then_connect_skeleton
177
+ end
178
+
179
+ # ========================================================================= #
180
+ # === PdfParadise::GUI::Gtk::Controller.run
181
+ # ========================================================================= #
182
+ def self.run(
183
+ i = ARGV
184
+ )
185
+ require 'gtk_paradise/run'
186
+ _ = ::PdfParadise::GUI::Gtk::Controller.new(i)
187
+ r = ::Gtk.run
188
+ r << _
189
+ r.automatic_size_then_automatic_title
190
+ r.top_left_then_run
191
+ end
192
+
193
+ end; end; end; end
194
+
195
+ if __FILE__ == $PROGRAM_NAME
196
+ PdfParadise::GUI::Gtk::Controller.run
197
+ end