gtk3 3.0.8 → 3.0.9
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/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 +44 -17
@@ -0,0 +1,166 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.17 -->
|
4
|
+
|
5
|
+
<object class="GtkShortcutsWindow" id="shortcuts-clocks">
|
6
|
+
<property name="modal">1</property>
|
7
|
+
<child>
|
8
|
+
<object class="GtkShortcutsSection">
|
9
|
+
<property name="visible">1</property>
|
10
|
+
<property name="section-name">shortcuts</property>
|
11
|
+
<property name="max-height">10</property>
|
12
|
+
<child>
|
13
|
+
<object class="GtkShortcutsGroup">
|
14
|
+
<property name="visible">1</property>
|
15
|
+
<property name="title" translatable="yes">General</property>
|
16
|
+
<child>
|
17
|
+
<object class="GtkShortcutsShortcut">
|
18
|
+
<property name="visible">1</property>
|
19
|
+
<property name="accelerator"><ctrl>Page_Down</property>
|
20
|
+
<property name="title" translatable="yes">Go to the next section</property>
|
21
|
+
</object>
|
22
|
+
</child>
|
23
|
+
<child>
|
24
|
+
<object class="GtkShortcutsShortcut">
|
25
|
+
<property name="visible">1</property>
|
26
|
+
<property name="accelerator"><ctrl>Page_Up</property>
|
27
|
+
<property name="title" translatable="yes">Go to the previous section</property>
|
28
|
+
</object>
|
29
|
+
</child>
|
30
|
+
<child>
|
31
|
+
<object class="GtkShortcutsShortcut">
|
32
|
+
<property name="visible">1</property>
|
33
|
+
<property name="accelerator"><alt>Q</property>
|
34
|
+
<property name="title" translatable="yes">Quit</property>
|
35
|
+
</object>
|
36
|
+
</child>
|
37
|
+
<child>
|
38
|
+
<object class="GtkShortcutsShortcut">
|
39
|
+
<property name="visible">1</property>
|
40
|
+
<property name="accelerator"><alt>Right</property>
|
41
|
+
<property name="direction">ltr</property>
|
42
|
+
<property name="title" translatable="yes">Forward</property>
|
43
|
+
</object>
|
44
|
+
</child>
|
45
|
+
<child>
|
46
|
+
<object class="GtkShortcutsShortcut">
|
47
|
+
<property name="visible">1</property>
|
48
|
+
<property name="accelerator"><ctrl>Left</property>
|
49
|
+
<property name="direction">ltr</property>
|
50
|
+
<property name="title" translatable="yes">Back</property>
|
51
|
+
</object>
|
52
|
+
</child>
|
53
|
+
<child>
|
54
|
+
<object class="GtkShortcutsShortcut">
|
55
|
+
<property name="visible">1</property>
|
56
|
+
<property name="accelerator"><alt>Left</property>
|
57
|
+
<property name="direction">rtl</property>
|
58
|
+
<property name="title" translatable="yes">Forward</property>
|
59
|
+
</object>
|
60
|
+
</child>
|
61
|
+
<child>
|
62
|
+
<object class="GtkShortcutsShortcut">
|
63
|
+
<property name="visible">1</property>
|
64
|
+
<property name="accelerator"><ctrl>Right</property>
|
65
|
+
<property name="direction">rtl</property>
|
66
|
+
<property name="title" translatable="yes">Back</property>
|
67
|
+
</object>
|
68
|
+
</child>
|
69
|
+
</object>
|
70
|
+
</child>
|
71
|
+
<child>
|
72
|
+
<object class="GtkShortcutsGroup">
|
73
|
+
<property name="visible">1</property>
|
74
|
+
<property name="view">world</property>
|
75
|
+
<property name="title" translatable="yes">World Clocks</property>
|
76
|
+
<child>
|
77
|
+
<object class="GtkShortcutsShortcut">
|
78
|
+
<property name="visible">1</property>
|
79
|
+
<property name="accelerator"><ctrl>N</property>
|
80
|
+
<property name="title" translatable="yes">Add a world clock</property>
|
81
|
+
</object>
|
82
|
+
</child>
|
83
|
+
<child>
|
84
|
+
<object class="GtkShortcutsShortcut">
|
85
|
+
<property name="visible">1</property>
|
86
|
+
<property name="accelerator"><ctrl>S</property>
|
87
|
+
<property name="title" translatable="yes">Select world clocks</property>
|
88
|
+
</object>
|
89
|
+
</child>
|
90
|
+
</object>
|
91
|
+
</child>
|
92
|
+
<child>
|
93
|
+
<object class="GtkShortcutsGroup">
|
94
|
+
<property name="visible">1</property>
|
95
|
+
<property name="view">alarm</property>
|
96
|
+
<property name="title" translatable="yes">Alarm</property>
|
97
|
+
<child>
|
98
|
+
<object class="GtkShortcutsShortcut">
|
99
|
+
<property name="visible">1</property>
|
100
|
+
<property name="accelerator"><ctrl>N</property>
|
101
|
+
<property name="title" translatable="yes">Add an alarm</property>
|
102
|
+
</object>
|
103
|
+
</child>
|
104
|
+
<child>
|
105
|
+
<object class="GtkShortcutsShortcut">
|
106
|
+
<property name="visible">1</property>
|
107
|
+
<property name="accelerator"><ctrl>S</property>
|
108
|
+
<property name="title" translatable="yes">Select alarms</property>
|
109
|
+
</object>
|
110
|
+
</child>
|
111
|
+
</object>
|
112
|
+
</child>
|
113
|
+
<child>
|
114
|
+
<object class="GtkShortcutsGroup">
|
115
|
+
<property name="visible">1</property>
|
116
|
+
<property name="view">stopwatch</property>
|
117
|
+
<property name="title" translatable="yes">Stopwatch</property>
|
118
|
+
<child>
|
119
|
+
<object class="GtkShortcutsShortcut">
|
120
|
+
<property name="visible">1</property>
|
121
|
+
<property name="accelerator">Return space</property>
|
122
|
+
<property name="title" translatable="yes">Start / Stop / Continue</property>
|
123
|
+
</object>
|
124
|
+
</child>
|
125
|
+
<child>
|
126
|
+
<object class="GtkShortcutsShortcut">
|
127
|
+
<property name="visible">1</property>
|
128
|
+
<property name="accelerator">L</property>
|
129
|
+
<property name="title" translatable="yes">Lap</property>
|
130
|
+
</object>
|
131
|
+
</child>
|
132
|
+
<child>
|
133
|
+
<object class="GtkShortcutsShortcut">
|
134
|
+
<property name="visible">1</property>
|
135
|
+
<property name="accelerator">Delete</property>
|
136
|
+
<property name="title" translatable="yes">Reset</property>
|
137
|
+
</object>
|
138
|
+
</child>
|
139
|
+
</object>
|
140
|
+
</child>
|
141
|
+
<child>
|
142
|
+
<object class="GtkShortcutsGroup">
|
143
|
+
<property name="visible">1</property>
|
144
|
+
<property name="view">timer</property>
|
145
|
+
<property name="title" translatable="yes">Timer</property>
|
146
|
+
<child>
|
147
|
+
<object class="GtkShortcutsShortcut">
|
148
|
+
<property name="visible">1</property>
|
149
|
+
<property name="accelerator">Return space</property>
|
150
|
+
<property name="title" translatable="yes">Start / Stop / Pause</property>
|
151
|
+
</object>
|
152
|
+
</child>
|
153
|
+
<child>
|
154
|
+
<object class="GtkShortcutsShortcut">
|
155
|
+
<property name="visible">1</property>
|
156
|
+
<property name="accelerator">Delete</property>
|
157
|
+
<property name="title" translatable="yes">Reset</property>
|
158
|
+
</object>
|
159
|
+
</child>
|
160
|
+
</object>
|
161
|
+
</child>
|
162
|
+
</object>
|
163
|
+
</child>
|
164
|
+
</object>
|
165
|
+
|
166
|
+
</interface>
|
@@ -0,0 +1,172 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.17 -->
|
4
|
+
|
5
|
+
<object class="GtkShortcutsWindow" id="shortcuts-gedit">
|
6
|
+
<property name="modal">1</property>
|
7
|
+
<child>
|
8
|
+
<object class="GtkShortcutsSection">
|
9
|
+
<property name="visible">1</property>
|
10
|
+
<property name="section-name">shortcuts</property>
|
11
|
+
<property name="max-height">12</property>
|
12
|
+
<child>
|
13
|
+
<object class="GtkShortcutsGroup">
|
14
|
+
<property name="visible">1</property>
|
15
|
+
<property name="title" translatable="yes">Touchpad gestures</property>
|
16
|
+
<child>
|
17
|
+
<object class="GtkShortcutsShortcut">
|
18
|
+
<property name="visible">1</property>
|
19
|
+
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
|
20
|
+
<property name="title" translatable="yes">Switch to the next document</property>
|
21
|
+
</object>
|
22
|
+
</child>
|
23
|
+
<child>
|
24
|
+
<object class="GtkShortcutsShortcut">
|
25
|
+
<property name="visible">1</property>
|
26
|
+
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
|
27
|
+
<property name="title" translatable="yes">Switch to the previous document</property>
|
28
|
+
</object>
|
29
|
+
</child>
|
30
|
+
</object>
|
31
|
+
</child>
|
32
|
+
<child>
|
33
|
+
<object class="GtkShortcutsGroup">
|
34
|
+
<property name="visible">1</property>
|
35
|
+
<property name="title" translatable="yes">Documents</property>
|
36
|
+
<child>
|
37
|
+
<object class="GtkShortcutsShortcut">
|
38
|
+
<property name="visible">1</property>
|
39
|
+
<property name="accelerator"><ctrl>N</property>
|
40
|
+
<property name="title" translatable="yes">Create new document</property>
|
41
|
+
</object>
|
42
|
+
</child>
|
43
|
+
<child>
|
44
|
+
<object class="GtkShortcutsShortcut">
|
45
|
+
<property name="visible">1</property>
|
46
|
+
<property name="accelerator"><ctrl>O</property>
|
47
|
+
<property name="title" translatable="yes">Open a document</property>
|
48
|
+
</object>
|
49
|
+
</child>
|
50
|
+
<child>
|
51
|
+
<object class="GtkShortcutsShortcut">
|
52
|
+
<property name="visible">1</property>
|
53
|
+
<property name="accelerator"><ctrl>S</property>
|
54
|
+
<property name="title" translatable="yes">Save the document</property>
|
55
|
+
</object>
|
56
|
+
</child>
|
57
|
+
<child>
|
58
|
+
<object class="GtkShortcutsShortcut">
|
59
|
+
<property name="visible">1</property>
|
60
|
+
<property name="accelerator"><ctrl>W</property>
|
61
|
+
<property name="title" translatable="yes">Close the document</property>
|
62
|
+
</object>
|
63
|
+
</child>
|
64
|
+
<child>
|
65
|
+
<object class="GtkShortcutsShortcut">
|
66
|
+
<property name="visible">1</property>
|
67
|
+
<property name="accelerator"><ctrl><Alt>Page_Down</property>
|
68
|
+
<property name="title" translatable="yes">Switch to the next document</property>
|
69
|
+
</object>
|
70
|
+
</child>
|
71
|
+
<child>
|
72
|
+
<object class="GtkShortcutsShortcut">
|
73
|
+
<property name="visible">1</property>
|
74
|
+
<property name="accelerator"><ctrl><Alt>Page_Up</property>
|
75
|
+
<property name="title" translatable="yes">Switch to the previous document</property>
|
76
|
+
</object>
|
77
|
+
</child>
|
78
|
+
</object>
|
79
|
+
</child>
|
80
|
+
<child>
|
81
|
+
<object class="GtkShortcutsGroup">
|
82
|
+
<property name="visible">1</property>
|
83
|
+
<property name="title" translatable="yes">Find and Replace</property>
|
84
|
+
<child>
|
85
|
+
<object class="GtkShortcutsShortcut">
|
86
|
+
<property name="visible">1</property>
|
87
|
+
<property name="accelerator"><ctrl>F</property>
|
88
|
+
<property name="title" translatable="yes">Find</property>
|
89
|
+
</object>
|
90
|
+
</child>
|
91
|
+
<child>
|
92
|
+
<object class="GtkShortcutsShortcut">
|
93
|
+
<property name="visible">1</property>
|
94
|
+
<property name="accelerator"><ctrl>G</property>
|
95
|
+
<property name="title" translatable="yes">Find the next match</property>
|
96
|
+
</object>
|
97
|
+
</child>
|
98
|
+
<child>
|
99
|
+
<object class="GtkShortcutsShortcut">
|
100
|
+
<property name="visible">1</property>
|
101
|
+
<property name="accelerator"><ctrl><Shift>G</property>
|
102
|
+
<property name="title" translatable="yes">Find the previous match</property>
|
103
|
+
</object>
|
104
|
+
</child>
|
105
|
+
<child>
|
106
|
+
<object class="GtkShortcutsShortcut">
|
107
|
+
<property name="visible">1</property>
|
108
|
+
<property name="accelerator"><ctrl>H</property>
|
109
|
+
<property name="title" translatable="yes">Find and Replace</property>
|
110
|
+
</object>
|
111
|
+
</child>
|
112
|
+
<child>
|
113
|
+
<object class="GtkShortcutsShortcut">
|
114
|
+
<property name="visible">1</property>
|
115
|
+
<property name="accelerator"><ctrl><Shift>K</property>
|
116
|
+
<property name="title" translatable="yes">Clear highlight</property>
|
117
|
+
</object>
|
118
|
+
</child>
|
119
|
+
<child>
|
120
|
+
<object class="GtkShortcutsShortcut">
|
121
|
+
<property name="visible">1</property>
|
122
|
+
<property name="accelerator"><ctrl>I</property>
|
123
|
+
<property name="title" translatable="yes">Go to line</property>
|
124
|
+
</object>
|
125
|
+
</child>
|
126
|
+
</object>
|
127
|
+
</child>
|
128
|
+
<child>
|
129
|
+
<object class="GtkShortcutsGroup">
|
130
|
+
<property name="visible">1</property>
|
131
|
+
<property name="title" translatable="yes">Tools</property>
|
132
|
+
<child>
|
133
|
+
<object class="GtkShortcutsShortcut">
|
134
|
+
<property name="visible">1</property>
|
135
|
+
<property name="accelerator"><shift>F7</property>
|
136
|
+
<property name="title" translatable="yes">Check spelling</property>
|
137
|
+
</object>
|
138
|
+
</child>
|
139
|
+
</object>
|
140
|
+
</child>
|
141
|
+
<child>
|
142
|
+
<object class="GtkShortcutsGroup">
|
143
|
+
<property name="visible">1</property>
|
144
|
+
<property name="title" translatable="yes">Miscellaneous</property>
|
145
|
+
<child>
|
146
|
+
<object class="GtkShortcutsShortcut">
|
147
|
+
<property name="visible">1</property>
|
148
|
+
<property name="accelerator">F11</property>
|
149
|
+
<property name="title" translatable="yes">Fullscreen on / off</property>
|
150
|
+
</object>
|
151
|
+
</child>
|
152
|
+
<child>
|
153
|
+
<object class="GtkShortcutsShortcut">
|
154
|
+
<property name="visible">1</property>
|
155
|
+
<property name="accelerator"><ctrl>P</property>
|
156
|
+
<property name="title" translatable="yes">Print the document</property>
|
157
|
+
</object>
|
158
|
+
</child>
|
159
|
+
<child>
|
160
|
+
<object class="GtkShortcutsShortcut">
|
161
|
+
<property name="visible">1</property>
|
162
|
+
<property name="accelerator">Insert</property>
|
163
|
+
<property name="title" translatable="yes">Toggle insert / overwrite</property>
|
164
|
+
</object>
|
165
|
+
</child>
|
166
|
+
</object>
|
167
|
+
</child>
|
168
|
+
</object>
|
169
|
+
</child>
|
170
|
+
</object>
|
171
|
+
|
172
|
+
</interface>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<!-- interface-requires gtk+ 3.17 -->
|
4
|
+
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="title" translatable="yes">Shortcuts</property>
|
7
|
+
<child>
|
8
|
+
<object class="GtkBox">
|
9
|
+
<property name="visible">1</property>
|
10
|
+
<property name="orientation">vertical</property>
|
11
|
+
<property name="margin">50</property>
|
12
|
+
<property name="spacing">10</property>
|
13
|
+
<child>
|
14
|
+
<object class="GtkButton">
|
15
|
+
<property name="visible">1</property>
|
16
|
+
<property name="label">Builder</property>
|
17
|
+
<signal name="clicked" handler="builder_shortcuts" swapped="1" object="window1"/>
|
18
|
+
</object>
|
19
|
+
</child>
|
20
|
+
<child>
|
21
|
+
<object class="GtkButton">
|
22
|
+
<property name="visible">1</property>
|
23
|
+
<property name="label">GEdit</property>
|
24
|
+
<signal name="clicked" handler="gedit_shortcuts" swapped="1" object="window1"/>
|
25
|
+
</object>
|
26
|
+
</child>
|
27
|
+
<child>
|
28
|
+
<object class="GtkButton">
|
29
|
+
<property name="visible">1</property>
|
30
|
+
<property name="label">Clocks - All</property>
|
31
|
+
<signal name="clicked" handler="clocks_shortcuts" swapped="1" object="window1"/>
|
32
|
+
</object>
|
33
|
+
</child>
|
34
|
+
<child>
|
35
|
+
<object class="GtkButton">
|
36
|
+
<property name="visible">1</property>
|
37
|
+
<property name="label">Clocks - Stopwatch</property>
|
38
|
+
<signal name="clicked" handler="clocks_shortcuts_stopwatch" swapped="1" object="window1"/>
|
39
|
+
</object>
|
40
|
+
</child>
|
41
|
+
<child>
|
42
|
+
<object class="GtkButton">
|
43
|
+
<property name="visible">1</property>
|
44
|
+
<property name="label">Boxes</property>
|
45
|
+
<signal name="clicked" handler="boxes_shortcuts" swapped="1" object="window1"/>
|
46
|
+
</object>
|
47
|
+
</child>
|
48
|
+
<child>
|
49
|
+
<object class="GtkButton">
|
50
|
+
<property name="visible">1</property>
|
51
|
+
<property name="label">Boxes - Wizard</property>
|
52
|
+
<signal name="clicked" handler="boxes_shortcuts_wizard" swapped="1" object="window1"/>
|
53
|
+
</object>
|
54
|
+
</child>
|
55
|
+
<child>
|
56
|
+
<object class="GtkButton">
|
57
|
+
<property name="visible">1</property>
|
58
|
+
<property name="label">Boxes - Display</property>
|
59
|
+
<signal name="clicked" handler="boxes_shortcuts_display" swapped="1" object="window1"/>
|
60
|
+
</object>
|
61
|
+
</child>
|
62
|
+
</object>
|
63
|
+
</child>
|
64
|
+
</object>
|
65
|
+
</interface>
|
data/sample/gtk-demo/stack.ui
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
<object class="GtkWindow" id="window1">
|
5
5
|
<property name="title" translatable="yes">Stack</property>
|
6
6
|
<child>
|
7
|
-
<object class="GtkGrid"
|
7
|
+
<object class="GtkGrid">
|
8
8
|
<property name="visible">1</property>
|
9
9
|
<child>
|
10
|
-
<object class="GtkStackSwitcher"
|
10
|
+
<object class="GtkStackSwitcher">
|
11
11
|
<property name="visible">1</property>
|
12
12
|
<property name="stack">stack</property>
|
13
13
|
<property name="halign">center</property>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
<property name="can_focus">1</property>
|
24
24
|
<property name="transition-type">crossfade</property>
|
25
25
|
<child>
|
26
|
-
<object class="GtkImage"
|
26
|
+
<object class="GtkImage">
|
27
27
|
<property name="visible">1</property>
|
28
28
|
<property name="margin-top">20</property>
|
29
29
|
<property name="margin-bottom">20</property>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
</packing>
|
36
36
|
</child>
|
37
37
|
<child>
|
38
|
-
<object class="GtkCheckButton"
|
38
|
+
<object class="GtkCheckButton">
|
39
39
|
<property name="label" translatable="yes">Page 2</property>
|
40
40
|
<property name="visible">1</property>
|
41
41
|
<property name="can_focus">1</property>
|
@@ -49,7 +49,7 @@
|
|
49
49
|
</packing>
|
50
50
|
</child>
|
51
51
|
<child>
|
52
|
-
<object class="GtkSpinner"
|
52
|
+
<object class="GtkSpinner">
|
53
53
|
<property name="visible">1</property>
|
54
54
|
<property name="halign">center</property>
|
55
55
|
<property name="valign">center</property>
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# Copyright (c) 2016 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Text View/Automatic Scrolling
|
6
|
+
|
7
|
+
This example demonstrates how to use the gravity of
|
8
|
+
GtkTextMarks to keep a text view scrolled to the bottom
|
9
|
+
while appending text.
|
10
|
+
=end
|
11
|
+
module TextscrollDemo
|
12
|
+
def self.run_demo(main_window)
|
13
|
+
window = Gtk::Window.new(:toplevel)
|
14
|
+
window.screen = main_window.screen
|
15
|
+
|
16
|
+
window.set_default_size(600, 400)
|
17
|
+
|
18
|
+
hbox = Gtk::Box.new(:horizontal, 6)
|
19
|
+
hbox.homogeneous = true
|
20
|
+
window.add(hbox)
|
21
|
+
|
22
|
+
create_text_view(hbox, true)
|
23
|
+
create_text_view(hbox, false)
|
24
|
+
|
25
|
+
if !window.visible?
|
26
|
+
window.show_all
|
27
|
+
else
|
28
|
+
window.destroy
|
29
|
+
end
|
30
|
+
window
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.create_text_view(hbox, to_end)
|
34
|
+
swindow = Gtk::ScrolledWindow.new
|
35
|
+
hbox.pack_start(swindow, :fill => true, :expand => true, :padding => 0)
|
36
|
+
textview = Gtk::TextView.new
|
37
|
+
swindow.add(textview)
|
38
|
+
timeout = setup_scroll(textview, to_end)
|
39
|
+
textview.signal_connect("destroy") { GLib::Source.remove(timeout) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.setup_scroll(textview, to_end)
|
43
|
+
buffer = textview.buffer
|
44
|
+
end_iter = buffer.end_iter
|
45
|
+
count = 0
|
46
|
+
if to_end
|
47
|
+
# If we want to scroll to the end, including horizontal scrolling,
|
48
|
+
# then we just create a mark with right gravity at the end of the
|
49
|
+
# buffer. It will stay at the end unless explicitly moved with
|
50
|
+
# gtk_text_buffer_move_mark.
|
51
|
+
buffer.create_mark("end", end_iter, false)
|
52
|
+
|
53
|
+
# add scrolling timeout
|
54
|
+
return GLib::Timeout.add(50) do # scroll to end
|
55
|
+
count += 1
|
56
|
+
# Get "end" mark. It's located at the end of buffer because
|
57
|
+
# of right gravity
|
58
|
+
mark = buffer.get_mark("end")
|
59
|
+
mark_iter = buffer.get_iter_at(:mark => mark)
|
60
|
+
# and insert some text at its position, the iter will be
|
61
|
+
# revalidated after insertion to point to the end of inserted text
|
62
|
+
buffer.insert(mark_iter, "\n")
|
63
|
+
buffer.insert(mark_iter, " " * count)
|
64
|
+
buffer.insert(mark_iter, "Scroll to end scroll to end scroll" +
|
65
|
+
" to end scroll to end #{count}")
|
66
|
+
# Now scroll the end mark onscreen.
|
67
|
+
textview.scroll_mark_onscreen(mark)
|
68
|
+
|
69
|
+
# Emulate typewriter behavior, shift to the left if we
|
70
|
+
# are far enough to the right.
|
71
|
+
count = 0 if count > 150
|
72
|
+
GLib::Source::CONTINUE
|
73
|
+
end
|
74
|
+
else
|
75
|
+
# If we want to scroll to the bottom, but not scroll horizontally,
|
76
|
+
# then an end mark won't do the job. Just create a mark so we can
|
77
|
+
# use it with gtk_text_view_scroll_mark_onscreen, we'll position it
|
78
|
+
# explicitly when needed. Use left gravity so the mark stays where
|
79
|
+
# we put it after inserting new text.
|
80
|
+
buffer.create_mark("scroll", end_iter, true)
|
81
|
+
return GLib::Timeout.add(100) do # scroll to bottom
|
82
|
+
count += 1
|
83
|
+
# Get end iterator
|
84
|
+
end_iter = buffer.end_iter
|
85
|
+
# and insert some text at it, the iter will be revalidated
|
86
|
+
# after insertion to point to the end of inserted text
|
87
|
+
buffer.insert(end_iter, "\n")
|
88
|
+
buffer.insert(end_iter, " " * count)
|
89
|
+
buffer.insert(end_iter,"Scroll to bottom scroll to bottom scroll" +
|
90
|
+
" to bottom scroll to bottom #{count}")
|
91
|
+
# Move the iterator to the beginning of line, so we don't scroll
|
92
|
+
# in horizontal direction
|
93
|
+
end_iter.line_offset = 0
|
94
|
+
# and place the mark at iter. the mark will stay there after we
|
95
|
+
# insert some text at the end because it has left gravity.
|
96
|
+
mark = buffer.get_mark("scroll")
|
97
|
+
buffer.move_mark(mark, end_iter)
|
98
|
+
# Scroll the mark onscreen.
|
99
|
+
textview.scroll_mark_onscreen(mark)
|
100
|
+
# Shift text back if we got enough to the right.
|
101
|
+
count = 0 if count > 40
|
102
|
+
GLib::Source::CONTINUE
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|