multimedia_paradise 1.1.344 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +99 -77
  3. data/bin/audio_player +1 -1
  4. data/bin/extract_images_from_this_video_file +1 -1
  5. data/bin/loop_this_video +1 -1
  6. data/bin/merge_avi_files +1 -1
  7. data/bin/merge_mp3 +1 -1
  8. data/bin/mp3_to_opus +1 -1
  9. data/bin/mpg_to_mp4 +1 -1
  10. data/bin/multimedia_paradise +1 -1
  11. data/bin/to_aiff +2 -5
  12. data/bin/to_flac +7 -0
  13. data/bin/to_mp3 +8 -0
  14. data/bin/to_mp4 +1 -1
  15. data/bin/to_ogg +7 -0
  16. data/bin/verbose_analyse_this_mp3_file_for_id3_tags +1 -1
  17. data/bin/video_codec +1 -1
  18. data/bin/video_thumbnail +1 -1
  19. data/bin/video_to_images +1 -1
  20. data/doc/README.gen +88 -51
  21. data/doc/{CHANGELOG.md → changelog/changelog.md} +8 -6
  22. data/doc/{LINKS.md → links/links.md} +2 -2
  23. data/doc/{MOTIVATION_FOR_THIS_PROJECT.md → motivation_for_the_multimedia_paradise_project/motivation_for_the_multimedia_paradise_project.md} +5 -5
  24. data/doc/todo/todo_for_the_multimedia_paradise_project.md +79 -93
  25. data/lib/multimedia_paradise/actions/actions.rb +224 -0
  26. data/lib/multimedia_paradise/audio/audio_player/audio_player.rb +61 -64
  27. data/lib/multimedia_paradise/audio/audio_tag_reader/audio_tag_reader.rb +17 -8
  28. data/lib/multimedia_paradise/audio/base.rb +0 -5
  29. data/lib/multimedia_paradise/audio/compress.rb +8 -5
  30. data/lib/multimedia_paradise/audio/create_m3u_playlist.rb +7 -11
  31. data/lib/multimedia_paradise/audio/extract_audio/constants.rb +0 -37
  32. data/lib/multimedia_paradise/audio/extract_audio/extract_audio.rb +90 -68
  33. data/lib/multimedia_paradise/audio/file_duration/file_duration.rb +134 -80
  34. data/lib/multimedia_paradise/audio/genres/boogie.rb +1 -6
  35. data/lib/multimedia_paradise/audio/genres/concerts.rb +1 -6
  36. data/lib/multimedia_paradise/audio/genres/constants.rb +1 -1
  37. data/lib/multimedia_paradise/audio/genres/eurodance.rb +1 -6
  38. data/lib/multimedia_paradise/audio/genres/genre.rb +36 -33
  39. data/lib/multimedia_paradise/audio/genres/hip_hop.rb +1 -6
  40. data/lib/multimedia_paradise/audio/genres/italian_songs.rb +1 -6
  41. data/lib/multimedia_paradise/audio/genres/the_1980s.rb +1 -6
  42. data/lib/multimedia_paradise/audio/genres/trance.rb +4 -7
  43. data/lib/multimedia_paradise/audio/lyrics_fetcher.rb +27 -22
  44. data/lib/multimedia_paradise/audio/merge_audio_files.rb +18 -11
  45. data/lib/multimedia_paradise/audio/modify_year_of_audio_file.rb +23 -11
  46. data/lib/multimedia_paradise/audio/n_audio_songs.rb +3 -2
  47. data/lib/multimedia_paradise/audio/play_all_audio_files.rb +41 -16
  48. data/lib/multimedia_paradise/audio/playlist/playlist.rb +163 -123
  49. data/lib/multimedia_paradise/audio/remove_audio.rb +11 -6
  50. data/lib/multimedia_paradise/audio/remove_last_second.rb +2 -3
  51. data/lib/multimedia_paradise/audio/report_missing_id.rb +22 -12
  52. data/lib/multimedia_paradise/audio/streamripper/streamripper_wrapper.rb +7 -5
  53. data/lib/multimedia_paradise/audio/to_mp3.rb +7 -5
  54. data/lib/multimedia_paradise/audio/to_ogg.rb +3 -1
  55. data/lib/multimedia_paradise/audio/wav_to_mp3.rb +5 -5
  56. data/lib/multimedia_paradise/base/base.rb +854 -15
  57. data/lib/multimedia_paradise/base/colours.rb +28 -31
  58. data/lib/multimedia_paradise/base/{commandline_arguments.rb → commandline_arguments_module/commandline_arguments_module.rb} +12 -9
  59. data/lib/multimedia_paradise/colours/colours.rb +4 -1
  60. data/lib/multimedia_paradise/commandline/{menu.rb → commandline.rb} +19 -16
  61. data/lib/multimedia_paradise/constants/constants.rb +504 -14
  62. data/lib/multimedia_paradise/constants/web_constants.rb +2 -4
  63. data/lib/multimedia_paradise/gui/gui_base.rb +2 -2
  64. data/lib/multimedia_paradise/gui/libui/lyrics/lyrics.rb +1 -1
  65. data/lib/multimedia_paradise/gui/libui/simple_play_widget/simple_play_widget.rb +1 -1
  66. data/lib/multimedia_paradise/gui/libui/video_player/video_player.rb +1 -1
  67. data/lib/multimedia_paradise/gui/libui/youtube_channels/youtube_channels.rb +1 -1
  68. data/lib/multimedia_paradise/gui/shared_code/multimedia_converter/multimedia_converter_module.rb +0 -478
  69. data/lib/multimedia_paradise/gui/shared_code/playlist/playlist_module.rb +94 -41
  70. data/lib/multimedia_paradise/gui/shared_code/simple_play_widget/simple_play_widget_module.rb +0 -257
  71. data/lib/multimedia_paradise/gui/universal_widgets/change_metadata_widget/change_metadata_widget.rb +2 -2
  72. data/lib/multimedia_paradise/gui/universal_widgets/information_about_a_mp3_file/information_about_a_mp3_file.rb +1 -1
  73. data/lib/multimedia_paradise/gui/universal_widgets/lyrics/lyrics.rb +1 -1
  74. data/lib/multimedia_paradise/gui/universal_widgets/multimedia_converter/multimedia_converter.rb +589 -0
  75. data/lib/multimedia_paradise/gui/universal_widgets/playlist/playlist.rb +197 -0
  76. data/lib/multimedia_paradise/gui/universal_widgets/radio/radio.rb +1 -1
  77. data/lib/multimedia_paradise/gui/{gtk2 → universal_widgets}/simple_play_widget/README.md +1 -1
  78. data/lib/multimedia_paradise/gui/universal_widgets/simple_play_widget/simple_play_widget.rb +404 -0
  79. data/lib/multimedia_paradise/gui/universal_widgets/tag_mp3_files/tag_mp3_files.rb +3 -6
  80. data/lib/multimedia_paradise/java/Playlist.class +0 -0
  81. data/lib/multimedia_paradise/java/Playlist.java +198 -0
  82. data/lib/multimedia_paradise/multimedia/analyse_multimedia_file.rb +21 -19
  83. data/lib/multimedia_paradise/multimedia/avisynth/avisynth_code.avs +441 -442
  84. data/lib/multimedia_paradise/multimedia/base.rb +0 -18
  85. data/lib/multimedia_paradise/multimedia/chord.rb +1 -1
  86. data/lib/multimedia_paradise/multimedia/cut_multimedia/cut_multimedia.rb +7 -5
  87. data/lib/multimedia_paradise/multimedia/cut_multimedia/evaluate_from_this_file.rb +2 -2
  88. data/lib/multimedia_paradise/multimedia/interactive_shell.rb +22 -3
  89. data/lib/multimedia_paradise/multimedia/merge_multimedia.rb +4 -3
  90. data/lib/multimedia_paradise/multimedia/play_from_this_list.rb +4 -27
  91. data/lib/multimedia_paradise/multimedia/{read_meta_tags.rb → read_meta_tags/read_meta_tags.rb} +14 -19
  92. data/lib/multimedia_paradise/multimedia/start_length_duration.rb +3 -3
  93. data/lib/multimedia_paradise/project/project.rb +8 -4
  94. data/lib/multimedia_paradise/requires/require_the_multimedia_paradise_project.rb +5 -5
  95. data/lib/multimedia_paradise/requires/require_toplevel_methods_files.rb +1 -1
  96. data/lib/multimedia_paradise/sinatra/app.rb +3 -3
  97. data/lib/multimedia_paradise/statistics/README.md +6 -5
  98. data/lib/multimedia_paradise/statistics/video.rb +34 -14
  99. data/lib/multimedia_paradise/{misc → time}/long_format_to_milliseconds_converter.rb +4 -2
  100. data/lib/multimedia_paradise/{misc → time}/milliseconds_to_long_format_converter.rb +2 -2
  101. data/lib/multimedia_paradise/toplevel_methods/audio_related_code.rb +138 -0
  102. data/lib/multimedia_paradise/toplevel_methods/chop_into_segments_of_n_seconds_size.rb +2 -2
  103. data/lib/multimedia_paradise/{conversions → toplevel_methods}/conversions.rb +140 -48
  104. data/lib/multimedia_paradise/toplevel_methods/copy_and_merge_this_video_n_times.rb +5 -5
  105. data/lib/multimedia_paradise/toplevel_methods/create_video_from_this_audio.rb +7 -6
  106. data/lib/multimedia_paradise/toplevel_methods/cut_from_to.rb +2 -2
  107. data/lib/multimedia_paradise/toplevel_methods/denoise.rb +2 -2
  108. data/lib/multimedia_paradise/toplevel_methods/deshake.rb +3 -6
  109. data/lib/multimedia_paradise/toplevel_methods/{output_directory.rb → directory_related_code.rb} +38 -1
  110. data/lib/multimedia_paradise/toplevel_methods/encode_this_video.rb +8 -4
  111. data/lib/multimedia_paradise/toplevel_methods/esystem.rb +43 -4
  112. data/lib/multimedia_paradise/{ffmpeg → toplevel_methods}/ffmpeg.rb +200 -193
  113. data/lib/multimedia_paradise/toplevel_methods/{files_and_directories.rb → files_related_code.rb} +19 -56
  114. data/lib/multimedia_paradise/toplevel_methods/flip_and_rotate.rb +3 -3
  115. data/lib/multimedia_paradise/toplevel_methods/is_audio_file_is_video_file_is_image_file_is_multimedia_file.rb +115 -0
  116. data/lib/multimedia_paradise/toplevel_methods/is_on_roebe.rb +1 -1
  117. data/lib/multimedia_paradise/toplevel_methods/{merge_multimedia_file.rb → merge.rb} +98 -4
  118. data/lib/multimedia_paradise/toplevel_methods/opn.rb +5 -4
  119. data/lib/multimedia_paradise/toplevel_methods/player_in_use.rb +14 -7
  120. data/lib/multimedia_paradise/toplevel_methods/query_the_audio_codec_of_this_file.rb +4 -3
  121. data/lib/multimedia_paradise/toplevel_methods/radio.rb +1 -3
  122. data/lib/multimedia_paradise/toplevel_methods/return_all_video_files.rb +4 -4
  123. data/lib/multimedia_paradise/toplevel_methods/return_path_to_random_simpsons_video_file.rb +1 -1
  124. data/lib/multimedia_paradise/toplevel_methods/return_random_video_file_from_the_video_collection.rb +9 -7
  125. data/lib/multimedia_paradise/toplevel_methods/scale_video.rb +3 -4
  126. data/lib/multimedia_paradise/toplevel_methods/set_title_of.rb +6 -6
  127. data/lib/multimedia_paradise/{help/help.rb → toplevel_methods/show_help.rb} +14 -8
  128. data/lib/multimedia_paradise/toplevel_methods/slow_down_this_video_file.rb +2 -3
  129. data/lib/multimedia_paradise/toplevel_methods/start_screencast.rb +3 -2
  130. data/lib/multimedia_paradise/toplevel_methods/{misc.rb → toplevel_methods.rb} +485 -527
  131. data/lib/multimedia_paradise/toplevel_methods/total_duration.rb +4 -3
  132. data/lib/multimedia_paradise/toplevel_methods/use_lame_codec.rb +1 -2
  133. data/lib/multimedia_paradise/toplevel_methods/video_dataset.rb +1 -1
  134. data/lib/multimedia_paradise/version/version.rb +2 -2
  135. data/lib/multimedia_paradise/video/all_videos.rb +12 -19
  136. data/lib/multimedia_paradise/video/check_numbers.rb +76 -32
  137. data/lib/multimedia_paradise/video/columbo/columbo.rb +36 -14
  138. data/lib/multimedia_paradise/video/guess_video_name.rb +2 -10
  139. data/lib/multimedia_paradise/video/mike_hammer/mike_hammer.rb +2 -2
  140. data/lib/multimedia_paradise/video/missing_video_files/missing_video_files.rb +1 -9
  141. data/lib/multimedia_paradise/video/movie_searcher.rb +2 -10
  142. data/lib/multimedia_paradise/video/mplayer_wrapper.rb +1 -9
  143. data/lib/multimedia_paradise/video/random_video.rb +1 -2
  144. data/lib/multimedia_paradise/video/registered_video_file.rb +2 -10
  145. data/lib/multimedia_paradise/video/report_local_videos.rb +1 -9
  146. data/lib/multimedia_paradise/video/simpsons.rb +2 -10
  147. data/lib/multimedia_paradise/video/smart_animals/smart_animals.rb +10 -8
  148. data/lib/multimedia_paradise/video/speed_up_video.rb +28 -10
  149. data/lib/multimedia_paradise/video/store_available_video_files.rb +49 -33
  150. data/lib/multimedia_paradise/video/the_simpsons/README.md +0 -0
  151. data/lib/multimedia_paradise/video/the_simpsons/good_the_simpsons_episodes.rb +8 -8
  152. data/lib/multimedia_paradise/video/the_simpsons/the_simpsons.rb +14 -10
  153. data/lib/multimedia_paradise/video/video_information.rb +55 -49
  154. data/lib/multimedia_paradise/{configuration → yaml/configuration}/play_zoomed.yml +0 -0
  155. data/lib/multimedia_paradise/yaml/{playlist.yml → playlist/playlist.yml} +14 -15
  156. data/lib/multimedia_paradise/yaml/video/video.yml +1 -1
  157. data/lib/multimedia_paradise/yaml/video_collection/video_collection.yml +34 -32
  158. data/lib/multimedia_paradise/yaml/youtube/alltagsgeschichte/alltagsgeschichte.yml +61 -11
  159. data/lib/multimedia_paradise/yaml/youtube/songs/songs.yml +5 -3
  160. data/multimedia_paradise.gemspec +1 -1
  161. data/test/testing_audio_player.rb +3 -3
  162. data/test/testing_file_duration.rb +5 -5
  163. metadata +45 -76
  164. data/lib/multimedia_paradise/audio/file_duration/constants.rb +0 -53
  165. data/lib/multimedia_paradise/audio/waveform/class.rb +0 -341
  166. data/lib/multimedia_paradise/audio/waveform/constants.rb +0 -38
  167. data/lib/multimedia_paradise/audio/waveform/log.rb +0 -101
  168. data/lib/multimedia_paradise/base/constants.rb +0 -19
  169. data/lib/multimedia_paradise/base/encoding.rb +0 -31
  170. data/lib/multimedia_paradise/base/misc.rb +0 -665
  171. data/lib/multimedia_paradise/base/namespace.rb +0 -36
  172. data/lib/multimedia_paradise/base/time.rb +0 -25
  173. data/lib/multimedia_paradise/constants/conversions.rb +0 -62
  174. data/lib/multimedia_paradise/constants/directory_constants.rb +0 -139
  175. data/lib/multimedia_paradise/constants/encodings.rb +0 -26
  176. data/lib/multimedia_paradise/constants/file_constants.rb +0 -176
  177. data/lib/multimedia_paradise/constants/misc.rb +0 -80
  178. data/lib/multimedia_paradise/constants/my_video_directory.rb +0 -30
  179. data/lib/multimedia_paradise/constants/namespace.rb +0 -14
  180. data/lib/multimedia_paradise/constants/newline.rb +0 -14
  181. data/lib/multimedia_paradise/constants/video_filetypes.rb +0 -27
  182. data/lib/multimedia_paradise/conversions/README.md +0 -2
  183. data/lib/multimedia_paradise/ffmpeg/README.md +0 -2
  184. data/lib/multimedia_paradise/gui/gtk2/multimedia_converter/multimedia_converter.rb +0 -33
  185. data/lib/multimedia_paradise/gui/gtk2/notebook.rb +0 -144
  186. data/lib/multimedia_paradise/gui/gtk2/play_video_from_my_collection/play_video_from_my_collection.rb +0 -43
  187. data/lib/multimedia_paradise/gui/gtk2/simple_play_widget/simple_play_widget.rb +0 -40
  188. data/lib/multimedia_paradise/gui/gtk2/widget_increase_or_decrease_audio/widget_increase_or_decrease_audio.rb +0 -42
  189. data/lib/multimedia_paradise/gui/gtk2/youtube_downloader/youtube_downloader.rb +0 -32
  190. data/lib/multimedia_paradise/gui/gtk3/lyrics/lyrics.rb +0 -0
  191. data/lib/multimedia_paradise/gui/gtk3/multimedia_converter/multimedia_converter.rb +0 -34
  192. data/lib/multimedia_paradise/gui/gtk3/playlist/playlist.rb +0 -34
  193. data/lib/multimedia_paradise/gui/gtk3/simple_play_widget/simple_play_widget.rb +0 -38
  194. data/lib/multimedia_paradise/toplevel_methods/analyze_audio_stream.rb +0 -31
  195. data/lib/multimedia_paradise/toplevel_methods/codecs.rb +0 -50
  196. data/lib/multimedia_paradise/toplevel_methods/copy_file.rb +0 -18
  197. data/lib/multimedia_paradise/toplevel_methods/delay_audio.rb +0 -31
  198. data/lib/multimedia_paradise/toplevel_methods/ensure_that_the_output_directory_exists.rb +0 -27
  199. data/lib/multimedia_paradise/toplevel_methods/has_audio.rb +0 -48
  200. data/lib/multimedia_paradise/toplevel_methods/increase_volume_of_this_audio_file.rb +0 -61
  201. data/lib/multimedia_paradise/toplevel_methods/is_a_multimedia_file.rb +0 -27
  202. data/lib/multimedia_paradise/toplevel_methods/is_audio_file.rb +0 -27
  203. data/lib/multimedia_paradise/toplevel_methods/is_image_file.rb +0 -31
  204. data/lib/multimedia_paradise/toplevel_methods/is_video_file.rb +0 -62
  205. data/lib/multimedia_paradise/toplevel_methods/merge_these_videos.rb +0 -106
  206. data/lib/multimedia_paradise/toplevel_methods/run_sys_command.rb +0 -30
  207. data/lib/multimedia_paradise/toplevel_methods/to_flac.rb +0 -30
  208. data/lib/multimedia_paradise/toplevel_methods/to_mp4.rb +0 -24
  209. /data/doc/{MergingVideoLectures.md → merging_video_lectures/merging_video_lectures.md} +0 -0
  210. /data/doc/{Readme_for_the_cut_audio_component.md → readme_for_the_cut_audio_component/Readme_for_the_cut_audio_component.md} +0 -0
  211. /data/lib/multimedia_paradise/yaml/{audio_formats.yml → audio_formats/audio_formats.yml} +0 -0
  212. /data/lib/multimedia_paradise/yaml/{image_formats.yml → image_formats/image_formats.yml} +0 -0
  213. /data/lib/multimedia_paradise/yaml/{lyrics.yml → lyrics/lyrics.yml} +0 -0
  214. /data/lib/multimedia_paradise/yaml/{music_genres.yml → music_genres/music_genres.yml} +0 -0
  215. /data/lib/multimedia_paradise/yaml/{song_tags.yml → song_tags/song_tags.yml} +0 -0
  216. /data/lib/multimedia_paradise/yaml/{use_this_video_player.yml → use_this_video_player/use_this_video_player.yml} +0 -0
  217. /data/lib/multimedia_paradise/yaml/{video_encoding_settings.yml → video_encoding_settings/video_encoding_settings.yml} +0 -0
  218. /data/lib/multimedia_paradise/yaml/{video_filter_aliases.yml → video_filter_aliases/video_filter_aliases.yml} +0 -0
