gtk3 3.0.8-x64-mingw32 → 3.0.9-x64-mingw32
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.
- checksums.yaml +4 -4
- data/ext/gtk3/rb-gtk3.c +17 -0
- data/lib/2.2/gtk3.so +0 -0
- data/lib/2.3/gtk3.so +0 -0
- data/lib/gtk3/container.rb +0 -7
- data/lib/gtk3/deprecated.rb +3 -3
- data/lib/gtk3/image.rb +7 -7
- data/lib/gtk3/loader.rb +11 -5
- data/lib/gtk3/text-buffer.rb +33 -12
- data/lib/gtk3/text-view.rb +53 -0
- data/lib/gtk3/tree-model.rb +5 -0
- data/lib/gtk3/tree-view.rb +25 -0
- data/lib/gtk3/widget.rb +0 -5
- data/sample/gtk-demo/TODO +10 -6
- data/sample/gtk-demo/application.ui +93 -70
- data/sample/gtk-demo/appmenu.ui +19 -0
- data/sample/gtk-demo/assistant.rb +1 -0
- data/sample/gtk-demo/css_accordion.css +8 -8
- data/sample/gtk-demo/css_accordion.rb +2 -2
- data/sample/gtk-demo/css_basics.css +1 -1
- data/sample/gtk-demo/css_basics.rb +2 -2
- data/sample/gtk-demo/css_multiplebgs.rb +2 -2
- data/sample/gtk-demo/css_pixbufs.css +2 -2
- data/sample/gtk-demo/css_pixbufs.rb +2 -2
- data/sample/gtk-demo/css_shadows.css +5 -5
- data/sample/gtk-demo/css_shadows.rb +2 -2
- data/sample/gtk-demo/cssview.css +5 -5
- data/sample/gtk-demo/data/16x16/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/16x16/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/22x22/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/22x22/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/24x24/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/24x24/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/256x256/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/256x256/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/32x32/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/32x32/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/48x48/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/48x48/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/512x512/gtk3-demo-symbolic.symbolic.png +0 -0
- data/sample/gtk-demo/data/512x512/gtk3-demo.png +0 -0
- data/sample/gtk-demo/data/source.svg +2886 -0
- data/sample/gtk-demo/data/symbolic-source.svg +29 -0
- data/sample/gtk-demo/demo.gresource.xml +16 -5
- data/sample/gtk-demo/demo.ui +1 -0
- data/sample/gtk-demo/font_features.rb +1 -1
- data/sample/gtk-demo/main.rb +2 -2
- data/sample/gtk-demo/main.ui +18 -36
- data/sample/gtk-demo/markup.rb +53 -8
- data/sample/gtk-demo/markup.txt +2 -2
- data/sample/gtk-demo/org.gtk.Demo.gschema.xml +9 -0
- data/sample/gtk-demo/pixbufs.rb +105 -145
- data/sample/gtk-demo/reset.css +1 -58
- data/sample/gtk-demo/rotated_text.rb +119 -55
- data/sample/gtk-demo/shortcuts-boxes.ui +167 -0
- data/sample/gtk-demo/shortcuts-builder.ui +547 -0
- data/sample/gtk-demo/shortcuts-clocks.ui +166 -0
- data/sample/gtk-demo/shortcuts-gedit.ui +172 -0
- data/sample/gtk-demo/shortcuts.ui +65 -0
- data/sample/gtk-demo/stack.ui +5 -5
- data/sample/gtk-demo/textscroll.rb +106 -0
- data/sample/gtk-demo/theming.ui +58 -22
- data/sample/gtk-demo/theming_style_classes.rb +5 -4
- data/sample/gtk-demo/transparent.rb +143 -0
- data/sample/misc/aboutdialog.rb +1 -1
- data/sample/misc/bindings.rb +36 -15
- data/sample/misc/combobox.rb +1 -1
- data/sample/misc/dnd.rb +3 -3
- data/sample/misc/icons-theme-viewer.rb +1 -1
- data/sample/misc/iconview.rb +2 -2
- data/sample/misc/textbuffer-serialize.rb +18 -14
- data/sample/misc/to-drawable.rb +2 -2
- data/sample/misc/tooltips.rb +1 -0
- data/sample/misc/treeview.rb +1 -1
- data/sample/tutorial/README.md +18 -18
- data/test/test-gtk-clipboard.rb +1 -1
- data/test/test-gtk-combo-box.rb +2 -2
- data/test/test-gtk-icon-view.rb +2 -2
- data/test/test-gtk-image.rb +1 -1
- data/test/test-gtk-list-store.rb +9 -3
- data/test/test-gtk-text-view.rb +64 -0
- data/test/test-gtk-tree-path.rb +1 -3
- data/test/test-gtk-tree-view.rb +97 -0
- data/test/test-gtk-window.rb +2 -2
- data/test/test-pango-context.rb +56 -0
- metadata +46 -19
@@ -0,0 +1,29 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
|
4
|
+
<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='gtk3-demo-symbolic.svg' height='16.000015' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.5 r10040' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
|
5
|
+
<metadata id='metadata90'>
|
6
|
+
<rdf:RDF>
|
7
|
+
<cc:Work rdf:about=''>
|
8
|
+
<dc:format>image/svg+xml</dc:format>
|
9
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
10
|
+
<dc:title>Gnome Symbolic Icon Theme</dc:title>
|
11
|
+
</cc:Work>
|
12
|
+
</rdf:RDF>
|
13
|
+
</metadata>
|
14
|
+
<sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-12.5126' inkscape:cy='-0.73412416' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1375' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='27' inkscape:zoom='5.6568542'>
|
15
|
+
<inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-182.99998px' originy='-251.99998px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
|
16
|
+
</sodipodi:namedview>
|
17
|
+
<title id='title9167'>Gnome Symbolic Icon Theme</title>
|
18
|
+
<defs id='defs7386'>
|
19
|
+
<linearGradient id='linearGradient7212' osb:paint='solid'>
|
20
|
+
<stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
|
21
|
+
</linearGradient>
|
22
|
+
</defs>
|
23
|
+
<g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-424.00018,35)'>
|
24
|
+
|
25
|
+
<rect height='8.0000048' id='rect7866' style='opacity:0.3;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(0.83205029,0.5547002,0,1,0,0)' width='7.2111053' x='510.78668' y='-314.33347'/>
|
26
|
+
<rect height='8.0000086' id='rect7868' style='opacity:0.5;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' transform='matrix(-0.86824295,0.49613928,0,1,0,0)' width='8.0622425' x='-505.61908' y='219.8575'/>
|
27
|
+
<path inkscape:connector-curvature='0' d='m 431.53145,-28 -5.875,-3.65625 6.8125,-3.34375 6.03125,3 z' id='path7870' sodipodi:nodetypes='ccccc' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new'/>
|
28
|
+
</g>
|
29
|
+
</svg>
|
@@ -2,11 +2,13 @@
|
|
2
2
|
<gresources>
|
3
3
|
<gresource prefix="/ui">
|
4
4
|
<file preprocess="xml-stripblanks">main.ui</file>
|
5
|
+
<file preprocess="xml-stripblanks">appmenu.ui</file>
|
5
6
|
</gresource>
|
6
|
-
<gresource prefix="/
|
7
|
+
<!-- <gresource prefix="/application_demo">
|
8
|
+
<file>application.c</file>
|
7
9
|
<file>application.ui</file>
|
8
10
|
<file>menus.ui</file>
|
9
|
-
</gresource
|
11
|
+
</gresource>-->
|
10
12
|
<gresource prefix="/builder">
|
11
13
|
<file>demo.ui</file>
|
12
14
|
</gresource>
|
@@ -91,6 +93,13 @@
|
|
91
93
|
<gresource prefix="/stack">
|
92
94
|
<file>stack.ui</file>
|
93
95
|
</gresource>
|
96
|
+
<gresource prefix="/shortcuts">
|
97
|
+
<file>shortcuts.ui</file>
|
98
|
+
<file>shortcuts-builder.ui</file>
|
99
|
+
<file>shortcuts-gedit.ui</file>
|
100
|
+
<file>shortcuts-clocks.ui</file>
|
101
|
+
<file>shortcuts-boxes.ui</file>
|
102
|
+
</gresource>
|
94
103
|
<gresource prefix="/revealer">
|
95
104
|
<file>revealer.ui</file>
|
96
105
|
</gresource>
|
@@ -110,8 +119,8 @@
|
|
110
119
|
<file>gnu-keys.png</file>
|
111
120
|
</gresource>
|
112
121
|
<gresource prefix="/sources">
|
113
|
-
<!-- <file>
|
114
|
-
<file>assistant.rb</file>
|
122
|
+
<!-- <file>application_demo.rb</file>
|
123
|
+
<file>assistant.rb</file>
|
115
124
|
<file>builder.rb</file>
|
116
125
|
<file>button_box.rb</file>
|
117
126
|
<file>changedisplay.rb</file>
|
@@ -133,6 +142,7 @@
|
|
133
142
|
<file>expander.rb</file>
|
134
143
|
<file>filtermodel.rb</file>
|
135
144
|
<file>flowbox.rb</file>
|
145
|
+
<file>foreigndrawing.rb</file>
|
136
146
|
<file>font_features.rb</file>
|
137
147
|
<file>gestures.rb</file>
|
138
148
|
<file>glarea.rb</file>
|
@@ -163,6 +173,7 @@
|
|
163
173
|
<file>scale.rb</file>
|
164
174
|
<file>search_entry.rb</file>
|
165
175
|
<file>search_entry2.rb</file>
|
176
|
+
<file>shortcuts.rb</file>
|
166
177
|
<file>sizegroup.rb</file>
|
167
178
|
<file>sidebar.rb</file>
|
168
179
|
<file>stack.rb</file>
|
@@ -191,7 +202,7 @@
|
|
191
202
|
<file>glarea-fragment.glsl</file>
|
192
203
|
<file>glarea-vertex.glsl</file>
|
193
204
|
</gresource>
|
194
|
-
<gresource prefix="/
|
205
|
+
<gresource prefix="/font_features">
|
195
206
|
<file>font-features.ui</file>
|
196
207
|
</gresource>
|
197
208
|
<gresource prefix="/spinbutton">
|
data/sample/gtk-demo/demo.ui
CHANGED
@@ -78,6 +78,7 @@
|
|
78
78
|
<property name="visible">1</property>
|
79
79
|
<property name="label" translatable="yes">Save _As</property>
|
80
80
|
<property name="use-underline">1</property>
|
81
|
+
<accelerator key="s" modifiers="primary | shift-mask" signal="activate"/>
|
81
82
|
</object>
|
82
83
|
</child>
|
83
84
|
<child>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
=end
|
11
11
|
module FontFeaturesDemo
|
12
12
|
def self.run_demo(main_window)
|
13
|
-
builder = Gtk::Builder.new(:resource => "/
|
13
|
+
builder = Gtk::Builder.new(:resource => "/font_features/font-features.ui")
|
14
14
|
window = builder["window"]
|
15
15
|
label = builder["label"]
|
16
16
|
settings = builder["settings"]
|
data/sample/gtk-demo/main.rb
CHANGED
@@ -438,7 +438,7 @@ class Demo < Gtk::Application
|
|
438
438
|
def fontify(start_iter = @source_buffer.start_iter,
|
439
439
|
end_iter = @source_buffer.end_iter)
|
440
440
|
str = @source_buffer.get_text(start_iter, end_iter, true)
|
441
|
-
tokenizer =
|
441
|
+
tokenizer = RubyTokenizer.new
|
442
442
|
tokenizer.tokenize(str, start_iter.offset) do |tag, start, last|
|
443
443
|
@source_buffer.apply_tag(tag.to_s,
|
444
444
|
@source_buffer.get_iter_at(:offset => start),
|
@@ -446,7 +446,7 @@ class Demo < Gtk::Application
|
|
446
446
|
end
|
447
447
|
end
|
448
448
|
|
449
|
-
class
|
449
|
+
class RubyTokenizer
|
450
450
|
RESERVED_WORDS = %w(begin end module class def if then else
|
451
451
|
while unless do case when require yield)
|
452
452
|
RESERVED_WORDS_PATTERN = Regexp.compile(/(^|\s+)(#{RESERVED_WORDS.collect do |pat| Regexp.quote(pat) end.join("|")})(\s+|$)/)
|
data/sample/gtk-demo/main.ui
CHANGED
@@ -1,31 +1,12 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<interface>
|
3
3
|
<!-- interface-requires gtk+ 3.10 -->
|
4
|
-
<menu id="appmenu">
|
5
|
-
<section>
|
6
|
-
<item>
|
7
|
-
<attribute name="label" translatable="yes">About</attribute>
|
8
|
-
<attribute name="action">app.about</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
|
-
<attribute name="accel"><Primary>q</attribute>
|
16
|
-
</item>
|
17
|
-
</section>
|
18
|
-
</menu>
|
19
4
|
<object class="GtkTreeStore" id="treestore">
|
20
5
|
<columns>
|
21
|
-
<!-- column-name NAME
|
22
|
-
<column type="gchararray"/> -->
|
23
6
|
<!-- column-name TITLE -->
|
24
7
|
<column type="gchararray"/>
|
25
8
|
<!-- column-name FILENAME -->
|
26
9
|
<column type="gchararray"/>
|
27
|
-
<!-- column-name FUNC
|
28
|
-
<column type="gpointer"/> -->
|
29
10
|
<!-- column-name STYLE -->
|
30
11
|
<column type="gint"/>
|
31
12
|
</columns>
|
@@ -41,7 +22,7 @@
|
|
41
22
|
<property name="visible">1</property>
|
42
23
|
<property name="show-close-button">1</property>
|
43
24
|
<child>
|
44
|
-
<object class="GtkButton"
|
25
|
+
<object class="GtkButton">
|
45
26
|
<property name="visible">1</property>
|
46
27
|
<property name="valign">center</property>
|
47
28
|
<property name="can_focus">1</property>
|
@@ -50,7 +31,7 @@
|
|
50
31
|
<class name="text-button"/>
|
51
32
|
</style>
|
52
33
|
<child>
|
53
|
-
<object class="GtkLabel"
|
34
|
+
<object class="GtkLabel">
|
54
35
|
<property name="visible">1</property>
|
55
36
|
<property name="label" translatable="yes">Run</property>
|
56
37
|
</object>
|
@@ -60,21 +41,18 @@
|
|
60
41
|
</object>
|
61
42
|
</child>
|
62
43
|
<child>
|
63
|
-
<object class="GtkBox"
|
44
|
+
<object class="GtkBox">
|
64
45
|
<property name="visible">1</property>
|
65
46
|
<child>
|
66
47
|
<object class="GtkFrame">
|
67
48
|
<property name="visible">1</property>
|
68
49
|
<child>
|
69
|
-
<object class="GtkScrolledWindow"
|
50
|
+
<object class="GtkScrolledWindow">
|
70
51
|
<property name="width_request">120</property>
|
71
52
|
<property name="visible">1</property>
|
72
53
|
<property name="can_focus">1</property>
|
73
54
|
<property name="hscrollbar_policy">never</property>
|
74
55
|
<property name="min_content_width">150</property>
|
75
|
-
<style>
|
76
|
-
<class name="sidebar"/>
|
77
|
-
</style>
|
78
56
|
<child>
|
79
57
|
<object class="GtkTreeView" id="treeview">
|
80
58
|
<property name="visible">1</property>
|
@@ -87,15 +65,19 @@
|
|
87
65
|
</object>
|
88
66
|
</child>
|
89
67
|
<child>
|
90
|
-
<object class="GtkTreeViewColumn"
|
91
|
-
<property name="title" translatable="yes">column</property>
|
68
|
+
<object class="GtkTreeViewColumn">
|
92
69
|
<child>
|
93
|
-
<object class="GtkCellRendererText"
|
70
|
+
<object class="GtkCellRendererText"/>
|
94
71
|
<attributes>
|
95
72
|
<attribute name="style">2</attribute>
|
96
73
|
<attribute name="text">0</attribute>
|
97
74
|
</attributes>
|
98
75
|
</child>
|
76
|
+
<child>
|
77
|
+
<object class="GtkCellRendererText">
|
78
|
+
<property name="text"> </property>
|
79
|
+
</object>
|
80
|
+
</child>
|
99
81
|
</object>
|
100
82
|
</child>
|
101
83
|
</object>
|
@@ -112,7 +94,7 @@
|
|
112
94
|
<property name="enable_popup">1</property>
|
113
95
|
<property name="show_border">0</property>
|
114
96
|
<child>
|
115
|
-
<object class="GtkScrolledWindow"
|
97
|
+
<object class="GtkScrolledWindow">
|
116
98
|
<property name="visible">1</property>
|
117
99
|
<property name="can_focus">1</property>
|
118
100
|
<child>
|
@@ -121,8 +103,8 @@
|
|
121
103
|
<property name="can_focus">1</property>
|
122
104
|
<property name="left-margin">20</property>
|
123
105
|
<property name="right-margin">20</property>
|
124
|
-
|
125
|
-
<property name="bottom-margin">20</property
|
106
|
+
<property name="top-margin">20</property>
|
107
|
+
<property name="bottom-margin">20</property>
|
126
108
|
<property name="pixels_above_lines">2</property>
|
127
109
|
<property name="pixels_below_lines">2</property>
|
128
110
|
<property name="editable">0</property>
|
@@ -136,7 +118,7 @@
|
|
136
118
|
</packing>
|
137
119
|
</child>
|
138
120
|
<child type="tab">
|
139
|
-
<object class="GtkLabel"
|
121
|
+
<object class="GtkLabel">
|
140
122
|
<property name="visible">1</property>
|
141
123
|
<property name="label" translatable="yes">_Info</property>
|
142
124
|
<property name="use_underline">1</property>
|
@@ -156,8 +138,8 @@
|
|
156
138
|
<property name="can_focus">1</property>
|
157
139
|
<property name="left-margin">20</property>
|
158
140
|
<property name="right-margin">20</property>
|
159
|
-
|
160
|
-
<property name="bottom-margin">20</property>
|
141
|
+
<property name="top-margin">20</property>
|
142
|
+
<property name="bottom-margin">20</property>
|
161
143
|
<property name="editable">0</property>
|
162
144
|
<property name="cursor_visible">0</property>
|
163
145
|
</object>
|
@@ -169,7 +151,7 @@
|
|
169
151
|
</packing>
|
170
152
|
</child>
|
171
153
|
<child type="tab">
|
172
|
-
<object class="GtkLabel"
|
154
|
+
<object class="GtkLabel">
|
173
155
|
<property name="visible">1</property>
|
174
156
|
<property name="label" translatable="yes">Source</property>
|
175
157
|
</object>
|
data/sample/gtk-demo/markup.rb
CHANGED
@@ -17,25 +17,70 @@ module MarkupDemo
|
|
17
17
|
window.screen = main_window.screen
|
18
18
|
window.set_default_size(450, 450)
|
19
19
|
|
20
|
-
|
20
|
+
stack = Gtk::Stack.new
|
21
|
+
stack.show
|
22
|
+
window.add(stack)
|
23
|
+
|
24
|
+
show_source = Gtk::CheckButton.new("Source")
|
25
|
+
show_source.valign = :center
|
26
|
+
|
27
|
+
header = Gtk::HeaderBar.new
|
28
|
+
header.pack_start(show_source)
|
29
|
+
header.show_close_button = true
|
30
|
+
header.show_all
|
31
|
+
window.titlebar = header
|
32
|
+
|
33
|
+
window.title = "Markup"
|
21
34
|
|
22
35
|
view = Gtk::TextView.new
|
23
|
-
view.
|
24
|
-
view.
|
25
|
-
view.
|
36
|
+
view.wrap_mode = :word
|
37
|
+
view.left_margin = 10
|
38
|
+
view.right_margin = 10
|
26
39
|
|
27
40
|
sw = Gtk::ScrolledWindow.new(nil, nil)
|
28
|
-
sw.set_policy(:
|
41
|
+
sw.set_policy(:automatic, :automatic)
|
29
42
|
|
30
|
-
window.add(sw)
|
31
43
|
sw.add(view)
|
44
|
+
sw.show_all
|
45
|
+
|
46
|
+
stack.add_named(sw, "formatted")
|
47
|
+
|
48
|
+
view2 = Gtk::TextView.new
|
49
|
+
view2.wrap_mode = :word
|
50
|
+
view2.left_margin = 10
|
51
|
+
view2.right_margin = 10
|
52
|
+
|
53
|
+
sw = Gtk::ScrolledWindow.new(nil, nil)
|
54
|
+
sw.set_policy(:automatic, :automatic)
|
55
|
+
|
56
|
+
sw.add(view2)
|
57
|
+
sw.show_all
|
58
|
+
|
59
|
+
stack.add_named(sw, "source")
|
32
60
|
|
33
61
|
markup = Gio::Resources.lookup_data("/markup/markup.txt", 0)
|
34
|
-
|
62
|
+
|
63
|
+
show_source.signal_connect "toggled" do |button|
|
64
|
+
if button.active?
|
65
|
+
stack.visible_child_name = "source"
|
66
|
+
else
|
67
|
+
buffer = view2.buffer
|
68
|
+
markup = buffer.get_text(buffer.start_iter,
|
69
|
+
buffer.end_iter,
|
70
|
+
false)
|
71
|
+
buffer = view.buffer
|
72
|
+
buffer.insert_markup(buffer.start_iter, markup, -1)
|
73
|
+
stack.visible_child_name = "formatted"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
35
77
|
buffer = view.buffer
|
36
78
|
buffer.insert_markup(buffer.start_iter, markup, -1)
|
37
79
|
|
38
|
-
|
80
|
+
buffer = view2.buffer
|
81
|
+
buffer.insert(buffer.start_iter, markup)
|
82
|
+
|
83
|
+
stack.show
|
39
84
|
|
40
85
|
if !window.visible?
|
41
86
|
window.show_all
|
data/sample/gtk-demo/markup.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
|
2
2
|
Text sizes: <span size="xx-small">tiny</span> <span size="x-small">very small</span> <span size="small">small</span> <span size="medium">normal</span> <span size="large">large</span> <span size="x-large">very large</span> <span size="xx-large">huge</span>
|
3
3
|
|
4
|
-
Text <span color="gray">c<span color="green">o</span>l<span color="tomato">o</span>rs</span>
|
4
|
+
Text <span color="gray">c<span color="green">o</span>l<span color="tomato">o</span>rs</span> and <span background="pink">backgrounds</span>
|
5
5
|
|
6
|
-
Colorful <span underline="low" underline-color="blue"><span underline="double" underline-color="red">under</span>lines</span>
|
6
|
+
Colorful <span underline="low" underline-color="blue"><span underline="double" underline-color="red">under</span>lines</span> and <span background="pink"><span underline="error">mo</span><span underline="error" underline-color="green">re</span></span>
|
7
7
|
|
8
8
|
Colorful <span strikethrough="true" strikethrough-color="magenta">strikethroughs</span>
|
9
9
|
|
@@ -12,6 +12,15 @@
|
|
12
12
|
<key name='color' enum='org.gtk.Demo.Color'>
|
13
13
|
<default>'red'</default>
|
14
14
|
</key>
|
15
|
+
<key name='window-size' type='(ii)'>
|
16
|
+
<default>(-1, -1)</default>
|
17
|
+
</key>
|
18
|
+
<key name='maximized' type='b'>
|
19
|
+
<default>false</default>
|
20
|
+
</key>
|
21
|
+
<key name='fullscreen' type='b'>
|
22
|
+
<default>false</default>
|
23
|
+
</key>
|
15
24
|
</schema>
|
16
25
|
|
17
26
|
</schemalist>
|
data/sample/gtk-demo/pixbufs.rb
CHANGED
@@ -1,167 +1,127 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2016 Ruby-GNOME2 Project Team
|
2
2
|
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
3
|
#
|
4
|
-
# $Id: pixbufs.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
|
5
4
|
=begin
|
6
|
-
=
|
5
|
+
= Pixbufs
|
7
6
|
|
8
|
-
A
|
9
|
-
Pixbufs are normally used to load files from disk and perform
|
10
|
-
image scaling.
|
7
|
+
A GdkPixbuf represents an image, normally in RGB or RGBA format.
|
8
|
+
Pixbufs are normally used to load files from disk and perform
|
9
|
+
image scaling.
|
11
10
|
|
12
|
-
This demo is not all that educational, but looks cool. It was written
|
13
|
-
by Extreme Pixbuf Hacker Federico Mena Quintero. It also shows
|
14
|
-
off how to use
|
11
|
+
This demo is not all that educational, but looks cool. It was written
|
12
|
+
by Extreme Pixbuf Hacker Federico Mena Quintero. It also shows
|
13
|
+
off how to use GtkDrawingArea to do a simple animation.
|
15
14
|
|
16
|
-
Look at the Image demo for additional pixbuf usage examples.
|
15
|
+
Look at the Image demo for additional pixbuf usage examples.
|
17
16
|
=end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
"ruby-gnome2-logo.png",
|
37
|
-
]
|
38
|
-
|
39
|
-
CYCLE_LEN = 60
|
40
|
-
def initialize
|
41
|
-
super("Pixbufs")
|
42
|
-
set_resizable(false)
|
43
|
-
|
44
|
-
@background = nil
|
45
|
-
@frame = nil
|
46
|
-
@frame_num = 0
|
47
|
-
@images = []
|
48
|
-
|
49
|
-
begin
|
50
|
-
load_pixbufs
|
51
|
-
|
52
|
-
set_size_request(@background.width, @background.height)
|
53
|
-
|
54
|
-
@frame = Gdk::Pixbuf.new(Gdk::Pixbuf::COLORSPACE_RGB,
|
55
|
-
false, 8,
|
56
|
-
@background.width, @background.height)
|
57
|
-
|
58
|
-
@da = Gtk::DrawingArea.new
|
59
|
-
|
60
|
-
@da.signal_connect("draw") do |w, e|
|
61
|
-
draw_cb(w, e)
|
62
|
-
end
|
63
|
-
|
64
|
-
add(@da)
|
65
|
-
|
66
|
-
timeout_id = GLib::Timeout.add(FRAME_DELAY) do
|
67
|
-
timeout
|
68
|
-
end
|
69
|
-
signal_connect("destroy") do
|
70
|
-
GLib::Source.remove(timeout_id)
|
71
|
-
end
|
72
|
-
rescue
|
73
|
-
message = "Failed to load an image: #{$!.message}"
|
74
|
-
dialog = Gtk::MessageDialog.new(:parent => self,
|
75
|
-
:flags => :destroy_with_parent,
|
76
|
-
:type => :error,
|
77
|
-
:buttons_type => :close,
|
78
|
-
:message => message)
|
79
|
-
|
80
|
-
dialog.signal_connect("response") do
|
81
|
-
dialog.destroy
|
82
|
-
end
|
83
|
-
|
84
|
-
dialog.show
|
85
|
-
end
|
17
|
+
module PixbufsDemo
|
18
|
+
IMAGES_NAMES = %w(/pixbufs/apple-red.png /pixbufs/gnome-applets.png
|
19
|
+
/pixbufs/gnome-calendar.png /pixbufs/gnome-foot.png
|
20
|
+
/pixbufs/gnome-gmush.png /pixbufs/gnome-gimp.png
|
21
|
+
/pixbufs/gnome-gsame.png /pixbufs/gnu-keys.png)
|
22
|
+
N_IMAGES = IMAGES_NAMES.size
|
23
|
+
BACKGROUND_NAME = "/pixbufs/background.jpg"
|
24
|
+
CYCLE_TIME = 3_000_000
|
25
|
+
|
26
|
+
def self.run_demo(main_window)
|
27
|
+
window = Gtk::Window.new(:toplevel)
|
28
|
+
window.screen = main_window.screen
|
29
|
+
window.resizable = false
|
30
|
+
|
31
|
+
background_pixbuf = load_pixbuf(window, BACKGROUND_NAME)
|
32
|
+
other_pixbufs = []
|
33
|
+
IMAGES_NAMES.each do |img|
|
34
|
+
other_pixbufs << load_pixbuf(window, img)
|
86
35
|
end
|
87
36
|
|
88
|
-
|
89
|
-
|
37
|
+
width = background_pixbuf.width
|
38
|
+
height = background_pixbuf.height
|
39
|
+
window.set_size_request(width, height)
|
90
40
|
|
91
|
-
|
92
|
-
|
93
|
-
|
41
|
+
frame = GdkPixbuf::Pixbuf.new(:colorspace => :rgb,
|
42
|
+
:has_alpha => false,
|
43
|
+
:bits_per_sample => 8,
|
44
|
+
:width => width, :height => height)
|
94
45
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
46
|
+
da = Gtk::DrawingArea.new
|
47
|
+
da.signal_connect "draw" do |_widget, cr|
|
48
|
+
cr.set_source_pixbuf(frame, 0, 0)
|
49
|
+
cr.paint
|
50
|
+
true
|
51
|
+
end
|
52
|
+
window.add(da)
|
53
|
+
start_time = 0
|
54
|
+
da.add_tick_callback do |_widget, frame_clock|
|
55
|
+
background_pixbuf.copy_area(0, 0, width, height, frame, 0, 0)
|
56
|
+
start_time = frame_clock.frame_time if start_time == 0
|
57
|
+
current_time = frame_clock.frame_time
|
58
|
+
f = ((current_time - start_time) % CYCLE_TIME) / Float(CYCLE_TIME)
|
59
|
+
xmid = width / 2
|
60
|
+
ymid = height / 2
|
61
|
+
radius = [xmid, ymid].min / 2
|
62
|
+
N_IMAGES.times do |i|
|
63
|
+
ang = 2 * Math::PI * i / N_IMAGES - f * 2 * Math::PI
|
64
|
+
iw = other_pixbufs[i].width
|
65
|
+
ih = other_pixbufs[i].height
|
66
|
+
|
67
|
+
r = radius + (radius / 3) * Math.sin(f * 2 * Math::PI)
|
68
|
+
|
69
|
+
xpos = (xmid + r * Math.cos(ang) - iw / 2 + 0.5).floor
|
70
|
+
ypos = (ymid + r * Math.sin(ang) - ih / 2 + 0.5).floor
|
71
|
+
k = (i & 1) ? Math.sin(f * 2 * Math::PI) : Math.cos(f * 2 * Math::PI)
|
72
|
+
k = 2.0 * k * k
|
73
|
+
k = [0.25, k].max
|
74
|
+
|
75
|
+
r1 = Gdk::Rectangle.new(xpos, ypos, iw * k, iw * k)
|
76
|
+
r2 = Gdk::Rectangle.new(0, 0, width, height)
|
101
77
|
|
102
|
-
|
103
|
-
|
78
|
+
dest = r1.intersect(r2)
|
79
|
+
next unless dest
|
80
|
+
frame.composite!(other_pixbufs[i], dest.x, dest.y, dest.width,
|
81
|
+
dest.height, xpos, ypos, k, k,
|
82
|
+
:nearest,
|
83
|
+
if (i & 1) == 1
|
84
|
+
[
|
85
|
+
127, (255 * Math.sin(f * 2.0 * Math::PI)).abs
|
86
|
+
].max
|
87
|
+
else
|
88
|
+
[
|
89
|
+
127, (255 * Math.cos(f * 2.0 * Math::PI)).abs
|
90
|
+
].max
|
91
|
+
end)
|
104
92
|
|
105
|
-
@images[i] = Gdk::Pixbuf.new(filename)
|
106
93
|
end
|
94
|
+
da.queue_draw
|
95
|
+
GLib::Source::CONTINUE
|
107
96
|
end
|
108
97
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
98
|
+
if !window.visible?
|
99
|
+
window.show_all
|
100
|
+
else
|
101
|
+
window.destroy
|
113
102
|
end
|
103
|
+
window
|
104
|
+
end
|
114
105
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
radius = [xmid, ymid].min / 2.0
|
126
|
-
|
127
|
-
@images.each_with_index do |image, i|
|
128
|
-
ang = 2.0 * Math::PI * Float(i) / IMAGE_NAMES.length - f * 2.0 * Math::PI
|
129
|
-
|
130
|
-
r = radius + (radius / 3.0) * Math.sin(f * 2.0 * Math::PI)
|
131
|
-
|
132
|
-
xpos = (xmid + r * Math.cos(ang) - image.width / 2.0 + 0.5).floor
|
133
|
-
ypos = (ymid + r * Math.sin(ang) - image.height / 2.0 + 0.5).floor
|
134
|
-
|
135
|
-
k = if (i & 1) == 1
|
136
|
-
Math.sin(f * 2.0 * Math::PI)
|
137
|
-
else
|
138
|
-
Math.cos(f * 2.0 * Math::PI)
|
139
|
-
end
|
140
|
-
k = [0.25, 2.0 * k * k].max
|
141
|
-
|
142
|
-
r1 = Gdk::Rectangle.new(xpos, ypos, image.width * k, image.height * k)
|
143
|
-
r2 = Gdk::Rectangle.new(0, 0, @background.width, @background.height)
|
106
|
+
def self.show_message_dialog_on(window, error)
|
107
|
+
message = "Failed to load an image: #{error.message}"
|
108
|
+
dialog = Gtk::MessageDialog.new(:parent => window,
|
109
|
+
:flags => :destroy_with_parent,
|
110
|
+
:type => :error,
|
111
|
+
:buttons => :close,
|
112
|
+
:message => message)
|
113
|
+
dialog.signal_connect("response", &:destroy)
|
114
|
+
dialog.show
|
115
|
+
end
|
144
116
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
].max
|
154
|
-
else
|
155
|
-
[
|
156
|
-
127,
|
157
|
-
(255 * Math.cos(f * 2.0 * Math::PI)).abs,
|
158
|
-
].max
|
159
|
-
end)
|
160
|
-
end
|
161
|
-
end
|
162
|
-
@da.queue_draw
|
163
|
-
@frame_num += 1
|
164
|
-
true
|
117
|
+
def self.load_pixbuf(window, image_name)
|
118
|
+
begin
|
119
|
+
# Is it OK? should we implement gdk_pixbuf_new_from_resource instead?
|
120
|
+
#Gtk::Image.new(:resource => image_name).pixbuf
|
121
|
+
GdkPixbuf::Pixbuf.new(:resource => image_name)
|
122
|
+
rescue StandardError => e
|
123
|
+
show_message_dialog_on(window, e)
|
124
|
+
window.destroy
|
165
125
|
end
|
166
126
|
end
|
167
127
|
end
|