grumblr 2.2.0 → 2.3.0
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.
- data/Changelog +5 -0
- data/README +1 -1
- data/VERSION +1 -1
- data/grumblr.gemspec +20 -0
- data/lib/grumblr/ui.rb +27 -19
- data/lib/ppds/tumblr.rb +4 -3
- metadata +56 -30
- data/Rakefile +0 -51
data/Changelog
CHANGED
data/README
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.0
|
data/grumblr.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'grumblr'
|
3
|
+
s.version = File.open('VERSION') { |f| f.read }
|
4
|
+
s.author = 'Paul Philippov'
|
5
|
+
s.description = "Grumblr is a message poster to Tumblr blogs from GNOME"
|
6
|
+
s.email = 'themactep@gmail.com'
|
7
|
+
s.bindir = "bin"
|
8
|
+
s.executables = ['grumblr']
|
9
|
+
s.extra_rdoc_files = ['README', 'LICENSE', 'VERSION', 'Changelog']
|
10
|
+
s.files = Dir.glob("{bin,data,lib,spec}/**/*") + \
|
11
|
+
%w(LICENSE README VERSION Changelog grumblr.gemspec)
|
12
|
+
s.homepage = 'http://themactep.com/grumblr/'
|
13
|
+
s.require_path = "lib"
|
14
|
+
s.rubyforge_project = 'grumblr'
|
15
|
+
s.summary = "Tumblr companion for GNOME"
|
16
|
+
s.has_rdoc = false
|
17
|
+
s.add_dependency "ppds-libs"
|
18
|
+
s.add_dependency "libxml-ruby"
|
19
|
+
s.add_dependency "rest-client", '>= 1.6.0'
|
20
|
+
end
|
data/lib/grumblr/ui.rb
CHANGED
@@ -2,6 +2,7 @@ require 'gtk2'
|
|
2
2
|
|
3
3
|
module Grumblr
|
4
4
|
|
5
|
+
APP_NAME = 'Grumblr'
|
5
6
|
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
6
7
|
DATA_ROOT = File.join(APP_ROOT, 'data')
|
7
8
|
VERSION = File.open(File.join(APP_ROOT,'VERSION')) { |f| f.read }
|
@@ -17,9 +18,9 @@ module Grumblr
|
|
17
18
|
self.logo = Gdk::Pixbuf.new(filename, 128, 128)
|
18
19
|
|
19
20
|
set_size_request 440, 340
|
20
|
-
set_border_width
|
21
|
+
set_border_width 0
|
21
22
|
set_allow_shrink false
|
22
|
-
set_title
|
23
|
+
set_title Grumblr::APP_NAME
|
23
24
|
set_icon self.logo
|
24
25
|
set_default_width $cfg.get(:window_width).to_i
|
25
26
|
set_default_height $cfg.get(:window_height).to_i
|
@@ -27,17 +28,19 @@ module Grumblr
|
|
27
28
|
signal_connect(:destroy) { quit }
|
28
29
|
signal_connect(:delete_event) { minimize }
|
29
30
|
signal_connect(:check_resize) do |widget|
|
30
|
-
|
31
|
-
|
32
|
-
$cfg.set :window_x_pos,
|
33
|
-
$cfg.set :window_y_pos,
|
34
|
-
$cfg.set :window_width,
|
35
|
-
$cfg.set :window_height,
|
31
|
+
position_x, position_y = widget.position
|
32
|
+
size_w, size_h = widget.size
|
33
|
+
$cfg.set :window_x_pos, position_x
|
34
|
+
$cfg.set :window_y_pos, position_y
|
35
|
+
$cfg.set :window_width, size_w
|
36
|
+
$cfg.set :window_height, size_h
|
36
37
|
end
|
37
38
|
signal_connect(:window_state_event) do |widget, e|
|
38
39
|
case e.event_type
|
39
40
|
when Gdk::Event::WINDOW_STATE
|
40
41
|
minimize if e.changed_mask.iconified? and e.new_window_state.iconified?
|
42
|
+
else
|
43
|
+
nil
|
41
44
|
end
|
42
45
|
end
|
43
46
|
show
|
@@ -163,7 +166,7 @@ module Grumblr
|
|
163
166
|
@video_title = Gtk::LabeledEntry.new 'Title (optional)'
|
164
167
|
|
165
168
|
page.pack_start video_data, false
|
166
|
-
page.pack_start @video_title,
|
169
|
+
page.pack_start @video_title, false
|
167
170
|
end
|
168
171
|
|
169
172
|
page.pack_start @video_embed, false
|
@@ -217,7 +220,7 @@ module Grumblr
|
|
217
220
|
toolbar.insert 3, item
|
218
221
|
|
219
222
|
### Buttons
|
220
|
-
clear_button = Gtk::Button.new 'Clear'
|
223
|
+
clear_button = Gtk::Button.new ' Clear '
|
221
224
|
clear_button.set_focus_on_click false
|
222
225
|
clear_button.signal_connect(:clicked) do |widget|
|
223
226
|
page = @notebook.get_nth_page @notebook.page
|
@@ -225,13 +228,13 @@ module Grumblr
|
|
225
228
|
reset_form message_type.downcase
|
226
229
|
end
|
227
230
|
|
228
|
-
@private_button = Gtk::ToggleButton.new 'Private'
|
231
|
+
@private_button = Gtk::ToggleButton.new ' Private '
|
229
232
|
@private_button.signal_connect(:toggled) do |widget|
|
230
233
|
$cfg.set :private, widget.active?
|
231
234
|
end
|
232
235
|
@private_button.set_active $cfg.get(:private)
|
233
236
|
|
234
|
-
submit_button = Gtk::Button.new 'Send'
|
237
|
+
submit_button = Gtk::Button.new ' Send '
|
235
238
|
submit_button.signal_connect(:released) do |widget|
|
236
239
|
post
|
237
240
|
end
|
@@ -251,7 +254,7 @@ module Grumblr
|
|
251
254
|
button_box.pack_start @private_button, false
|
252
255
|
button_box.pack_start @tags, true
|
253
256
|
button_box.pack_start format_box, false
|
254
|
-
button_box.pack_start submit_button,
|
257
|
+
button_box.pack_start submit_button, false
|
255
258
|
|
256
259
|
### Layout
|
257
260
|
pack_start toolbar, false
|
@@ -310,9 +313,10 @@ module Grumblr
|
|
310
313
|
|
311
314
|
def collect_data_for(fieldset, message_type)
|
312
315
|
data = {}
|
313
|
-
|
316
|
+
fieldset[message_type].each do |key|
|
314
317
|
name = "@#{message_type}_#{key.gsub(/-/,'_')}"
|
315
|
-
|
318
|
+
var = instance_variable_get(name)
|
319
|
+
if var
|
316
320
|
value = var.get_value
|
317
321
|
data.merge!({ key => value })
|
318
322
|
end
|
@@ -334,7 +338,7 @@ module Grumblr
|
|
334
338
|
end
|
335
339
|
|
336
340
|
def reset_fields_for(fieldset, message_type)
|
337
|
-
|
341
|
+
fieldset[message_type].each do |key|
|
338
342
|
name = "@#{message_type}_#{key.gsub(/-/,'_')}"
|
339
343
|
var = instance_variable_get(name)
|
340
344
|
var.clear if var
|
@@ -451,7 +455,7 @@ module Grumblr
|
|
451
455
|
end
|
452
456
|
super
|
453
457
|
self.logo = $gui.logo
|
454
|
-
self.program_name =
|
458
|
+
self.program_name = Grumblr::APP_NAME
|
455
459
|
self.version = Grumblr::VERSION
|
456
460
|
self.copyright = "Copyright (c)2009, Paul Philippov"
|
457
461
|
self.comments = "Tumblr companion for GNOME"
|
@@ -483,7 +487,7 @@ module Grumblr
|
|
483
487
|
|
484
488
|
def menu
|
485
489
|
menu = Gtk::Menu.new
|
486
|
-
|
490
|
+
[ ontop, sep, destroy_account, sep, about, sep, quit ].each do |item|
|
487
491
|
menu.append item
|
488
492
|
end
|
489
493
|
menu.show_all
|
@@ -633,6 +637,7 @@ module Gtk
|
|
633
637
|
self.set_left_margin 5
|
634
638
|
self.modify_text Gtk::STATE_NORMAL, PALE
|
635
639
|
self.buffer.set_text @label
|
640
|
+
|
636
641
|
self.signal_connect(:focus_in_event) do |widget, type|
|
637
642
|
if widget.buffer.text == @label
|
638
643
|
widget.modify_text Gtk::STATE_NORMAL, DARK
|
@@ -640,12 +645,14 @@ module Gtk
|
|
640
645
|
end
|
641
646
|
report_length
|
642
647
|
false
|
643
|
-
|
648
|
+
end
|
649
|
+
|
644
650
|
self.signal_connect(:focus_out_event) do |widget, type|
|
645
651
|
self.clear if widget.buffer.text == ''
|
646
652
|
$statusbar.push 0, $app.blog.title
|
647
653
|
false
|
648
654
|
end
|
655
|
+
|
649
656
|
self.signal_connect(:key_release_event) do |widget, type|
|
650
657
|
report_length
|
651
658
|
false
|
@@ -654,6 +661,7 @@ module Gtk
|
|
654
661
|
|
655
662
|
def report_length
|
656
663
|
$statusbar.push 0, "Length: #{self.buffer.text.chars.count}"
|
664
|
+
self.buffer.text.strip
|
657
665
|
end
|
658
666
|
|
659
667
|
def get_value
|
data/lib/ppds/tumblr.rb
CHANGED
@@ -55,13 +55,14 @@ module Ppds
|
|
55
55
|
|
56
56
|
def query(action, data)
|
57
57
|
raise 'Cannot authenticate without credentials' unless data[:email] and data[:password]
|
58
|
-
RestClient.post(API_URL + action, data)
|
58
|
+
response = RestClient.post(API_URL + action, data)
|
59
|
+
response.to_str
|
59
60
|
rescue RestClient::RequestFailed => e
|
60
61
|
raise 'Query failed: %s' % e.response.body
|
61
62
|
rescue RestClient::RequestTimeout
|
62
63
|
raise 'Timeout occured'
|
63
|
-
rescue Exception
|
64
|
-
raise $!
|
64
|
+
# rescue Exception
|
65
|
+
# raise $!
|
65
66
|
end
|
66
67
|
|
67
68
|
def authenticate(email, password)
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grumblr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 3
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 2.3.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Paul Philippov
|
@@ -9,39 +15,53 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-07-04 00:00:00 -04:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: ppds-libs
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
23
32
|
version: "0"
|
24
|
-
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: libxml-ruby
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
33
46
|
version: "0"
|
34
|
-
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
35
49
|
- !ruby/object:Gem::Dependency
|
36
50
|
name: rest-client
|
37
|
-
|
38
|
-
|
39
|
-
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
40
54
|
requirements:
|
41
55
|
- - ">="
|
42
56
|
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
57
|
+
hash: 15
|
58
|
+
segments:
|
59
|
+
- 1
|
60
|
+
- 6
|
61
|
+
- 0
|
62
|
+
version: 1.6.0
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: *id003
|
45
65
|
description: Grumblr is a message poster to Tumblr blogs from GNOME
|
46
66
|
email: themactep@gmail.com
|
47
67
|
executables:
|
@@ -51,29 +71,29 @@ extensions: []
|
|
51
71
|
extra_rdoc_files:
|
52
72
|
- README
|
53
73
|
- LICENSE
|
54
|
-
- Changelog
|
55
74
|
- VERSION
|
75
|
+
- Changelog
|
56
76
|
files:
|
57
77
|
- bin/grumblr
|
58
|
-
- data/
|
59
|
-
- data/pixmaps/video.bmp
|
60
|
-
- data/pixmaps/spinner.gif
|
78
|
+
- data/grumblr.desktop
|
61
79
|
- data/pixmaps/photo.bmp
|
62
|
-
- data/pixmaps/
|
80
|
+
- data/pixmaps/text.bmp
|
81
|
+
- data/pixmaps/audio.bmp
|
63
82
|
- data/pixmaps/chat.bmp
|
64
83
|
- data/pixmaps/quote.bmp
|
84
|
+
- data/pixmaps/grumblr.png
|
65
85
|
- data/pixmaps/grumblr.svg
|
66
|
-
- data/pixmaps/
|
67
|
-
- data/pixmaps/
|
68
|
-
- data/
|
69
|
-
- lib/grumblr/ui.rb
|
70
|
-
- lib/grumblr/core.rb
|
86
|
+
- data/pixmaps/link.bmp
|
87
|
+
- data/pixmaps/spinner.gif
|
88
|
+
- data/pixmaps/video.bmp
|
71
89
|
- lib/ppds/tumblr.rb
|
90
|
+
- lib/grumblr/core.rb
|
91
|
+
- lib/grumblr/ui.rb
|
72
92
|
- LICENSE
|
73
93
|
- README
|
74
|
-
- Rakefile
|
75
|
-
- Changelog
|
76
94
|
- VERSION
|
95
|
+
- Changelog
|
96
|
+
- grumblr.gemspec
|
77
97
|
has_rdoc: true
|
78
98
|
homepage: http://themactep.com/grumblr/
|
79
99
|
licenses: []
|
@@ -84,21 +104,27 @@ rdoc_options: []
|
|
84
104
|
require_paths:
|
85
105
|
- lib
|
86
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
87
108
|
requirements:
|
88
109
|
- - ">="
|
89
110
|
- !ruby/object:Gem::Version
|
111
|
+
hash: 3
|
112
|
+
segments:
|
113
|
+
- 0
|
90
114
|
version: "0"
|
91
|
-
version:
|
92
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
93
117
|
requirements:
|
94
118
|
- - ">="
|
95
119
|
- !ruby/object:Gem::Version
|
120
|
+
hash: 3
|
121
|
+
segments:
|
122
|
+
- 0
|
96
123
|
version: "0"
|
97
|
-
version:
|
98
124
|
requirements: []
|
99
125
|
|
100
126
|
rubyforge_project: grumblr
|
101
|
-
rubygems_version: 1.3.
|
127
|
+
rubygems_version: 1.3.7
|
102
128
|
signing_key:
|
103
129
|
specification_version: 3
|
104
130
|
summary: Tumblr companion for GNOME
|
data/Rakefile
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'rake/clean'
|
4
|
-
require 'rake/gempackagetask'
|
5
|
-
require 'rake/rdoctask'
|
6
|
-
require 'rake/testtask'
|
7
|
-
require 'spec/rake/spectask'
|
8
|
-
|
9
|
-
spec = Gem::Specification.new do |s|
|
10
|
-
s.name = 'grumblr'
|
11
|
-
s.version = File.open('VERSION') { |f| f.read }
|
12
|
-
s.has_rdoc = false
|
13
|
-
s.extra_rdoc_files = ['README', 'LICENSE', 'Changelog', 'VERSION']
|
14
|
-
s.summary = "Tumblr companion for GNOME"
|
15
|
-
s.description = "Grumblr is a message poster to Tumblr blogs from GNOME"
|
16
|
-
s.author = 'Paul Philippov'
|
17
|
-
s.email = 'themactep@gmail.com'
|
18
|
-
s.homepage = 'http://themactep.com/grumblr/'
|
19
|
-
s.rubyforge_project = 'grumblr'
|
20
|
-
s.executables = ['grumblr']
|
21
|
-
s.files = Dir.glob("{bin,data,lib,spec}/**/*") + \
|
22
|
-
%w(LICENSE README Rakefile Changelog VERSION)
|
23
|
-
s.require_path = "lib"
|
24
|
-
s.bindir = "bin"
|
25
|
-
s.add_dependency "ppds-libs"
|
26
|
-
s.add_dependency "libxml-ruby"
|
27
|
-
s.add_dependency "rest-client"
|
28
|
-
end
|
29
|
-
|
30
|
-
Rake::GemPackageTask.new(spec) do |p|
|
31
|
-
p.gem_spec = spec
|
32
|
-
p.need_tar = true
|
33
|
-
p.need_zip = true
|
34
|
-
end
|
35
|
-
|
36
|
-
Rake::RDocTask.new do |rdoc|
|
37
|
-
files =['README', 'LICENSE', 'lib/**/*.rb']
|
38
|
-
rdoc.rdoc_files.add(files)
|
39
|
-
rdoc.main = "README" # page to start on
|
40
|
-
rdoc.title = "grumblr Docs"
|
41
|
-
rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
|
42
|
-
rdoc.options << '--line-numbers'
|
43
|
-
end
|
44
|
-
|
45
|
-
Rake::TestTask.new do |t|
|
46
|
-
t.test_files = FileList['test/**/*.rb']
|
47
|
-
end
|
48
|
-
|
49
|
-
Spec::Rake::SpecTask.new do |t|
|
50
|
-
t.spec_files = FileList['spec/**/*.rb']
|
51
|
-
end
|