@@ -1,478 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # === MultimediaParadise::GUI::Gtk::MultimediaConverterModule
6
- #
7
- # This class contains a "multimedia_convert", aka just a thin wrapper over
8
- # ffmpeg.
9
- #
10
- # Features that it should have:
11
- #
12
- # - convert between .mp3, .wav, .ogg and so forth.
13
- # - allow conversions between .avi and .mpg and so forth.
14
- # - scrolling should be possible in the entry area, so we can select
15
- # different audio files.
16
- #
17
- # =========================================================================== #
18
- # require 'multimedia_paradise/gui/shared_code/multimedia_converter/multimedia_converter_module.rb'
19
- # include MultimediaParadise::GUI::Gtk::MultimediaConverterModule
20
- # =========================================================================== #
21
- module MultimediaParadise
22
-
23
- module GUI
24
-
25
- module Gtk
26
-
27
- module MultimediaConverterModule
28
-
29
- require 'gtk_paradise/requires/require_the_base_module.rb'
30
- include ::Gtk::BaseModule
31
-
32
- begin
33
- require 'colours'
34
- include ::Colours::E
35
- rescue LoadError; end
36
-
37
- # ========================================================================= #
38
- # === NAMESPACE
39
- # ========================================================================= #
40
- NAMESPACE = inspect
41
-
42
- # ========================================================================= #
43
- # === ARRAY_FILTER_THESE_FILES
44
- # ========================================================================= #
45
- ARRAY_FILTER_THESE_FILES = %w(
46
- *.ogg
47
- *.mp3
48
- *.wav
49
- *.flac
50
- )
51
-
52
- # ========================================================================= #
53
- # === WIDTH
54
- # ========================================================================= #
55
- WIDTH = '90%'
56
-
57
- # ========================================================================= #
58
- # === HEIGHT
59
- # ========================================================================= #
60
- HEIGHT = 920
61
-
62
- # ========================================================================= #
63
- # === MultimediaConverter.width?
64
- # ========================================================================= #
65
- def self.width?
66
- WIDTH
67
- end
68
-
69
- # ========================================================================= #
70
- # === initialize
71
- #
72
- # You can pass an argument as optional file name.
73
- # @save_file_to_this_directory should always have a trailing /
74
- # ========================================================================= #
75
- def initialize(
76
- this_file = ARGV,
77
- run_already = true
78
- )
79
- super(:vertical, 2)
80
- set_selected_file(this_file)
81
- reset
82
- run if run_already
83
- end
84
-
85
- # ========================================================================= #
86
- # === reset
87
- # ========================================================================= #
88
- def reset
89
- reset_the_internal_variables
90
- # ======================================================================= #
91
- # === @configuration
92
- # ======================================================================= #
93
- @configuration = [true, __dir__, NAMESPACE]
94
- increase_font_size
95
- # ======================================================================= #
96
- # === @counter_position
97
- # ======================================================================= #
98
- @counter_position = 0
99
- set_width(WIDTH)
100
- set_height(HEIGHT)
101
- # ======================================================================= #
102
- # === @save_file_to_this_directory
103
- #
104
- # The next variable keeps track into which directory we will save
105
- # the converted files.
106
- # ======================================================================= #
107
- @save_file_to_this_directory = return_pwd
108
- if is_on_roebe? and File.directory?('/home/Temp')
109
- @save_file_to_this_directory = '/home/Temp/'
110
- end
111
- append_project_css_file
112
- infer_the_size_automatically
113
- end
114
-
115
- # ========================================================================= #
116
- # === title?
117
- # ========================================================================= #
118
- def title?
119
- 'Simple Play Widget'
120
- end
121
-
122
- # ========================================================================= #
123
- # === add_statusbar_message
124
- #
125
- # This method will add to the status-bar queue.
126
- # ========================================================================= #
127
- def add_statusbar_message(
128
- this_msg = 'Start'
129
- )
130
- @status_bar.push(@status_bar_context_id, this_msg) # Add message
131
- end; alias add_to_statusbar add_statusbar_message # === add_to_statusbar
132
- alias statusbar_message add_statusbar_message # === statusbar_message
133
-
134
- # ========================================================================= #
135
- # === create_skeleton
136
- # ========================================================================= #
137
- def create_skeleton
138
- create_buttons
139
- create_entries
140
- create_combo_boxes
141
- create_statusbar
142
- end
143
-
144
- # ========================================================================= #
145
- # === set_selected_file
146
- # ========================================================================= #
147
- def set_selected_file(i)
148
- if i.is_a? Array
149
- i = i.first
150
- end
151
- @selected_file = i
152
- end
153
-
154
- # ========================================================================= #
155
- # === create_statusbar
156
- # ========================================================================= #
157
- def create_statusbar
158
- @status_bar = gtk_statusbar { :with_resize_grip }
159
- @status_bar_context_id = @status_bar.get_context_id('Conversion Information')
160
- end
161
-
162
- # ========================================================================= #
163
- # === get_rid_of_mp3
164
- # ========================================================================= #
165
- def get_rid_of_mp3
166
- return @selected_file.gsub(/\.mp3/,'')
167
- end
168
-
169
- # ========================================================================= #
170
- # === get_rid_of_mp3_and_other_dirs
171
- #
172
- # we get rid of .mp3 in our name, and any pathname.
173
- # ========================================================================= #
174
- def get_rid_of_mp3_and_other_dirs
175
- tmp = get_rid_of_mp3
176
- tmp = Pathname.new(tmp).basename.to_s
177
- end
178
-
179
- # ========================================================================= #
180
- # === create_buttons
181
- #
182
- # butt tag.
183
- # ========================================================================= #
184
- def create_buttons
185
- @button_quit = gtk_button('_Quit')
186
- @button_convert = gtk_button('_Convert')
187
- @button_convert.on_clicked { |widget|
188
- do_convert_multimedia_file
189
- }
190
- @button_convert.fancy_tooltips =
191
- ' <b>Click</b> this button in order to <b>convert the '\
192
- 'audio-file to another format</b>. '
193
- @button_file_chooser = gtk_button('_Open File')
194
- @button_file_chooser.on_clicked { |widget|
195
- @file_chooser_dialog = ::Gtk::FileChooserDialog.new(
196
- 'Open MultimediaFile',
197
- ::Gtk::Window.new,
198
- ::Gtk::FileChooser::ACTION_OPEN,
199
- nil,
200
- [ ::Gtk::Stock::CANCEL, ::Gtk::Dialog::RESPONSE_CANCEL ],
201
- [ ::Gtk::Stock::OPEN, ::Gtk::Dialog::RESPONSE_ACCEPT ]
202
- )
203
- @file_chooser_dialog.current_folder = return_pwd
204
- if ENV.has_key? 'MY_SONGS'
205
- @file_chooser_dialog.add_shortcut_folder(ENV['MY_SONGS'])
206
- end
207
-
208
- @file_filter_audio_files = gtk_file_filter
209
- @file_filter_audio_files.name = 'Audio Files'
210
- ARRAY_FILTER_THESE_FILES.each { |entry|
211
- @file_filter_audio_files.add_pattern(entry)
212
- }
213
-
214
- @file_chooser_dialog.add_filter(@file_filter_audio_files)
215
- if File.directory? @save_file_to_this_directory
216
- _ = @save_file_to_this_directory
217
- if ::Gtk.is_on_roebe?
218
- _ = '/Depot/j/'
219
- end
220
- @file_chooser_dialog.cd_to(_)
221
- end
222
-
223
- case @file_chooser_dialog.run
224
- when ::Gtk::Dialog::RESPONSE_ACCEPT
225
- @entry_base_file.set_text(@file_chooser_dialog.filename)
226
- @selected_file = @file_chooser_dialog.filename
227
- add_to_statusbar(@selected_file)
228
- else
229
- puts 'No file selected.'
230
- end
231
- @file_chooser_dialog.destroy
232
- }
233
- end
234
-
235
- # ========================================================================= #
236
- # === create_entries
237
- # ========================================================================= #
238
- def create_entries
239
- @entry_base_file = gtk_entry
240
- @entry_base_file.signal_connect(:event) { |widget, event|
241
- _ = event.event_type
242
- case _.name
243
- when 'GDK_BUTTON_PRESS'
244
- @button_file_chooser.signal_emit(:clicked)
245
- when 'GDK_SCROLL'
246
- case event.direction
247
- # === scroll-up event
248
- when Gdk::EventScroll::UP
249
- get_audio_file_listing
250
- @counter_position += 1
251
- pp @counter_position
252
- pp @array_audio_files[@counter_position]
253
- # === scroll-down event
254
- when Gdk::EventScroll::DOWN
255
- get_audio_file_listing
256
- @counter_position -= 1
257
- pp @counter_position
258
- pp @array_audio_files[@counter_position]
259
- end
260
- else
261
- end
262
- }
263
- @entry_save_where_to = gtk_entry
264
- update
265
- end
266
-
267
- # ========================================================================= #
268
- # === get_audio_file_listing
269
- # ========================================================================= #
270
- def get_audio_file_listing(
271
- i = return_pwd
272
- )
273
- @array_audio_files = Dir["#{i}*"].select {|entry|
274
- File.file?(entry)
275
- }
276
- end
277
-
278
- # ========================================================================= #
279
- # === create_combo_boxes
280
- # ========================================================================= #
281
- def create_combo_boxes
282
- @combo_box_convert_to_this_audio_type = gtk_combo_box(true)
283
- %w( wav mp3 ogg ).each {|val|
284
- @combo_box_convert_to_this_audio_type.append_text(val)
285
- }
286
- @combo_box_convert_to_this_audio_type.active = 0
287
- end
288
-
289
- # ========================================================================= #
290
- # === do_convert_multimedia_file
291
- #
292
- # This is the unified method to convert a multimedia file from
293
- # one format to another one.
294
- # ========================================================================= #
295
- def do_convert_multimedia_file
296
- if @selected_file.to_s.empty?
297
- statusbar_message(
298
- 'Please input a valid (existing) file, on the top-left most entry.'
299
- )
300
- return
301
- end
302
- format_type = @combo_box_convert_to_this_audio_type.active_text
303
- case format_type
304
- # === mp3
305
- when 'mp3'
306
- application_to_use = 'lame --decode '
307
- # === ogg
308
- when 'ogg'
309
- application_to_use = 'ffmpeg -i '
310
- # === wav
311
- when 'wav'
312
- application_to_use = 'lame --decode '
313
- else
314
- application_to_use = '' # empty fall back...
315
- end
316
- e ::Colours.sfancy(
317
- 'Now converting '+@selected_file
318
- )
319
- cmd = application_to_use.dup
320
- cmd << "#{@selected_file} "
321
- cmd << @entry_save_where_to.text
322
- cmd << get_rid_of_mp3_and_other_dirs+'.'
323
- cmd << format_type
324
- esystem(cmd)
325
- # ======================================================================= #
326
- # After the system-command has been run, we may modify the statusbar, to
327
- # keep track of changes. This will only be done if the converted file
328
- # actually exists.
329
- # ======================================================================= #
330
- converted_file = @entry_save_where_to.text+
331
- File.basename(@selected_file)
332
- if File.exist?(converted_file)
333
- add_statusbar_message(
334
- "The file #{@selected_file} has been "\
335
- "converted. New location should be: #{converted_file}"
336
- )
337
- end
338
- end
339
-
340
- # ========================================================================= #
341
- # === esystem
342
- # ========================================================================= #
343
- def esystem(i)
344
- e i
345
- system_command(i)
346
- end
347
-
348
- # ========================================================================= #
349
- # === system_command
350
- #
351
- # Wrapper to run a system-command
352
- # ========================================================================= #
353
- def system_command(cmd)
354
- if cmd.include? ' '
355
- # Find out if the program exists.
356
- first_command = cmd.split(' ').first
357
- result = `#{first_command} 2>&1`
358
- if result.empty? # if empty we assume sox was not installed.
359
- _ = 'The program `'+first_command+'` was not found. Is it installed?'
360
- e _
361
- add_to_statusbar(_)
362
- else
363
- system cmd
364
- end
365
- end
366
- end
367
-
368
- # ========================================================================= #
369
- # === connect_skeleton
370
- # ========================================================================= #
371
- def connect_skeleton
372
- label = modify_bold_label('Convert to the following format:','slateblue')
373
- label.the_text_appears_on_the_left_side
374
- hbox = ::Gtk.create_paned_hbox(@entry_base_file,
375
- ::Gtk.create_paned_vbox(
376
- label,
377
- @combo_box_convert_to_this_audio_type)
378
- )
379
- add(hbox)
380
- hbox2 = gtk_hbox
381
- hbox2.minimal(
382
- modify_bold_label('Save file to this directory:'),
383
- 0
384
- )
385
- hbox2.maximal(
386
- @entry_save_where_to, 0
387
- )
388
- add(hbox2)
389
- add(@button_convert)
390
- add(
391
- ::Gtk.create_paned_hbox(@button_file_chooser, @button_quit)
392
- )
393
- minimal(
394
- @status_bar, 2
395
- )
396
- end
397
-
398
- # ========================================================================= #
399
- # === padding?
400
- # ========================================================================= #
401
- def padding?
402
- 10
403
- end
404
-
405
- # ========================================================================= #
406
- # === update
407
- #
408
- # Update certain components of the widget.
409
- # ========================================================================= #
410
- def update
411
- @entry_save_where_to.set_text(@save_file_to_this_directory.to_s)
412
- end
413
-
414
- # ========================================================================= #
415
- # === sync_selected_file_to_the_corresponding_entry
416
- # ========================================================================= #
417
- def sync_selected_file_to_the_corresponding_entry
418
- @entry_base_file.set_text(@selected_file.to_s)
419
- end
420
-
421
- # ========================================================================= #
422
- # === favicon?
423
- # ========================================================================= #
424
- def favicon?
425
- '/home/x/programming/ruby/src/multimedia_paradise/lib/multimedia_paradise/images/'\
426
- 'MULTIMEDIA.jpg'
427
- end
428
-
429
- # ========================================================================= #
430
- # === run
431
- # ========================================================================= #
432
- def run
433
- create_skeleton
434
- connect_skeleton
435
- sync_selected_file_to_the_corresponding_entry
436
- end
437
-
438
- # ========================================================================= #
439
- # === MultimediaParadise::GUI::Gtk::MultimediaConverterModule.run
440
- # ========================================================================= #
441
- def self.run
442
- require 'gtk_paradise/run'
443
- _ = ::MultimediaParadise::GUI::Gtk::MultimediaConverter.new
444
- r = ::Gtk.run
445
- r << _
446
- r.set_width(_.width?)
447
- r.set_height(_.height?)
448
- r.set_size_request(
449
- _.width? / 1.5,
450
- _.height? / 1.5
451
- )
452
- r.realize # This has to be called before set_cursor() below.
453
- boat_cursor = :boat
454
- if ::Gtk.use_gtk2?
455
- boat_cursor = Gdk::CursorType::BOAT
456
- end
457
- r.window.set_cursor(Gdk::Cursor.new(boat_cursor))
458
- r.signal_connect(:delete_event) { |_widget| ::Gtk.main_quit }
459
- r.enable_simple_exit
460
- # ======================================================================= #
461
- # Next we will add several alt+key shortcuts.
462
- # ======================================================================= #
463
- r.shortcuts {[
464
- [1, 'click_on_button_number(0)', :alt],
465
- [2, 'click_on_button_number(1)', :alt],
466
- [3, 'click_on_button_number(2)', :alt],
467
- [4, 'click_on_button_number(3)', :alt],
468
- [5, 'click_on_button_number(4)', :alt],
469
- [6, 'click_on_button_number(5)', :alt],
470
- [7, 'click_on_button_number(6)', :alt],
471
- [8, 'click_on_button_number(7)', :alt],
472
- [9, 'click_on_button_number(8)', :alt]
473
- ]}
474
- r.top_left_then_run
475
- return r
476
- end
477
-
478
- end; end; end; end
@@ -19,10 +19,11 @@ module Gtk
19
19
 
