groove-dl 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5028c609beb9b031385ea3eb3a68241a291e3267
4
- data.tar.gz: 093121e998733df06134ac4de8bbcb91ea576a3f
3
+ metadata.gz: 9cd8b8b1860a1d9b9bce5c3668bb3d0532b92cdc
4
+ data.tar.gz: a756d1891dad315f56a6244d8196ead22db9a36a
5
5
  SHA512:
6
- metadata.gz: 197f460fe260071fe4e11a4a8722eddfce7ea5aa269e164d115b457f91cb96333b197d994e9034e8750b5e4a259ca32118e9b1599eba0d16097cf58231820b5c
7
- data.tar.gz: bad6b3830e84dd377831990aec0f505bae9d3cf7c937a78054a025ab9148697a1e51668902318363d6099a145cea3de86cd8172e9e19d9f976af4a97ac248fd5
6
+ metadata.gz: f86facb49a4ba91e6eeff726ebdf4c1c495b88297e3e6d8ee99ccb8bfbaf681840a18b0cb0b50db85cb4b2b15b028b1ed0f9f82ca0713af486dd92b0f7fc1ee8
7
+ data.tar.gz: e9662553d3bf46c09bc7d986798821cb8532689001e8e77d983db572e8c6d6f66def07494b8b3251729189526fc2d24a42918b8b0b354c6a78c2b40cf60476fd
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ coverage
3
3
  Gemfile.lock
4
4
  .ruby-version
5
5
  groove-dl-*.gem
