Class: Osaka::TypicalApplication
- Inherits:
-
Object
- Object
- Osaka::TypicalApplication
show all
- Defined in:
- lib/osaka/typicalapplication.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of TypicalApplication.
20
21
22
23
|
# File 'lib/osaka/typicalapplication.rb', line 20
def initialize(name)
@name = name
@control = RemoteControl.new(name)
end
|
Instance Attribute Details
#control ⇒ Object
Returns the value of attribute control.
18
19
20
|
# File 'lib/osaka/typicalapplication.rb', line 18
def control
@control
end
|
Instance Method Details
#activate ⇒ Object
157
158
159
160
161
162
|
# File 'lib/osaka/typicalapplication.rb', line 157
def activate
if (control.mac_version == :lion)
control.launch unless control.running?
end
control.activate
end
|
#close(option = :user_chose) ⇒ Object
152
153
154
155
|
# File 'lib/osaka/typicalapplication.rb', line 152
def close(option = :user_chose)
control.keystroke("w", :command)
wait_for_window_and_dialogs_to_close(option)
end
|
#close_dialog_sheet_with_dont_save ⇒ Object
59
60
61
62
63
|
# File 'lib/osaka/typicalapplication.rb', line 59
def close_dialog_sheet_with_dont_save
if (control.exists?(at.sheet(1)))
control.click!(at.button("Don’t Save").sheet(1))
end
end
|
#copy ⇒ Object
172
173
174
|
# File 'lib/osaka/typicalapplication.rb', line 172
def copy
control.keystroke("c", :command)
end
|
#create_dialog(dialog_class, location) ⇒ Object
193
194
195
|
# File 'lib/osaka/typicalapplication.rb', line 193
def create_dialog(dialog_class, location)
dialog_class.new(control.name, location + (location.has_top_level_element? ? "" : control.base_location))
end
|
#create_document(filename) {|_self| ... } ⇒ Object
89
90
91
92
93
94
|
# File 'lib/osaka/typicalapplication.rb', line 89
def create_document(filename)
new_document
yield self
save_as(filename)
close
end
|
#cut ⇒ Object
180
181
182
|
# File 'lib/osaka/typicalapplication.rb', line 180
def cut
control.keystroke("x", :command)
end
|
#do_and_wait_for_new_window ⇒ Object
72
73
74
75
76
77
78
79
80
|
# File 'lib/osaka/typicalapplication.rb', line 72
def do_and_wait_for_new_window
control.activate
latest_window_list = original_window_list = control.window_list
yield
while ((latest_window_list - original_window_list).size == 0)
latest_window_list = control.window_list
end
(latest_window_list - original_window_list)[0]
end
|
#duplicate ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/osaka/typicalapplication.rb', line 100
def duplicate
unless duplicate_available?
raise(Osaka::VersioningError, "MacOS Versioning Error: Duplicate is not available on this Mac version")
end
do_and_wait_for_new_window {
control.(at.("Duplicate"), "File")
}
new_instance = clone
new_instance.control.set_current_window(do_and_wait_for_new_window {
sleep(0.4) control.keystroke!(:return)
}) unless control.mac_version == :lion
new_instance
end
|
#duplicate_and_close_original ⇒ Object
116
117
118
119
120
|
# File 'lib/osaka/typicalapplication.rb', line 116
def duplicate_and_close_original
new_instance = duplicate
close
@control = new_instance.control
end
|
#duplicate_available? ⇒ Boolean
96
97
98
|
# File 'lib/osaka/typicalapplication.rb', line 96
def duplicate_available?
control.exists?(at.("Duplicate").(1).("File").(1))
end
|
#focus ⇒ Object
164
165
166
|
# File 'lib/osaka/typicalapplication.rb', line 164
def focus
control.focus
end
|
#get_info ⇒ Object
30
31
32
33
|
# File 'lib/osaka/typicalapplication.rb', line 30
def get_info
script_info = control.tell("get info for (path to application \"#{@name}\")")
ApplicationInfo.new(script_info)
end
|
#initialize_copy(other) ⇒ Object
25
26
27
28
|
# File 'lib/osaka/typicalapplication.rb', line 25
def initialize_copy(other)
super
@control = other.control.clone
end
|
#new_document ⇒ Object
82
83
84
85
86
87
|
# File 'lib/osaka/typicalapplication.rb', line 82
def new_document
control.set_current_window(do_and_wait_for_new_window {
control.keystroke("n", :command)
})
control.focus
end
|
#open(filename) ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/osaka/typicalapplication.rb', line 35
def open (filename)
abolutePathFileName = File.absolute_path(filename)
new_window = do_and_wait_for_new_window {
control.tell("open \"#{abolutePathFileName}\"")
}
control.set_current_window(new_window)
end
|
#paste ⇒ Object
176
177
178
|
# File 'lib/osaka/typicalapplication.rb', line 176
def paste
control.keystroke("v", :command)
end
|
#print_dialog ⇒ Object
188
189
190
191
|
# File 'lib/osaka/typicalapplication.rb', line 188
def print_dialog
control.keystroke("p", :command).wait_until_exists(at.sheet(1))
create_dialog(TypicalPrintDialog, at.sheet(1))
end
|
#quit(option = :user_chose) ⇒ Object
65
66
67
68
69
70
|
# File 'lib/osaka/typicalapplication.rb', line 65
def quit(option = :user_chose)
if control.running?
control.quit
wait_for_application_to_quit(option)
end
end
|
#raise_error_on_open_standard_windows(error_message) ⇒ Object
203
204
205
|
# File 'lib/osaka/typicalapplication.rb', line 203
def raise_error_on_open_standard_windows(error_message)
raise Osaka::ApplicationWindowsMustBeClosed, error_message if ! control.standard_window_list.empty?
end
|
#running? ⇒ Boolean
168
169
170
|
# File 'lib/osaka/typicalapplication.rb', line 168
def running?
control.running?
end
|
#save ⇒ Object
122
123
124
|
# File 'lib/osaka/typicalapplication.rb', line 122
def save
control.keystroke("s", :command)
end
|
#save_as(filename) ⇒ Object
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# File 'lib/osaka/typicalapplication.rb', line 130
def save_as(filename)
if save_pops_up_dialog?
save
else
if duplicate_available?
duplicate_and_close_original
save
else
control.keystroke("s", [:command, :shift])
end
end
wait_for_save_dialog_and_save_file(filename)
end
|
#save_pops_up_dialog? ⇒ Boolean
126
127
128
|
# File 'lib/osaka/typicalapplication.rb', line 126
def save_pops_up_dialog?
control.exists?(at.("Save…").(1).("File").(1))
end
|
#select_all ⇒ Object
184
185
186
|
# File 'lib/osaka/typicalapplication.rb', line 184
def select_all
control.keystroke("a", :command)
end
|
#select_file_from_open_dialog(filename, dialog_location) ⇒ Object
197
198
199
200
201
|
# File 'lib/osaka/typicalapplication.rb', line 197
def select_file_from_open_dialog(filename, dialog_location)
dialog = create_dialog(TypicalOpenDialog, dialog_location)
dialog.set_folder(File.dirname(filename))
dialog.select_file(File.basename(filename))
end
|
#wait_for_application_to_quit(option) ⇒ Object
51
52
53
54
55
56
57
|
# File 'lib/osaka/typicalapplication.rb', line 51
def wait_for_application_to_quit(option)
if (option != :user_chose)
while control.running?
close_dialog_sheet_with_dont_save
end
end
end
|
#wait_for_save_dialog_and_save_file(filename) ⇒ Object
145
146
147
148
149
150
|
# File 'lib/osaka/typicalapplication.rb', line 145
def wait_for_save_dialog_and_save_file(filename)
control.wait_until_exists(at.sheet(1))
dialog = create_dialog(TypicalSaveDialog, at.sheet(1))
dialog.save(filename)
control.set_current_window(File.basename(filename))
end
|
#wait_for_window_and_dialogs_to_close(option) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/osaka/typicalapplication.rb', line 43
def wait_for_window_and_dialogs_to_close(option)
if (option != :user_chose)
control.until_not_exists!(control.base_location) {
close_dialog_sheet_with_dont_save
}
end
end
|