backup_paradise 1.2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +375 -0
  3. data/backup_paradise.gemspec +50 -0
  4. data/bin/backup_for_ingrid +10 -0
  5. data/bin/backup_paradise +7 -0
  6. data/bin/windows_backup_paradise +9 -0
  7. data/doc/README.gen +347 -0
  8. data/doc/TODO.md +130 -0
  9. data/lib/backup_paradise/actions/README.md +2 -0
  10. data/lib/backup_paradise/actions/backup.rb +62 -0
  11. data/lib/backup_paradise/base/base.rb +493 -0
  12. data/lib/backup_paradise/base/colours.rb +137 -0
  13. data/lib/backup_paradise/base/namespace.rb +16 -0
  14. data/lib/backup_paradise/base/tab.rb +47 -0
  15. data/lib/backup_paradise/colours/colours.rb +88 -0
  16. data/lib/backup_paradise/constants/constants.rb +162 -0
  17. data/lib/backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb +87 -0
  18. data/lib/backup_paradise/gui/gtk2/OLD_backup.rb +222 -0
  19. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/create.rb +64 -0
  20. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/misc.rb +34 -0
  21. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/simple_backup_widget.rb +167 -0
  22. data/lib/backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb +99 -0
  23. data/lib/backup_paradise/gui/libui/simple_backup_widget/simple_backup_widget.rb +119 -0
  24. data/lib/backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb +595 -0
  25. data/lib/backup_paradise/gui/tk/backup.rb +108 -0
  26. data/lib/backup_paradise/images/BACKUP_IMAGE.png +0 -0
  27. data/lib/backup_paradise/images/right_arrow.png +0 -0
  28. data/lib/backup_paradise/project/project.rb +40 -0
  29. data/lib/backup_paradise/requires/require_the_backup_paradise_project.rb +18 -0
  30. data/lib/backup_paradise/requires/require_yaml.rb +7 -0
  31. data/lib/backup_paradise/tab/tab.rb +87 -0
  32. data/lib/backup_paradise/toplevel_methods/cliner.rb +16 -0
  33. data/lib/backup_paradise/toplevel_methods/config.rb +77 -0
  34. data/lib/backup_paradise/toplevel_methods/create_and_remove.rb +63 -0
  35. data/lib/backup_paradise/toplevel_methods/e.rb +16 -0
  36. data/lib/backup_paradise/toplevel_methods/esystem.rb +19 -0
  37. data/lib/backup_paradise/toplevel_methods/files_and_directories.rb +181 -0
  38. data/lib/backup_paradise/toplevel_methods/help.rb +93 -0
  39. data/lib/backup_paradise/toplevel_methods/misc.rb +153 -0
  40. data/lib/backup_paradise/toplevel_methods/mountpoint.rb +185 -0
  41. data/lib/backup_paradise/toplevel_methods/opnn.rb +25 -0
  42. data/lib/backup_paradise/utility_scripts/backup/backup.rb +1389 -0
  43. data/lib/backup_paradise/utility_scripts/backup/constants.rb +34 -0
  44. data/lib/backup_paradise/utility_scripts/backup/initialize.rb +71 -0
  45. data/lib/backup_paradise/utility_scripts/backup/menu.rb +360 -0
  46. data/lib/backup_paradise/utility_scripts/backup/run.rb +20 -0
  47. data/lib/backup_paradise/version/version.rb +19 -0
  48. data/lib/backup_paradise/windows/README.md +1 -0
  49. data/lib/backup_paradise/windows/windows.rb +101 -0
  50. data/lib/backup_paradise/www/backup.cgi +63 -0
  51. data/lib/backup_paradise/yaml/config.yml +78 -0
  52. data/lib/backup_paradise.rb +5 -0
  53. data/test/testing_toplevel_functionality.rb +11 -0
  54. metadata +198 -0
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/colours/colours.rb'
6
+ # =========================================================================== #
7
+ module BackupParadise
8
+
9
+ begin
10
+ require 'colours'
11
+ rescue LoadError; end
12
+
13
+ # ========================================================================= #
14
+ # === use_colours
15
+ # ========================================================================= #
16
+ @use_colours = true
17
+
18
+ # ========================================================================= #
19
+ # === BackupParadise.use_colours?
20
+ # ========================================================================= #
21
+ def self.use_colours?
22
+ @use_colours
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === BackupParadise.use_colours=
27
+ # ========================================================================= #
28
+ def self.use_colours=(i)
29
+ @use_colours = i
30
+ end
31
+
32
+ # ========================================================================= #
33
+ # === BackupParadise.sfancy
34
+ # ========================================================================= #
35
+ def self.sfancy(i = '')
36
+ return Colours.sfancy(i) if @use_colours
37
+ i
38
+ end
39
+
40
+ # ========================================================================= #
41
+ # === BackupParadise.sdir
42
+ # ========================================================================= #
43
+ def self.sdir(i = '')
44
+ return Colours.sdir(i) if @use_colours
45
+ i
46
+ end
47
+
48
+ # ========================================================================= #
49
+ # === BackupParadise.sfile
50
+ # ========================================================================= #
51
+ def self.sfile(i = '')
52
+ return Colours.sfile(i) if @use_colours
53
+ i
54
+ end
55
+
56
+ # ========================================================================= #
57
+ # === BackupParadise.simp
58
+ # ========================================================================= #
59
+ def self.simp(i = '')
60
+ return Colours.simp(i) if @use_colours
61
+ i
62
+ end
63
+
64
+ # ========================================================================= #
65
+ # === BackupParadise.royalblue
66
+ # ========================================================================= #
67
+ def self.royalblue(i = '')
68
+ return Colours.royalblue(i) if @use_colours
69
+ i
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === BackupParadise.tomato
74
+ # ========================================================================= #
75
+ def self.tomato(i = '')
76
+ return Colours.tomato(i) if @use_colours
77
+ i
78
+ end
79
+
80
+ # ========================================================================= #
81
+ # === BackupParadise.steelblue
82
+ # ========================================================================= #
83
+ def self.steelblue(i = '')
84
+ return Colours.steelblue(i) if @use_colours
85
+ i
86
+ end
87
+
88
+ end
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/constants/constants.rb'
6
+ # =========================================================================== #
7
+ module BackupParadise
8
+
9
+ # ========================================================================= #
10
+ # === NAMESPACE
11
+ # ========================================================================= #
12
+ NAMESPACE = inspect
13
+
14
+ # ========================================================================= #
15
+ # === N
16
+ # ========================================================================= #
17
+ N = "\n"
18
+
19
+ # ========================================================================= #
20
+ # === AUTOGENERATED_DIRECTORY
21
+ # ========================================================================= #
22
+ AUTOGENERATED_DIRECTORY = '/AUTOGENERATED/'
23
+
24
+ # ========================================================================= #
25
+ # === USB1
26
+ # ========================================================================= #
27
+ USB1 = '/dev/sda1'
28
+
29
+ # ========================================================================= #
30
+ # === USB2
31
+ # ========================================================================= #
32
+ USB2 = '/dev/sdb1'
33
+
34
+ # ========================================================================= #
35
+ # === USB3
36
+ # ========================================================================= #
37
+ USB3 = '/dev/sdc1'
38
+
39
+ # ========================================================================= #
40
+ # === USB4
41
+ # ========================================================================= #
42
+ USB4 = '/dev/sdd1'
43
+
44
+ # ========================================================================= #
45
+ # === USB5
46
+ # ========================================================================= #
47
+ USB5 = '/dev/sde1'
48
+
49
+ # ========================================================================= #
50
+ # === USB6
51
+ # ========================================================================= #
52
+ USB6 = '/dev/sdf1'
53
+
54
+ # ========================================================================= #
55
+ # === USB7
56
+ # ========================================================================= #
57
+ USB7 = '/dev/sdg1'
58
+
59
+ # ========================================================================= #
60
+ # === USB8
61
+ # ========================================================================= #
62
+ USB8 = '/dev/sdh1'
63
+
64
+ # ========================================================================= #
65
+ # === DEFAULT_MODE
66
+ #
67
+ # Which mode we will use for newly-created directories and files.
68
+ # ========================================================================= #
69
+ DEFAULT_MODE = 0755
70
+
71
+ # ========================================================================= #
72
+ # === HOME_DIRECTORY_OF_THE_USER_X
73
+ # ========================================================================= #
74
+ HOME_DIRECTORY_OF_THE_USER_X = '/home/x/'
75
+
76
+ # ========================================================================= #
77
+ # === STUDIUM_DIRECTORY
78
+ # ========================================================================= #
79
+ if ENV['STUDIUM_DIRECTORY']
80
+ STUDIUM_DIRECTORY = "#{ENV['STUDIUM_DIRECTORY']}/"
81
+ else # else hardcode it.
82
+ STUDIUM_DIRECTORY = "#{HOME_DIRECTORY_OF_THE_USER_X}studium/"
83
+ end; STUDIUM_DIR = STUDIUM_DIRECTORY # === STUDIUM_DIR
84
+
85
+ # ========================================================================= #
86
+ # === DATA_DIR
87
+ #
88
+ # Determine DATA_DIR constant here.
89
+ # ========================================================================= #
90
+ if ENV['MY_DATA']
91
+ DATA_DIR = "#{ENV['MY_DATA']}/"
92
+ else
93
+ DATA_DIR = "#{HOME_DIRECTORY_OF_THE_USER_X}DATA/"
94
+ end; DATA_DIRECTORY = DATA_DIR # === DATA_DIRECTORY
95
+
96
+ # ========================================================================= #
97
+ # === AUDIO_DIR
98
+ #
99
+ # Either we will simply use an environment variable; or we will use a
100
+ # hardcoded path.
101
+ # ========================================================================= #
102
+ if ENV['AUDIO_DIRECTORY'] and File.directory?(ENV['AUDIO_DIRECTORY'])
103
+ AUDIO_DIR = "#{ENV['AUDIO_DIRECTORY']}/"
104
+ else
105
+ AUDIO_DIR = "#{HOME_DIRECTORY_OF_THE_USER_X}songs/"
106
+ end; AUDIO_DIRECTORY = AUDIO_DIR # === AUDIO_DIRECTORY
107
+
108
+ # ========================================================================= #
109
+ # === DIRECTORY_CONTAINING_ALL_SONGS
110
+ # ========================================================================= #
111
+ DIRECTORY_CONTAINING_ALL_SONGS = "#{HOME_DIRECTORY_OF_THE_USER_X}songs/"
112
+
113
+ # ========================================================================= #
114
+ # === VIDEO_DIRECTORY
115
+ # ========================================================================= #
116
+ VIDEO_DIRECTORY = "#{HOME_DIRECTORY_OF_THE_USER_X}video/"
117
+
118
+ # ========================================================================= #
119
+ # === SOURCE_DIRECTORY
120
+ # ========================================================================= #
121
+ if ENV.has_key? 'MY_SRC_DIR'
122
+ SOURCE_DIRECTORY = "#{ENV['MY_SRC_DIR']}/"
123
+ else
124
+ SOURCE_DIRECTORY = "#{HOME_DIRECTORY_OF_THE_USER_X}src/"
125
+ end; SRC_DIR = SOURCE_DIRECTORY # === SRC_DIR
126
+
127
+ # ========================================================================= #
128
+ # === PROGRAMS_DIRECTORY
129
+ # ========================================================================= #
130
+ if ENV.has_key? 'MY_PROGRAMS_DIR'
131
+ PROGRAMS_DIRECTORY = "#{ENV['MY_PROGRAMS_DIR']}/"
132
+ else
133
+ PROGRAMS_DIRECTORY = '/home/Programs/'
134
+ end; PROGRAMS_DIR = PROGRAMS_DIRECTORY # === PROGRAMS_DIR
135
+
136
+ # ========================================================================= #
137
+ # === SYSTEM_SETTINGS_DIRECTORY
138
+ # ========================================================================= #
139
+ SYSTEM_SETTINGS_DIRECTORY = ENV['SYS_SETTINGS'].to_s.dup
140
+ SYS_SETTINGS = SYSTEM_SETTINGS_DIRECTORY # === SYS_SETTINGS
141
+
142
+ # ========================================================================= #
143
+ # === DEPOT_DIRECTORY
144
+ #
145
+ # The Depot directory is determined here.
146
+ # ========================================================================= #
147
+ if ENV['DEPOT']
148
+ DEPOT_DIRECTORY = "#{ENV['DEPOT']}/"
149
+ else
150
+ DEPOT_DIRECTORY = '/Depot/Temp/'
151
+ end
152
+
153
+ # ========================================================================= #
154
+ # === BOOKS_DIRECTORY
155
+ # ========================================================================= #
156
+ if ENV['MY_BOOKS']
157
+ BOOKS_DIRECTORY = "#{ENV['MY_BOOKS'].dup}/"
158
+ else
159
+ BOOKS_DIRECTORY = "#{HOME_DIRECTORY_OF_THE_USER_X}books/"
160
+ end
161
+
162
+ end
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb'
6
+ # BackupParadise::GUI::LibUI::BackupForIngrid.new
7
+ # =========================================================================== #
8
+ require 'glimmer-dsl-libui'
9
+
10
+ alias e puts
11
+
12
+ require 'backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb'
13
+ include BackupParadise::GUI::SimpleBackupWidgetModule
14
+
15
+ include Glimmer
16
+
17
+ # =========================================================================== #
18
+ # === TITLE
19
+ # =========================================================================== #
20
+ TITLE = 'Backup Widget'
21
+
22
+ # =========================================================================== #
23
+ # === WIDTH
24
+ # =========================================================================== #
25
+ WIDTH = 600
26
+
27
+ # =========================================================================== #
28
+ # === HEIGHT
29
+ # =========================================================================== #
30
+ HEIGHT = 280
31
+
32
+ # =========================================================================== #
33
+ # === do_backup_the_main_directory
34
+ # =========================================================================== #
35
+ def do_backup_the_main_directory
36
+ msg_box(
37
+ 'Notification',
38
+ "Backup finished!"
39
+ )
40
+ end
41
+
42
+ this_image = BackupParadise.project_base_directory?+'images/BACKUP_IMAGE.png'
43
+
44
+ window('Simple backup', WIDTH, HEIGHT) {
45
+ margined true
46
+
47
+ vertical_box {
48
+ horizontal_separator { stretchy false }
49
+ form {
50
+ @first_name_entry = entry {
51
+ label 'First Name' # label property is available when control is nested under form
52
+ }
53
+ }
54
+ horizontal_separator { stretchy false }
55
+ area {
56
+ on_draw { |area_draw_params|
57
+ image(this_image, 32, 32)
58
+ }
59
+ }
60
+ horizontal_separator { stretchy false }
61
+ button('Backup') {
62
+ stretchy false
63
+ on_clicked {
64
+ do_backup_the_main_directory
65
+ }
66
+ }
67
+ horizontal_separator { stretchy false }
68
+ # The quit button comes next
69
+ button('Quit') {
70
+ stretchy false
71
+ on_clicked {
72
+ do_backup_the_main_directory
73
+ }
74
+ }
75
+
76
+ # Add the backup-button
77
+ button_backup_for_ingrid = button(
78
+ "Backup c:\\ingrid\\"
79
+ ) {
80
+ on_clicked {
81
+ backup_ingrid_directory
82
+ popup_message(window, 'Backup finished!')
83
+ }
84
+ }
85
+
86
+ }
87
+ }.show
@@ -0,0 +1,222 @@
1
+ module BackupParadise
2
+
3
+ module Gtk
4
+
5
+ class Backup < ::Gtk::Frame # === BackupParadise::Gtk::Backup
6
+
7
+ begin
8
+ require 'gtk_paradise/classes/gtk2/information_about_the_harddisc.rb'
9
+ rescue LoadError; end
10
+
11
+ # ========================================================================= #
12
+ # === ARRAY_PREDEFINED_DEVICES
13
+ # ========================================================================= #
14
+ ARRAY_PREDEFINED_DEVICES = [
15
+ ENV['USB1'],
16
+ ENV['USB2'],
17
+ ENV['USB3'],
18
+ ENV['USB4'],
19
+ ENV['USB5'],
20
+ ENV['FESTPLATTE1']
21
+ ]
22
+
23
+ # ========================================================================= #
24
+ # === initialize
25
+ # ========================================================================= #
26
+ def initialize
27
+ self.label_widget.set_markup %Q(
28
+ <span size="larger" weight="bold">💾 Backup Script</span>
29
+ )
30
+ set_width_request(REQUEST_THIS_WIDTH)
31
+ end
32
+
33
+ # ========================================================================= #
34
+ # === reset
35
+ # ========================================================================= #
36
+ def reset
37
+ # ======================================================================= #
38
+ # === @object_rbackup
39
+ # ======================================================================= #
40
+ @object_rbackup = BackupParadise::Backup.new(nil, :do_not_run_yet)
41
+ # ======================================================================= #
42
+ # === @object_hdd_info
43
+ # ======================================================================= #
44
+ @object_hdd_info = ::Gtk::InformationAboutTheHarddisc.new
45
+ end
46
+
47
+ # ========================================================================= #
48
+ # === scan_for_new_events
49
+ # ========================================================================= #
50
+ def scan_for_new_events(
51
+ n_seconds = 5
52
+ )
53
+ Thread.new {
54
+ e 'Scanning for new events ...'
55
+ synchronize_data
56
+ sleep n_seconds
57
+ }
58
+ end
59
+
60
+ # ========================================================================= #
61
+ # === create_fdisk_scrolled_window
62
+ #
63
+ # Will create the scrolled window which holds our fdisk information.
64
+ # ========================================================================= #
65
+ def create_fdisk_scrolled_window
66
+ @fdisk_result = update_fdisk
67
+ create_text_view
68
+ @scrolled_window = gtk_scrolled_window(@text_view)
69
+ @scrolled_window.set_policy(:always, :never)
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === create_text_view
74
+ # ========================================================================= #
75
+ def create_text_view
76
+ @text_buffer = gtk_text_buffer
77
+ @text_buffer.insert_at_cursor(@fdisk_result)
78
+ @text_view = gtk_text_view(@text_buffer)
79
+ @text_view.set_editable(true)
80
+ # @text_view.wrap_mode=3
81
+ end
82
+
83
+ # ========================================================================= #
84
+ # === update_fdisk
85
+ #
86
+ # Use this if you wanna get new fdisk information.
87
+ #
88
+ # Or use this:
89
+ #
90
+ # `fdisk -l`.gsub!(%r[^(!?/dev).*\n], '')
91
+ #
92
+ # ========================================================================= #
93
+ def update_fdisk
94
+ return `fdisk -l`.split("\n").delete_if { |line| line !~ /^\/dev/ }.join("\n")
95
+ end
96
+
97
+ # ========================================================================= #
98
+ # === create_gtk_buttons
99
+ # ========================================================================= #
100
+ def create_gtk_buttons
101
+ # ======================================================================= #
102
+ # === The backup-button
103
+ # ======================================================================= #
104
+ @button_backup = gtk_button('_Backup')
105
+
106
+ @button_backup.on_clicked {
107
+ @object_rbackup.set_dir_name() # first must set proper dir name.
108
+ # First one backup to hdd.
109
+ if @combo_box.active_text == ENV['FESTPLATTE1']
110
+ eimp ' => Doing Backup to '+ENV['FESTPLATTE1']
111
+ @object_rbackup.target_device = ENV['FESTPLATTE1']
112
+ @object_rbackup.backup_system(:tohdd)
113
+ else
114
+ @object_rbackup.information_startup_tasks
115
+ @object_rbackup.get_raw_info
116
+ @object_rbackup.scan_for_usb_entries
117
+ @object_rbackup.backup_system()
118
+ end
119
+ synchronize_data
120
+ }
121
+ end
122
+
123
+ # ========================================================================= #
124
+ # === init_hdd_image
125
+ #
126
+ # Init our hdd image. Copied from hdd_info.rb
127
+ # ========================================================================= #
128
+ def init_hdd_image
129
+ if @object_hdd_info.respond_to? :percentage_used
130
+ tmp = @object_hdd_info.percentage_used.to_i
131
+ else
132
+ tmp = 0
133
+ end
134
+ _tmp_path = ''
135
+ case tmp
136
+ when 0..1 then _tmp_path = 'HDD_EMPTY.png'
137
+ when 2..25 then _tmp_path = 'HDD_ONEFOURTH.png'
138
+ when 26..50 then _tmp_path = 'HDD_HALF.png'
139
+ when 51..75 then _tmp_path = 'HDD_THREEFOURTH.png'
140
+ when 76..89 then _tmp_path = 'HDD_THREEEIGHT.png'
141
+ else # else 90 oder mehr full
142
+ _tmp_path = 'HDD_FULL.png'
143
+ end
144
+ @hdd_image = gtk_image(ENV['IMG_STD']+'/'+_tmp_path)
145
+ @hdd_image.set_padding(3, 3)
146
+ @event_box = gtk_event_box(@hdd_image)
147
+ @event_box.signal_connect(:button_press_event) {
148
+ e 'Starting firefox in /'
149
+ open_in_browser('/')
150
+ }
151
+ return @event_box
152
+ end
153
+
154
+ # ========================================================================= #
155
+ # === synchronize_data
156
+ #
157
+ # Every button must invoke this method after doing its
158
+ # default task. Currently only updates the variable @fdisk_result
159
+ # ========================================================================= #
160
+ def synchronize_data
161
+ @fdisk_result = update_fdisk
162
+ end
163
+
164
+ def run
165
+ create_fdisk_scrolled_window
166
+ # ======================================================================= #
167
+ # Here are the different entries.
168
+ # ======================================================================= #
169
+ @combo_box = gtk_combo_box_entry
170
+ ARRAY_PREDEFINED_DEVICES.each { |val| @combo_box.append_text(val) }
171
+
172
+ create_gtk_buttons
173
+ scan_for_new_events(5)
174
+ @main_table.attach_defaults(@button_backup, 0, 1, 0, 1)
175
+ @main_table.attach_defaults(@combo_box, 1, 2, 0, 1)
176
+ @main_table.attach_defaults(@button_debug, 2, 3, 0, 1)
177
+
178
+ @main_table.attach_defaults(@button_quit, 0, 1, 1, 2)
179
+ @main_table.attach_defaults(init_hdd_image, 1, 2, 1, 2)
180
+ @main_table.attach_defaults(@scrolled_window, 2, 3, 1, 2)
181
+
182
+ @main_vbox = gtk_vbox
183
+ @main_vbox.maximal(@main_table, 0)
184
+ mini_hbox = gtk_hbox
185
+ @button_run_the_mount_command = gtk_button('Run → ')
186
+ @button_run_the_mount_command.lightgreen
187
+ @button_run_the_mount_command.fancy_tooltips = 'Clicking this '\
188
+ 'button will run <b>the command on the right hand side</b>.'
189
+ mini_hbox.minimal(@button_run_the_mount_command, 2)
190
+ mini_hbox.minimal(gtk_label('mount '), 2)
191
+ @dropdown_box_holding_all_dev_entries = gtk_dropdown(
192
+ %w(
193
+ /dev/sda1
194
+ /dev/sda2
195
+ /dev/sda3
196
+ /dev/sdb1
197
+ /dev/sdb2
198
+ /dev/sdb3
199
+ /dev/sdc1
200
+ /dev/sdc2
201
+ /dev/sdc3
202
+ )
203
+ )
204
+ @dropdown_box_holding_all_dev_entries.active = 2
205
+ mini_hbox.minimal(@dropdown_box_holding_all_dev_entries, 0)
206
+ mini_hbox.minimal(gtk_label(' onto '), 2)
207
+ dropdown_box_holding_the_mount_targets = gtk_dropdown(ARRAY_PREDEFINED_DEVICES)
208
+ dropdown_box_holding_the_mount_targets.active = 0
209
+ mini_hbox.minimal(dropdown_box_holding_the_mount_targets, 2)
210
+ @button_run_the_mount_command.on_clicked {
211
+ cmd = 'mount '+
212
+ @dropdown_box_holding_all_dev_entries.active_text.to_s+
213
+ ' '+
214
+ dropdown_box_holding_the_mount_targets.active_text.to_s
215
+ e
216
+ esystem cmd
217
+ e
218
+ }
219
+ @main_vbox.minimal(mini_hbox, 0)
220
+ end
221
+
222
+ end; end; end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/gui/gtk3/simple_backup_widget/create.rb'
6
+ # =========================================================================== #
7
+ module BackupParadise
8
+
9
+ module GUI
10
+
11
+ module Gtk
12
+
13
+ class SimpleBackupWidget < ::Gtk::Box # === BackupParadise::GUI::Gtk::SimpleBackupWidget
14
+
15
+ # ========================================================================= #
16
+ # === create_file_chooser_dialog_widget
17
+ # ========================================================================= #
18
+ def create_file_chooser_dialog_widget
19
+ @file_chooser_dialog = ::Gtk::FileChooserDialog.new(
20
+ self: self,
21
+ title: 'Choose a file or directory',
22
+ action: ::Gtk::FileChooserAction::OPEN,
23
+ buttons: [[::Gtk::Stock::OPEN, ::Gtk::ResponseType::ACCEPT],
24
+ [::Gtk::Stock::CANCEL, ::Gtk::ResponseType::CANCEL]]
25
+ )
26
+ # ======================================================================= #
27
+ # === /home/Temp
28
+ # ======================================================================= #
29
+ if File.directory? '/home/Temp/'
30
+ @file_chooser_dialog.add_shortcut_folder('/home/Temp/')
31
+ end
32
+ # ======================================================================= #
33
+ # === /home/x/data/
34
+ # ======================================================================= #
35
+ if File.directory? HOME_DIRECTORY_OF_THE_USER_X+'data/'
36
+ @file_chooser_dialog.add_shortcut_folder(HOME_DIRECTORY_OF_THE_USER_X+'data/')
37
+ end
38
+ # ======================================================================= #
39
+ # Add the audio-directory shortcut, defined in the yaml file.
40
+ # ======================================================================= #
41
+ if @dataset_from_the_config_file and
42
+ @dataset_from_the_config_file.has_key?('local_audio_directory')
43
+ @file_chooser_dialog.add_shortcut_folder(
44
+ @dataset_from_the_config_file['local_audio_directory'].to_s
45
+ )
46
+ end
47
+ @file_chooser_dialog.add_shortcut_folder('/Ingrid')
48
+ @file_chooser_dialog.current_folder = Dir.pwd
49
+ @file_chooser_dialog.do_show_hidden_files
50
+ # @file_chooser_dialog.destroy
51
+ end
52
+
53
+ # ========================================================================= #
54
+ # === create_skeleton (create tag)
55
+ # ========================================================================= #
56
+ def create_skeleton
57
+ create_the_label_showing_results
58
+ create_the_buttons
59
+ create_the_entries
60
+ create_the_combo_boxes
61
+ create_the_grid
62
+ end
63
+
64
+ end; end; end; end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/gui/gtk3/simple_backup_widget/misc.rb'
6
+ # =========================================================================== #
7
+ require 'gtk_paradise/require_gtk3'
8
+
9
+ module BackupParadise
10
+
11
+ module GUI
12
+
13
+ module Gtk
14
+
15
+ class SimpleBackupWidget < ::Gtk::Box # === BackupParadise::GUI::Gtk::SimpleBackupWidget
16
+
17
+ # ========================================================================= #
18
+ # === BackupParadise::GUI::Gtk::SimpleBackupWidget.run
19
+ # ========================================================================= #
20
+ def self.run(
21
+ i = ARGV
22
+ )
23
+ require 'gtk_paradise/run'
24
+ _ = ::BackupParadise::GUI::Gtk::SimpleBackupWidget.new(i)
25
+ _.set_border_width(2)
26
+ r = ::Gtk.run
27
+ r << _
28
+ r.automatic_size
29
+ r.automatic_title
30
+ r.set_title(_.title?)
31
+ r.top_left_then_run
32
+ end
33
+
34
+ end; end; end; end