Partitally implemented search feature.
[mediadatabase.git] / gtk / search.c
blob63bcd268889becdc340088cf8b5d7f72d7efa928
1 /* -*- Mode: C ; c-basic-offset: 2 -*- */
2 /*****************************************************************************
4 * $Id: search.c,v 1.1 2004/08/31 22:40:15 nedko Exp $
6 * DESCRIPTION:
7 *
9 * NOTES:
12 *****************************************************************************/
14 #include <gtk/gtk.h>
16 #include "search.h"
18 enum
20 COL_ICON,
21 COL_NAME,
22 COL_PATH,
23 COL_SIZE,
24 COL_TIME,
25 COL_MEDIAID,
26 COL_MEDIAICON,
27 COL_MEDIANAME,
28 NUM_COLS
31 void
32 ShowSearchWindow()
34 GtkWidget *pSearchWindow;
35 GtkWidget *pFrame;
36 GtkWidget *pTableMain;
37 GtkWidget *pTableSearchParameters;
38 GtkWidget *pScrolledWindow;
39 GtkWidget *pChild;
40 GtkCellRenderer * pRendererText;
41 GtkCellRenderer * pRendererPixbuf;
42 GtkTreeViewColumn * pColumn;
43 GtkTreeStore *pTreeStore;
45 pSearchWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
47 gtk_window_set_role(GTK_WINDOW(pSearchWindow), "search");
49 gtk_window_set_title(GTK_WINDOW(pSearchWindow),
50 "Search");
52 pTableMain = gtk_table_new(2, 1, FALSE);
54 pFrame = gtk_frame_new(NULL);
56 gtk_table_attach(GTK_TABLE(pTableMain), pFrame, 0, 1, 0, 1,
57 GTK_FILL,
58 GTK_FILL,
60 5);
62 pTableSearchParameters = gtk_table_new(
63 5, /* rows */
64 3, /* columns */
65 FALSE); /* homogeneous */
67 gtk_container_add(
68 GTK_CONTAINER(pFrame),
69 pTableSearchParameters);
71 gtk_container_set_border_width(
72 GTK_CONTAINER(pTableSearchParameters),
73 5);
75 gtk_table_set_row_spacings(GTK_TABLE(pTableSearchParameters), 5);
76 gtk_table_set_col_spacings(GTK_TABLE(pTableSearchParameters), 5);
78 pChild = gtk_label_new("Filename");
79 gtk_table_attach(
80 GTK_TABLE(pTableSearchParameters),
81 pChild,
82 0, 1,
83 0, 1,
84 GTK_FILL,
85 GTK_FILL,
87 0);
89 pChild = gtk_entry_new();
90 gtk_table_attach_defaults(
91 GTK_TABLE(pTableSearchParameters),
92 pChild,
93 1, 2,
94 0, 1);
96 pChild = gtk_label_new("Path");
97 gtk_table_attach(
98 GTK_TABLE(pTableSearchParameters),
99 pChild,
100 0, 1,
101 1, 2,
102 GTK_FILL,
103 GTK_FILL,
107 pChild = gtk_entry_new();
108 gtk_table_attach_defaults(
109 GTK_TABLE(pTableSearchParameters),
110 pChild,
111 1, 2,
112 1, 2);
114 pChild = gtk_label_new("Min size");
115 gtk_table_attach(
116 GTK_TABLE(pTableSearchParameters),
117 pChild,
118 0, 1,
119 2, 3,
120 GTK_FILL,
121 GTK_FILL,
125 pChild = gtk_entry_new();
126 gtk_table_attach_defaults(
127 GTK_TABLE(pTableSearchParameters),
128 pChild,
129 1, 2,
130 2, 3);
132 pChild = gtk_label_new("Max size");
133 gtk_table_attach(
134 GTK_TABLE(pTableSearchParameters),
135 pChild,
136 0, 1,
137 3, 4,
138 GTK_FILL,
139 GTK_FILL,
143 pChild = gtk_entry_new();
144 gtk_table_attach_defaults(
145 GTK_TABLE(pTableSearchParameters),
146 pChild,
147 1, 2,
148 3, 4);
150 pChild = gtk_button_new_from_stock(GTK_STOCK_FIND);
151 gtk_table_attach(
152 GTK_TABLE(pTableSearchParameters),
153 GTK_WIDGET(pChild),
154 0, 3,
155 4, 5,
156 GTK_FILL,
157 GTK_FILL,
161 /* Tree view creation */
162 pChild = gtk_tree_view_new();
163 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(pChild), TRUE);
164 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(pChild), TRUE);
166 pRendererText = gtk_cell_renderer_text_new();
167 pRendererPixbuf = gtk_cell_renderer_pixbuf_new();
169 /* --- Column #1 --- */
171 pColumn = gtk_tree_view_column_new();
172 gtk_tree_view_column_set_title(pColumn, "Name");
174 gtk_tree_view_column_pack_start(pColumn, pRendererPixbuf, FALSE);
175 gtk_tree_view_column_set_attributes(pColumn, pRendererPixbuf,
176 "pixbuf", COL_ICON,
177 NULL);
179 gtk_tree_view_column_pack_start(pColumn, pRendererText, TRUE);
180 gtk_tree_view_column_set_attributes(pColumn,
181 pRendererText,
182 "text", COL_NAME,
183 NULL);
185 gtk_tree_view_append_column(
186 GTK_TREE_VIEW(pChild),
187 pColumn);
189 /* --- Column #2 --- */
191 pColumn = gtk_tree_view_column_new_with_attributes(
192 "Size",
193 pRendererText,
194 "text", COL_SIZE,
195 NULL);
197 gtk_tree_view_append_column(
198 GTK_TREE_VIEW(pChild),
199 pColumn);
201 /* --- Column #3 --- */
203 pColumn = gtk_tree_view_column_new_with_attributes(
204 "Time",
205 pRendererText,
206 "text", COL_TIME,
207 NULL);
209 gtk_tree_view_append_column(
210 GTK_TREE_VIEW(pChild),
211 pColumn);
213 /* --- Column #4 --- */
215 pColumn = gtk_tree_view_column_new_with_attributes(
216 "MediaID",
217 pRendererText,
218 "text", COL_MEDIAID,
219 NULL);
221 gtk_tree_view_append_column(
222 GTK_TREE_VIEW(pChild),
223 pColumn);
225 /* --- Column #5 --- */
227 pColumn = gtk_tree_view_column_new();
229 gtk_tree_view_column_set_title(
230 pColumn,
231 "MediaName");
233 gtk_tree_view_column_pack_start(
234 pColumn,
235 pRendererPixbuf,
236 FALSE);
238 gtk_tree_view_column_set_attributes(
239 pColumn,
240 pRendererPixbuf,
241 "pixbuf",
242 COL_MEDIAICON,
243 NULL);
245 gtk_tree_view_column_pack_end(
246 pColumn,
247 pRendererText,
248 TRUE);
250 gtk_tree_view_column_set_attributes(
251 pColumn,
252 pRendererText,
253 "text", COL_MEDIANAME,
254 NULL);
256 gtk_tree_view_append_column(
257 GTK_TREE_VIEW(pChild),
258 pColumn);
260 /* Create the store */
261 pTreeStore = gtk_tree_store_new(
262 NUM_COLS,
263 GDK_TYPE_PIXBUF, /* COL_ICON */
264 G_TYPE_STRING, /* COL_NAME */
265 G_TYPE_STRING, /* COL_PATH */
266 G_TYPE_STRING, /* COL_SIZE */
267 G_TYPE_STRING, /* COL_TIME */
268 G_TYPE_UINT, /* COL_MEDIAID */
269 GDK_TYPE_PIXBUF, /* COL_MEDIAICON */
270 G_TYPE_STRING); /* COL_MEDIANAME */
272 /* Create a new scrolled window, with scrollbars only if needed */
274 pScrolledWindow = gtk_scrolled_window_new(NULL, NULL);
276 gtk_scrolled_window_set_policy(
277 GTK_SCROLLED_WINDOW(pScrolledWindow),
278 GTK_POLICY_AUTOMATIC,
279 GTK_POLICY_AUTOMATIC);
281 gtk_container_add(
282 GTK_CONTAINER(pScrolledWindow),
283 pChild);
285 gtk_table_attach(GTK_TABLE(pTableMain), pScrolledWindow, 0, 1, 1, 2,
286 GTK_FILL|GTK_EXPAND,
287 GTK_FILL|GTK_EXPAND,
291 /* Set model */
292 gtk_tree_view_set_model(GTK_TREE_VIEW(pChild), GTK_TREE_MODEL(pTreeStore));
294 /* Add main table to top window */
295 gtk_container_add(GTK_CONTAINER(pSearchWindow), pTableMain);
297 gtk_window_set_default_size(GTK_WINDOW(pSearchWindow), 600, 400);
299 gtk_widget_show_all(pSearchWindow);
302 /*****************************************************************************
304 * Modifications log:
306 * !!! WARNING !!! Following lines are automatically updated by the CVS system.
308 * $Log: search.c,v $
309 * Revision 1.1 2004/08/31 22:40:15 nedko
310 * Partitally implemented search feature.
312 *****************************************************************************/