20
20
  module PlaylistModule
21
21
 
22
- require 'gtk_paradise/requires/require_the_base_module.rb'
23
- include ::Gtk::BaseModule
22
+ require 'universal_widgets/base_module/base_module.rb'
23
+ include ::UniversalWidgets::BaseModule
24
24
 
25
- require 'multimedia_paradise/audio/playlist/playlist.rb'
25
+ require 'multimedia_paradise/constants/constants.rb'
26
+ require 'multimedia_paradise/actions/actions.rb'
26
27
 
27
28
  # ========================================================================= #
28
29
  # === TITLE
@@ -39,45 +40,53 @@ module PlaylistModule
39
40
  # ========================================================================= #
40
41
  HEIGHT = 600
41
42
 
43
+ # ========================================================================= #
44
+ # === DEFAULT_STREAM
45
+ # ========================================================================= #
46
+ DEFAULT_STREAM = 'https://orf-live.ors-shoutcast.at/oe3-q2a.m3u'
47
+
48
+ # ========================================================================= #
49
+ # === FONT_FAMILY_TO_USE
50
+ # ========================================================================= #
51
+ FONT_FAMILY_TO_USE = 'DejaVu Sans Mono'
52
+
53
+ # ========================================================================= #
54
+ # === FONT_SIZE
55
+ # ========================================================================= #
56
+ FONT_SIZE = '20'
57
+
58
+ # ========================================================================= #
59
+ # === SMALLER_FONT_SIZE
60
+ # ========================================================================= #
61
+ SMALLER_FONT_SIZE = '16'
62
+
63
+ # ========================================================================= #
64
+ # === LARGER_FONT
65
+ # ========================================================================= #
66
+ LARGER_FONT = :hack_25
67
+
68
+ # ========================================================================= #
69
+ # === USE_THIS_FONT
70
+ # ========================================================================= #
71
+ USE_THIS_FONT = :hack_23
72
+
73
+ # ========================================================================= #
74
+ # === SMALLER_FONT
75
+ # ========================================================================= #
76
+ SMALLER_FONT = :hack_20
77
+
42
78
  # ========================================================================= #
