backup_paradise 1.3.1

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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +408 -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 +368 -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 +502 -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 +220 -0
  19. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/create.rb +70 -0
  20. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/misc.rb +33 -0
  21. data/lib/backup_paradise/gui/gtk3/simple_backup_widget/simple_backup_widget.rb +160 -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 +587 -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 +86 -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 +188 -0
  41. data/lib/backup_paradise/toplevel_methods/opnn.rb +27 -0
  42. data/lib/backup_paradise/utility_scripts/backup/backup.rb +1901 -0
  43. data/lib/backup_paradise/version/version.rb +19 -0
  44. data/lib/backup_paradise/windows/README.md +1 -0
  45. data/lib/backup_paradise/windows/windows.rb +101 -0
  46. data/lib/backup_paradise/www/backup.cgi +63 -0
  47. data/lib/backup_paradise/yaml/config.yml +82 -0
  48. data/lib/backup_paradise.rb +5 -0
  49. data/test/testing_toplevel_functionality.rb +11 -0
  50. metadata +194 -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
+ return i
38
+ end
39
+
40
+ # ========================================================================= #
41
+ # === BackupParadise.sdir
42
+ # ========================================================================= #
43
+ def self.sdir(i = '')
44
+ return Colours.sdir(i) if @use_colours
45
+ return i
46
+ end
47
+
48
+ # ========================================================================= #
49
+ # === BackupParadise.sfile
50
+ # ========================================================================= #
51
+ def self.sfile(i = '')
52
+ return Colours.sfile(i) if @use_colours
53
+ return i
54
+ end
55
+
56
+ # ========================================================================= #
57
+ # === BackupParadise.simp
58
+ # ========================================================================= #
59
+ def self.simp(i = '')
60
+ return Colours.simp(i) if @use_colours
61
+ return i
62
+ end
63
+
64
+ # ========================================================================= #
65
+ # === BackupParadise.royalblue
66
+ # ========================================================================= #
67
+ def self.royalblue(i = '')
68
+ return Colours.royalblue(i) if @use_colours
69
+ return i
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === BackupParadise.tomato
74
+ # ========================================================================= #
75
+ def self.tomato(i = '')
76
+ return Colours.tomato(i) if @use_colours
77
+ return i
78
+ end
79
+
80
+ # ========================================================================= #
81
+ # === BackupParadise.steelblue
82
+ # ========================================================================= #
83
+ def self.steelblue(i = '')
84
+ return Colours.steelblue(i) if @use_colours
85
+ return 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,220 @@
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 = create_scrolled_window(@text_view) { :always_never }
69
+ end
70
+
71
+ # ========================================================================= #
72
+ # === create_text_view
73
+ # ========================================================================= #
74
+ def create_text_view
75
+ @text_buffer = gtk_text_buffer
76
+ @text_buffer.insert_at_cursor(@fdisk_result)
77
+ @text_view = text_view(@text_buffer)
78
+ @text_view.set_editable(true)
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === update_fdisk
83
+ #
84
+ # Use this if you wanna get new fdisk information.
85
+ #
86
+ # Or use this:
87
+ #
88
+ # `fdisk -l`.gsub!(%r[^(!?/dev).*\n], '')
89
+ #
90
+ # ========================================================================= #
91
+ def update_fdisk
92
+ return `fdisk -l`.split("\n").delete_if { |line| line !~ /^\/dev/ }.join("\n")
93
+ end
94
+
95
+ # ========================================================================= #
96
+ # === create_gtk_buttons
97
+ # ========================================================================= #
98
+ def create_gtk_buttons
99
+ # ======================================================================= #
100
+ # === The backup-button
101
+ # ======================================================================= #
102
+ @button_backup = create_button('_Backup')
103
+
104
+ @button_backup.on_clicked {
105
+ @object_rbackup.set_dir_name() # first must set proper dir name.
106
+ # First one backup to hdd.
107
+ if @combo_box.active_text == ENV['FESTPLATTE1']
108
+ eimp ' => Doing Backup to '+ENV['FESTPLATTE1']
109
+ @object_rbackup.target_device = ENV['FESTPLATTE1']
110
+ @object_rbackup.backup_system(:tohdd)
111
+ else
112
+ @object_rbackup.information_startup_tasks
113
+ @object_rbackup.get_raw_info
114
+ @object_rbackup.scan_for_usb_entries
115
+ @object_rbackup.backup_system()
116
+ end
117
+ synchronize_data
118
+ }
119
+ end
120
+
121
+ # ========================================================================= #
122
+ # === init_hdd_image
123
+ #
124
+ # Init our hdd image. Copied from hdd_info.rb
125
+ # ========================================================================= #
126
+ def init_hdd_image
127
+ if @object_hdd_info.respond_to? :percentage_used
128
+ tmp = @object_hdd_info.percentage_used.to_i
129
+ else
130
+ tmp = 0
131
+ end
132
+ _tmp_path = ''
133
+ case tmp
134
+ when 0..1 then _tmp_path = 'HDD_EMPTY.png'
135
+ when 2..25 then _tmp_path = 'HDD_ONEFOURTH.png'
136
+ when 26..50 then _tmp_path = 'HDD_HALF.png'
137
+ when 51..75 then _tmp_path = 'HDD_THREEFOURTH.png'
138
+ when 76..89 then _tmp_path = 'HDD_THREEEIGHT.png'
139
+ else # else 90 oder mehr full
140
+ _tmp_path = 'HDD_FULL.png'
141
+ end
142
+ @hdd_image = create_image(ENV['IMG_STD']+'/'+_tmp_path)
143
+ @hdd_image.set_padding(3, 3)
144
+ @event_box = gtk_event_box(@hdd_image)
145
+ @event_box.signal_connect(:button_press_event) {
146
+ e 'Starting firefox in /'
147
+ open_in_browser('/')
148
+ }
149
+ return @event_box
150
+ end
151
+
152
+ # ========================================================================= #
153
+ # === synchronize_data
154
+ #
155
+ # Every button must invoke this method after doing its
156
+ # default task. Currently only updates the variable @fdisk_result
157
+ # ========================================================================= #
158
+ def synchronize_data
159
+ @fdisk_result = update_fdisk
160
+ end
161
+
162
+ def run
163
+ create_fdisk_scrolled_window
164
+ # ======================================================================= #
165
+ # Here are the different entries.
166
+ # ======================================================================= #
167
+ @combo_box = gtk_combo_box_entry
168
+ ARRAY_PREDEFINED_DEVICES.each { |val| @combo_box.append_text(val) }
169
+
170
+ create_gtk_buttons
171
+ scan_for_new_events(5)
172
+ @main_table.attach_defaults(@button_backup, 0, 1, 0, 1)
173
+ @main_table.attach_defaults(@combo_box, 1, 2, 0, 1)
174
+ @main_table.attach_defaults(@button_debug, 2, 3, 0, 1)
175
+
176
+ @main_table.attach_defaults(@button_quit, 0, 1, 1, 2)
177
+ @main_table.attach_defaults(init_hdd_image, 1, 2, 1, 2)
178
+ @main_table.attach_defaults(@scrolled_window, 2, 3, 1, 2)
179
+
180
+ @main_vbox = gtk_vbox
181
+ @main_vbox.maximal(@main_table, 0)
182
+ mini_hbox = gtk_hbox
183
+ @button_run_the_mount_command = gtk_button('Run → ')
184
+ @button_run_the_mount_command.lightgreen
185
+ @button_run_the_mount_command.fancy_tooltips = 'Clicking this '\
186
+ 'button will run <b>the command on the right hand side</b>.'
187
+ mini_hbox.minimal(@button_run_the_mount_command, 2)
188
+ mini_hbox.minimal(gtk_label('mount '), 2)
189
+ @dropdown_box_holding_all_dev_entries = gtk_dropdown(
190
+ %w(
191
+ /dev/sda1
192
+ /dev/sda2
193
+ /dev/sda3
194
+ /dev/sdb1
195
+ /dev/sdb2
196
+ /dev/sdb3
197
+ /dev/sdc1
198
+ /dev/sdc2
199
+ /dev/sdc3
200
+ )
201
+ )
202
+ @dropdown_box_holding_all_dev_entries.active = 2
203
+ mini_hbox.minimal(@dropdown_box_holding_all_dev_entries, 0)
204
+ mini_hbox.minimal(gtk_label(' onto '), 2)
205
+ dropdown_box_holding_the_mount_targets = gtk_dropdown(ARRAY_PREDEFINED_DEVICES)
206
+ dropdown_box_holding_the_mount_targets.active = 0
207
+ mini_hbox.minimal(dropdown_box_holding_the_mount_targets, 2)
208
+ @button_run_the_mount_command.on_clicked {
209
+ cmd = 'mount '+
210
+ @dropdown_box_holding_all_dev_entries.active_text.to_s+
211
+ ' '+
212
+ dropdown_box_holding_the_mount_targets.active_text.to_s
213
+ e
214
+ esystem cmd
215
+ e
216
+ }
217
+ @main_vbox.minimal(mini_hbox, 0)
218
+ end
219
+
220
+ end; end; end
@@ -0,0 +1,70 @@
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/Temp
34
+ # ======================================================================= #
35
+ if File.directory? '/home/x/Temp/'
36
+ @file_chooser_dialog.add_shortcut_folder('/home/x/Temp/')
37
+ end
38
+ # ======================================================================= #
39
+ # === /home/x/data/
40
+ # ======================================================================= #
41
+ if File.directory? HOME_DIRECTORY_OF_THE_USER_X+'data/'
42
+ @file_chooser_dialog.add_shortcut_folder(HOME_DIRECTORY_OF_THE_USER_X+'data/')
43
+ end
44
+ # ======================================================================= #
45
+ # Add the audio-directory shortcut, defined in the yaml file.
46
+ # ======================================================================= #
47
+ if @dataset_from_the_config_file and
48
+ @dataset_from_the_config_file.has_key?('local_audio_directory')
49
+ @file_chooser_dialog.add_shortcut_folder(
50
+ @dataset_from_the_config_file['local_audio_directory'].to_s
51
+ )
52
+ end
53
+ @file_chooser_dialog.add_shortcut_folder('/Ingrid')
54
+ @file_chooser_dialog.current_folder = Dir.pwd
55
+ @file_chooser_dialog.do_show_hidden_files
56
+ # @file_chooser_dialog.destroy
57
+ end
58
+
59
+ # ========================================================================= #
60
+ # === create_skeleton (create tag)
61
+ # ========================================================================= #
62
+ def create_skeleton
63
+ create_the_label_showing_results
64
+ create_the_buttons
65
+ create_the_entries
66
+ create_the_combo_boxes
67
+ create_the_grid
68
+ end
69
+
70
+ end; end; end; end
@@ -0,0 +1,33 @@
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
29
+ r.set_title(_.title?)
30
+ r.top_left_then_run
31
+ end
32
+
33
+ end; end; end; end