gtk3 3.0.0-x86-mingw32 → 3.0.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/sample/tutorial/README.md +104 -1
- data/sample/tutorial/exampleapp9/app-menu.ui +18 -0
- data/sample/tutorial/exampleapp9/exampleapp.gresource.xml +9 -0
- data/sample/tutorial/exampleapp9/exampleapp.rb +268 -0
- data/sample/tutorial/exampleapp9/gears-menu.ui +16 -0
- data/sample/tutorial/exampleapp9/org.gtk.exampleapp.gschema.xml +25 -0
- data/sample/tutorial/exampleapp9/prefs.ui +70 -0
- data/sample/tutorial/exampleapp9/window.ui +117 -0
- metadata +23 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00db0a838c21b9d192db9f23390c7862b19c7d0c
|
4
|
+
data.tar.gz: 06762d1b2149faefbd349f03d019b5a193a1b079
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92d4a69527cad315e3cdcc854139d67b2531a1f5f58e2465be0bb8543bdb17d9cf261d9b68a284f51e4e1224aff0bb7f40deb4f950bd476e6cbdf6033fbb5d46
|
7
|
+
data.tar.gz: b73163a6c543b1bb8d51dea55b53f9e1e2772ea08fc4eaacd3d350639448339168abe0b30451588add4578359060d1701e66db0332d2f6f25bcea9d4c5943271
|
data/sample/tutorial/README.md
CHANGED
@@ -312,7 +312,7 @@ In this example we create a subclass of `Gtk::Application` called ExampleApp. In
|
|
312
312
|
* open : opens files and shows them in a new window
|
313
313
|
|
314
314
|
For more informations, see [here](https://wiki.gnome.org/HowDoI/GtkApplication).
|
315
|
-
In this case, the signal "*activate*" will be triggered if no arguments are given to the `ExampleApp#run` method. And a default window will be created and will be presented to the user ( [
|
315
|
+
In this case, the signal "*activate*" will be triggered if no arguments are given to the `ExampleApp#run` method. And a default window will be created and will be presented to the user ( [`Gtk::Widget#present`](https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-present)).
|
316
316
|
|
317
317
|
If file names are given to the `ExampleApp#run` method, then it is the "*open*" signal that is called.
|
318
318
|
Trought this event, you can manage the files that are stored in an array of `Gio::File` objects.
|
@@ -327,6 +327,109 @@ https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.6
|
|
327
327
|
|
328
328
|
* exampleapp2/exampleapp.rb
|
329
329
|
|
330
|
+
In this step, we use a [`Gtk::Builder`](https://developer.gnome.org/gtk3/stable/GtkBuilder.html) template to associate a [`Gtk::Builder`](https://developer.gnome.org/gtk3/stable/GtkBuilder.html) ui file with our application window class.
|
331
|
+
Our simple ui file puts a [`Gtk::HeaderBar`](https://developer.gnome.org/gtk3/stable/GtkHeaderBar.html) on top of a [`Gtk::Stack`](https://developer.gnome.org/gtk3/stable/GtkStack.html) widget. The header bar contains a [`Gtk::StackSwitcher`](https://developer.gnome.org/gtk3/stable/GtkStackSwitcher.html), which is a standalone widget to show a row of 'tabs' for the pages of a [`Gtk::Stack`](https://developer.gnome.org/gtk3/stable/GtkStack.html) .
|
332
|
+
|
333
|
+
Here is the "window.ui" file that contains the template of the window:
|
334
|
+
|
335
|
+
```xml
|
336
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
337
|
+
<interface>
|
338
|
+
<!-- interface-requires gtk+ 3.8 -->
|
339
|
+
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
|
340
|
+
<property name="title" translatable="yes">Example Application</property>
|
341
|
+
<property name="default-width">600</property>
|
342
|
+
<property name="default-height">400</property>
|
343
|
+
<child>
|
344
|
+
<object class="GtkBox" id="content_box">
|
345
|
+
<property name="visible">True</property>
|
346
|
+
<property name="orientation">vertical</property>
|
347
|
+
<child>
|
348
|
+
<object class="GtkHeaderBar" id="header">
|
349
|
+
<property name="visible">True</property>
|
350
|
+
<child type="title">
|
351
|
+
<object class="GtkStackSwitcher" id="tabs">
|
352
|
+
<property name="visible">True</property>
|
353
|
+
<property name="margin">6</property>
|
354
|
+
<property name="stack">stack</property>
|
355
|
+
</object>
|
356
|
+
</child>
|
357
|
+
</object>
|
358
|
+
</child>
|
359
|
+
<child>
|
360
|
+
<object class="GtkStack" id="stack">
|
361
|
+
<property name="visible">True</property>
|
362
|
+
</object>
|
363
|
+
</child>
|
364
|
+
</object>
|
365
|
+
</child>
|
366
|
+
</template>
|
367
|
+
</interface>
|
368
|
+
```
|
369
|
+
Unlike regular interface descriptions, in template XML descriptions, a`<template>` tag is expected as a direct child of the toplevel `<interface>` tag. Yhe `<template>` tag must specify the "*class*" attribute which must be the class name of the widget. Optionally, the "*parent*" attribute may be specified to indicate the direct parent class (superclass).
|
370
|
+
|
371
|
+
More informations can be found in the part [building composite widgets from template XML](https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget.description) of the `Gtk::Widget` documentation.
|
372
|
+
|
373
|
+
#### Link a template to a custom class widget.
|
374
|
+
|
375
|
+
```ruby
|
376
|
+
class ExampleAppWindow < Gtk::ApplicationWindow
|
377
|
+
type_register
|
378
|
+
class << self
|
379
|
+
def init
|
380
|
+
set_template(:resource => "/org/gtk/exampleapp/window.ui")
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
def initialize(application)
|
385
|
+
super(:application => application)
|
386
|
+
end
|
387
|
+
|
388
|
+
def open(file)
|
389
|
+
|
390
|
+
end
|
391
|
+
end
|
392
|
+
```
|
393
|
+
|
394
|
+
We create a subclass of Gtk::ApplicationWindow. Then we call the method `type_register` inherited from `GLib::Object` in order to register this class as a new [GType](https://developer.gnome.org/gobject/stable/chapter-gtype.html). See the file *ruby-gnome2/glib2/ext/glib2/rbgobj_object.c* for the C implementation. More informations on the gobject manipulation can be found [here](https://blogs.gnome.org/desrt/2012/02/26/a-gentle-introduction-to-gobject-construction/)
|
395
|
+
|
396
|
+
The template of the interface is bound to the class using the `init` singleton method. We just open the *eigenclass* with `class << self` and define the method `init` in which we call the `Gtk::Widget#set_template` method.
|
397
|
+
|
398
|
+
After that, the `ExampleAppWindow#initialize` method must be overwritten. When `type_register` is used, *super* is equivalent to `GLib::Object#initialize` so you need to use properties style constructor (hash argument, see [here](https://github.com/ruby-gnome2/ruby-gnome2/issues/503))
|
399
|
+
|
400
|
+
#### Load a resource file.
|
401
|
+
|
402
|
+
You may have noticed that we used the `:resource => ` key as the argument of the method that sets a template. Now we need to use GLib's resource functionality to include the ui file in the binary. This is commonly done by listing all resources in a .gresource.xml file, such as this:
|
403
|
+
|
404
|
+
```xml
|
405
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
406
|
+
<gresources>
|
407
|
+
<gresource prefix="/org/gtk/exampleapp">
|
408
|
+
<file preprocess="xml-stripblanks">window.ui</file>
|
409
|
+
</gresource>
|
410
|
+
</gresources>
|
411
|
+
```
|
412
|
+
In our script, we built the resource binary file with
|
413
|
+
```ruby
|
414
|
+
system("glib-compile-resources",
|
415
|
+
"--target", gresource_bin,
|
416
|
+
"--sourcedir", File.dirname(gresource_xml),
|
417
|
+
gresource_xml)
|
418
|
+
```
|
419
|
+
Then we make sure that this file is deleted when the script is done :
|
420
|
+
|
421
|
+
```ruby
|
422
|
+
at_exit do
|
423
|
+
FileUtils.rm_f(gresource_bin)
|
424
|
+
end
|
425
|
+
```
|
426
|
+
The resource binary file is loaded so that each resources in it can be accessed via theirs respective paths.
|
427
|
+
|
428
|
+
```ruby
|
429
|
+
resource = Gio::Resource.load(gresource_bin)
|
430
|
+
Gio::Resources.register(resource)
|
431
|
+
```
|
432
|
+
|
330
433
|
### Opening files
|
331
434
|
https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.7
|
332
435
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.0 -->
|
4
|
+
<menu id="appmenu">
|
5
|
+
<section>
|
6
|
+
<item>
|
7
|
+
<attribute name="label" translatable="yes">_Preferences</attribute>
|
8
|
+
<attribute name="action">app.preferences</attribute>
|
9
|
+
</item>
|
10
|
+
</section>
|
11
|
+
<section>
|
12
|
+
<item>
|
13
|
+
<attribute name="label" translatable="yes">_Quit</attribute>
|
14
|
+
<attribute name="action">app.quit</attribute>
|
15
|
+
</item>
|
16
|
+
</section>
|
17
|
+
</menu>
|
18
|
+
</interface>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<gresources>
|
3
|
+
<gresource prefix="/org/gtk/exampleapp">
|
4
|
+
<file preprocess="xml-stripblanks">window.ui</file>
|
5
|
+
<file preprocess="xml-stripblanks">app-menu.ui</file>
|
6
|
+
<file preprocess="xml-stripblanks">gears-menu.ui</file>
|
7
|
+
<file preprocess="xml-stripblanks">prefs.ui</file>
|
8
|
+
</gresource>
|
9
|
+
</gresources>
|
@@ -0,0 +1,268 @@
|
|
1
|
+
# Copyright (C) 2015 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
#
|
17
|
+
# Original:
|
18
|
+
# * URL: https://git.gnome.org/browse/gtk+/tree/examples/application8/exampleapp.c
|
19
|
+
# * URL: https://git.gnome.org/browse/gtk+/tree/examples/application8/exampleappwin.c
|
20
|
+
# * License: LGPL 2
|
21
|
+
|
22
|
+
require "gtk3"
|
23
|
+
|
24
|
+
require "fileutils"
|
25
|
+
|
26
|
+
current_path = File.expand_path(File.dirname(__FILE__))
|
27
|
+
gresource_bin = "#{current_path}/exampleapp.gresource"
|
28
|
+
gresource_xml = "#{current_path}/exampleapp.gresource.xml"
|
29
|
+
|
30
|
+
system("glib-compile-resources",
|
31
|
+
"--target", gresource_bin,
|
32
|
+
"--sourcedir", current_path,
|
33
|
+
gresource_xml)
|
34
|
+
|
35
|
+
gschema_bin = "#{current_path}/gschemas.compiled"
|
36
|
+
|
37
|
+
system("glib-compile-schemas", current_path)
|
38
|
+
|
39
|
+
at_exit do
|
40
|
+
FileUtils.rm_f([gresource_bin, gschema_bin])
|
41
|
+
end
|
42
|
+
|
43
|
+
resource = Gio::Resource.load(gresource_bin)
|
44
|
+
Gio::Resources.register(resource)
|
45
|
+
|
46
|
+
ENV["GSETTINGS_SCHEMA_DIR"] = current_path
|
47
|
+
|
48
|
+
def update_words(win)
|
49
|
+
tab = win.stack.visible_child
|
50
|
+
return unless tab
|
51
|
+
view = tab.child
|
52
|
+
buffer = view.buffer
|
53
|
+
iter = buffer.start_iter
|
54
|
+
strings = []
|
55
|
+
done = false
|
56
|
+
until iter.end?
|
57
|
+
until iter.starts_word
|
58
|
+
unless iter.forward_char
|
59
|
+
done = true
|
60
|
+
break
|
61
|
+
end
|
62
|
+
end
|
63
|
+
break if done
|
64
|
+
word_end = iter.clone
|
65
|
+
break unless word_end.forward_word_end
|
66
|
+
strings << buffer.get_text(iter, word_end, false)
|
67
|
+
iter = word_end
|
68
|
+
end
|
69
|
+
children = win.words.children
|
70
|
+
children.each { |c| win.words.remove(c) } unless children.empty?
|
71
|
+
strings.each do |s|
|
72
|
+
row = Gtk::Button.new(:label => s)
|
73
|
+
row.signal_connect("clicked") { |_widget| win.searchentry.text = s }
|
74
|
+
row.show
|
75
|
+
win.words.add(row)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def update_lines(win)
|
80
|
+
tab = win.stack.visible_child
|
81
|
+
return unless tab
|
82
|
+
view = tab.child
|
83
|
+
buffer = view.buffer
|
84
|
+
iter = buffer.start_iter
|
85
|
+
count = 0
|
86
|
+
until iter.end?
|
87
|
+
count += 1
|
88
|
+
break unless iter.forward_line
|
89
|
+
end
|
90
|
+
win.lines.text = count.to_s
|
91
|
+
end
|
92
|
+
|
93
|
+
class ExampleAppPrefs < Gtk::Dialog
|
94
|
+
type_register
|
95
|
+
|
96
|
+
class << self
|
97
|
+
def init
|
98
|
+
set_template(:resource => "/org/gtk/exampleapp/prefs.ui")
|
99
|
+
bind_template_child("font")
|
100
|
+
bind_template_child("transition")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def initialize(args)
|
105
|
+
parent = args[:transient_for]
|
106
|
+
super(:transient_for => parent, :use_header_bar => 1)
|
107
|
+
settings = Gio::Settings.new("org.gtk.exampleapp")
|
108
|
+
settings.bind("font",
|
109
|
+
font,
|
110
|
+
"font",
|
111
|
+
Gio::SettingsBindFlags::DEFAULT)
|
112
|
+
settings.bind("transition",
|
113
|
+
transition,
|
114
|
+
"active-id",
|
115
|
+
Gio::SettingsBindFlags::DEFAULT)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class ExampleAppWindow < Gtk::ApplicationWindow
|
120
|
+
type_register
|
121
|
+
class << self
|
122
|
+
def init
|
123
|
+
set_template(:resource => "/org/gtk/exampleapp/window.ui")
|
124
|
+
bind_template_child("stack")
|
125
|
+
bind_template_child("search")
|
126
|
+
bind_template_child("searchbar")
|
127
|
+
bind_template_child("searchentry")
|
128
|
+
bind_template_child("gears")
|
129
|
+
bind_template_child("words")
|
130
|
+
bind_template_child("sidebar")
|
131
|
+
bind_template_child("lines")
|
132
|
+
bind_template_child("lines_label")
|
133
|
+
|
134
|
+
set_connect_func do |name|
|
135
|
+
method(name)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
private
|
140
|
+
|
141
|
+
def search_text_changed(search_entry)
|
142
|
+
text = search_entry.text
|
143
|
+
return if text.empty?
|
144
|
+
|
145
|
+
win = search_entry.toplevel
|
146
|
+
tab = win.stack.visible_child
|
147
|
+
view = tab.child
|
148
|
+
buffer = view.buffer
|
149
|
+
range = buffer.start_iter.forward_search(text,
|
150
|
+
Gtk::TextSearchFlags::CASE_INSENSITIVE)
|
151
|
+
return unless range
|
152
|
+
buffer.select_range(range[0], range[1])
|
153
|
+
view.scroll_to_iter(range[0], 0.0, false, 0.0, 0.0)
|
154
|
+
end
|
155
|
+
|
156
|
+
def visible_child_changed(stack, params)
|
157
|
+
return if stack.in_destruction?
|
158
|
+
win = stack.toplevel
|
159
|
+
win.searchbar.set_search_mode(false)
|
160
|
+
update_words(win)
|
161
|
+
update_lines(win)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def initialize(application)
|
166
|
+
super(:application => application)
|
167
|
+
@settings = Gio::Settings.new("org.gtk.exampleapp")
|
168
|
+
@settings.bind("transition",
|
169
|
+
stack,
|
170
|
+
"transition-type",
|
171
|
+
Gio::SettingsBindFlags::DEFAULT)
|
172
|
+
search.bind_property("active", searchbar, "search-mode-enabled", :bidirectional)
|
173
|
+
@settings.bind("show-words",
|
174
|
+
sidebar,
|
175
|
+
"reveal-child",
|
176
|
+
Gio::SettingsBindFlags::DEFAULT)
|
177
|
+
sidebar.signal_connect "notify::reveal-child" do |_sidebar, _gparamspec, _application|
|
178
|
+
update_words(self)
|
179
|
+
end
|
180
|
+
builder = Gtk::Builder.new(:resource => "/org/gtk/exampleapp/gears-menu.ui")
|
181
|
+
menu = builder.get_object("menu")
|
182
|
+
gears.set_menu_model(menu)
|
183
|
+
action = @settings.create_action("show-words")
|
184
|
+
add_action(action)
|
185
|
+
action = Gio::PropertyAction.new("show-lines", lines, "visible")
|
186
|
+
add_action(action)
|
187
|
+
lines.bind_property("visible", lines_label, "visible", :default)
|
188
|
+
end
|
189
|
+
|
190
|
+
def open(file)
|
191
|
+
basename = file.basename
|
192
|
+
|
193
|
+
scrolled = Gtk::ScrolledWindow.new
|
194
|
+
scrolled.show
|
195
|
+
scrolled.set_hexpand(true)
|
196
|
+
scrolled.set_vexpand(true)
|
197
|
+
|
198
|
+
view = Gtk::TextView.new
|
199
|
+
view.set_editable(false)
|
200
|
+
view.set_cursor_visible(false)
|
201
|
+
view.show
|
202
|
+
scrolled.add(view)
|
203
|
+
|
204
|
+
stack.add_titled(scrolled, basename, basename)
|
205
|
+
|
206
|
+
stream = file.read
|
207
|
+
buffer = view.buffer
|
208
|
+
buffer.text = stream.read
|
209
|
+
tag = buffer.create_tag
|
210
|
+
@settings.bind("font", tag, "font", Gio::SettingsBindFlags::DEFAULT)
|
211
|
+
buffer.apply_tag(tag, buffer.start_iter, buffer.end_iter)
|
212
|
+
search.sensitive = true
|
213
|
+
update_words(self)
|
214
|
+
update_lines(self)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
class ExampleApp < Gtk::Application
|
219
|
+
def initialize
|
220
|
+
super("org.gtk.exampleapp", :handles_open)
|
221
|
+
|
222
|
+
signal_connect "startup" do |application|
|
223
|
+
quit_accels = ["<Ctrl>Q"]
|
224
|
+
action = Gio::SimpleAction.new("quit")
|
225
|
+
action.signal_connect("activate") do |_action, _parameter|
|
226
|
+
application.quit
|
227
|
+
end
|
228
|
+
application.add_action(action)
|
229
|
+
application.set_accels_for_action("app.quit", quit_accels)
|
230
|
+
|
231
|
+
action = Gio::SimpleAction.new("preferences")
|
232
|
+
action.signal_connect("activate") do |_action, _parameter|
|
233
|
+
win = application.windows.first
|
234
|
+
prefs = ExampleAppPrefs.new(:transient_for => win,
|
235
|
+
:use_header_bar => true)
|
236
|
+
prefs.present
|
237
|
+
end
|
238
|
+
application.add_action(action)
|
239
|
+
|
240
|
+
builder = Gtk::Builder.new(:resource => "/org/gtk/exampleapp/app-menu.ui")
|
241
|
+
app_menu = builder.get_object("appmenu")
|
242
|
+
application.set_app_menu(app_menu)
|
243
|
+
end
|
244
|
+
|
245
|
+
signal_connect "activate" do |application|
|
246
|
+
window = ExampleAppWindow.new(application)
|
247
|
+
window.present
|
248
|
+
end
|
249
|
+
|
250
|
+
signal_connect "open" do |application, files, _hint|
|
251
|
+
windows = application.windows
|
252
|
+
win = nil
|
253
|
+
if windows.empty?
|
254
|
+
win = ExampleAppWindow.new(application)
|
255
|
+
else
|
256
|
+
win = windows.first
|
257
|
+
end
|
258
|
+
|
259
|
+
files.each { |file| win.open(file) }
|
260
|
+
|
261
|
+
win.present
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
app = ExampleApp.new
|
267
|
+
|
268
|
+
puts app.run([$PROGRAM_NAME] + ARGV)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.0 -->
|
4
|
+
<menu id="menu">
|
5
|
+
<section>
|
6
|
+
<item>
|
7
|
+
<attribute name="label" translatable="yes">_Words</attribute>
|
8
|
+
<attribute name="action">win.show-words</attribute>
|
9
|
+
</item>
|
10
|
+
<item>
|
11
|
+
<attribute name="label" translatable="yes">_Lines</attribute>
|
12
|
+
<attribute name="action">win.show-lines</attribute>
|
13
|
+
</item>
|
14
|
+
</section>
|
15
|
+
</menu>
|
16
|
+
</interface>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<schemalist>
|
3
|
+
<schema path="/org/gtk/exampleapp/" id="org.gtk.exampleapp">
|
4
|
+
<key name="font" type="s">
|
5
|
+
<default>'Monospace 12'</default>
|
6
|
+
<summary>Font</summary>
|
7
|
+
<description>The font to be used for content.</description>
|
8
|
+
</key>
|
9
|
+
<key name="transition" type="s">
|
10
|
+
<choices>
|
11
|
+
<choice value='none'/>
|
12
|
+
<choice value='crossfade'/>
|
13
|
+
<choice value='slide-left-right'/>
|
14
|
+
</choices>
|
15
|
+
<default>'none'</default>
|
16
|
+
<summary>Transition</summary>
|
17
|
+
<description>The transition to use when switching tabs.</description>
|
18
|
+
</key>
|
19
|
+
<key name="show-words" type="b">
|
20
|
+
<default>false</default>
|
21
|
+
<summary>Show words</summary>
|
22
|
+
<description>Whether to show a word list in the sidebar</description>
|
23
|
+
</key>
|
24
|
+
</schema>
|
25
|
+
</schemalist>
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.8 -->
|
4
|
+
<template class="ExampleAppPrefs" parent="GtkDialog">
|
5
|
+
<property name="title" translatable="yes">Preferences</property>
|
6
|
+
<property name="resizable">False</property>
|
7
|
+
<property name="modal">True</property>
|
8
|
+
<child internal-child="vbox">
|
9
|
+
<object class="GtkBox" id="vbox">
|
10
|
+
<child>
|
11
|
+
<object class="GtkGrid" id="grid">
|
12
|
+
<property name="visible">True</property>
|
13
|
+
<property name="margin">6</property>
|
14
|
+
<property name="row-spacing">12</property>
|
15
|
+
<property name="column-spacing">6</property>
|
16
|
+
<child>
|
17
|
+
<object class="GtkLabel" id="fontlabel">
|
18
|
+
<property name="visible">True</property>
|
19
|
+
<property name="label">_Font:</property>
|
20
|
+
<property name="use-underline">True</property>
|
21
|
+
<property name="mnemonic-widget">font</property>
|
22
|
+
<property name="xalign">1</property>
|
23
|
+
</object>
|
24
|
+
<packing>
|
25
|
+
<property name="left-attach">0</property>
|
26
|
+
<property name="top-attach">0</property>
|
27
|
+
</packing>
|
28
|
+
</child>
|
29
|
+
<child>
|
30
|
+
<object class="GtkFontButton" id="font">
|
31
|
+
<property name="visible">True</property>
|
32
|
+
</object>
|
33
|
+
<packing>
|
34
|
+
<property name="left-attach">1</property>
|
35
|
+
<property name="top-attach">0</property>
|
36
|
+
</packing>
|
37
|
+
</child>
|
38
|
+
<child>
|
39
|
+
<object class="GtkLabel" id="transitionlabel">
|
40
|
+
<property name="visible">True</property>
|
41
|
+
<property name="label">_Transition:</property>
|
42
|
+
<property name="use-underline">True</property>
|
43
|
+
<property name="mnemonic-widget">transition</property>
|
44
|
+
<property name="xalign">1</property>
|
45
|
+
</object>
|
46
|
+
<packing>
|
47
|
+
<property name="left-attach">0</property>
|
48
|
+
<property name="top-attach">1</property>
|
49
|
+
</packing>
|
50
|
+
</child>
|
51
|
+
<child>
|
52
|
+
<object class="GtkComboBoxText" id="transition">
|
53
|
+
<property name="visible">True</property>
|
54
|
+
<items>
|
55
|
+
<item translatable="yes" id="none">None</item>
|
56
|
+
<item translatable="yes" id="crossfade">Fade</item>
|
57
|
+
<item translatable="yes" id="slide-left-right">Slide</item>
|
58
|
+
</items>
|
59
|
+
</object>
|
60
|
+
<packing>
|
61
|
+
<property name="left-attach">1</property>
|
62
|
+
<property name="top-attach">1</property>
|
63
|
+
</packing>
|
64
|
+
</child>
|
65
|
+
</object>
|
66
|
+
</child>
|
67
|
+
</object>
|
68
|
+
</child>
|
69
|
+
</template>
|
70
|
+
</interface>
|
@@ -0,0 +1,117 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.8 -->
|
4
|
+
<template class="ExampleAppWindow" parent="GtkApplicationWindow">
|
5
|
+
<property name="title" translatable="yes">Example Application</property>
|
6
|
+
<property name="default-width">600</property>
|
7
|
+
<property name="default-height">400</property>
|
8
|
+
<child>
|
9
|
+
<object class="GtkBox" id="content_box">
|
10
|
+
<property name="visible">True</property>
|
11
|
+
<property name="orientation">vertical</property>
|
12
|
+
<child>
|
13
|
+
<object class="GtkHeaderBar" id="header">
|
14
|
+
<property name="visible">True</property>
|
15
|
+
<child>
|
16
|
+
<object class="GtkLabel" id="lines_label">
|
17
|
+
<property name="visible">False</property>
|
18
|
+
<property name="label" translatable="yes">Lines:</property>
|
19
|
+
</object>
|
20
|
+
<packing>
|
21
|
+
<property name="pack-type">start</property>
|
22
|
+
</packing>
|
23
|
+
</child>
|
24
|
+
<child>
|
25
|
+
<object class="GtkLabel" id="lines">
|
26
|
+
<property name="visible">False</property>
|
27
|
+
</object>
|
28
|
+
<packing>
|
29
|
+
<property name="pack-type">start</property>
|
30
|
+
</packing>
|
31
|
+
</child>
|
32
|
+
<child type="title">
|
33
|
+
<object class="GtkStackSwitcher" id="tabs">
|
34
|
+
<property name="visible">True</property>
|
35
|
+
<property name="margin">6</property>
|
36
|
+
<property name="stack">stack</property>
|
37
|
+
</object>
|
38
|
+
</child>
|
39
|
+
<child>
|
40
|
+
<object class="GtkToggleButton" id="search">
|
41
|
+
<property name="visible">True</property>
|
42
|
+
<property name="sensitive">False</property>
|
43
|
+
<style>
|
44
|
+
<class name="image-button"/>
|
45
|
+
</style>
|
46
|
+
<child>
|
47
|
+
<object class="GtkImage" id="search-icon">
|
48
|
+
<property name="visible">True</property>
|
49
|
+
<property name="icon-name">edit-find-symbolic</property>
|
50
|
+
<property name="icon-size">1</property>
|
51
|
+
</object>
|
52
|
+
</child>
|
53
|
+
</object>
|
54
|
+
<packing>
|
55
|
+
<property name="pack-type">end</property>
|
56
|
+
</packing>
|
57
|
+
</child>
|
58
|
+
<child>
|
59
|
+
<object class="GtkMenuButton" id="gears">
|
60
|
+
<property name="visible">True</property>
|
61
|
+
<property name="direction">none</property>
|
62
|
+
<property name="use-popover">True</property>
|
63
|
+
<style>
|
64
|
+
<class name="image-button"/>
|
65
|
+
</style>
|
66
|
+
</object>
|
67
|
+
<packing>
|
68
|
+
<property name="pack-type">end</property>
|
69
|
+
</packing>
|
70
|
+
</child>
|
71
|
+
</object>
|
72
|
+
</child>
|
73
|
+
<child>
|
74
|
+
<object class="GtkSearchBar" id="searchbar">
|
75
|
+
<property name="visible">True</property>
|
76
|
+
<child>
|
77
|
+
<object class="GtkSearchEntry" id="searchentry">
|
78
|
+
<signal name="search-changed" handler="search_text_changed"/>
|
79
|
+
<property name="visible">True</property>
|
80
|
+
</object>
|
81
|
+
</child>
|
82
|
+
</object>
|
83
|
+
</child>
|
84
|
+
<child>
|
85
|
+
<object class="GtkBox" id="hbox">
|
86
|
+
<property name="visible">True</property>
|
87
|
+
<child>
|
88
|
+
<object class="GtkRevealer" id="sidebar">
|
89
|
+
<property name="visible">True</property>
|
90
|
+
<property name="transition-type">slide-right</property>
|
91
|
+
<child>
|
92
|
+
<object class="GtkScrolledWindow" id="sidebar-sw">
|
93
|
+
<property name="visible">True</property>
|
94
|
+
<property name="hscrollbar-policy">never</property>
|
95
|
+
<property name="vscrollbar-policy">automatic</property>
|
96
|
+
<child>
|
97
|
+
<object class="GtkListBox" id="words">
|
98
|
+
<property name="visible">True</property>
|
99
|
+
<property name="selection-mode">none</property>
|
100
|
+
</object>
|
101
|
+
</child>
|
102
|
+
</object>
|
103
|
+
</child>
|
104
|
+
</object>
|
105
|
+
</child>
|
106
|
+
<child>
|
107
|
+
<object class="GtkStack" id="stack">
|
108
|
+
<signal name="notify::visible-child" handler="visible_child_changed"/>
|
109
|
+
<property name="visible">True</property>
|
110
|
+
</object>
|
111
|
+
</child>
|
112
|
+
</object>
|
113
|
+
</child>
|
114
|
+
</object>
|
115
|
+
</child>
|
116
|
+
</template>
|
117
|
+
</interface>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gtk3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME2 Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glib2
|
@@ -16,98 +16,98 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.0.
|
19
|
+
version: 3.0.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.0.
|
26
|
+
version: 3.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: gio2
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.0.
|
33
|
+
version: 3.0.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.0.
|
40
|
+
version: 3.0.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: atk
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.0.
|
47
|
+
version: 3.0.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.0.
|
54
|
+
version: 3.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pango
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.0.
|
61
|
+
version: 3.0.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.0.
|
68
|
+
version: 3.0.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: gdk_pixbuf2
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.0.
|
75
|
+
version: 3.0.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.0.
|
82
|
+
version: 3.0.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: gdk3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 3.0.
|
89
|
+
version: 3.0.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 3.0.
|
96
|
+
version: 3.0.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: gobject-introspection
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.0.
|
103
|
+
version: 3.0.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 3.0.
|
110
|
+
version: 3.0.1
|
111
111
|
description: Ruby/GTK3 is a Ruby binding of GTK+-3.x.
|
112
112
|
email: ruby-gnome2-devel-en@lists.sourceforge.net
|
113
113
|
executables: []
|
@@ -393,6 +393,13 @@ files:
|
|
393
393
|
- sample/tutorial/exampleapp8/org.gtk.exampleapp.gschema.xml
|
394
394
|
- sample/tutorial/exampleapp8/prefs.ui
|
395
395
|
- sample/tutorial/exampleapp8/window.ui
|
396
|
+
- sample/tutorial/exampleapp9/app-menu.ui
|
397
|
+
- sample/tutorial/exampleapp9/exampleapp.gresource.xml
|
398
|
+
- sample/tutorial/exampleapp9/exampleapp.rb
|
399
|
+
- sample/tutorial/exampleapp9/gears-menu.ui
|
400
|
+
- sample/tutorial/exampleapp9/org.gtk.exampleapp.gschema.xml
|
401
|
+
- sample/tutorial/exampleapp9/prefs.ui
|
402
|
+
- sample/tutorial/exampleapp9/window.ui
|
396
403
|
- test/fixture/Rakefile
|
397
404
|
- test/fixture/gnome-logo-icon.png
|
398
405
|
- test/fixture/image.gresource
|