43
79
  # === initialize
44
80
  # ========================================================================= #
45
81
  def initialize(
46
- run_already = true
82
+ commandline_arguments = ARGV,
83
+ run_already = true
47
84
  )
48
- super(:vertical)
85
+ determine_the_GUI_to_be_used(commandline_arguments) # This must come first, even before reset().
49
86
  reset
50
87
  run if run_already
51
88
  end
52
89
 
53
- # ========================================================================= #
54
- # === reset
55
- # ========================================================================= #
56
- def reset
57
- reset_the_internal_variables
58
- infer_the_namespace
59
- # ======================================================================= #
60
- # === @configuration
61
- # ======================================================================= #
62
- @configuration = [true, __dir__, namespace?]
63
- # ======================================================================= #
64
- # === @title
65
- # ======================================================================= #
66
- set_title(TITLE)
67
- # ======================================================================= #
68
- # === @width
69
- # ======================================================================= #
70
- set_width(WIDTH)
71
- # ======================================================================= #
72
- # === @height
73
- # ======================================================================= #
74
- set_height(HEIGHT)
75
- @dataset = ::MultimediaParadise::Playlist.return_array
76
- set_use_this_font(:dejavu_condensed_22)
77
- append_project_css_file
78
- infer_the_size_automatically
79
- end
80
-
81
90
  # ========================================================================= #
