nametrainer 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -57,8 +57,6 @@ Please note:
57
57
 
58
58
  - Do not use special characters in file names; use underscore instead of space.
59
59
  - Use UTF-8 encoding for TXT files.
60
- - **On Windows, JPG files might not be supported** (depending on the Qt version).
61
- In this case use PNG images instead.
62
60
 
63
61
  Installation
64
62
  ------------
data/bin/nametrainer CHANGED
@@ -8,6 +8,13 @@ module Nametrainer
8
8
 
9
9
  ERRORCODE = {:general => 1, :usage => 2}
10
10
 
11
+ # Prints an error message, then exits with +code+
12
+ # (<tt>:general</tt> or <tt>:usage</tt>).
13
+ def self.fail(message, code = :general) #
14
+ warn "#{PROGNAME}: #{message}"
15
+ exit ERRORCODE[code]
16
+ end
17
+
11
18
  # Prints an error message and a short help information, then exits.
12
19
  def self.usage_fail(message) # :nodoc:
13
20
  warn "#{PROGNAME}: #{message}"
@@ -25,6 +32,11 @@ rescue => e
25
32
  Nametrainer.usage_fail(e.message)
26
33
  end
27
34
 
35
+ # exit gracefully for missing Qt bindings
36
+ message = "missing Ruby Qt bindings (LoadError)\n"
37
+ message << "You should install the `qtbindings' gem."
38
+ Nametrainer.fail(message) if Nametrainer::QT_LOAD_ERROR
39
+
28
40
  # set up demo mode
29
41
  if options[:demo]
30
42
  options[:collection] = File.expand_path("#{SRCPATH}/../demo_collection")
@@ -32,5 +44,13 @@ end
32
44
 
33
45
  # start
34
46
  app = Qt::Application.new ARGV
47
+
48
+ # try to add plugins path
49
+ begin
50
+ qtbindings_path = Gem::Specification.find_by_name('qtbindings').gem_dir
51
+ app.add_library_path("#{qtbindings_path}/bin/plugins")
52
+ rescue Gem::LoadError
53
+ end
54
+
35
55
  Nametrainer::GUI.new(options)
36
56
  app.exec
data/lib/nametrainer.rb CHANGED
@@ -2,28 +2,17 @@
2
2
  #
3
3
  # nametrainer - name learning trainer
4
4
  #
5
- # == Synopsis
6
- #
7
- # nametrainer [options] [collection]
8
- #
9
5
  # == Description
10
6
  #
11
7
  # +nametrainer+ is a name learning trainer using Ruby and the Qt GUI toolkit.
12
8
  # It will assist you in learning people's names from a collection of images.
13
9
  #
14
- # See the project home page for additional information:
15
- # https://github.com/stomar/nametrainer/
16
- #
17
- # == Options
18
- #
19
- # -d, --[no-]demo:: Start the application with a demo collection.
10
+ # == See also
20
11
  #
21
- # -l, --[no-]learning-mode:: Start the application in `learning-mode':
22
- # use non-random order, display names at once.
12
+ # Use <tt>nametrainer --help</tt> to display a brief help message.
23
13
  #
24
- # -h, --help:: Prints a brief help message and exits.
25
- #
26
- # -v, --version:: Prints a brief version information and exits.
14
+ # The full documentation for +nametrainer+ is available on the
15
+ # project home page.
27
16
  #
28
17
  # == Author
29
18
  #
@@ -31,7 +20,16 @@
31
20
  #
32
21
  # License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
33
22
 
34
- require 'nametrainer/gui'
23
+ module Nametrainer; end
24
+
25
+ begin
26
+ require 'Qt'
27
+ Nametrainer::QT_LOAD_ERROR = false
28
+ rescue LoadError => e
29
+ Nametrainer::QT_LOAD_ERROR = e
30
+ end
31
+
32
+ require 'nametrainer/gui' unless Nametrainer::QT_LOAD_ERROR
35
33
  require 'nametrainer/person'
36
34
  require 'nametrainer/collection'
37
35
  require 'nametrainer/optionparser'
@@ -1,4 +1,3 @@
1
- require 'Qt'
2
1
  require 'iconv' if RUBY_VERSION < '1.9' # utf-8 -> latin1 for QLabel
3
2
 
4
3
  module Nametrainer
@@ -223,7 +222,11 @@ module Nametrainer
223
222
 
224
223
  # Displays the image, scaled as large as possible.
225
224
  def show_image
226
- @image_label.set_pixmap @image.scaled(@image_label.size, Qt::KeepAspectRatio)
225
+ if @image.null?
226
+ @image_label.set_text "<i>Unable to display `#{File.basename(@person.image)}'.</i>"
227
+ else
228
+ @image_label.set_pixmap @image.scaled(@image_label.size, Qt::KeepAspectRatio)
229
+ end
227
230
  end
228
231
 
229
232
  # Chooses and displays the next person,
@@ -36,14 +36,14 @@ module Nametrainer
36
36
 
37
37
  # process --version and --help first,
38
38
  # exit successfully (GNU Coding Standards)
39
- opt.on_tail('-h', '--help', 'Prints a brief help message and exits.') do
39
+ opt.on_tail('-h', '--help', 'Print a brief help message and exit.') do
40
40
  puts opt_parser
41
41
  puts "\nReport bugs on the #{PROGNAME} home page: <#{HOMEPAGE}>"
42
42
  exit
43
43
  end
44
44
 
45
45
  opt.on_tail('-v', '--version',
46
- 'Prints a brief version information and exits.') do
46
+ 'Print a brief version information and exit.') do
47
47
  puts "#{PROGNAME} #{VERSION}"
48
48
  puts COPYRIGHT
49
49
  exit
@@ -1,8 +1,8 @@
1
1
  module Nametrainer
2
2
 
3
3
  PROGNAME = 'nametrainer'
4
- VERSION = '0.2.0'
5
- DATE = '2012-09-22'
4
+ VERSION = '0.2.1'
5
+ DATE = '2012-10-03'
6
6
  HOMEPAGE = 'https://github.com/stomar/nametrainer/'
7
7
 
8
8
  COPYRIGHT = "Copyright (C) 2012 Marcus Stollsteimer.\n" +
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nametrainer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-22 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &72380950 !ruby/object:Gem::Requirement
16
+ requirement: &80165180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *72380950
24
+ version_requirements: *80165180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &72379800 !ruby/object:Gem::Requirement
27
+ requirement: &80164650 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *72379800
35
+ version_requirements: *80164650
36
36
  description: nametrainer is a name learning trainer using the Qt GUI toolkit. It will
37
37
  assist you in learning people's names from a collection of images.
38
38
  email: sto.mar@web.de