backup_paradise 1.2.40

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

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 +390 -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 +1416 -0
  43. data/lib/backup_paradise/utility_scripts/backup/constants.rb +44 -0
  44. data/lib/backup_paradise/utility_scripts/backup/initialize.rb +71 -0
  45. data/lib/backup_paradise/utility_scripts/backup/menu.rb +361 -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