gtk2passwordapp 1.1.2 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt CHANGED
@@ -12,29 +12,28 @@ in the appropriate entry boxes.
12
12
  To set a new password, either enter the password in the "New:" entry box, or
13
13
  generate it by pressing "Random", "Alpha-Numeric", "Numeric", "Letters", or
14
14
  "All-Caps". One can set the password length generated with the spin-box.
15
- To make the password generated visible, press the "Visible" button.
16
- The "Current" button copies the current password to the primary clipboard.
17
- The "Previous" button copies the previous password to the primary clipboard.
15
+ To make the password generated visible, un-check the check button.
18
16
 
17
+ Once one has edited the account, clicking the "Update Account" button finalizes the record.
18
+ Note, however, that the change is not yet permanent and saved on disk.
19
19
  To delete an account, select the account in the entry/combo box, and
20
20
  the press the "Delete Account" button.
21
+ Once one is done with all updates, one then needs to press "Save To Disk".
22
+ "Cancel All Changes" or closing the window without "Save To Disk" will ignore all of the sessions updates.
21
23
 
22
- Once one has edited the account, clicking the "Update" button finalizes the record.
23
- Note, however, that the change is not yet permanent and saved on disk.
24
- Once one is done with all updates, one then needs to press "Save".
25
- "Cancel" or closing the window without "Save" will ignore all of the sessions updates.
24
+ The "Clip Current Password" button copies the current password to the primary clipboard.
25
+ The "Clip Previous Password" button copies the previous (old) password to the primary clipboard.
26
26
 
27
27
  The "Change Data File Password" button will allow one the change
28
- the master password.
28
+ the master password. Do not forget the master password!
29
29
 
30
30
  Right click most anywhere on the app's window for the main menu.
31
- "Close" will dock the app and has the same effect as "Cancel".
31
+ "Close" will dock the app and has the same effect as "Cancel All Changes".
32
32
 
33
33
  Left click on the docked icon to bring back the editor window.
34
-
35
34
  Right click on the docked icon to select one of the accounts to load
36
35
  the password and username to the clipboard.
37
- The password is copied the the primary clipboard and will paste on
36
+ The password is copied to the primary clipboard and will paste on
38
37
  middle mouse button click.
