~ubuntu-branches/ubuntu/trusty/gq/trusty

« back to all changes in this revision

Viewing changes to src/filter.c

  • Committer: Bazaar Package Importer
  • Author(s): Barry deFreese
  • Date: 2009-10-25 23:34:56 UTC
  • mfrom: (1.1.4 upstream) (3.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20091025233456-i794n3yg2cff930j
Tags: 1.3.4-1
* QA upload.
  + Set maintainer to Debian QA Group <packages@qa.debian.org>.
* New upstream release. (Closes: #534705).
  + Does not segfault on amd64. (Closes: #444312).
  + Remove all existing patches and change patch system to quilt.
  + Replace dpatch build-dep with quilt.
* 01_desktop_file.diff - Remove encoding and bogus categories 
  from desktop file.
* Copy in config.{sub,guess} on configure, rm them on clean.
  + Add build-dep on autotools-dev.
* Make clean not ignore errors.
* Add copyright holders and version path to GPL (GPL-2).
* Update watch file to use SF redirector. (Closes: #449749).
* Bump debhelper build-dep and compat to 5.
* Bump Standards Version to 3.8.3.
  + Menu policy transition.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23
23
*/
24
24
 
25
 
/* $Id: filter.c 975 2006-09-07 18:44:41Z herzi $ */
 
25
#include "filter.h"
26
26
 
27
27
#ifdef HAVE_CONFIG_H
28
28
# include <config.h>
42
42
#include <gtk/gtk.h>
43
43
 
44
44
#include "common.h"
 
45
#include "configfile.h"
 
46
#include "debug.h"
 
47
#include "errorchain.h"
 
48
#include "gq-input-form.h"
45
49
#include "gq-server-list.h"
46
50
#include "gq-tab-search.h"
47
 
#include "util.h"
48
 
#include "configfile.h"
 
51
#include "gq-utilities.h"
 
52
#include "gq-window.h"
49
53
#include "search.h"
50
 
#include "mainwin.h"
51
 
#include "filter.h"
52
 
#include "errorchain.h"
53
 
#include "debug.h"
54
 
#include "input.h"
55
54
#include "state.h"
56
55
 
57
56
static void copy_existing_filter(GtkCList *filter_clist);
58
57
static void name_popup(void);
59
58
static void filterlist_row_selected(GtkCList *filter_clist,
60
59
                                    int row, int column,
61
 
                                    GdkEventButton *event, gpointer data);
62
 
static void filterlist_row_unselected(GtkCList *filter_clist,
63
 
                                      int row, int column,
64
 
                                      GdkEventButton *event, gpointer data);
 
60
                                    GdkEventButton *event);
 
61
static void filterlist_row_unselected(GtkCList *filter_clist);
65
62
static void remove_from_filtermenu(struct gq_filter *filter);
66
63
static void delete_filter(GtkWidget *widget, GtkCList *filter_clist);
67
64
static void edit_filter(GtkCList *filter_clist, int is_new_filter, 
126
123
void add_filter(GtkWidget *filternamebox)
127
124
{
128
125
     GtkWidget *focusbox, *button;
129
 
     GtkWidget *server_combo, *searchbase_combo;
130
126
     GList *filterlist;
131
127
     struct gq_filter *filter;
132
128
     GqServer *server;
133
129
     GqTab *tab;
134
 
     char *filterstring, *searchstring, *servername, *searchbase, msg[192];
 
130
        char *filterstring, *searchstring, msg[192];
135
131
     const char *filtername;
136
132
 
137
133
     /* find current tab */
138
134
     tab = mainwin_get_current_tab(mainwin.mainbook);
139
135
 
140
136
     /* ignore if it's not a search mode tab */
141
 
     if(tab->type != SEARCH_MODE)
 
137
     if(!GQ_IS_TAB_SEARCH(tab))
142
138
          return;
143
139
 
144
 
     server_combo = GQ_TAB_SEARCH(tab)->serverlist_combo;
145
 
     servername = gtk_editable_get_chars(GTK_EDITABLE(GTK_COMBO(server_combo)->entry), 0, -1);
146
 
     if( (server = gq_server_list_get_by_name(gq_server_list_get(), servername)) == NULL) {
147
 
          g_free(servername);
148
 
          return;
149
 
     }
 
140
        server = gq_tab_search_get_server(GQ_TAB_SEARCH(tab));
 
141
        g_return_if_fail(GQ_IS_SERVER(server));
150
142
 
151
143
     focusbox = tab->focus;
152
144
     searchstring = gtk_editable_get_chars(GTK_EDITABLE(focusbox), 0, -1);
157
149
          return;
158
150
     }
159
151
 
160
 
     filterstring = make_filter(server, searchstring);
 
152
     filterstring = make_filter(server, searchstring, gq_tab_search_get_mode(GQ_TAB_SEARCH(tab)));
161
153
     g_free(searchstring);
162
154
 
163
155
     if(filternamebox == NULL) {
195
187
          /* check state of Remember... button, and get servername/basedn if active */
196
188
          button = gtk_object_get_data(GTK_OBJECT(filternamebox), "saveserver");
197
189
          if(GTK_TOGGLE_BUTTON(button)->active) {
198
 
               searchbase_combo = GQ_TAB_SEARCH(tab)->searchbase_combo;
199
 
               searchbase = gtk_editable_get_chars(GTK_EDITABLE(GTK_COMBO(searchbase_combo)->entry), 0, -1);
200
 
 
201
190
               g_free(filter->servername);
202
 
               filter->servername = servername;
 
191
               filter->servername = g_strdup(gq_server_get_name(server));
203
192
 
204
193
               g_free(filter->basedn);
205
 
               filter->basedn = searchbase;
 
194
               filter->basedn = g_strdup(gq_tab_search_get_base_dn(GQ_TAB_SEARCH(tab)));
206
195
          }
207
196
 
208
197
          /* and add it in */
274
263
     gtk_widget_show(hbox0);
275
264
     gtk_box_pack_start(GTK_BOX(vbox2), hbox0, TRUE, TRUE, 0);
276
265
 
277
 
     button = gtk_button_new_from_stock(GTK_STOCK_OK);
 
266
     button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
278
267
 
279
268
     g_signal_connect_swapped(button, "clicked",
280
269
                               G_CALLBACK(add_filter),
281
270
                               GTK_OBJECT(filternamebox));
282
271
 
283
 
     gtk_box_pack_start(GTK_BOX(hbox0), button, FALSE, FALSE, 0);
 
272
     gtk_box_pack_end(GTK_BOX(hbox0), button, FALSE, FALSE, 0);
284
273
     GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
285
274
     GTK_WIDGET_SET_FLAGS(button, GTK_RECEIVES_DEFAULT);
286
275
     gtk_widget_grab_default(button);
303
292
}
304
293
 
305
294
 
306
 
void filter_selected(struct gq_filter *filter)
 
295
void
 
296
filter_selected(struct gq_filter *filter)
307
297
{
308
 
     GtkWidget *focusbox, *server_combo, *searchbase_combo;
 
298
     GtkWidget *focusbox;
309
299
     GqTab *tab;
310
300
 
311
301
     /* find current tab */
313
303
 
314
304
     /* we're in luck if the current tab is a Search tab: just use this one */
315
305
 
316
 
     /* if the current tab isn't a Search tab, find the last used on  */
317
 
     if(tab->type != SEARCH_MODE) {
318
 
          tab = get_last_of_mode(SEARCH_MODE);
319
 
          go_to_page(tab);
320
 
     }
 
306
        /* if the current tab isn't a Search tab, find the last used on  */
 
307
        if(!GQ_IS_TAB_SEARCH(tab)) {
 
308
                tab = gq_window_get_last_tab(&mainwin, GQ_TYPE_TAB_SEARCH);
 
309
                go_to_page(tab);
 
310
        }
321
311
 
322
312
     /* no search-tab - cannot use filter */
323
313
     if (tab == NULL) {
333
323
 
334
324
     /* set server combo to this filter's server */
335
325
     if(filter->servername[0]) {
336
 
          server_combo = GQ_TAB_SEARCH(tab)->serverlist_combo;
337
 
          gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(server_combo)->entry),
338
 
                             filter->servername);
 
326
                gq_tab_search_set_server(GQ_TAB_SEARCH(tab),
 
327
                                         gq_server_list_get_by_name(gq_server_list_get(),
 
328
                                                                    filter->servername));
339
329
     }
340
330
 
341
331
     /* set searchbase combo to this filter's base DN */
342
332
     if(filter->basedn[0]) {
343
 
          searchbase_combo = GQ_TAB_SEARCH(tab)->searchbase_combo;
344
 
          gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(searchbase_combo)->entry),
345
 
                             filter->basedn);
 
333
                gq_tab_search_set_base_dn(GQ_TAB_SEARCH(tab),
 
334
                                          filter->basedn);
346
335
     }
347
336
 
348
337
     /* uhhh, what a hack */
447
436
     gtk_widget_show(hbox2);
448
437
     gtk_box_pack_start(GTK_BOX(vbox1), hbox2, FALSE, FALSE, 5);
449
438
 
450
 
     ok_button = gtk_button_new_from_stock(GTK_STOCK_OK);
 
439
     ok_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
451
440
 
452
441
     gtk_widget_show(ok_button);
453
 
     gtk_box_pack_start(GTK_BOX(hbox2), ok_button, FALSE, FALSE, 0);
 
442
     gtk_box_pack_end(GTK_BOX(hbox2), ok_button, FALSE, FALSE, 0);
454
443
     GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
455
444
     GTK_WIDGET_SET_FLAGS(ok_button, GTK_RECEIVES_DEFAULT);
456
445
     gtk_widget_grab_default(ok_button);
476
465
}
477
466
 
478
467
 
479
 
static void filterlist_row_selected(GtkCList *filter_clist,
480
 
                                    int row, int column,
481
 
                                    GdkEventButton *event, gpointer data)
 
468
static void
 
469
filterlist_row_selected(GtkCList      * filter_clist,
 
470
                        int             row,
 
471
                        int             column G_GNUC_UNUSED,
 
472
                        GdkEventButton* event)
482
473
{
483
474
     struct gq_filter *filter;
484
475
 
501
492
}
502
493
 
503
494
 
504
 
static void filterlist_row_unselected(GtkCList *filter_clist,
505
 
                                      int row, int column,
506
 
                                      GdkEventButton *event, gpointer data)
 
495
static void
 
496
filterlist_row_unselected(GtkCList* filter_clist)
507
497
{
508
 
 
509
 
     gtk_object_set_data(GTK_OBJECT(filter_clist), "selected_row", GINT_TO_POINTER(-1));
510
 
 
 
498
        gtk_object_set_data(GTK_OBJECT(filter_clist), "selected_row", GINT_TO_POINTER(-1));
511
499
}
512
500
 
513
501
 
721
709
     gtk_widget_show(hbox2);
722
710
     gtk_box_pack_start(GTK_BOX(vbox1), hbox2, FALSE, FALSE, 0);
723
711
 
724
 
     save = gtk_button_new_from_stock(GTK_STOCK_SAVE);
 
712
     save = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
725
713
 
726
714
     g_signal_connect_swapped(save, "clicked",
727
715
                               G_CALLBACK(save_filter), GTK_OBJECT(window));
732
720
     gtk_widget_show(save);
733
721
 
734
722
     cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
735
 
 
736
723
     GTK_WIDGET_UNSET_FLAGS(cancel, GTK_CAN_FOCUS);
737
724
     gtk_box_pack_end(GTK_BOX(hbox2), cancel, FALSE, FALSE, 0);
738
725
     g_signal_connect_swapped(cancel, "clicked",