gtk3 3.0.8-x86-mingw32 → 3.0.9-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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
|