82
91
  # === padding?
83
92
  # ========================================================================= #
@@ -98,6 +107,13 @@ module PlaylistModule
98
107
  def create_skeleton
99
108
  end
100
109
 
110
+ # ========================================================================= #
111
+ # === main_font?
112
+ # ========================================================================= #
113
+ def main_font?
114
+ :hack_18
115
+ end
116
+
101
117
  # ========================================================================= #
102
118
  # === play_this_song
103
119
  # ========================================================================= #
@@ -106,23 +122,60 @@ module PlaylistModule
106
122
  end
107
123
 
108
124
  # ========================================================================= #
109
- # === connect_skeleton (connect tag)
125
+ # === return_the_box_containing_all_playlist_buttons
110
126
  # ========================================================================= #
111
- def connect_skeleton
112
- abort_on_exception
113
- vbox = gtk_vbox
127
+ def return_the_box_containing_all_playlist_buttons
128
+ vbox = create_vbox
114
129
  @dataset.each {|this_song|
115
- button = gtk_button(this_song)
116
- button.fancy_tooltips = this_song
130
+ button = create_button(this_song)
131
+ button.hint = this_song
117
132
  button.on_clicked {
118
133
  play_this_song(this_song)
119
134
  }
120
135
  button.text_is_left
121
136
  vbox.maximal(button)
122
137
  }
