gimdb 0.0.3 → 0.0.4

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/README.rdoc CHANGED
@@ -55,7 +55,7 @@ Avaiable options are:
55
55
  * activerecord
56
56
  * sqlite3-ruby[http://github.com/jamis/sqlite3-ruby]
57
57
  * nokogiri[http://github.com/tenderlove/nokogiri]
58
- * libgnome2 <tt>(sudo apt-get install libgnome2-ruby)</tt>
58
+ * libgtk2 <tt>(sudo apt-get install libgtk2-ruby)</tt>
59
59
  * libglade2 <tt>(sudo apt-get install libglade2-ruby)</tt>
60
60
 
61
61
  == Install
@@ -67,6 +67,11 @@ Avaiable options are:
67
67
  * sudo apt-get install rubygems
68
68
  * sudo gem install gimdb
69
69
 
70
+ Remember also to add rubygems bin path to your PATH env variable.
71
+ Edit <tt>~/.bashrc</tt> and add the follow line:
72
+
73
+ PATH=$PATH:/var/lib/gems/1.8/bin
74
+
70
75
  == Support
71
76
 
72
77
  You can use this email address for any questions or help: mailto:enrico@megiston.it.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/data/gimdb.glade CHANGED
@@ -193,6 +193,7 @@
193
193
  <child>
194
194
  <widget class="GtkMenu" id="menu3">
195
195
  <property name="visible">True</property>
196
+ <signal name="button_press_event" handler="on_about_clicked"/>
196
197
  <child>
197
198
  <widget class="GtkImageMenuItem" id="imagemenuitem10">
198
199
  <property name="label">gtk-about</property>
@@ -1017,62 +1018,15 @@ Year</property>
1017
1018
  <property name="visible">True</property>
1018
1019
  <property name="spacing">2</property>
1019
1020
  <child>
1020
- <widget class="GtkVBox" id="vbox2">
1021
+ <widget class="GtkVBox" id="dialog_users_box">
1021
1022
  <property name="visible">True</property>
1022
1023
  <child>
1023
- <widget class="GtkTable" id="table_combo">
1024
- <property name="visible">True</property>
1025
- <property name="n_rows">2</property>
1026
- <property name="n_columns">2</property>
1027
- <child>
1028
- <widget class="GtkEntry" id="entry_user">
1029
- <property name="visible">True</property>
1030
- <property name="can_focus">True</property>
1031
- <property name="invisible_char">&#x25CF;</property>
1032
- </widget>
1033
- </child>
1034
- <child>
1035
- <widget class="GtkButton" id="add_user">
1036
- <property name="label">gtk-add</property>
1037
- <property name="visible">True</property>
1038
- <property name="can_focus">True</property>
1039
- <property name="receives_default">True</property>
1040
- <property name="use_stock">True</property>
1041
- <signal name="clicked" handler="on_add_users_clicked"/>
1042
- </widget>
1043
- <packing>
1044
- <property name="left_attach">1</property>
1045
- <property name="right_attach">2</property>
1046
- </packing>
1047
- </child>
1048
- <child>
1049
- <widget class="GtkButton" id="del_user">
1050
- <property name="label">gtk-delete</property>
1051
- <property name="visible">True</property>
1052
- <property name="can_focus">True</property>
1053
- <property name="receives_default">True</property>
1054
- <property name="use_stock">True</property>
1055
- <signal name="clicked" handler="on_del_users_clicked"/>
1056
- </widget>
1057
- <packing>
1058
- <property name="left_attach">1</property>
1059
- <property name="right_attach">2</property>
1060
- <property name="top_attach">1</property>
1061
- <property name="bottom_attach">2</property>
1062
- </packing>
1063
- </child>
1064
- <child>
1065
- <placeholder/>
1066
- </child>
1067
- </widget>
1068
- <packing>
1069
- <property name="expand">False</property>
1070
- <property name="fill">False</property>
1071
- <property name="position">0</property>
1072
- </packing>
1024
+ <placeholder/>
1073
1025
  </child>
1074
1026
  </widget>
1075
1027
  <packing>
1028
+ <property name="expand">False</property>
1029
+ <property name="fill">False</property>
1076
1030
  <property name="position">1</property>
1077
1031
  </packing>
1078
1032
  </child>
@@ -1111,7 +1065,6 @@ Year</property>
1111
1065
  </child>
1112
1066
  </widget>
1113
1067
  <packing>
1114
- <property name="expand">False</property>
1115
1068
  <property name="pack_type">end</property>
1116
1069
  <property name="position">0</property>
1117
1070
  </packing>
Binary file
data/gimdb.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gimdb}
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Enrico Pilotto"]
12
- s.date = %q{2010-05-08}
12
+ s.date = %q{2010-05-13}
13
13
  s.default_executable = %q{gimdb}
14
14
  s.description = %q{GTK graphical interface for Internet Movie DataBase. You can create users and save for each of them the movies to see, movies seen and favourites movies in a sqlite3 database.}
15
15
  s.email = %q{enrico@megiston.it}
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
42
42
  "po/it/gimdb.po",
43
43
  "src/controller.rb",
44
44
  "src/gimdb.rb",
45
+ "src/manager_box.rb",
45
46
  "src/model.rb",
46
47
  "src/movie_box.rb"
47
48
  ]