6
+ **/*.glade~
data/MANIFEST CHANGED
@@ -8,6 +8,7 @@ README.md
8
8
  Rakefile
9
9
  bin/groove-dl
10
10
  bin/groove-dl-cli
11
+ glade/groove-dl.glade
11
12
  groove-dl.gemspec
12
13
  lib/groove-dl.rb
13
14
  lib/groove-dl/app.rb
@@ -18,14 +19,9 @@ lib/groove-dl/displayer.rb
18
19
  lib/groove-dl/downloader.rb
19
20
  lib/groove-dl/errors.rb
20
21
  lib/groove-dl/version.rb
21
- lib/groove-dl/widgets/download/bar.rb
22
- lib/groove-dl/widgets/download/book.rb
23
- lib/groove-dl/widgets/download/list/failed.rb
24
- lib/groove-dl/widgets/download/list/queue.rb
25
- lib/groove-dl/widgets/download/list/success.rb
26
- lib/groove-dl/widgets/menu/success.rb
27
- lib/groove-dl/widgets/search/bar.rb
28
- lib/groove-dl/widgets/search/list.rb
22
+ lib/groove-dl/widgets/download.rb
23
+ lib/groove-dl/widgets/events.rb
24
+ lib/groove-dl/widgets/search.rb
29
25
  spec/groove-dl/cli_spec.rb
30
26
  spec/groove-dl/displayer_spec.rb
31
27
  spec/groove-dl/downloader_spec.rb
@@ -6,15 +6,10 @@ require File.expand_path('../../lib/groove-dl', __FILE__)
6
6
  require 'gtk3'
7
7
  require 'shellwords'
8
8
  require 'groove-dl/app'
9
- require 'groove-dl/widgets/menu/success'
10
- require 'groove-dl/widgets/download/bar'
11
- require 'groove-dl/widgets/download/list/queue'
12
- require 'groove-dl/widgets/download/list/failed'
13
- require 'groove-dl/widgets/download/list/success'
14
- require 'groove-dl/widgets/download/book'
15
- require 'groove-dl/widgets/search/bar'
16
- require 'groove-dl/widgets/search/list'
9
+ require 'groove-dl/widgets/events'
10
+ require 'groove-dl/widgets/search'
11
+ require 'groove-dl/widgets/download'
17
12
 
18
13
  Gtk.init
19
- GrooveDl::App.new
14
+ GrooveDl::App.new('glade/groove-dl.glade')
20
15
  Gtk.main
@@ -0,0 +1,539 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.18.3 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.12"/>
5
+ <object class="GtkListStore" id="download_failed_list_store">
6
+ <columns>
7
+ <!-- column-name path -->
8
+ <column type="gchararray"/>
9
+ <!-- column-name reason -->
10
+ <column type="gchararray"/>
11
+ </columns>
12
+ </object>
13
+ <object class="GtkListStore" id="download_queue_list_store">
14
+ <columns>
15
+ <!-- column-name path -->
16
+ <column type="gchararray"/>
17
+ <!-- column-name progress_value -->
18
+ <column type="gint"/>
19
+ <!-- column-name progress_text -->
20
+ <column type="gchararray"/>
21
+ </columns>
22
+ </object>
23
+ <object class="GtkListStore" id="download_success_list_store">
24
+ <columns>
25
+ <!-- column-name path -->
26
+ <column type="gchararray"/>
27
+ <!-- column-name size -->
28
+ <column type="gchararray"/>
29
+ </columns>
30
+ </object>
31
+ <object class="GtkListStore" id="search_list_store">
32
+ <columns>
33
+ <!-- column-name checkbox -->
34
+ <column type="gboolean"/>
35
+ <!-- column-name id -->
36
+ <column type="gint"/>
37
+ <!-- column-name name -->
38
+ <column type="gchararray"/>
39
+ <!-- column-name author -->
40
+ <column type="gchararray"/>
41
+ <!-- column-name data -->
42
+ <column type="gchararray"/>
43
+ </columns>
44
+ </object>
45
+ <object class="GtkWindow" id="main_window">
46
+ <property name="width_request">1024</property>
47
+ <property name="height_request">768</property>
48
+ <property name="can_focus">False</property>
49
+ <property name="title" translatable="yes">Grooveshark Downloader</property>
50
+ <child>
51
+ <object class="GtkBox" id="download_grid">
52
+ <property name="visible">True</property>
53
+ <property name="can_focus">False</property>
54
+ <property name="hexpand">True</property>
55
+ <property name="vexpand">True</property>
56
+ <property name="orientation">vertical</property>
57
+ <child>
58
+ <object class="GtkGrid" id="search_bar">
59
+ <property name="visible">True</property>
60
+ <property name="can_focus">False</property>
61
+ <property name="hexpand">True</property>
62
+ <child>
63
+ <object class="GtkEntry" id="search_entry">
64
+ <property name="visible">True</property>
65
+ <property name="can_focus">True</property>
66
+ <property name="margin_left">6</property>
67
+ <property name="margin_right">15</property>
68
+ <property name="margin_top">5</property>
69
+ <property name="margin_bottom">5</property>
70
+ <property name="hexpand">True</property>
71
+ <property name="truncate_multiline">True</property>
72
+ <property name="placeholder_text" translatable="yes">Search...</property>
73
+ <property name="populate_all">True</property>
74
+ <signal name="activate" handler="on_search_entry_activate" swapped="no"/>
75
+ </object>
76
+ <packing>
77
+ <property name="left_attach">0</property>
78
+ <property name="top_attach">0</property>
79
+ </packing>
80
+ </child>
81
+ <child>
82
+ <object class="GtkComboBoxText" id="search_type">
83
+ <property name="visible">True</property>
84
+ <property name="can_focus">False</property>
85
+ <property name="halign">end</property>
86
+ <property name="valign">center</property>
87
+ <property name="margin_left">10</property>
88
+ <property name="margin_right">15</property>
89
+ <property name="margin_top">5</property>
90
+ <property name="margin_bottom">5</property>
91
+ <property name="active_id">2</property>
92
+ <items>
93
+ <item id="0" translatable="yes">Playlists</item>
94
+ <item id="1" translatable="yes">Songs</item>
95
+ <item id="2" translatable="yes">Songs from playlist id</item>
96
+ </items>
97
+ </object>
98
+ <packing>
99
+ <property name="left_attach">1</property>
100
+ <property name="top_attach">0</property>
101
+ </packing>
102
+ </child>
103
+ <child>
104
+ <object class="GtkButton" id="search_button">
105
+ <property name="label">gtk-find</property>
106
+ <property name="visible">True</property>
107
+ <property name="can_focus">True</property>
108
+ <property name="receives_default">True</property>
109
+ <property name="halign">end</property>
110
+ <property name="valign">end</property>
111
+ <property name="margin_left">5</property>
112
+ <property name="margin_right">15</property>
113
+ <property name="margin_top">5</property>
114
+ <property name="margin_bottom">5</property>
115
+ <property name="use_stock">True</property>
116
+ <property name="always_show_image">True</property>
117
+ <signal name="clicked" handler="on_search_button_clicked" swapped="no"/>
118
+ </object>
119
+ <packing>
120
+ <property name="left_attach">2</property>
121
+ <property name="top_attach">0</property>
122
+ </packing>
123
+ </child>
124
+ </object>
125
+ <packing>
126
+ <property name="expand">False</property>
127
+ <property name="fill">True</property>
128
+ <property name="position">0</property>
129
+ </packing>
130
+ </child>
131
+ <child>
132
+ <object class="GtkScrolledWindow" id="search_scrolled_window">
133
+ <property name="visible">True</property>
134
+ <property name="can_focus">True</property>
135
+ <property name="shadow_type">in</property>
136
+ <child>
137
+ <object class="GtkTreeView" id="search_list">
138
+ <property name="visible">True</property>
139
+ <property name="can_focus">True</property>
140
+ <property name="margin_top">5</property>
141
+ <property name="margin_bottom">5</property>
142
+ <property name="hexpand">True</property>
143
+ <property name="vexpand">True</property>
144
+ <property name="model">search_list_store</property>
145
+ <property name="reorderable">True</property>
146
+ <property name="rules_hint">True</property>
147
+ <property name="search_column">1</property>
148
+ <property name="enable_grid_lines">both</property>
149
+ <child internal-child="selection">
150
+ <object class="GtkTreeSelection" id="treeview-selection"/>
151
+ </child>
152
+ <child>
153
+ <object class="GtkTreeViewColumn" id="search_list_selected">
154
+ <property name="fixed_width">30</property>
155
+ <property name="title" translatable="yes">X</property>
156
+ <property name="clickable">True</property>
157
+ <signal name="clicked" handler="on_search_list_selected_clicked" swapped="no"/>
158
+ <child>
159
+ <object class="GtkCellRendererToggle" id="search_list_cell_toggle">
160
+ <signal name="toggled" handler="on_search_list_toggle_toggled" swapped="no"/>
161
+ </object>
162
+ <attributes>
163
+ <attribute name="active">0</attribute>
164
+ </attributes>
165
+ </child>
166
+ </object>
167
+ </child>
168
+ <child>
169
+ <object class="GtkTreeViewColumn" id="search_list_id">
170
+ <property name="min_width">70</property>
171
+ <property name="title" translatable="yes">Id</property>
172
+ <child>
173
+ <object class="GtkCellRendererText" id="search_list_cell_id"/>
174
+ <attributes>
175
+ <attribute name="text">1</attribute>
176
+ </attributes>
177
+ </child>
178
+ </object>
179
+ </child>
180
+ <child>
181
+ <object class="GtkTreeViewColumn" id="search_list_name">
182
+ <property name="min_width">400</property>
183
+ <property name="title" translatable="yes">Name</property>
184
+ <child>
185
+ <object class="GtkCellRendererText" id="search_list_cell_name"/>
186
+ <attributes>
187
+ <attribute name="text">2</attribute>
188
+ </attributes>
189
+ </child>
190
+ </object>
191
+ </child>
192
+ <child>
193
+ <object class="GtkTreeViewColumn" id="search_list_author">
194
+ <property name="min_width">200</property>
195
+ <property name="title" translatable="yes">Author</property>
196
+ <child>
197
+ <object class="GtkCellRendererText" id="search_list_cell_author"/>
198
+ <attributes>
199
+ <attribute name="text">3</attribute>
200
+ </attributes>
201
+ </child>
202
+ </object>
203
+ </child>
204
+ <child>
205
+ <object class="GtkTreeViewColumn" id="search_list_other">
206
+ <property name="min_width">100</property>
207
+ <property name="title" translatable="yes">Other data</property>
208
+ <child>
209
+ <object class="GtkCellRendererText" id="search_list_cell_other"/>
210
+ <attributes>
211
+ <attribute name="text">4</attribute>
212
+ </attributes>
213
+ </child>
214
+ </object>
215
+ </child>
216
+ </object>
217
+ </child>
218
+ </object>
219
+ <packing>
220
+ <property name="expand">True</property>
221
+ <property name="fill">True</property>
222
+ <property name="position">1</property>
223
+ </packing>
224
+ </child>
225
+ <child>
226
+ <object class="GtkGrid" id="download_bar">
227
+ <property name="visible">True</property>
228
+ <property name="can_focus">False</property>
229
+ <property name="hexpand">True</property>
230
+ <child>
231
+ <object class="GtkButton" id="btn_add_to_queue">
232
+ <property name="label">gtk-add</property>
233
+ <property name="visible">True</property>
234
+ <property name="can_focus">True</property>
235
+ <property name="receives_default">True</property>
236
+ <property name="margin_left">5</property>
237
+ <property name="margin_right">5</property>
238
+ <property name="margin_top">5</property>
239
+ <property name="margin_bottom">5</property>
240
+ <property name="use_stock">True</property>
241
+ <property name="xalign">0.46000000834465027</property>
242
+ <property name="always_show_image">True</property>
243
+ <signal name="clicked" handler="on_btn_add_to_queue_clicked" swapped="no"/>
244
+ </object>
245
+ <packing>
246
+ <property name="left_attach">0</property>
247
+ <property name="top_attach">0</property>
248
+ </packing>
249
+ </child>
250
+ <child>
251
+ <object class="GtkLabel" id="label1">
252
+ <property name="visible">True</property>
253
+ <property name="can_focus">False</property>
254
+ <property name="margin_left">5</property>
255
+ <property name="margin_right">5</property>
256
+ <property name="margin_top">5</property>
257
+ <property name="margin_bottom">5</property>
258
+ <property name="label" translatable="yes">Concurrency</property>
259
+ </object>
260
+ <packing>
261
+ <property name="left_attach">3</property>
262
+ <property name="top_attach">0</property>
263
+ </packing>
264
+ </child>
265
+ <child>
266
+ <object class="GtkEntry" id="concurrency_entry">
267
+ <property name="visible">True</property>
268
+ <property name="can_focus">True</property>
269
+ <property name="margin_left">5</property>
270
+ <property name="margin_right">5</property>
271
+ <property name="margin_top">5</property>
272
+ <property name="margin_bottom">5</property>
273
+ <property name="progress_pulse_step">0.089999999999999997</property>
274
+ <property name="placeholder_text" translatable="yes">5</property>
275
+ </object>
276
+ <packing>
277
+ <property name="left_attach">4</property>
278
+ <property name="top_attach">0</property>
279
+ </packing>
280
+ </child>
281
+ <child>
282
+ <object class="GtkButton" id="btn_download">
283
+ <property name="label">gtk-save</property>
284
+ <property name="visible">True</property>
285
+ <property name="can_focus">True</property>
286
+ <property name="receives_default">True</property>
287
+ <property name="margin_left">5</property>
288
+ <property name="margin_right">5</property>
289
+ <property name="margin_top">5</property>
290
+ <property name="margin_bottom">5</property>
291
+ <property name="use_stock">True</property>
292
+ <property name="always_show_image">True</property>
293
+ <signal name="clicked" handler="on_btn_download_clicked" swapped="no"/>
294
+ </object>
295
+ <packing>
296
+ <property name="left_attach">5</property>
297
+ <property name="top_attach">0</property>
298
+ </packing>
299
+ </child>
300
+ <child>
301
+ <object class="GtkFileChooserButton" id="directory_chooser">
302
+ <property name="visible">True</property>
303
+ <property name="can_focus">False</property>
304
+ <property name="margin_left">5</property>
305
+ <property name="margin_right">5</property>
306
+ <property name="margin_top">5</property>
307
+ <property name="margin_bottom">5</property>
308
+ <property name="hexpand">True</property>
309
+ <property name="action">select-folder</property>
310
+ <property name="title" translatable="yes">Select a directory</property>
311
+ </object>
312
+ <packing>
313
+ <property name="left_attach">2</property>
314
+ <property name="top_attach">0</property>
315
+ </packing>
316
+ </child>
317
+ <child>
318
+ <object class="GtkButton" id="btn_clear_queue">
319
+ <property name="label">gtk-clear</property>
320
+ <property name="visible">True</property>
321
+ <property name="can_focus">True</property>
322
+ <property name="receives_default">True</property>
323
+ <property name="margin_left">5</property>
324
+ <property name="margin_right">5</property>
325
+ <property name="margin_top">5</property>
326
+ <property name="margin_bottom">5</property>
327
+ <property name="use_stock">True</property>
328
+ <property name="yalign">0.44999998807907104</property>
329
+ <property name="always_show_image">True</property>
330
+ <signal name="clicked" handler="on_btn_clear_queue_clicked" swapped="no"/>
331
+ </object>
332
+ <packing>
333
+ <property name="left_attach">1</property>
334
+ <property name="top_attach">0</property>
335
+ </packing>
336
+ </child>
337
+ </object>
338
+ <packing>
339
+ <property name="expand">False</property>
340
+ <property name="fill">True</property>
341
+ <property name="position">2</property>
342
+ </packing>
343
+ </child>
344
+ <child>
345
+ <object class="GtkNotebook" id="download_notebook">
346
+ <property name="visible">True</property>
347
+ <property name="can_focus">True</property>
348
+ <child>
349
+ <object class="GtkScrolledWindow" id="download_queue_scrolled_window">
350
+ <property name="visible">True</property>
351
+ <property name="can_focus">True</property>
352
+ <property name="shadow_type">in</property>
353
+ <child>
354
+ <object class="GtkTreeView" id="download_queue">
355
+ <property name="visible">True</property>
356
+ <property name="can_focus">True</property>
357
+ <property name="model">download_queue_list_store</property>
358
+ <child internal-child="selection">
359
+ <object class="GtkTreeSelection" id="treeview-selection4"/>
360
+ </child>
361
+ <child>
362
+ <object class="GtkTreeViewColumn" id="queue_path">
363
+ <property name="resizable">True</property>
364
+ <property name="min_width">650</property>
365
+ <property name="title" translatable="yes">Path</property>
366
+ <child>
367
+ <object class="GtkCellRendererText" id="download_queue_cell_path"/>
368
+ <attributes>
369
+ <attribute name="text">0</attribute>
370
+ </attributes>
371
+ </child>
372
+ </object>
373
+ </child>
374
+ <child>
375
+ <object class="GtkTreeViewColumn" id="queue_progress">
376
+ <property name="title" translatable="yes">Progress</property>
377
+ <property name="expand">True</property>
378
+ <child>
379
+ <object class="GtkCellRendererProgress" id="download_queue_cell_progress"/>
380
+ <attributes>
381
+ <attribute name="text">2</attribute>
382
+ <attribute name="value">1</attribute>
383
+ </attributes>
384
+ </child>
385
+ </object>
386
+ </child>
387
+ </object>
388
+ </child>
389
+ </object>
390
+ </child>
391
+ <child type="tab">
392
+ <object class="GtkLabel" id="download_label_queue">
393
+ <property name="visible">True</property>
394
+ <property name="can_focus">False</property>
395
+ <property name="label" translatable="yes">Queue</property>
396
+ </object>
397
+ <packing>
398
+ <property name="tab_fill">False</property>
399
+ </packing>
400
+ </child>
401
+ <child>
402
+ <object class="GtkScrolledWindow" id="download_success_scrolled_window">
403
+ <property name="visible">True</property>
404
+ <property name="can_focus">True</property>
405
+ <property name="shadow_type">in</property>
406
+ <child>
407
+ <object class="GtkTreeView" id="download_success">
408
+ <property name="visible">True</property>
409
+ <property name="can_focus">True</property>
410
+ <property name="model">download_success_list_store</property>
411
+ <signal name="button-press-event" handler="on_download_success_button_press_event" swapped="no"/>
412
+ <child internal-child="selection">
413
+ <object class="GtkTreeSelection" id="treeview-selection3"/>
414
+ </child>
415
+ <child>
416
+ <object class="GtkTreeViewColumn" id="success_path">
417
+ <property name="min_width">650</property>
418
+ <property name="title" translatable="yes">Path</property>
419
+ <property name="expand">True</property>
420
+ <child>
421
+ <object class="GtkCellRendererText" id="download_success_cell_path"/>
422
+ <attributes>
423
+ <attribute name="text">0</attribute>
424
+ </attributes>
425
+ </child>
426
+ </object>
427
+ </child>
428
+ <child>
429
+ <object class="GtkTreeViewColumn" id="success_size">
430
+ <property name="min_width">100</property>
431
+ <property name="title" translatable="yes">Size</property>
432
+ <property name="expand">True</property>
433
+ <child>
434
+ <object class="GtkCellRendererText" id="download_success_cell_size"/>
435
+ <attributes>
436
+ <attribute name="text">1</attribute>
437
+ </attributes>
438
+ </child>
439
+ </object>
440
+ </child>
441
+ </object>
442
+ </child>
443
+ </object>
444
+ <packing>
445
+ <property name="position">1</property>
446
+ </packing>
447
+ </child>
448
+ <child type="tab">
449
+ <object class="GtkLabel" id="download_label_success">
450
+ <property name="visible">True</property>
451
+ <property name="can_focus">False</property>
452
+ <property name="label" translatable="yes">Success</property>
453
+ </object>
454
+ <packing>
455
+ <property name="position">1</property>
456
+ <property name="tab_fill">False</property>
457
+ </packing>
458
+ </child>
459
+ <child>
460
+ <object class="GtkScrolledWindow" id="download_failed_scrolled_window">
461
+ <property name="visible">True</property>
462
+ <property name="can_focus">True</property>
463
+ <property name="shadow_type">in</property>
464
+ <child>
465
+ <object class="GtkTreeView" id="download_failed">
466
+ <property name="visible">True</property>
467
+ <property name="can_focus">True</property>
468
+ <property name="model">download_failed_list_store</property>
469
+ <child internal-child="selection">
470
+ <object class="GtkTreeSelection" id="treeview-selection2"/>
471
+ </child>
472
+ <child>
473
+ <object class="GtkTreeViewColumn" id="failed_path">
474
+ <property name="min_width">650</property>
475
+ <property name="title" translatable="yes">Path</property>
476
+ <child>
477
+ <object class="GtkCellRendererText" id="download_failed_cell_path"/>
478
+ <attributes>
479
+ <attribute name="text">0</attribute>
480
+ </attributes>
481
+ </child>
482
+ </object>
483
+ </child>
484
+ <child>
485
+ <object class="GtkTreeViewColumn" id="failed_reason">
486
+ <property name="title" translatable="yes">Reason</property>
487
+ <property name="expand">True</property>
488
+ <child>
489
+ <object class="GtkCellRendererText" id="download_failed_cell_reason"/>
490
+ <attributes>
491
+ <attribute name="text">1</attribute>
492
+ </attributes>
493
+ </child>
494
+ </object>
495
+ </child>
496
+ </object>
497
+ </child>
498
+ </object>
499
+ <packing>
500
+ <property name="position">2</property>
501
+ </packing>
502
+ </child>
503
+ <child type="tab">
504
+ <object class="GtkLabel" id="download_label_failed">
505
+ <property name="visible">True</property>
506
+ <property name="can_focus">False</property>
507
+ <property name="label" translatable="yes">Failed</property>
508
+ </object>
509
+ <packing>
510
+ <property name="position">2</property>
511
+ <property name="tab_fill">False</property>
512
+ </packing>
513
+ </child>
514
+ </object>
515
+ <packing>
516
+ <property name="expand">True</property>
517
+ <property name="fill">True</property>
518
+ <property name="position">3</property>
519
+ </packing>
520
+ </child>
521
+ </object>
522
+ </child>
523
+ </object>
524
+ <object class="GtkMenu" id="success_menu">
525
+ <property name="visible">True</property>
526
+ <property name="can_focus">False</property>
527
+ <child>
528
+ <object class="GtkImageMenuItem" id="menu_open">
529
+ <property name="label">gtk-open</property>
530
+ <property name="visible">True</property>
531
+ <property name="can_focus">False</property>
532
+ <property name="use_underline">True</property>
533
+ <property name="use_stock">True</property>
534
+ <property name="always_show_image">True</property>
535
+ <signal name="activate" handler="on_menu_open_activate" swapped="no"/>
536
+ </object>
537
+ </child>
538
+ </object>
539
+ </interface>