123
- scroll_bar = gtk_scrolled_window(vbox)
138
+ return vbox
139
+ end
140
+
141
+ # ========================================================================= #
142
+ # === return_the_default_scrolled_window
143
+ # ========================================================================= #
144
+ def return_the_default_scrolled_window
145
+ vbox = return_the_box_containing_all_playlist_buttons
146
+ scroll_bar = create_scrolled_window(vbox)
124
147
  scroll_bar.set_size_request(600, 500)
125
- maximal(scroll_bar)
148
+ return scroll_bar
149
+ end
150
+
151
+ # ========================================================================= #
152
+ # === reset_the_shared_module
153
+ #
154
+ # This method can be used for ruby-gtk3 and ruby-libui, among other
155
+ # toolkits.
156
+ # ========================================================================= #
157
+ def reset_the_shared_module
158
+ reset_the_internal_variables
159
+ infer_the_namespace
160
+ # ======================================================================= #
161
+ # === @configuration
162
+ # ======================================================================= #
163
+ @configuration = [true, __dir__, namespace?]
164
+ title_width_height_font(TITLE, WIDTH, HEIGHT,:dejavu_condensed_22)
165
+ # ======================================================================= #
166
+ # === @dataset
167
+ # ======================================================================= #
168
+ @dataset = MultimediaParadise.action(:playlist_array)
169
+ append_project_css_file
170
+ infer_the_size_automatically
171
+ end
172
+
173
+ # ========================================================================= #
174
+ # === connect_skeleton (connect tag)
175
+ # ========================================================================= #
176
+ def connect_skeleton
177
+ abort_on_exception
178
+ maximal(return_the_default_scrolled_window)
126
179
  end
127
180
 
128
181
  # ========================================================================= #