39
38
  Right click on an entry box to paste the username (via the clipboard's menu).
40
39
 
@@ -43,9 +42,8 @@ Lastly, do not edit
43
42
  It's used to "salt" the password... without it,
44
43
  one will not be able to decrypt the datafile.
45
44
 
46
-
47
45
  For full documentation and comments, see
48
46
 
49
47
  http://ruby-gnome-apps.blogspot.com/search/label/Passwords
50
48
 
51
- -Carlos
49
+ carlosjhr64@gmail.com
data/bin/gtk2passwordapp CHANGED
@@ -1,31 +1,38 @@
1
1
  #!/usr/bin/env ruby
2
+
2
3
  require 'rubygems'
3
- gem 'gtk2applib', '~> 5.0.0'
4
- require 'gtk2applib/gtk2_app'
4
+ gem 'gtk2applib', '~> 7'
5
+ require 'gtk2applib'
5
6
 
6
- application = {
7
+ include Gtk2AppLib
8
+ PROGRAM = Program.new( {
7
9
  :name => 'Ruby-Gnome Password Manager',
8
10
  :tooltip => 'Password Manager',
9
- :FILE => __FILE__,
10
- }
11
- Gtk2App.init(application)
12
- Gtk2App.icon.set_icon_name(Gtk::Stock::DIALOG_AUTHENTICATION)
11
+ :icon_name => 'Passwords',
12
+ :FILE => __FILE__,
13
+ :lock => "Proceed anyways?",
14
+ } )
13
15
 
14
- require 'gtk2passwordapp/edit_box.rb'
15
- require 'gtk2passwordapp/passwords.rb'
16
- passwords = Gtk2PasswordApp::Passwords.new
17
- Gtk2PasswordApp.build_menu(passwords)
16
+ begin
17
+ require 'gtk2passwordapp'
18
+ passwords = Gtk2PasswordApp::Passwords.new
19
+ Gtk2PasswordApp.build_menu(passwords)
18
20
 
19
- about = {
20
- :authors => ['carlosjhr64@gmail.com'],
21
- :comments => 'Ruby-Gtk2 Passsword Manager',
21
+ about = {
22
+ :authors => ['carlosjhr64@gmail.com'],
22
23
  :website => 'http://ruby-gnome-apps.blogspot.com/search/label/Passwords',
23
24
  :website_label => 'Ruby-Gnome Password Manager',
24
- :license => 'GPL',
25
- :copyright => '2010-03-10 18:08:34',
26
- }
27
- Gtk2App.main_window(about) do |window|
28
- Gtk2PasswordApp.edit(window,passwords)
25
+ :license => 'GPL',
26
+ :copyright => '2010-08-04 16:39:30',
27
+ }
28
+
29
+ PROGRAM.window(about) do |window|
30
+ Gtk2PasswordApp.edit(window,passwords)
31
+ end
32
+ rescue Exception
33
+ $verbose = true
34
+ Gtk2AppLib.puts_bang!
35
+ ensure
36
+ PROGRAM.finalize
29
37
  end
30
38
 
31
- Gtk2App.finalize
@@ -0,0 +1,48 @@
1
+ # Note: you'll see in ~/.gtk2passwordapp-* a file called passphrase.txt.
2
+ # Do not edit or delete passphrase, or you'll loose your passwords data.
3
+
4
+ module Gtk2AppLib
5
+ module Configuration
6
+ # Note that the passwords data file name is auto generated, but...
7
+ # You can place your passwords data file in a directory other than ~/gtk2passwordapp-*
8
+ PASSWORDS_DATA_DIR = UserSpace::DIRECTORY
9
+
10
+ HILDON = (WRAPPER.to_s == 'HildonWrapper')
11
+
12
+ GO_BUTTON_LENGTH = 50
13
+ SPIN_BUTTON_LENGTH = 60
14
+ PADDING = 2
15
+ ENTRY_WIDTH = (HILDON)? 600: 300
16
+ LABEL_WIDTH = 75
17
+
18
+
19
+ # Switches the roles of PRIMARY and CLIPBOARD when true
20
+ SWITCH_CLIPBOARDS = HILDON
21
+
22
+ PASSWORD_EXPIRED = 60*60*24*30*3 # 3 months
23
+
24
+ URL_PATTERN = Regexp.new('^https?:\/\/[^\s\']+$')
25
+
26
+ if HILDON then
27
+ WIDGET_OPTIONS[:font] = FONT[:normal] = FONT[:large] = Pango::FontDescription.new( 'Arial 18' )
28
+ end
29
+
30
+ MENU[:close] = '_Close'
31
+
32
+ WINDOW_DEFAULT_SIZE[0],WINDOW_DEFAULT_SIZE[1] = 100,100
33
+
34
+ WIDGET_OPTIONS[:max] = 20 # MAX PASSWORD LENGTH
35
+ WIDGET_OPTIONS[:min] = 3 # MIN PASSWORD LENGTH
36
+ DEFAULT_PASSWORD_LENGTH = 7
37
+
38
+ WIDGET_OPTIONS[:spinbutton_width] = SPIN_BUTTON_LENGTH
39
+ WIDGET_OPTIONS[:padding] = PADDING
40
+ end
41
+
42
+ def self.passwords_updated
43
+ # You may want to mirror Configuration::PASSWORDS_DATA_DIR.
44
+ # For example:
45
+ # system( "scp #{Configuration::PASSWORDS_DATA_DIR}/*.dat user@192.168.1.123:.gtk2passwordapp-1/")
46
+ # system( "scp #{Configuration::PASSWORDS_DATA_DIR}/passphrase.txt user@192.168.1.123:.gtk2passwordapp-1/passphrase.txt")
47
+ end
48
+ end
File without changes
@@ -25,7 +25,7 @@ class Passwords < PasswordsData
25
25
  if File.exist?(@pfile) then
26
26
  File.open(@pfile,'r'){|fh| passphrase = fh.read }
27
27
  else
28
- passphrase = _create_passphrase(@pfile)
28
+ passphrase = _create_passphrase
29
29
  end
30
30
  end
31
31
 
@@ -42,9 +42,14 @@ class Passwords < PasswordsData
42
42
  return false
43
43
  end
44
44
 
45
+ def self._get_salt(prompt)
46
+ (ret = Gtk2PasswordApp.get_salt(prompt,'Salt')) || exit
47
+ ret.strip
48
+ end
49
+
45
50
  attr_reader :pfile
46
51
  def initialize
47
- @pwd = Gtk2PasswordApp.get_salt || exit
52
+ @pwd = Passwords._get_salt('Short Password')
48
53
  @pfile = nil
49
54
  @pph = get_passphrase
50
55
  super(@pwd+@pph)
@@ -57,17 +62,17 @@ class Passwords < PasswordsData
57
62
  if has_datafile? # then
58
63
  # Yes, it's got a datafile. Ask for password again.
59
64
  while !self.exist? do
60
- @pwd = Gtk2PasswordApp.get_salt('Try again!') || exit
65
+ @pwd = Passwords._get_salt('Try again!')
61
66
  super(@pwd+@pph)
62
67
  end
63
68
  self.load
64
69
  else
65
70
  # Else, must be a new install.
66
71
  pwd = @pwd
67
- @pwd = Gtk2PasswordApp.get_salt('Verify New Password') || exit
72
+ @pwd = Passwords._get_salt('Verify New Password')
68
73
  while !(pwd == @pwd) do
69
- pwd = Gtk2PasswordApp.get_salt('Try again!') || exit
70
- @pwd = Gtk2PasswordApp.get_salt('Verify New Password') || exit
74
+ pwd = Passwords._get_salt('Try again!')
75
+ @pwd = Passwords._get_salt('Verify New Password')
71
76
  end
72
77
  end
73
78
  end
@@ -1,3 +1,4 @@
1
+ require 'gtk2passwordapp/passwords'
1
2
  module Gtk2PasswordApp
2
3
  include Configuration
3
4
  PRIMARY = Gtk::Clipboard.get((SWITCH_CLIPBOARDS)? Gdk::Selection::CLIPBOARD: Gdk::Selection::PRIMARY)
@@ -6,58 +7,29 @@ module Gtk2PasswordApp
6
7
  @@index = nil
7
8
  def self.build_menu(passwords)
8
9
  passwords.accounts.each {|account|
9
- item = Gtk2App.dock_menu.append_menu_item(account){
10
+ item = PROGRAM.dock_menu.append_menu_item(account){
10
11
  @@index = passwords.accounts.index(account)
11
12
  PRIMARY.text = passwords.password_of(account)
12
13
  CLIPBOARD.text = passwords.username_of(account)
13
14
  }
14
15
  item.child.modify_fg(Gtk::STATE_NORMAL, COLOR[:red]) if passwords.expired?(account)
15
16
  }
16
- Gtk2App.dock_menu.show_all
17
+ PROGRAM.dock_menu.show_all
17
18
  end
18
19
  def self.rebuild_menu(passwords)
19
- items = Gtk2App.dock_menu.children
20
+ items = PROGRAM.dock_menu.children
20
21
  3.times{ items.shift } # shift out Quit, Run, and Spacer
21
22
  while item = items.shift do
22
- Gtk2App.dock_menu.remove(item)
23
+ PROGRAM.dock_menu.remove(item)
23
24
  item.destroy
24
25
  end
25
26
  Gtk2PasswordApp.build_menu(passwords)
26
27
  end
27
28
 
28
- def self.get_salt(title='Short Password')
29
- dialog = Gtk::Dialog.new(
30
- title,
31
- nil, nil,
32
- [ Gtk::Stock::QUIT, 0 ],
33
- [ Gtk::Stock::OK, 1 ])
34
-
35
- label = Gtk::Label.new(title)
36
- label.justify = Gtk::JUSTIFY_LEFT
37
- label.wrap = true
38
- label.modify_font(Configuration::FONT[:normal])
39
- dialog.vbox.add(label)
40
- entry = Gtk::Entry.new
41
- entry.visibility = false
42
- entry.modify_font(Configuration::FONT[:normal])
43
- dialog.vbox.add(entry)
44
- dialog.show_all
45
-
46
- entry.signal_connect('activate'){
47
- dialog.response(1)
48
- }
49
-
50
- ret = nil
51
- dialog.run {|response|
52
- ret = entry.text.strip if response == 1
53
- }
54
- dialog.destroy
55
-
56
- return ret
29
+ def self.get_salt(prompt,title=prompt)
30
+ Gtk2AppLib::DIALOGS.entry(prompt,{:title=>title,:visibility=>false})
57
31
  end
58
32
 
59
- DIALOGS = Gtk2App::Dialogs.new
60
-
61
33
  EDITOR_LABELS = [
62
34
  :account,
63
35
  :url,
@@ -69,8 +41,9 @@ module Gtk2PasswordApp
69
41
 
70
42
  EDITOR_BUTTONS = [
71
43
  [ :random, :alphanum, :num, :alpha, :caps, ],
72
- [ :visibility, :current, :previous, :cancel, :save, :update, ],
73
- [ :delete, :cpwd ],
44
+ [ :cancel, :delete, :update, :save, ],
45
+ [ :cpwd ],
46
+ [ :current, :previous, ],
74
47
  ]
75
48
 
76
49
  TEXT = {
@@ -80,77 +53,59 @@ module Gtk2PasswordApp
80
53
  :password => 'New',
81
54
  # Buttons
82
55
  :username => 'Username',
83
- :current => 'Current',
56
+ :current => 'Clip Current Password',
84
57
  :url => 'Url',
85
58
  :note => 'Note',
86
59
  :edit => 'Edit',
87
- :update => 'Update',
88
- :visibility => 'Visible',
60
+ :update => 'Update Account',
89
61
  :alphanum => 'Alpha-Numeric',
90
62
  :num => 'Numeric',
91
63
  :alpha => 'Letters',
92
64
  :caps => 'All-Caps',
93
65
  :random => 'Random',
94
- :previous => 'Previous',
66
+ :previous => 'Clip Previous Password',
95
67
  :quit => 'Quit',
96
- :cancel => 'Cancel',
97
- :save => 'Save',
68
+ :cancel => 'Cancel All Changes',
69
+ :save => 'Save To Disk',
98
70
  :cpwd => 'Change Data File Password',
99
71
  :delete => 'Delete Account',
100
72
  }
101
73
 
102
74
  def self.edit(window, passwords)
103
- begin
104
75
  dialog_options = {:window=>window}
105
76
  updated = false # only saves data if data updated
106
77
 
107
- vbox = Gtk::VBox.new
108
- window.add(vbox)
78
+ vbox = Gtk2AppLib::VBox.new(window)
109
79
 
110
- pwdlength = Gtk::SpinButton.new(MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH, 1)
111
- pwdlength.value = DEFAULT_PASSWORD_LENGTH
112
- pwdlength.width_request = SPIN_BUTTON_LENGTH
113
- pwdlength.modify_font(FONT[:normal])
114
- goto_url = Gtk::Button.new('Go')
115
- goto_url.child.modify_font(FONT[:normal])
116
- goto_url.width_request = GO_BUTTON_LENGTH
80
+ goto_url = pwdlength = visibility = nil
117
81
 
118
82
  widget = {}
119
83
  EDITOR_LABELS.each {|s|
120
- hbox = Gtk::HBox.new
121
- label = Gtk2App::Label.new(TEXT[s]+':',hbox) # Gtk2App's Label
122
- label.width_request = LABEL_WIDTH
123
- label.justify = Gtk::JUSTIFY_RIGHT
124
- widget[s] = (s==:account)? Gtk::ComboBoxEntry.new : Gtk::Entry.new
125
- widget[s].width_request = ENTRY_WIDTH -
126
- ((s == :password)? (SPIN_BUTTON_LENGTH+2*GUI[:padding]):
127
- ((s == :url)? (GO_BUTTON_LENGTH+2*GUI[:padding]): 0))
128
- widget[s].modify_font(FONT[:normal])
129
- hbox.pack_start(widget[s], false, false, GUI[:padding])
130
- vbox.pack_start(hbox, false, false, GUI[:padding])
131
- hbox.pack_start(pwdlength, false, false, GUI[:padding]) if s == :password
132
- hbox.pack_start(goto_url, false, false, GUI[:padding]) if s == :url
133
- }
84
+ hbox = Gtk2AppLib::HBox.new(vbox)
85
+ label = Gtk2AppLib::Label.new(TEXT[s]+':',hbox,{:label_width=>LABEL_WIDTH})
86
+ dx = ((s == :password)? (SPIN_BUTTON_LENGTH+2*PADDING+30): ((s == :url)? (GO_BUTTON_LENGTH+2*PADDING): 0))
87
+ width = ENTRY_WIDTH - dx
88
+ widget[s] = (s==:account)?
89
+ Gtk2AppLib::ComboBoxEntry.new(passwords.accounts,hbox,{:comboboxentry_width=>width}) :
90
+ Gtk2AppLib::Entry.new('',hbox,{:entry_width=>width})
134
91
 
135
- # The go button opens the url in a browser
136
- goto_url.signal_connect('clicked'){
137
- system("#{APP[:browser]} #{widget[:url].text} > /dev/null 2> /dev/null &")
92
+ if s == :password then
93
+ visibility = Gtk2AppLib::CheckButton.new(hbox,{:active=>true})
94
+ pwdlength = Gtk2AppLib::SpinButton.new(hbox)
95
+ pwdlength.value = DEFAULT_PASSWORD_LENGTH
96
+ elsif s == :url then
97
+ goto_url = Gtk2AppLib::Button.new('Go',hbox,{:button_width=>GO_BUTTON_LENGTH}){
98
+ # The go button opens the url in a browser
99
+ system("#{APP[:browser]} #{widget[:url].text} > /dev/null 2> /dev/null &")
100
+ }
101
+ end
138
102
  }
139
-
103
+
140
104
  EDITOR_BUTTONS.each{|row|
141
- hbox = Gtk::HBox.new
142
- row.each {|s|
143
- widget[s] = Gtk::Button.new(TEXT[s])
144
- widget[s].child.modify_font(FONT[:normal])
145
- hbox.pack_start(widget[s], false, false, GUI[:padding])
146
- }
147
- vbox.pack_start(hbox, false, false, GUI[:padding])
105
+ hbox = Gtk2AppLib::HBox.new(vbox)
106
+ row.each {|s| widget[s] = Gtk2AppLib::Button.new(TEXT[s],hbox) }
148
107
  }
149
108
 
150
- # Account
151
- passwords.accounts.each { |account|
152
- widget[:account].append_text( account )
153
- }
154
109
  widget[:account].active = @@index if @@index
155
110
  account_changed = proc {
156
111
  account = (widget[:account].active_text)? widget[:account].active_text.strip: ''
@@ -198,7 +153,7 @@ module Gtk2PasswordApp
198
153
  end
199
154
  end
200
155
  else
201
- DIALOGS.quick_message('Need url like http://www.site.com/page.html', dialog_options)
156
+ Gtk2AppLib::DIALOGS.quick_message('Need url like http://www.site.com/page.html', dialog_options)
202
157
  end
203
158
  }
204
159
 
@@ -248,7 +203,7 @@ module Gtk2PasswordApp
248
203
  }
249
204
 
250
205
  # Visibility
251
- widget[:visibility].signal_connect('clicked'){
206
+ visibility.signal_connect('clicked'){
252
207
  widget[:password].visibility = !widget[:password].visibility?
253
208
  }
254
209
 
@@ -278,6 +233,7 @@ module Gtk2PasswordApp
278
233
  end
279
234
  #@pwd = pwd1
280
235
  passwords.save(pwd1)
236
+ Gtk2AppLib.passwords_updated
281
237
  end
282
238
  end
283
239
  }
@@ -286,10 +242,11 @@ module Gtk2PasswordApp
286
242
  widget[:save].signal_connect('clicked'){
287
243
  if updated then
288
244
  passwords.save
245
+ Gtk2AppLib.passwords_updated
289
246
  updated = false
290
247
  Gtk2PasswordApp.rebuild_menu(passwords)
291
248
  end
292
- Gtk2App.close
249
+ PROGRAM.close
293
250
  }
294
251
 
295
252
  # Delete
@@ -302,13 +259,13 @@ module Gtk2PasswordApp
302
259
  widget[:account].remove_text(i)
303
260
  @@index = (widget[:account].active = (i > 0)? i - 1: 0)
304
261
  updated = true
305
- DIALOGS.quick_message("#{account} deleted.", dialog_options)
262
+ Gtk2AppLib::DIALOGS.quick_message("#{account} deleted.", dialog_options)
306
263
  end
307
264
  end
308
265
  }
309
266
 
310
267
  # Cancel
311
- widget[:cancel].signal_connect('clicked'){ Gtk2App.close }
268
+ widget[:cancel].signal_connect('clicked'){ PROGRAM.close }
312
269
  window.signal_connect('destroy'){
313
270
  if updated then
314
271
  passwords.load # revert
@@ -317,8 +274,5 @@ module Gtk2PasswordApp
317
274
  }
318
275
 
319
276
  window.show_all
320
- rescue Exception
321
- puts_bang!
322
- end
323
277
  end
324
278
  end
data/pngs/icon.png ADDED
Binary file
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2passwordapp
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 29
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
- - 1
8
8
  - 2
9
- version: 1.1.2
9
+ - 1
10
+ version: 1.2.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - carlosjhr64@gmail.com
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-03-10 00:00:00 -08:00
18
+ date: 2010-08-04 00:00:00 -07:00
18
19
  default_executable: gtk2passwordapp
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: crypt-tea
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ~>
26
28
  - !ruby/object:Gem::Version
29
+ hash: 27
27
30
  segments:
28
31
  - 1
29
32
  - 3
@@ -35,14 +38,14 @@ dependencies:
35
38
  name: gtk2applib
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ~>
40
44
  - !ruby/object:Gem::Version
45
+ hash: 13
41
46
  segments:
42
- - 5
43
- - 0
44
- - 0
45
- version: 5.0.0
47
+ - 7
48
+ version: "7"
46
49
  type: :runtime
47
50
  version_requirements: *id002
48
51
  description: |
@@ -58,13 +61,15 @@ extensions: []
58
61
  extra_rdoc_files: []
59
62
 
60
63
  files:
61
- - ./gtk2passwordapp/passwords.rb
62
- - ./gtk2passwordapp/passwords_data.rb
63
- - ./gtk2passwordapp/edit_box.rb
64
- - ./gtk2passwordapp/iocrypt.rb
65
- - ./gtk2passwordapp/appconfig.rb
64
+ - ./lib/gtk2passwordapp.rb
65
+ - ./lib/gtk2passwordapp/passwords.rb
66
+ - ./lib/gtk2passwordapp/passwords_data.rb
67
+ - ./lib/gtk2passwordapp/iocrypt.rb
68
+ - ./lib/gtk2passwordapp/appconfig.rb
66
69
  - ./pngs/logo.png
70
+ - ./pngs/icon.png
67
71
  - README.txt
72
+ - bin/gtk2passwordapp
68
73
  has_rdoc: true
69
74
  homepage: http://ruby-gnome-apps.blogspot.com/search/label/Passwords
70
75
  licenses: []
@@ -73,25 +78,29 @@ post_install_message:
73
78
  rdoc_options: []
74
79
 
75
80
  require_paths:
76
- - .
81
+ - lib
77
82
  required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
78
84
  requirements:
79
85
  - - ">="
80
86
  - !ruby/object:Gem::Version
87
+ hash: 3
81
88
  segments:
82
89
  - 0
83
90
  version: "0"
84
91
  required_rubygems_version: !ruby/object:Gem::Requirement
92
+ none: false
85
93
  requirements:
86
94
  - - ">="
87
95
  - !ruby/object:Gem::Version
96
+ hash: 3
88
97
  segments:
89
98
  - 0
90
99
  version: "0"
91
100
  requirements:
92
101
  - gtk2
93
102
  rubyforge_project: gtk2passwordapp
94
- rubygems_version: 1.3.6
103
+ rubygems_version: 1.3.7
95
104
  signing_key:
96
105
  specification_version: 3
97
106
  summary: Ruby-Gnome Password Manager
@@ -1,29 +0,0 @@
1
- # Note: you'll see in ~/.gtk2passwordapp-* a file called passphrase.txt.
2
- # Do not edit or delete passphrase, or you'll loose your passwords data.
3
-
4
- module Configuration
5
- # Note that the passwords data file name is auto generated, but...
6
- # You can place your passwords data file in a directory other than ~/gtk2passwordapp-*
7
- PASSWORDS_DATA_DIR = UserSpace::DIRECTORY
8
-
9
- ENTRY_WIDTH = (Gtk2App::HILDON)? 600: 300
10
- LABEL_WIDTH = 75
11
- GO_BUTTON_LENGTH = 50
12
- SPIN_BUTTON_LENGTH = 60
13
- # PAD = 2 # cell padding
14
-
15
- MAX_PASSWORD_LENGTH = 20
16
- DEFAULT_PASSWORD_LENGTH = 7
17
- MIN_PASSWORD_LENGTH = 3
18
-
19
- # Switches the roles of PRIMARY and CLIPBOARD when true
20
- SWITCH_CLIPBOARDS = Gtk2App::HILDON
21
-
22
- PASSWORD_EXPIRED = 60*60*24*30*3 # 3 months
23
-
24
- URL_PATTERN = Regexp.new('^https?:\/\/[^\s\']+$')
25
-
26
- FONT[:normal] = FONT[:large] = Pango::FontDescription.new( 'Arial 18' ) if Gtk2App::HILDON
27
- GUI[:window_size] = [100,100]
28
- MENU[:close] = '_Close'
29
- end