dictionaries 0.2.177
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.
Potentially problematic release.
This version of dictionaries might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/README.md +103 -0
- data/bin/dictionaries +7 -0
- data/dictionaries.gemspec +85 -0
- data/doc/README.gen +86 -0
- data/lib/dictionaries.rb +1 -0
- data/lib/dictionaries/ask_english_word.rb +135 -0
- data/lib/dictionaries/ask_italian_word.rb +84 -0
- data/lib/dictionaries/class/ask_word_from_dictionary.rb +672 -0
- data/lib/dictionaries/class/colours.rb +55 -0
- data/lib/dictionaries/class/set_search_for_this_word.rb +143 -0
- data/lib/dictionaries/commandline/parse_commandline.rb +60 -0
- data/lib/dictionaries/constants.rb +133 -0
- data/lib/dictionaries/gui/gtk/dictionary.rb +216 -0
- data/lib/dictionaries/gui/tk/README.md +2 -0
- data/lib/dictionaries/gui/tk/dictionary.rb +85 -0
- data/lib/dictionaries/project/project_base_directory.rb +22 -0
- data/lib/dictionaries/project/project_yaml_directory.rb +23 -0
- data/lib/dictionaries/require_project/require_project.rb +10 -0
- data/lib/dictionaries/sinatra/app.rb +93 -0
- data/lib/dictionaries/sinatra/english_to_german.rb +81 -0
- data/lib/dictionaries/toplevel_methods/e.rb +16 -0
- data/lib/dictionaries/toplevel_methods/english_to_german.rb +31 -0
- data/lib/dictionaries/toplevel_methods/has_key.rb +32 -0
- data/lib/dictionaries/toplevel_methods/is_on_roebe.rb +16 -0
- data/lib/dictionaries/toplevel_methods/main_file.rb +88 -0
- data/lib/dictionaries/toplevel_methods/misc.rb +42 -0
- data/lib/dictionaries/toplevel_methods/module_methods.rb +9 -0
- data/lib/dictionaries/toplevel_methods/show_help.rb +30 -0
- data/lib/dictionaries/version/version.rb +17 -0
- data/lib/dictionaries/yaml/chinese.yml +19 -0
- data/lib/dictionaries/yaml/danish.yml +4 -0
- data/lib/dictionaries/yaml/deutsche_fremdwoerter.yml +1 -0
- data/lib/dictionaries/yaml/dutch.yml +3 -0
- data/lib/dictionaries/yaml/english.yml +2247 -0
- data/lib/dictionaries/yaml/farsi.yml +8 -0
- data/lib/dictionaries/yaml/finnish.yml +2 -0
- data/lib/dictionaries/yaml/italian.yml +499 -0
- data/lib/dictionaries/yaml/japanese.yml +15 -0
- data/lib/dictionaries/yaml/portugese.yml +42 -0
- data/lib/dictionaries/yaml/russian.yml +10 -0
- data/lib/dictionaries/yaml/spanish.yml +126 -0
- data/lib/dictionaries/yaml/swedish.yml +113 -0
- metadata +204 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
begin
|
6
|
+
require 'colours'
|
7
|
+
rescue LoadError; end
|
8
|
+
|
9
|
+
module Dictionaries
|
10
|
+
|
11
|
+
class AskWordFromDictionary
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === green
|
15
|
+
# ========================================================================= #
|
16
|
+
def green
|
17
|
+
Colours::GREEN
|
18
|
+
end
|
19
|
+
|
20
|
+
# ========================================================================= #
|
21
|
+
# === brown
|
22
|
+
# ========================================================================= #
|
23
|
+
def brown(i = '')
|
24
|
+
"#{Colours::BROWN}#{i}#{Colours.revert}"
|
25
|
+
end
|
26
|
+
|
27
|
+
# ========================================================================= #
|
28
|
+
# === sfancy
|
29
|
+
# ========================================================================= #
|
30
|
+
def sfancy(i)
|
31
|
+
::Colours.sfancy(i)
|
32
|
+
end
|
33
|
+
|
34
|
+
# ========================================================================= #
|
35
|
+
# === simp
|
36
|
+
# ========================================================================= #
|
37
|
+
def simp(i)
|
38
|
+
::Colours.simp(i)
|
39
|
+
end; alias simportant simp # === simportant
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === sfile
|
43
|
+
# ========================================================================= #
|
44
|
+
def sfile(i)
|
45
|
+
::Colours.sfile(i)
|
46
|
+
end
|
47
|
+
|
48
|
+
# ========================================================================= #
|
49
|
+
# === sdir
|
50
|
+
# ========================================================================= #
|
51
|
+
def sdir(i)
|
52
|
+
::Colours.sdir(i)
|
53
|
+
end
|
54
|
+
|
55
|
+
end; end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'dictionaries/class/set_search_for_this_word.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Dictionaries
|
8
|
+
|
9
|
+
class AskWordFromDictionary
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === set_search_for_this_word (menu tag)
|
13
|
+
#
|
14
|
+
# This method will also have the menu-functionality of the class.
|
15
|
+
# ========================================================================= #
|
16
|
+
def set_search_for_this_word(i = :rand)
|
17
|
+
i = i.join(' ').strip if i.is_a? Array # This will also handle empty ARGV passed to us.
|
18
|
+
i = :rand if i.nil?
|
19
|
+
case i
|
20
|
+
when :rand, 'rand' # We want a random word here.
|
21
|
+
i = return_random_word if @words
|
22
|
+
end
|
23
|
+
# ======================================================================= #
|
24
|
+
# We want a String past this point.
|
25
|
+
# ======================================================================= #
|
26
|
+
i = i.to_s.dup
|
27
|
+
# ======================================================================= #
|
28
|
+
# We can not downcase the input since we also try to have it match
|
29
|
+
# towards regular english letters. It is a dictionary after all.
|
30
|
+
# ======================================================================= #
|
31
|
+
# === Chop off last char if it is a question mark.
|
32
|
+
# ======================================================================= #
|
33
|
+
i.chop! if i.end_with? '?'
|
34
|
+
case i # case tag
|
35
|
+
# ======================================================================= #
|
36
|
+
# === askeng --delay?
|
37
|
+
# ======================================================================= #
|
38
|
+
when /^-?-?delay\??$/i
|
39
|
+
feedback_delay
|
40
|
+
# ======================================================================= #
|
41
|
+
# === askeng --openall
|
42
|
+
# ======================================================================= #
|
43
|
+
when 'OPEN','OPE','OP','O','EDIT','OPEN_ALL',/open/,
|
44
|
+
'OPENALL','--openall'
|
45
|
+
open_this_file_here(true) # true for "be verbose".
|
46
|
+
open_yaml_file_in_main_editor
|
47
|
+
exit
|
48
|
+
# ======================================================================= #
|
49
|
+
# === askeng --n-entries
|
50
|
+
# ======================================================================= #
|
51
|
+
when 'TOTAL','KEYS','KEYSTATS','--n-entries','--nentries','keys?',
|
52
|
+
'nkeys',/-?-?nwords\??/
|
53
|
+
feedback_total_amount_of_keys
|
54
|
+
# ======================================================================= #
|
55
|
+
# === askeng --stats
|
56
|
+
# ======================================================================= #
|
57
|
+
when '--stats','--statistics','STATS','STATISTICS','STATS?','--stats?'
|
58
|
+
feedback_statistics; exit
|
59
|
+
# ======================================================================= #
|
60
|
+
# === askeng --help
|
61
|
+
# ======================================================================= #
|
62
|
+
when 'HELP','--help','show_help','--HELP'
|
63
|
+
feedback_help_options # This will also exit.
|
64
|
+
# ======================================================================= #
|
65
|
+
# === askeng --every_word
|
66
|
+
# ======================================================================= #
|
67
|
+
when 'SHOW','--show-every-word','--every_word'
|
68
|
+
show_every_word
|
69
|
+
exit
|
70
|
+
# ======================================================================= #
|
71
|
+
# === askeng --generate-tab
|
72
|
+
# ======================================================================= #
|
73
|
+
when 'GENERATE','TAB','GENERATE_COMPLETION','TABCOMPLETION',
|
74
|
+
'COMPLETION','--generate-tab'
|
75
|
+
generate_tab_completion
|
76
|
+
exit
|
77
|
+
# ======================================================================= #
|
78
|
+
# === askeng --open-in-browser
|
79
|
+
# ======================================================================= #
|
80
|
+
when 'OPEN_BROWSER','--open-in-browser'
|
81
|
+
open_in_browser
|
82
|
+
# ======================================================================= #
|
83
|
+
# === askeng --solved
|
84
|
+
# ======================================================================= #
|
85
|
+
when 'SOLVED',/-?-?solved/
|
86
|
+
set_last_word_solved
|
87
|
+
# ======================================================================= #
|
88
|
+
# === askeng --yaml-file?
|
89
|
+
# ======================================================================= #
|
90
|
+
when 'FILE?','YAML_FILE?','--yaml-file?'
|
91
|
+
feedback_yaml_file
|
92
|
+
exit
|
93
|
+
# ======================================================================= #
|
94
|
+
# === askeng --open-dictionary
|
95
|
+
# ======================================================================= #
|
96
|
+
when 'OPEN_DICTIONARY','OPEN_DICT','--open-dictionary'
|
97
|
+
open_main_yaml_file_in_main_editor
|
98
|
+
exit
|
99
|
+
# ======================================================================= #
|
100
|
+
# === askeng --repeat
|
101
|
+
# ======================================================================= #
|
102
|
+
when 'REPEAT','--repeat'
|
103
|
+
_ = STORE_LAST_QUESTION_ASKED_HERE
|
104
|
+
if File.exist? _
|
105
|
+
i = File.read(_)
|
106
|
+
else
|
107
|
+
opnn; e 'The file `'+sfile(_)+'` was not found, thus we can'
|
108
|
+
opnn; e 'not read in anything.'
|
109
|
+
exit
|
110
|
+
end
|
111
|
+
# ======================================================================= #
|
112
|
+
# === askeng --url
|
113
|
+
# ======================================================================= #
|
114
|
+
when '--url','URL'
|
115
|
+
feedback_url
|
116
|
+
# ======================================================================= #
|
117
|
+
# === askeng --random
|
118
|
+
# ======================================================================= #
|
119
|
+
when 'RANDOM','RAND','rand','--random' # Pass through here.
|
120
|
+
i = return_random_word if available_keys?
|
121
|
+
# else tag
|
122
|
+
else # Handle assignment cases next.
|
123
|
+
if i.include?('=') and i.downcase.include? 'delay'
|
124
|
+
new_delay = i.split('=').last.strip
|
125
|
+
e 'It seems as if you may want to assign a new delay.'
|
126
|
+
e 'We will thus set the last line of this file here'
|
127
|
+
e 'with the new delay of:'
|
128
|
+
e ' '+sfancy(new_delay)
|
129
|
+
what = File.readlines(Dictionaries::AskEnglishWord.main_file?)
|
130
|
+
what[-1,1] = new_delay # Set the new entry here.
|
131
|
+
SaveFile.write_what_into(what.join, Dictionaries::AskEnglishWord.main_file?)
|
132
|
+
exit
|
133
|
+
end
|
134
|
+
end
|
135
|
+
i = i.to_s.dup
|
136
|
+
i = i.downcase if SHALL_WE_DOWNCASE
|
137
|
+
if i.size == 1 # We assume that the user wants to get a category.
|
138
|
+
i = find_all_matches_for(i).sample
|
139
|
+
end
|
140
|
+
@search_for_this_word = i # We will search for this word here.
|
141
|
+
end
|
142
|
+
|
143
|
+
end; end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'dictionaries/commandline/parse_commandline.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'dictionaries/toplevel_methods/show_help.rb'
|
8
|
+
require 'dictionaries/class/ask_word_from_dictionary.rb'
|
9
|
+
|
10
|
+
module Dictionaries
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === Dictionaries.start_gtk_component
|
14
|
+
#
|
15
|
+
# This module-method will start the GTK component.
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.start_gtk_component
|
18
|
+
require 'dictionaries/gui/gtk/dictionary.rb'
|
19
|
+
Dictionaries::GUI::Gtk::Dictionary.run
|
20
|
+
end
|
21
|
+
|
22
|
+
# ========================================================================= #
|
23
|
+
# === Dictionaries.parse_commandline
|
24
|
+
# ========================================================================= #
|
25
|
+
def self.parse_commandline(
|
26
|
+
i = ARGV
|
27
|
+
)
|
28
|
+
if i.is_a? Array
|
29
|
+
i.each {|entry| parse_commandline(entry) }
|
30
|
+
else
|
31
|
+
case i # case tag
|
32
|
+
# ===================================================================== #
|
33
|
+
# === dictionaries --sinatra
|
34
|
+
# ===================================================================== #
|
35
|
+
when /^-?-?sinatra$/i
|
36
|
+
require 'dictionaries/sinatra/app.rb'
|
37
|
+
Dictionaries.start_sinatra_interface
|
38
|
+
# ===================================================================== #
|
39
|
+
# === dictionaries --n-words?
|
40
|
+
# ===================================================================== #
|
41
|
+
when /^-?-?n(_|-)?words\??$/i
|
42
|
+
e "#{Colours.sfancy(Dictionaries.n_entries?)} english-to-german "\
|
43
|
+
"translations are presently registered in this project."
|
44
|
+
# ===================================================================== #
|
45
|
+
# === dictionaries --gui
|
46
|
+
# ===================================================================== #
|
47
|
+
when /^-?-?gui$/i,
|
48
|
+
/^-?-?gtk$/i,
|
49
|
+
/^-?-?start(-|_)?gtk$/i
|
50
|
+
start_gtk_component
|
51
|
+
# ===================================================================== #
|
52
|
+
# === dictionaries --help
|
53
|
+
# ===================================================================== #
|
54
|
+
when /help/
|
55
|
+
show_help
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'dictionaries/constants.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'dictionaries/project/project_yaml_directory.rb'
|
8
|
+
require 'dictionaries/version/version.rb'
|
9
|
+
|
10
|
+
module Dictionaries
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === Dictionaries::N
|
14
|
+
# ========================================================================= #
|
15
|
+
N = "\n"
|
16
|
+
|
17
|
+
# ========================================================================= #
|
18
|
+
# === Dictionaries::URL_FOR_DICT_LEO
|
19
|
+
# ========================================================================= #
|
20
|
+
URL_FOR_DICT_LEO = 'http://dict.leo.org/'
|
21
|
+
|
22
|
+
# ========================================================================= #
|
23
|
+
# === URL_FOR_ITALIAN_DICTIONARY
|
24
|
+
# ========================================================================= #
|
25
|
+
URL_FOR_ITALIAN_DICTIONARY = 'http://www.wordreference.com/iten/'
|
26
|
+
|
27
|
+
# ========================================================================= #
|
28
|
+
# === LPAD
|
29
|
+
# ========================================================================= #
|
30
|
+
LPAD = ' '
|
31
|
+
|
32
|
+
# ========================================================================= #
|
33
|
+
# === RUBY_SRC
|
34
|
+
# ========================================================================= #
|
35
|
+
if ENV['RUBY_SRC']
|
36
|
+
RUBY_SRC = ENV['RUBY_SRC'].to_s.dup+'/'
|
37
|
+
else # else we just hardcode it anyway.
|
38
|
+
RUBY_SRC = '/Users/x/DATA/PROGRAMMING_LANGUAGES/RUBY/src/'
|
39
|
+
end
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === MY_DICTIONARIES
|
43
|
+
#
|
44
|
+
# This constant is only valid for my own system.
|
45
|
+
# ========================================================================= #
|
46
|
+
MY_DICTIONARIES = RUBY_SRC+'dictionaries/lib/dictionaries/yaml/'
|
47
|
+
|
48
|
+
# ========================================================================= #
|
49
|
+
# === SCIENCE_DIR
|
50
|
+
# ========================================================================= #
|
51
|
+
SCIENCE_DIR = ENV['SCIENCE'].to_s+'/'
|
52
|
+
|
53
|
+
# ========================================================================= #
|
54
|
+
# === DEPOT_INFORMATION_DIR
|
55
|
+
# ========================================================================= #
|
56
|
+
DEPOT_INFORMATION_DIR = '/Depot/Information/'
|
57
|
+
|
58
|
+
# ========================================================================= #
|
59
|
+
# === DICTIONARIES_DIR
|
60
|
+
#
|
61
|
+
# This constant will point at a path such as this one here:
|
62
|
+
#
|
63
|
+
# /Programs/Ruby/2.6.3/lib/ruby/site_ruby/2.6.0/dictionaries/yaml/
|
64
|
+
#
|
65
|
+
# ========================================================================= #
|
66
|
+
DICTIONARIES_DIR = Dictionaries.dictionary_directory?
|
67
|
+
|
68
|
+
# ========================================================================= #
|
69
|
+
# === ENGLISH_WORDS
|
70
|
+
#
|
71
|
+
# This constant is no longer that important because we can now
|
72
|
+
# automatically infer the name of the .yml file.
|
73
|
+
# ========================================================================= #
|
74
|
+
ENGLISH_WORDS = DICTIONARIES_DIR+'english.yml'
|
75
|
+
ENGLISH_YAML_FILE = ENGLISH_WORDS # === ENGLISH_YAML_FILE
|
76
|
+
FILE_ENGLISH_WORDS = ENGLISH_WORDS # === FILE_ENGLISH_WORDS
|
77
|
+
FILE_ENGLISH_DICTIONARY = ENGLISH_YAML_FILE
|
78
|
+
|
79
|
+
# ========================================================================= #
|
80
|
+
# === Dictionaries.file_english
|
81
|
+
# ========================================================================= #
|
82
|
+
def self.file_english
|
83
|
+
FILE_ENGLISH_DICTIONARY
|
84
|
+
end
|
85
|
+
|
86
|
+
# ========================================================================= #
|
87
|
+
# === ITALIAN_WORDS
|
88
|
+
#
|
89
|
+
# This constant is no longer that important because we can now
|
90
|
+
# automatically infer the name of the .yml file.
|
91
|
+
# ========================================================================= #
|
92
|
+
ITALIAN_WORDS = DICTIONARIES_DIR+'italian.yml'
|
93
|
+
ITALIAN_YAML_FILE = ITALIAN_WORDS
|
94
|
+
FILE_ITALIAN_DICTIONARY = ITALIAN_YAML_FILE
|
95
|
+
|
96
|
+
# ========================================================================= #
|
97
|
+
# === STORE_LINE_NUMBER_HERE
|
98
|
+
# ========================================================================= #
|
99
|
+
STORE_LINE_NUMBER_HERE = DEPOT_INFORMATION_DIR+'line_number_of_the_last_word'
|
100
|
+
|
101
|
+
# ========================================================================= #
|
102
|
+
# === STORE_LAST_ENGLISH_QUESTION_ASKED_HERE
|
103
|
+
# ========================================================================= #
|
104
|
+
STORE_LAST_ENGLISH_QUESTION_ASKED_HERE =
|
105
|
+
DEPOT_INFORMATION_DIR+'last_english_question_asked' # cat $MY_TEMP/last_english_question_asked
|
106
|
+
|
107
|
+
# ========================================================================= #
|
108
|
+
# === STORE_LAST_ITALIAN_QUESTION_ASKED_HERE
|
109
|
+
# ========================================================================= #
|
110
|
+
STORE_LAST_ITALIAN_QUESTION_ASKED_HERE =
|
111
|
+
DEPOT_INFORMATION_DIR+'last_italian_question_asked' # cat $MY_TEMP/last_italian_question_asked
|
112
|
+
|
113
|
+
# ========================================================================= #
|
114
|
+
# === SHALL_WE_DOWNCASE
|
115
|
+
# ========================================================================= #
|
116
|
+
SHALL_WE_DOWNCASE = true
|
117
|
+
|
118
|
+
# ========================================================================= #
|
119
|
+
# === USE_THIS_ENCODING
|
120
|
+
#
|
121
|
+
# This is the main encoding to use.
|
122
|
+
# ========================================================================= #
|
123
|
+
USE_THIS_ENCODING = 'ISO-8859-1'
|
124
|
+
MAIN_ENCODING = USE_THIS_ENCODING
|
125
|
+
|
126
|
+
# ========================================================================= #
|
127
|
+
# === DEFAULT_DELAY
|
128
|
+
#
|
129
|
+
# Specify how long to wait before revealing the translated word.
|
130
|
+
# ========================================================================= #
|
131
|
+
DEFAULT_DELAY = 1.6
|
132
|
+
|
133
|
+
end
|
@@ -0,0 +1,216 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === Dictionaries::GUI::Gtk::Dictionary
|
6
|
+
#
|
7
|
+
# This is a small GUI-wrapper.
|
8
|
+
# =========================================================================== #
|
9
|
+
# require 'dictionaries/gui/gtk/dictionary.rb'
|
10
|
+
# Dictionaries.gtk_widget
|
11
|
+
# =========================================================================== #
|
12
|
+
begin
|
13
|
+
require 'gtk_paradise'
|
14
|
+
rescue LoadError
|
15
|
+
puts 'error: gtk_paradise has a problem.'
|
16
|
+
end
|
17
|
+
require 'dictionaries/class/ask_word_from_dictionary.rb'
|
18
|
+
require 'dictionaries/toplevel_methods/e.rb'
|
19
|
+
|
20
|
+
module Dictionaries
|
21
|
+
|
22
|
+
module GUI
|
23
|
+
|
24
|
+
module Gtk
|
25
|
+
|
26
|
+
class Dictionary < ::Gtk::VBox
|
27
|
+
|
28
|
+
include ::Gtk::BaseModule
|
29
|
+
include ::Colours
|
30
|
+
|
31
|
+
# ========================================================================= #
|
32
|
+
# === USE_THIS_WIDTH
|
33
|
+
# ========================================================================= #
|
34
|
+
USE_THIS_WIDTH = 1080
|
35
|
+
|
36
|
+
# ========================================================================= #
|
37
|
+
# === initialize
|
38
|
+
# ========================================================================= #
|
39
|
+
def initialize(
|
40
|
+
run_already = true
|
41
|
+
)
|
42
|
+
super()
|
43
|
+
reset
|
44
|
+
run if run_already
|
45
|
+
end
|
46
|
+
|
47
|
+
# ========================================================================= #
|
48
|
+
# === reset
|
49
|
+
# ========================================================================= #
|
50
|
+
def reset
|
51
|
+
# === @dictionaries
|
52
|
+
@dictionaries = Dictionaries.new(:do_not_run_yet)
|
53
|
+
@dictionaries.load_the_english_file
|
54
|
+
set_gtk_font_size :default
|
55
|
+
end
|
56
|
+
|
57
|
+
# ========================================================================= #
|
58
|
+
# === e
|
59
|
+
# ========================================================================= #
|
60
|
+
def e(i = '')
|
61
|
+
::Dictionaries.e(i)
|
62
|
+
end
|
63
|
+
|
64
|
+
# ========================================================================= #
|
65
|
+
# === add_ask_the_question_button
|
66
|
+
# ========================================================================= #
|
67
|
+
def add_ask_the_question_button
|
68
|
+
button = gtk_button('Translate into german')
|
69
|
+
button.make_bold
|
70
|
+
button.tooltip(
|
71
|
+
'Click this button in order to translate the english '\
|
72
|
+
'word into the german equivalent word.'
|
73
|
+
)
|
74
|
+
button.signal_connect(:clicked) {
|
75
|
+
button_pressed_so_try_to_convert_the_input
|
76
|
+
}
|
77
|
+
button.modify_bg(
|
78
|
+
::Gtk::StateType::NORMAL, Gdk::Color.parse('whitesmoke')
|
79
|
+
) # ^^^ default colour
|
80
|
+
button.modify_bg(
|
81
|
+
::Gtk::StateType::PRELIGHT, Gdk::Color.parse('paleturquoise')
|
82
|
+
) # ^^^ mouse-on-over
|
83
|
+
button.modify_bg(
|
84
|
+
::Gtk::StateType::ACTIVE, Gdk::Color.parse('slategray')
|
85
|
+
) # ^^^ colour on mouse-press-event
|
86
|
+
pack_start(button, false, true, 0)
|
87
|
+
end
|
88
|
+
|
89
|
+
# ========================================================================= #
|
90
|
+
# === create_answer_field
|
91
|
+
# ========================================================================= #
|
92
|
+
def create_answer_field
|
93
|
+
@answer_field = gtk_input_field
|
94
|
+
@answer_field.center
|
95
|
+
end
|
96
|
+
|
97
|
+
# ========================================================================= #
|
98
|
+
# === create_input_field_on_top
|
99
|
+
#
|
100
|
+
# This is the main widget for user input. The user types in some
|
101
|
+
# words, and then hits the main button on the bottom, in order
|
102
|
+
# to translate the (english) word to german.
|
103
|
+
# ========================================================================= #
|
104
|
+
def create_input_field_on_top
|
105
|
+
text_for_the_label = 'Input an english word in the field below:'
|
106
|
+
text = gtk_label(text_for_the_label)
|
107
|
+
text.set_markup(
|
108
|
+
'<span size="x-large" weight="bold">'+text_for_the_label+'</span>', true
|
109
|
+
)
|
110
|
+
# ======================================================================= #
|
111
|
+
# Add the "input field" next for the english word that is to
|
112
|
+
# be translated.
|
113
|
+
# ======================================================================= #
|
114
|
+
@input_field = gtk_input_field
|
115
|
+
completion = gtk_entry_completion
|
116
|
+
@input_field.completion = completion
|
117
|
+
completion_model = ::Gtk::ListStore.new(String)
|
118
|
+
@dictionaries.array.each { |word|
|
119
|
+
iter = completion_model.append
|
120
|
+
iter[0] = word
|
121
|
+
}
|
122
|
+
completion.model = completion_model
|
123
|
+
# ======================================================================= #
|
124
|
+
# Use model column 0 as the text column
|
125
|
+
# ======================================================================= #
|
126
|
+
completion.text_column = 0
|
127
|
+
@input_field.center
|
128
|
+
@input_field.signal_connect(:key_press_event) { |widget, event|
|
129
|
+
if Gdk::Keyval.to_name(event.keyval) == 'Return'
|
130
|
+
button_pressed_so_try_to_convert_the_input
|
131
|
+
end
|
132
|
+
}
|
133
|
+
hbox_holding_label_and_input_field = gtk_vbox(
|
134
|
+
text, @input_field
|
135
|
+
)
|
136
|
+
pack_start(hbox_holding_label_and_input_field, false, false, 4)
|
137
|
+
end
|
138
|
+
|
139
|
+
# ========================================================================= #
|
140
|
+
# === button_pressed_so_try_to_convert_the_input (click tag)
|
141
|
+
# ========================================================================= #
|
142
|
+
def button_pressed_so_try_to_convert_the_input
|
143
|
+
user_input = @input_field.return_input
|
144
|
+
translated_word = @dictionaries.translate(user_input)
|
145
|
+
e sfancy(user_input)+' → '+simp(translated_word)
|
146
|
+
# ===================================================================== #
|
147
|
+
# We need ISO encoding there.
|
148
|
+
# ===================================================================== #
|
149
|
+
translated_word = GLib.convert(
|
150
|
+
translated_word, 'utf-8', 'iso-8859-1'
|
151
|
+
)
|
152
|
+
@answer_field.set_text(translated_word)
|
153
|
+
end
|
154
|
+
|
155
|
+
# ========================================================================= #
|
156
|
+
# === width?
|
157
|
+
# ========================================================================= #
|
158
|
+
def width?
|
159
|
+
480 # Return the default width for our widget.
|
160
|
+
end
|
161
|
+
|
162
|
+
# ========================================================================= #
|
163
|
+
# === height?
|
164
|
+
# ========================================================================= #
|
165
|
+
def height?
|
166
|
+
300 # Return the default height for our widget.
|
167
|
+
end
|
168
|
+
|
169
|
+
# ========================================================================= #
|
170
|
+
# === run
|
171
|
+
# ========================================================================= #
|
172
|
+
def run
|
173
|
+
create_input_field_on_top
|
174
|
+
create_answer_field
|
175
|
+
pack_start(@answer_field, false) # <- Translation appears here.
|
176
|
+
add_ask_the_question_button
|
177
|
+
show_all
|
178
|
+
end
|
179
|
+
|
180
|
+
# ========================================================================= #
|
181
|
+
# === Dictionaries::GUI::Gtk::Dictionary.run
|
182
|
+
#
|
183
|
+
# Use this method if you wish to start a new gtk-application window.
|
184
|
+
# ========================================================================= #
|
185
|
+
def self.run
|
186
|
+
dictionary = new
|
187
|
+
runner = ::Gtk::Runner.new
|
188
|
+
runner.width = USE_THIS_WIDTH
|
189
|
+
runner.set_size_request(
|
190
|
+
dictionary.width?,
|
191
|
+
dictionary.height?
|
192
|
+
)
|
193
|
+
runner.title = 'Dictionary'
|
194
|
+
runner.border_width = 10
|
195
|
+
runner << dictionary
|
196
|
+
runner.top_left_then_run
|
197
|
+
end
|
198
|
+
|
199
|
+
end; end; end
|
200
|
+
|
201
|
+
# =========================================================================== #
|
202
|
+
# === Dictionaries.gtk_widget
|
203
|
+
#
|
204
|
+
# This toplevel-method can be used to return the gtk-widget, which
|
205
|
+
# can then be embedded by other ruby-gtk applications, in particular
|
206
|
+
# admin_panel.rb of the gtk_paradise project.
|
207
|
+
# =========================================================================== #
|
208
|
+
def self.gtk_widget
|
209
|
+
Dictionaries::GUI::Gtk::Dictionary.new
|
210
|
+
end
|
211
|
+
|
212
|
+
end
|
213
|
+
|
214
|
+
if __FILE__ == $PROGRAM_NAME
|
215
|
+
Dictionaries::GUI::Gtk::Dictionary.run
|
216
|
+
end
|