data/po/gimdb.pot CHANGED
@@ -16,31 +16,36 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
18
18
 
19
- #: movie_box.rb:53
20
19
  msgid "Genres"
21
20
  msgstr ""
22
21
 
23
- #: movie_box.rb:75
24
22
  msgid "<b>To see</b>"
25
23
  msgstr ""
26
24
 
27
- #: movie_box.rb:76
28
25
  msgid "<b>Seen</b>"
29
26
  msgstr ""
30
27
 
31
- #: movie_box.rb:77
32
28
  msgid "<b>Favourites</b>"
33
29
  msgstr ""
34
30
 
35
- #: gimdb.rb:158
36
31
  msgid "Searching"
37
32
  msgstr ""
38
33
 
39
- #: gimdb.rb:345
34
+ msgid "Add"
35
+ msgstr ""
36
+
37
+ msgid "Edit"
38
+ msgstr ""
39
+
40
+ msgid "Delete"
41
+ msgstr ""
42
+
40
43
  msgid "New user added"
41
44
  msgstr ""
42
45
 
43
- #: gimdb.rb:362
46
+ msgid "User edited"
47
+ msgstr ""
48
+
44
49
  msgid "User deleted"
45
50
  msgstr ""
46
51
 
data/po/it/gimdb.po CHANGED
@@ -16,31 +16,36 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
18
 
19
- #: movie_box.rb:53
20
19
  msgid "Genres"
21
20
  msgstr "Generi"
22
21
 
23
- #: movie_box.rb:75
24
22
  msgid "<b>To see</b>"
25
23
  msgstr "<b>Da vedere</b>"
26
24
 
27
- #: movie_box.rb:76
28
25
  msgid "<b>Seen</b>"
29
26
  msgstr "<b>Visto</b>"
30
27
 
31
- #: movie_box.rb:77
32
28
  msgid "<b>Favourites</b>"
33
29
  msgstr "<b>Preferito</b>"
34
30
 
35
- #: gimdb.rb:158
36
31
  msgid "Searching"
37
32
  msgstr "Ricerca in corso"
38
33
 
39
- #: gimdb.rb:345
34
+ msgid "Add"
35
+ msgstr "Aggiungi"
36
+
37
+ msgid "Edit"
38
+ msgstr "Modifica"
39
+
40
+ msgid "Delete"
41
+ msgstr "Cancella"
42
+
40
43
  msgid "New user added"
41
44
  msgstr "Nuovo utente aggiunto"
42
45
 
43
- #: gimdb.rb:362
46
+ msgid "User edited"
47
+ msgstr "Utente modificato"
48
+
44
49
  msgid "User deleted"
45
50
  msgstr "Utente cancellato"
46
51
 
data/src/gimdb.rb CHANGED
@@ -25,6 +25,7 @@ end
25
25
  require "#{$GIMDB_PATH}/lib/imdb"
26
26
  require "#{$GIMDB_PATH}/src/controller"
27
27
  require "#{$GIMDB_PATH}/src/movie_box"
28
+ require "#{$GIMDB_PATH}/src/manager_box"
28
29
 
29
30
 
30
31
  class GimdbGlade
@@ -66,10 +67,12 @@ class GimdbGlade
66
67
  @scrolled = @glade.get_widget('scrolled')
67
68
  @vbox_movies = Gtk::VBox.new
68
69
  @dialog_users = @glade.get_widget('dialog_users')
69
- @entry_user = @glade.get_widget('entry_user')
70
- @combo_del_users = @glade.get_widget('combo_del_users')
71
- @table_combo = @glade.get_widget('table_combo')
72
- @check_genres_all = @glade.get_widget('check_genres_all')
70
+ @dialog_users_box = @glade.get_widget('dialog_users_box').pack_start(GtkGimdb::ManagerBox.new(:users, :name) do |t|
71
+ @label_status.text = _(t)
72
+ @label_status.show
73
+ build_users_menu
74
+ end)
75
+ @check_genres_all = @glade.get_widget('check_genres_all')
73
76
 
