summaryrefslogtreecommitdiffabout
path: root/content/fireflix-panel.xul
authorMichael Krelin <hacker@klever.net>2006-10-01 23:53:31 (UTC)
committer Michael Krelin <hacker@klever.net>2006-10-01 23:53:31 (UTC)
commitb6a122d536aef024b69d40cdf2ac0332d7c14607 (patch) (unidiff)
tree5b6f01eb73f858e6caaf22301e23d7b6b996ffea /content/fireflix-panel.xul
parent455df70118b045c6053b33ae2f0318a70e4f96b8 (diff)
downloadfireflix-b6a122d536aef024b69d40cdf2ac0332d7c14607.zip
fireflix-b6a122d536aef024b69d40cdf2ac0332d7c14607.tar.gz
fireflix-b6a122d536aef024b69d40cdf2ac0332d7c14607.tar.bz2
paginating through search results
git-svn-id: http://svn.klever.net/kin/fireflix/trunk@179 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (limited to 'content/fireflix-panel.xul') (more/less context) (ignore whitespace changes)
-rw-r--r--content/fireflix-panel.xul13
1 files changed, 13 insertions, 0 deletions
diff --git a/content/fireflix-panel.xul b/content/fireflix-panel.xul
index 398dd78..bf6df73 100644
--- a/content/fireflix-panel.xul
+++ b/content/fireflix-panel.xul
@@ -1,274 +1,287 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 2<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
3<?xml-stylesheet href="fireflix.css" type="text/css"?> 3<?xml-stylesheet href="fireflix.css" type="text/css"?>
4<!DOCTYPE page SYSTEM "chrome://fireflix/locale/fireflix.dtd"> 4<!DOCTYPE page SYSTEM "chrome://fireflix/locale/fireflix.dtd">
5<page 5<page
6 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 6 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
7 id="fireflixwindow" title="Fireflix" 7 id="fireflixwindow" title="Fireflix"
8 onload="fireflix.init()" 8 onload="fireflix.init()"
9 orient="vertical" 9 orient="vertical"
10 ondragover="nsDragAndDrop.dragOver(event,fireflix.uploadObserver)" 10 ondragover="nsDragAndDrop.dragOver(event,fireflix.uploadObserver)"
11 ondragdrop="nsDragAndDrop.drop(event,fireflix.uploadObserver)" 11 ondragdrop="nsDragAndDrop.drop(event,fireflix.uploadObserver)"
12 > 12 >
13 13
14 <script src="chrome://global/content/nsDragAndDrop.js"/> 14 <script src="chrome://global/content/nsDragAndDrop.js"/>
15 <script src="chrome://global/content/nsTransferable.js"/> 15 <script src="chrome://global/content/nsTransferable.js"/>
16 <script type="application/x-javascript" src="md5.js" /> 16 <script type="application/x-javascript" src="md5.js" />
17 <script type="application/x-javascript" src="util.js" /> 17 <script type="application/x-javascript" src="util.js" />
18 <script type="application/x-javascript" src="flickr.js" /> 18 <script type="application/x-javascript" src="flickr.js" />
19 <script type="application/x-javascript" src="fireflix.js" /> 19 <script type="application/x-javascript" src="fireflix.js" />
20 20
21 <stringbundleset> 21 <stringbundleset>
22 <stringbundle id="loc_strings" src="chrome://fireflix/locale/fireflix.properties" /> 22 <stringbundle id="loc_strings" src="chrome://fireflix/locale/fireflix.properties" />
23 </stringbundleset> 23 </stringbundleset>
24 24
25 <commandset> 25 <commandset>
26 <command id="cmd_auth_auth" label="&panel.auth.auth.label;" 26 <command id="cmd_auth_auth" label="&panel.auth.auth.label;"
27 oncommand="fireflix.on_cmd_auth()"/> 27 oncommand="fireflix.on_cmd_auth()"/>
28 <command id="cmd_auth_done" label="&panel.auth.done.label;" 28 <command id="cmd_auth_done" label="&panel.auth.done.label;"
29 oncommand="fireflix.on_cmd_auth_done()" disabled="true"/> 29 oncommand="fireflix.on_cmd_auth_done()" disabled="true"/>
30 <command id="cmd_auth_open_flickr" label="&panel.auth.flickr.label;" 30 <command id="cmd_auth_open_flickr" label="&panel.auth.flickr.label;"
31 oncommand="fireflix.openTab('htp://www.flickr.com/')" /> 31 oncommand="fireflix.openTab('htp://www.flickr.com/')" />
32 <command id="cmd_auth_unauth" label="&panel.auth.unauth.label;" 32 <command id="cmd_auth_unauth" label="&panel.auth.unauth.label;"
33 oncommand="fireflix.on_cmd_auth_unauth()" /> 33 oncommand="fireflix.on_cmd_auth_unauth()" />
34 </commandset> 34 </commandset>
35 35
36 <popupset> 36 <popupset>
37 <popup id="auth_menu"> 37 <popup id="auth_menu">
38 <menuitem command="cmd_auth_auth"/> 38 <menuitem command="cmd_auth_auth"/>
39 <menuitem command="cmd_auth_done" hidden="true" id="menu_auth_done"/> 39 <menuitem command="cmd_auth_done" hidden="true" id="menu_auth_done"/>
40 <menuitem command="cmd_auth_unauth" /> 40 <menuitem command="cmd_auth_unauth" />
41 <menuseparator/> 41 <menuseparator/>
42 <menuitem command="cmd_auth_open_flickr"/> 42 <menuitem command="cmd_auth_open_flickr"/>
43 </popup> 43 </popup>
44 </popupset> 44 </popupset>
45 45
46 <commandset id="cmdset_search"> 46 <commandset id="cmdset_search">
47 <command id="cmd_search" label="&panel.search.cmd_search.label;" 47 <command id="cmd_search" label="&panel.search.cmd_search.label;"
48 oncommand="fireflix.foundphotos.search_photos()"/> 48 oncommand="fireflix.foundphotos.search_photos()"/>
49 <command id="cmd_search_open" label="&panel.search.cmd_search_open.label;" 49 <command id="cmd_search_open" label="&panel.search.cmd_search_open.label;"
50 oncommand="fireflix.foundphotos.on_cmd_open(event)" /> 50 oncommand="fireflix.foundphotos.on_cmd_open(event)" />
51 <command id="cmd_search_prev_page"
52 label="&panel.search.cmd_search_prev_page.label;"
53 oncommand="fireflix.foundphotos.on_cmd_prev(event)" disabled="true"/>
54 <command id="cmd_search_next_page"
55 label="&panel.search.cmd_search_next_page.label;"
56 oncommand="fireflix.foundphotos.on_cmd_next(event)" disabled="true"/>
51 </commandset> 57 </commandset>
52 58
53 <commandset id="cmdset_sets"> 59 <commandset id="cmdset_sets">
54 <command id="cmd_refresh_sets" label="&panel.sets.cmd_refresh_sets;" 60 <command id="cmd_refresh_sets" label="&panel.sets.cmd_refresh_sets;"
55 oncommand="fireflix.on_refresh_sets()" /> 61 oncommand="fireflix.on_refresh_sets()" />
56 <command id="cmd_set_props" label="&panel.sets.cmd_properties;" 62 <command id="cmd_set_props" label="&panel.sets.cmd_properties;"
57 oncommand="fireflix.on_set_props()" disabled="true" /> 63 oncommand="fireflix.on_set_props()" disabled="true" />
58 </commandset> 64 </commandset>
59 65
60 <popupset> 66 <popupset>
61 <popup id="sets_menu"> 67 <popup id="sets_menu">
62 <menuitem command="cmd_set_props"/> 68 <menuitem command="cmd_set_props"/>
63 <menuitem command="cmd_refresh_sets"/> 69 <menuitem command="cmd_refresh_sets"/>
64 <menuseparator/> 70 <menuseparator/>
65 <menu label="&panel.sets.generate_html;" id="sets_html_menu"/> 71 <menu label="&panel.sets.generate_html;" id="sets_html_menu"/>
66 </popup> 72 </popup>
67 </popupset> 73 </popupset>
68 74
69 <commandset id="cmdset_uploads"> 75 <commandset id="cmdset_uploads">
70 <command id="cmd_uploads_clear" label="&panel.uploads.clear.label;" 76 <command id="cmd_uploads_clear" label="&panel.uploads.clear.label;"
71 oncommand="fireflix.uploads.on_clear()" /> 77 oncommand="fireflix.uploads.on_clear()" />
72 <command id="cmd_uploads_upload" label="&panel.uploads.upload.label;" 78 <command id="cmd_uploads_upload" label="&panel.uploads.upload.label;"
73 oncommand="fireflix.uploads.on_upload()" /> 79 oncommand="fireflix.uploads.on_upload()" />
74 <command id="cmd_uploads_remove" label="&panel.uploads.remove.label;" 80 <command id="cmd_uploads_remove" label="&panel.uploads.remove.label;"
75 oncommand="fireflix.uploads.on_remove()" /> 81 oncommand="fireflix.uploads.on_remove()" />
76 <command id="cmd_uploads_add" label="&panel.uploads.add.label;" 82 <command id="cmd_uploads_add" label="&panel.uploads.add.label;"
77 oncommand="fireflix.uploads.on_add()" /> 83 oncommand="fireflix.uploads.on_add()" />
78 </commandset> 84 </commandset>
79 85
80 <popupset> 86 <popupset>
81 <popup id="uploads_menu"> 87 <popup id="uploads_menu">
82 <menuitem command="cmd_uploads_add"/> 88 <menuitem command="cmd_uploads_add"/>
83 <menuitem command="cmd_uploads_clear"/> 89 <menuitem command="cmd_uploads_clear"/>
84 <menuitem command="cmd_uploads_remove"/> 90 <menuitem command="cmd_uploads_remove"/>
85 <menuseparator/> 91 <menuseparator/>
86 <menuitem command="cmd_uploads_upload"/> 92 <menuitem command="cmd_uploads_upload"/>
87 <menuseparator/> 93 <menuseparator/>
88 <menu label="&panel.uploads.generate_html;" id="uploads_html_menu"/> 94 <menu label="&panel.uploads.generate_html;" id="uploads_html_menu"/>
89 </popup> 95 </popup>
90 </popupset> 96 </popupset>
91 97
92 <vbox class="wholething" flex="1"> 98 <vbox class="wholething" flex="1">
93 99
94 <groupbox context="auth_menu"> 100 <groupbox context="auth_menu">
95 <caption label="&panel.auth_info;"/> 101 <caption label="&panel.auth_info;"/>
96 <hbox> 102 <hbox>
97 <label id="auth_info" value="&panel.no_auth_info;" flex="1" disabled="true" crop="end"/> 103 <label id="auth_info" value="&panel.no_auth_info;" flex="1" disabled="true" crop="end"/>
98 <button id="b_auth" command="cmd_auth_auth"/> 104 <button id="b_auth" command="cmd_auth_auth"/>
99 <button id="b_auth_done" command="cmd_auth_done" hidden="true"/> 105 <button id="b_auth_done" command="cmd_auth_done" hidden="true"/>
100 <button command="cmd_auth_open_flickr" 106 <button command="cmd_auth_open_flickr"
101 tooltiptext="&panel.auth.flickr.tip;"/> 107 tooltiptext="&panel.auth.flickr.tip;"/>
102 </hbox> 108 </hbox>
103 </groupbox> 109 </groupbox>
104 110
105 <tabbox flex="1" id="fireflix_tabs"> 111 <tabbox flex="1" id="fireflix_tabs">
106 112
107 <tabs> 113 <tabs>
108 <tab label="&panel.tabs.search;"/> 114 <tab label="&panel.tabs.search;"/>
109 <tab label="&panel.tabs.sets;"/> 115 <tab label="&panel.tabs.sets;"/>
110 <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: --> 116 <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: -->
111 <tab id="tab_upload" label="&panel.tabs.upload;"/> 117 <tab id="tab_upload" label="&panel.tabs.upload;"/>
112 </tabs> 118 </tabs>
113 119
114 <tabpanels flex="1"> 120 <tabpanels flex="1">
115 121
116 <tabpanel id="tabpanel_search" flex="1"> 122 <tabpanel id="tabpanel_search" flex="1">
117 <vbox flex="1"> 123 <vbox flex="1">
118 <groupbox class="search_params" orient="vertical" onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.search_photos()"> 124 <groupbox class="search_params" orient="vertical" onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.search_photos()">
119 <hbox> 125 <hbox>
120 <label control="search_for" value="&panel.search.search_for.label;" 126 <label control="search_for" value="&panel.search.search_for.label;"
121 accesskey="s"/> 127 accesskey="s"/>
122 <textbox id="search_for" flex="1"/> 128 <textbox id="search_for" flex="1"/>
123 </hbox> 129 </hbox>
124 <hbox> 130 <hbox>
125 <checkbox id="search_tags" label="&panel.search.mode.tagsonly.label;" 131 <checkbox id="search_tags" label="&panel.search.mode.tagsonly.label;"
126 tooltiptext="&panel.search.mode.tagsonly.tip;" checked="false" 132 tooltiptext="&panel.search.mode.tagsonly.tip;" checked="false"
127 accesskey="t" /> 133 accesskey="t" />
128 <checkbox id="search_mine" label="&panel.search.mode.mine.label;" checked="true" accesskey="m"/> 134 <checkbox id="search_mine" label="&panel.search.mode.mine.label;" checked="true" accesskey="m"/>
129 <spacer flex="1"/> 135 <spacer flex="1"/>
130 <button command="cmd_search"/> 136 <button command="cmd_search"/>
131 </hbox> 137 </hbox>
132 </groupbox> 138 </groupbox>
139 <hbox>
140 <button command="cmd_search_prev_page"/>
141 <spacer flex="1"/>
142 <label id="search_page" hidden="true"/>
143 <spacer flex="1"/>
144 <button command="cmd_search_next_page"/>
145 </hbox>
133 <tree id="searchresults" rows="2" flex="1" 146 <tree id="searchresults" rows="2" flex="1"
134 onselect="fireflix.foundphotos.on_select()" 147 onselect="fireflix.foundphotos.on_select()"
135 ondblclick="fireflix.foundphotos.on_cmd_open(event)" 148 ondblclick="fireflix.foundphotos.on_cmd_open(event)"
136 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) 149 onkeypress="if(event.keyCode==event.DOM_VK_RETURN)
137 fireflix.foundphotos.on_cmd_open(event)"> 150 fireflix.foundphotos.on_cmd_open(event)">
138 <treecols> 151 <treecols>
139 <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" /> 152 <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" />
140 </treecols> 153 </treecols>
141 <treechildren/> 154 <treechildren/>
142 </tree> 155 </tree>
143 <groupbox id="searchresult_props" orient="horizontal" hidden="true"> 156 <groupbox id="searchresult_props" orient="horizontal" hidden="true">
144 <vbox width="100" pack="center"> 157 <vbox width="100" pack="center">
145 <hbox pack="center"> 158 <hbox pack="center">
146 <image id="search_photo"/> 159 <image id="search_photo"/>
147 </hbox> 160 </hbox>
148 </vbox> 161 </vbox>
149 <vbox flex="1"> 162 <vbox flex="1">
150 <label id="searchresult_title" crop="end"/> 163 <label id="searchresult_title" crop="end"/>
151 <hbox flex="1" pack="center"> 164 <hbox flex="1" pack="center">
152 <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/> 165 <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/>
153 </hbox> 166 </hbox>
154 <hbox pack="end"> 167 <hbox pack="end">
155 <button command="cmd_search_open"/> 168 <button command="cmd_search_open"/>
156 </hbox> 169 </hbox>
157 </vbox> 170 </vbox>
158 </groupbox> 171 </groupbox>
159 </vbox> 172 </vbox>
160 </tabpanel> 173 </tabpanel>
161 174
162 <tabpanel id="tabpanel_sets" flex="1" 175 <tabpanel id="tabpanel_sets" flex="1"
163 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) 176 onkeypress="if(event.keyCode==event.DOM_VK_RETURN)
164 document.getElementById('setphotos').focus()"> 177 document.getElementById('setphotos').focus()">
165 <vbox flex="1"> 178 <vbox flex="1">
166 <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" 179 <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()"
167 flex="1" context="sets_menu" 180 flex="1" context="sets_menu"
168 > 181 >
169 <treecols> 182 <treecols>
170 <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> 183 <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/>
171 <splitter class="tree-splitter" /> 184 <splitter class="tree-splitter" />
172 <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> 185 <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" />
173 </treecols> 186 </treecols>
174 <treechildren/> 187 <treechildren/>
175 </tree> 188 </tree>
176 <hbox> 189 <hbox>
177 <button command="cmd_refresh_sets" /> 190 <button command="cmd_refresh_sets" />
178 <button command="cmd_set_props" /> 191 <button command="cmd_set_props" />
179 </hbox> 192 </hbox>
180 <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" 193 <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()"
181 flex="1"> 194 flex="1">
182 <treecols> 195 <treecols>
183 <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" /> 196 <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" />
184 <splitter class="tree-splitter" /> 197 <splitter class="tree-splitter" />
185 <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" /> 198 <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" />
186 <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" /> 199 <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" />
187 </treecols> 200 </treecols>
188 <treechildren/> 201 <treechildren/>
189 </tree> 202 </tree>
190 <groupbox id="set_photo_props" orient="horizontal"> 203 <groupbox id="set_photo_props" orient="horizontal">
191 <vbox width="100" pack="center"> 204 <vbox width="100" pack="center">
192 <hbox pack="center"> 205 <hbox pack="center">
193 <image id="set_photo" hidden="true"/> 206 <image id="set_photo" hidden="true"/>
194 </hbox> 207 </hbox>
195 </vbox> 208 </vbox>
196 <spacer flex="1"/> 209 <spacer flex="1"/>
197 </groupbox> 210 </groupbox>
198 </vbox> 211 </vbox>
199 </tabpanel> 212 </tabpanel>
200 213
201 <tabpanel id="tabpanel_tags"> 214 <tabpanel id="tabpanel_tags">
202 <listbox id="tagslist" rows="8" flex="1"> 215 <listbox id="tagslist" rows="8" flex="1">
203 <listhead> 216 <listhead>
204 <listheader label="&panel.tagslist.tag.label;"/> 217 <listheader label="&panel.tagslist.tag.label;"/>
205 </listhead> 218 </listhead>
206 <listcols> 219 <listcols>
207 <listcol flex="1"/> 220 <listcol flex="1"/>
208 </listcols> 221 </listcols>
209 </listbox> 222 </listbox>
210 </tabpanel> 223 </tabpanel>
211 224
212 <tabpanel id="tabpanel_upload"> 225 <tabpanel id="tabpanel_upload">
213 <vbox flex="1"> 226 <vbox flex="1">
214 <tree id="uploadlist" rows="2" flex="1" 227 <tree id="uploadlist" rows="2" flex="1"
215 onselect="fireflix.uploads.selectionChanged()" 228 onselect="fireflix.uploads.selectionChanged()"
216 context="uploads_menu"> 229 context="uploads_menu">
217 <treecols> 230 <treecols>
218 <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/> 231 <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/>
219 <splitter class="tree-splitter" /> 232 <splitter class="tree-splitter" />
220 <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" /> 233 <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" />
221 <splitter class="tree-splitter" /> 234 <splitter class="tree-splitter" />
222 <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" /> 235 <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" />
223 </treecols> 236 </treecols>
224 <treechildren/> 237 <treechildren/>
225 </tree> 238 </tree>
226 <progressmeter id="upload_progress" mode="undetermined" hidden="true" /> 239 <progressmeter id="upload_progress" mode="undetermined" hidden="true" />
227 <groupbox id="upload_file_props" orient="horizontal" hidden="true"> 240 <groupbox id="upload_file_props" orient="horizontal" hidden="true">
228 <image id="upload_file_preview" width="100" height="100" /> 241 <image id="upload_file_preview" width="100" height="100" />
229 <grid flex="1"> 242 <grid flex="1">
230 <columns> 243 <columns>
231 <column/> 244 <column/>
232 <column flex="1"/> 245 <column flex="1"/>
233 </columns> 246 </columns>
234 <rows> 247 <rows>
235 <row> 248 <row>
236 <label control="upload_filename" 249 <label control="upload_filename"
237 value="&panel.upload_props.filename.label;" /> 250 value="&panel.upload_props.filename.label;" />
238 <textbox id="upload_filename" 251 <textbox id="upload_filename"
239 oninput="fireflix.uploads.propsToSel('filename')"/> 252 oninput="fireflix.uploads.propsToSel('filename')"/>
240 </row> 253 </row>
241 <row> 254 <row>
242 <label control="upload_title" value="&panel.upload_props.title.label;" /> 255 <label control="upload_title" value="&panel.upload_props.title.label;" />
243 <textbox id="upload_title" 256 <textbox id="upload_title"
244 oninput="fireflix.uploads.propsToSel('title')"/> 257 oninput="fireflix.uploads.propsToSel('title')"/>
245 </row> 258 </row>
246 <row> 259 <row>
247 <label control="uplod_tags" value="&panel.upload_props.tags.label;" /> 260 <label control="uplod_tags" value="&panel.upload_props.tags.label;" />
248 <textbox id="upload_tags" 261 <textbox id="upload_tags"
249 oninput="fireflix.uploads.propsToSel('tags')"/> 262 oninput="fireflix.uploads.propsToSel('tags')"/>
250 </row> 263 </row>
251 <!-- TODO: description, public, friend, family --> 264 <!-- TODO: description, public, friend, family -->
252 </rows> 265 </rows>
253 </grid> 266 </grid>
254 </groupbox> 267 </groupbox>
255 <hbox> 268 <hbox>
256 <button command="cmd_uploads_add" /> 269 <button command="cmd_uploads_add" />
257 <spacer flex="1"/> 270 <spacer flex="1"/>
258 <button command="cmd_uploads_remove" /> 271 <button command="cmd_uploads_remove" />
259 <spacer flex="1"/> 272 <spacer flex="1"/>
260 <button command="cmd_uploads_clear" /> 273 <button command="cmd_uploads_clear" />
261 </hbox> 274 </hbox>
262 <hbox pack="center"> 275 <hbox pack="center">
263 <button command="cmd_uploads_upload" flex="1"/> 276 <button command="cmd_uploads_upload" flex="1"/>
264 </hbox> 277 </hbox>
265 </vbox> 278 </vbox>
266 </tabpanel> 279 </tabpanel>
267 280
268 </tabpanels> 281 </tabpanels>
269 282
270 </tabbox> 283 </tabbox>
271 284
272 </vbox> 285 </vbox>
273 286
274</page> 287</page>