backup_paradise 1.3.5

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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +452 -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 +390 -0
  8. data/doc/TODO.md +130 -0
  9. data/img/BackupParadise_Logo.png +0 -0
  10. data/lib/backup_paradise/actions/README.md +2 -0
  11. data/lib/backup_paradise/actions/backup.rb +62 -0
  12. data/lib/backup_paradise/base/base.rb +529 -0
  13. data/lib/backup_paradise/base/colours.rb +137 -0
  14. data/lib/backup_paradise/base/namespace.rb +16 -0
  15. data/lib/backup_paradise/base/tab.rb +47 -0
  16. data/lib/backup_paradise/colours/colours.rb +88 -0
  17. data/lib/backup_paradise/constants/constants.rb +162 -0
  18. data/lib/backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb +87 -0
  19. data/lib/backup_paradise/gui/gtk2/OLD_backup.rb +165 -0
  20. data/lib/backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb +99 -0
  21. data/lib/backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb +0 -0
  22. data/lib/backup_paradise/gui/tk/backup.rb +108 -0
  23. data/lib/backup_paradise/gui/universal_widgets/simple_backup_widget/simple_backup_widget.rb +921 -0
  24. data/lib/backup_paradise/images/BACKUP_IMAGE.png +0 -0
  25. data/lib/backup_paradise/images/right_arrow.png +0 -0
  26. data/lib/backup_paradise/project/project.rb +40 -0
  27. data/lib/backup_paradise/requires/require_the_backup_paradise_project.rb +18 -0
  28. data/lib/backup_paradise/requires/require_yaml.rb +7 -0
  29. data/lib/backup_paradise/tab/tab.rb +87 -0
  30. data/lib/backup_paradise/toplevel_methods/cliner.rb +16 -0
  31. data/lib/backup_paradise/toplevel_methods/config.rb +86 -0
  32. data/lib/backup_paradise/toplevel_methods/create_and_remove.rb +63 -0
  33. data/lib/backup_paradise/toplevel_methods/e.rb +16 -0
  34. data/lib/backup_paradise/toplevel_methods/esystem.rb +19 -0
  35. data/lib/backup_paradise/toplevel_methods/files_and_directories.rb +181 -0
  36. data/lib/backup_paradise/toplevel_methods/help.rb +93 -0
  37. data/lib/backup_paradise/toplevel_methods/misc.rb +153 -0
  38. data/lib/backup_paradise/toplevel_methods/mountpoint.rb +188 -0
  39. data/lib/backup_paradise/toplevel_methods/opnn.rb +27 -0
  40. data/lib/backup_paradise/utility_scripts/backup/backup.rb +1942 -0
  41. data/lib/backup_paradise/version/version.rb +19 -0
  42. data/lib/backup_paradise/windows/README.md +1 -0
  43. data/lib/backup_paradise/windows/windows.rb +101 -0
  44. data/lib/backup_paradise/www/backup.cgi +63 -0
  45. data/lib/backup_paradise/yaml/config.yml +82 -0
  46. data/lib/backup_paradise.rb +5 -0
  47. data/test/testing_toplevel_functionality.rb +11 -0
  48. metadata +192 -0
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'backup_paradise/base/tab.rb'
6
+ # =========================================================================== #
7
+ module BackupParadise
8
+
9
+ class Base
10
+
11
+ require 'backup_paradise/tab/tab.rb'
12
+ require 'backup_paradise/toplevel_methods/config.rb'
13
+
14
+ # ========================================================================= #
15
+ # === use_this_program_to_rename_tabs?
16
+ # ========================================================================= #
17
+ def use_this_program_to_rename_tabs?
18
+ BackupParadise.use_this_program_to_rename_tabs?
19
+ end
20
+
21
+ # ========================================================================= #
22
+ # === rename_tab
23
+ #
24
+ # This method can be used to rename the tab of e. g. mrxvt or KDE konsole.
25
+ # ========================================================================= #
26
+ def rename_tab(
27
+ use_this_terminal = use_this_program_to_rename_tabs?, # or :mrxvt
28
+ use_this_as_new_title = 'Hello world!'
29
+ )
30
+ BackupParadise::Tab.rename_tab(
31
+ use_this_terminal,
32
+ use_this_as_new_title
33
+ )
34
+ end
35
+
36
+ # ========================================================================= #
37
+ # === tab_title
38
+ #
39
+ # This is as above, but uses the default terminal.
40
+ # ========================================================================= #
41
+ def tab_title(
42
+ i = ''
43
+ )
44
+ rename_tab(use_this_program_to_rename_tabs?, i)
45
+ end
46
+
47
+ end; end
@@ -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/html_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,165 @@
1
+ module BackupParadise
2
+
3
+ module Gtk
4
+
5
+ class Backup < ::Gtk::Frame
6
+
7
+ # ========================================================================= #
8
+ # === scan_for_new_events
9
+ # ========================================================================= #
10
+ def scan_for_new_events(
11
+ n_seconds = 5
12
+ )
13
+ Thread.new {
14
+ e 'Scanning for new events ...'
15
+ synchronize_data
16
+ sleep n_seconds
17
+ }
18
+ end
19
+
20
+ # ========================================================================= #
21
+ # === create_fdisk_scrolled_window
22
+ #
23
+ # Will create the scrolled window which holds our fdisk information.
24
+ # ========================================================================= #
25
+ def create_fdisk_scrolled_window
26
+ @fdisk_result = update_fdisk
27
+ create_text_view
28
+ @scrolled_window = create_scrolled_window(@text_view) { :always_never }
29
+ end
30
+
31
+ # ========================================================================= #
32
+ # === create_text_view
33
+ # ========================================================================= #
34
+ def create_text_view
35
+ @text_buffer = create_text_buffer
36
+ @text_buffer.insert_at_cursor(@fdisk_result)
37
+ @text_view = text_view(@text_buffer)
38
+ @text_view.set_editable(true)
39
+ end
40
+
41
+ # ========================================================================= #
42
+ # === create_gtk_buttons
43
+ # ========================================================================= #
44
+ def create_gtk_buttons
45
+ # ======================================================================= #
46
+ # === The backup-button
47
+ # ======================================================================= #
48
+ @button_backup = create_button('_Backup')
49
+
50
+ @button_backup.on_clicked {
51
+ @object_rbackup.set_dir_name() # first must set proper dir name.
52
+ # First one backup to hdd.
53
+ if @combo_box.active_text == ENV['FESTPLATTE1']
54
+ eimp ' => Doing Backup to '+ENV['FESTPLATTE1']
55
+ @object_rbackup.target_device = ENV['FESTPLATTE1']
56
+ @object_rbackup.backup_system(:tohdd)
57
+ else
58
+ @object_rbackup.information_startup_tasks
59
+ @object_rbackup.get_raw_info
60
+ @object_rbackup.scan_for_usb_entries
61
+ @object_rbackup.backup_system()
62
+ end
63
+ synchronize_data
64
+ }
65
+ end
66
+
67
+ # ========================================================================= #
68
+ # === init_hdd_image
69
+ #
70
+ # Init our hdd image. Copied from hdd_info.rb
71
+ # ========================================================================= #
72
+ def init_hdd_image
73
+ if @object_hdd_info.respond_to? :percentage_used
74
+ tmp = @object_hdd_info.percentage_used.to_i
75
+ else
76
+ tmp = 0
77
+ end
78
+ _tmp_path = ''
79
+ case tmp
80
+ when 0..1 then _tmp_path = 'HDD_EMPTY.png'
81
+ when 2..25 then _tmp_path = 'HDD_ONEFOURTH.png'
82
+ when 26..50 then _tmp_path = 'HDD_HALF.png'
83
+ when 51..75 then _tmp_path = 'HDD_THREEFOURTH.png'
84
+ when 76..89 then _tmp_path = 'HDD_THREEEIGHT.png'
85
+ else # else 90 oder mehr full
86
+ _tmp_path = 'HDD_FULL.png'
87
+ end
88
+ @hdd_image = create_image(ENV['IMG_STD']+'/'+_tmp_path)
89
+ @hdd_image.set_padding(3, 3)
90
+ @event_box = create_event_box(@hdd_image)
91
+ @event_box.signal_connect(:button_press_event) {
92
+ e 'Starting firefox in /'
93
+ open_in_browser('/')
94
+ }
95
+ return @event_box
96
+ end
97
+
98
+ # ========================================================================= #
99
+ # === synchronize_data
100
+ #
101
+ # Every button must invoke this method after doing its
102
+ # default task. Currently only updates the variable @fdisk_result
103
+ # ========================================================================= #
104
+ def synchronize_data
105
+ @fdisk_result = update_fdisk
106
+ end
107
+
108
+ def run
109
+ create_fdisk_scrolled_window
110
+ # ======================================================================= #
111
+ # Here are the different entries.
112
+ # ======================================================================= #
113
+ @combo_box = create_combo_box_entry
114
+ ARRAY_PREDEFINED_DEVICES.each { |val| @combo_box.append_text(val) }
115
+
116
+ scan_for_new_events(5)
117
+ @main_table.attach_defaults(@button_backup, 0, 1, 0, 1)
118
+ @main_table.attach_defaults(@combo_box, 1, 2, 0, 1)
119
+ @main_table.attach_defaults(@button_debug, 2, 3, 0, 1)
120
+
121
+ @main_table.attach_defaults(@button_quit, 0, 1, 1, 2)
122
+ @main_table.attach_defaults(init_hdd_image, 1, 2, 1, 2)
123
+ @main_table.attach_defaults(@scrolled_window, 2, 3, 1, 2)
124
+
125
+ @main_vbox = gtk_vbox
126
+ @main_vbox.maximal(@main_table, 0)
127
+ mini_hbox = gtk_hbox
128
+ @button_run_the_mount_command = gtk_button('Run → ')
129
+ @button_run_the_mount_command.lightgreen
130
+ @button_run_the_mount_command.fancy_tooltips = 'Clicking this '\
131
+ 'button will run <b>the command on the right hand side</b>.'
132
+ mini_hbox.minimal(@button_run_the_mount_command, 2)
133
+ mini_hbox.minimal(gtk_label('mount '), 2)
134
+ @dropdown_box_holding_all_dev_entries = gtk_dropdown(
135
+ %w(
136
+ /dev/sda1
137
+ /dev/sda2
138
+ /dev/sda3
139
+ /dev/sdb1
140
+ /dev/sdb2
141
+ /dev/sdb3
142
+ /dev/sdc1
143
+ /dev/sdc2
144
+ /dev/sdc3
145
+ )
146
+ )
147
+ @dropdown_box_holding_all_dev_entries.active = 2
148
+ mini_hbox.minimal(@dropdown_box_holding_all_dev_entries, 0)
149
+ mini_hbox.minimal(gtk_label(' onto '), 2)
150
+ dropdown_box_holding_the_mount_targets = gtk_dropdown(ARRAY_PREDEFINED_DEVICES)
151
+ dropdown_box_holding_the_mount_targets.active = 0
152
+ mini_hbox.minimal(dropdown_box_holding_the_mount_targets, 2)
153
+ @button_run_the_mount_command.on_clicked {
154
+ cmd = 'mount '+
155
+ @dropdown_box_holding_all_dev_entries.active_text.to_s+
156
+ ' '+
157
+ dropdown_box_holding_the_mount_targets.active_text.to_s
158
+ e
159
+ esystem cmd
160
+ e
161
+ }
162
+ @main_vbox.minimal(mini_hbox, 0)
163
+ end
164
+
165
+ end; end; end
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === BackupParadise::GUI::LibUI::BackupForIngrid
6
+ # =========================================================================== #
7
+ # require 'backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb'
8
+ # BackupParadise::GUI::LibUI::BackupForIngrid.new
9
+ # =========================================================================== #
10
+ module BackupParadise
11
+
12
+ module GUI
13
+
14
+ module LibUI
15
+
16
+ class BackupForIngrid # === BackupParadise::GUI::LibUI::BackupForIngrid
17
+
18
+ require 'libui_paradise'
19
+ include LibuiParadise::Extensions
20
+
21
+ require 'backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb'
22
+ include BackupParadise::GUI::SimpleBackupWidgetModule
23
+
24
+ alias e puts
25
+
26
+ # ========================================================================= #
27
+ # === TITLE
28
+ # ========================================================================= #
29
+ TITLE = 'Backup Widget'
30
+
31
+ # ========================================================================= #
32
+ # === WIDTH
33
+ # ========================================================================= #
34
+ WIDTH = '25% or minimum 380px'
35
+
36
+ # ========================================================================= #
37
+ # === HEIGHT
38
+ # ========================================================================= #
39
+ HEIGHT = 100
40
+
41
+ # ========================================================================= #
42
+ # === initialize
43
+ # ========================================================================= #
44
+ def initialize(
45
+ run_already = true
46
+ )
47
+ reset
48
+ run if run_already
49
+ end
50
+
51
+ # ========================================================================= #
52
+ # === reset (reset tag)
53
+ # ========================================================================= #
54
+ def reset
55
+ set_title(TITLE)
56
+ set_width(WIDTH)
57
+ set_height(HEIGHT)
58
+ end
59
+
60
+ # ========================================================================= #
61
+ # === run
62
+ # ========================================================================= #
63
+ def run
64
+ window = ui_padded_main_window(title?, width?, height?, 0)
65
+ outer_vbox = padded_vbox
66
+ # ======================================================================= #
67
+ # First add the two buttons on top:
68
+ # ======================================================================= #
69
+ hbox_on_top = padded_hbox
70
+ button_backup_for_ingrid = button(
71
+ "Backup c:\\ingrid\\"
72
+ )
73
+ button_backup_for_ingrid.on_clicked {
74
+ backup_ingrid_directory
75
+ popup_message(window, 'Backup finished!')
76
+ }
77
+ button_quit = quit_button
78
+ # ======================================================================= #
79
+ # Add the backup-button next:
80
+ # ======================================================================= #
81
+ hbox_on_top.maximal(button_backup_for_ingrid)
82
+ outer_vbox.add_hsep
83
+ hbox_on_top.maximal(button_quit)
84
+ outer_vbox.add_hsep
85
+ outer_vbox.add(
86
+ LibuiParadise.draw_rectangle(width?, 50, :steelblue)
87
+ )
88
+ outer_vbox.add_hsep
89
+ outer_vbox.maximal(hbox_on_top)
90
+ outer_vbox.add_hsep
91
+ window.add(outer_vbox)
92
+ window.intelligent_exit
93
+ end
94
+
95
+ end; end; end; end
96
+
97
+ if __FILE__ == $PROGRAM_NAME
98
+ BackupParadise::GUI::LibUI::BackupForIngrid.new
99
+ end