74
77
  @genres = [
75
78
  :action,:adventure,:animation,:biography,:comedy,
@@ -85,7 +88,6 @@ class GimdbGlade
85
88
 
86
89
  # Some stuffs
87
90
  @users = User.find(:all, :conditions => 'selected = 1')
88
- @all_users = User.all
89
91
  build_users_menu
90
92
  @spin_year_to.value = Time.now.year.to_i
91
93
  @combo_rating_from.active = 0
@@ -236,7 +238,7 @@ class GimdbGlade
236
238
 
237
239
  def build_users_menu
238
240
  submenu = Gtk::Menu.new
239
- @all_users.sort{|x,y| x.name <=> y.name}.each do |u|
241
+ User.all.sort{|x,y| x.name <=> y.name}.each do |u|
240
242
  m = Gtk::CheckMenuItem.new(u.name)
241
243
  m.active = true if @users.include?(u)
242
244
  submenu.append(m)
@@ -322,53 +324,15 @@ class GimdbGlade
322
324
  end
323
325
 
324
326
  def on_manage_users_clicked(widget, arg = nil)
325
- @combo_del_users = Gtk::ComboBox.new
326
- @table_combo.attach(@combo_del_users, 0,1, 1,2)
327
- @all_users.sort{|x,y| x.name <=> y.name}.each do |u|
328
- @combo_del_users.append_text(u.name)
329
- end
330
- @combo_del_users.active = 0
331
327
  @dialog_users.show_all
332
328
  end
333
329
 
334
- def on_add_users_clicked(widget, arg = nil)
335
- unless @entry_user.text.empty?
336
- u = User.new(:name => @entry_user.text)
337
- begin
338
- u.save
339
- @all_users << u
340
- build_users_menu
341
- @combo_del_users.append_text(u.name)
342
- @combo_del_users.active = 0
343
- @entry_user.text = ''
344
- @label_status.text = _('New user added')
345
- @label_status.show
346
- # @dialog_users.hide
347
- rescue
348
- nil
349
- end
350
- end
351
- end
352
-
353
- def on_del_users_clicked(widget, arg = nil)
354
- name = @combo_del_users.active_text
355
- u = User.find_by_name(name)
356
- unless u.nil?
357
- u.destroy
358
- @all_users.delete(u)
359
- build_users_menu
360
- @combo_del_users.remove_text(@combo_del_users.active)
361
- @label_status.text = _('User deleted')
362
- @label_status.show
363
- # @combo_del_users.active = 0
364
- end
365
- end
366
-
367
330
  def on_select_all_users_clicked(widget, arg = nil)
368
331
  @users_menu_item.submenu.children.each do |c|
369
332
  c.active = !c.active?
370
333
  end
371
334
  @dialog_users.hide
335
+ @label_status.hide
372
336
  end
373
337
 
374
338
  def on_close_manage_users_clicked(widget, arg = nil)
@@ -376,4 +340,36 @@ class GimdbGlade
376
340
  @label_status.hide
377
341
  end
378
342
 
343
+ def on_about_clicked(widget, arg = nil)
344
+ @dialog_about = Gtk::AboutDialog.new
345
+ begin
346
+ f = File.open("#{$GIMDB_PATH}/VERSION", 'r')
347
+ version = ''
348
+ f.each_line { |line| version += line }
349
+ @dialog_about.version = version
350
+ rescue
351
+ nil
352
+ end
353
+ begin
354
+ f = File.open("#{$GIMDB_PATH}/LICENSE", 'r')
355
+ license = ''
356
+ f.each_line { |line| license += line }
357
+ @dialog_about.license = license
358
+ rescue
359
+ nil
360
+ end
361
+ @dialog_about.program_name = 'GIMDB'
362
+ @dialog_about.logo = Gdk::Pixbuf.new("#{$GIMDB_PATH}/data/icons/imdb.png")
363
+ @dialog_about.comments = 'GTK graphical interface for the Internet Movie DataBase.'
364
+ @dialog_about.copyright = "Copyright © #{Time.now.year} Enrico Pilotto"
365
+ @dialog_about.website = 'http://github.com/pioz/gimdb'
366
+ @dialog_about.website_label = 'Website'
367
+ @dialog_about.authors = ['Enrico Pilotto <enrico@megiston.it>']
368
+ @dialog_about.translator_credits = 'Italian: Enrico Pilotto <enrico@megiston.it>'
369
+ @dialog_about.modal = true
370
+ @dialog_about.skip_taskbar_hint = true
371
+ @dialog_about.signal_connect('response') { @dialog_about.hide }
372
+ @dialog_about.run
373
+ end
374
+
379
375
  end
@@ -0,0 +1,106 @@
1
+ #require "#{$GIMDB_PATH}/src/model"
2
+
3
+
4
+ module GtkGimdb
5
+
6
+ class ManagerBox < Gtk::HBox
7
+ include GetText
8
+
9
+
10
+ def initialize(klass, field)
11
+ bindtextdomain($DOMAIN, $LOCALEDIR, nil, 'UTF-8')
12
+ super()
13
+ @comboboxentry = Gtk::ComboBoxEntry.new
14
+ @image_add = Gtk::Image.new(Gtk::Stock::ADD, Gtk::IconSize::BUTTON)
15
+ @image_edit = Gtk::Image.new(Gtk::Stock::EDIT, Gtk::IconSize::BUTTON)
16
+ @image_del = Gtk::Image.new(Gtk::Stock::DELETE, Gtk::IconSize::BUTTON)
17
+ @button = Gtk::Button.new(_('Add'))
18
+ @button.image = @image_add
19
+ @button.image.show
20
+ @klass = klass.to_s.classify.constantize
21
+ @field = field
22
+ @objs = @klass.all.collect{|o| o.send(@field)}
23
+ @status = :add
24
+ @pos = 0
25
+ setting_up { |t| yield(t) }
26
+ end
27
+
28
+
29
+ private
30
+
31
+
32
+ def setting_up
33
+ reorder
34
+
35
+ @button.signal_connect('clicked') do
36
+ if @status == :add
37
+ o = @klass.new(@field.to_sym => @comboboxentry.active_text)
38
+ if o.save
39
+ @objs << @comboboxentry.active_text
40
+ yield("New #{@klass.to_s.downcase} added") if block_given?
41
+ end
42
+ reorder
43
+ elsif @status == :edit
44
+ o = @klass.send("find_by_#{@field}", @obj_to_edit)
45
+ unless o.nil?
46
+ o.send("#{@field}=", @comboboxentry.active_text)
47
+ if o.save
48
+ @objs.delete(@obj_to_edit)
49
+ @objs << @comboboxentry.active_text
50
+ yield("#{@klass} edited") if block_given?
51
+ end
52
+ end
53
+ reorder
54
+ elsif @status == :del
55
+ o = @klass.send("find_by_#{@field}", @comboboxentry.active_text)
56
+ unless o.nil?
57
+ o.destroy
58
+ @objs.delete(@comboboxentry.active_text)
59
+ yield("#{@klass} deleted") if block_given?
60
+ end
61
+ reorder
62
+ else
63
+ nil
64
+ end
65
+ end
66
+
67
+ @comboboxentry.signal_connect('changed') do
68
+ @pos = @comboboxentry.active if @comboboxentry.active > -1
69
+ if @pos == 0
70
+ @status = :add
71
+ @button.label = _('Add')
72
+ @button.image = @image_add
73
+ elsif @objs.include?(@comboboxentry.active_text)
74
+ @status = :del
75
+ @obj_to_edit = @comboboxentry.active_text
76
+ @button.label = _('Delete')
77
+ @button.image = @image_del
78
+ else
79
+ @status = :edit
80
+ @button.label = _('Edit')
81
+ @button.image = @image_edit
82
+ end
83
+ @button.image.show
84
+ end
85
+
86
+ table = Gtk::Table.new(1, 2)
87
+ table.attach(@comboboxentry, 0,1, 0,1)
88
+ table.attach(@button, 1,2, 0,1, Gtk::SHRINK, Gtk::EXPAND|Gtk::FILL)
89
+ self.pack_start(table)
90
+ self.show_all
91
+ end
92
+
93
+
94
+ def reorder
95
+ @objs.sort!
96
+ (@objs.size + 2).times { @comboboxentry.remove_text(0) }
97
+ @comboboxentry.append_text('')
98
+ @objs.each do |o|
99
+ @comboboxentry.append_text(o)
100
+ end
101
+ @comboboxentry.active = 0
102
+ end
103
+
104
+ end
105
+
106
+ end
data/src/model.rb CHANGED
@@ -132,4 +132,6 @@ end
132
132
  class User < ActiveRecord::Base
133
133
  has_many :populars, :dependent => :delete_all
134
134
  has_many :movies, :through => :populars
135
+ validates_presence_of :name
136
+ validates_uniqueness_of :name
135
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gimdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enrico Pilotto
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-05-08 00:00:00 +02:00
12
+ date: 2010-05-13 00:00:00 +02:00
13
13
  default_executable: gimdb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -75,6 +75,7 @@ files:
75
75
  - po/it/gimdb.po
76
76
  - src/controller.rb
77
77
  - src/gimdb.rb
78
+ - src/manager_box.rb
78
79
  - src/model.rb
79
80
  - src/movie_box.rb
80
81
  has_rdoc: true