File: filtermenu.c

package info (click to toggle)
jmp 0.48-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,692 kB
  • ctags: 1,732
  • sloc: ansic: 13,985; sh: 8,611; makefile: 526; yacc: 318; java: 18
file content (64 lines) | stat: -rw-r--r-- 1,828 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <gtk/gtk.h>
#include <string.h>
#include <filtermenu.h>
#include <filter.h>
#include <cls.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <jmp-config.h>
#include <gtkutils.h>

static void set_filter_recursive (GtkObject *object) {
    char* str;
    GtkMenuItem* gmi = GTK_MENU_ITEM (object);
    GtkLabel* label = GTK_LABEL (GTK_BIN (gmi)->child);
    gtk_label_get(label, &str);
    filter_set_filter (FILTER_MATCH_RECURSIVE, str);
}

static void set_filter_class (GtkObject *object) {
    char* str;
    GtkMenuItem* gmi = GTK_MENU_ITEM (object);
    GtkLabel* label = GTK_LABEL (GTK_BIN (gmi)->child);
    gtk_label_get(label, &str);
    filter_set_filter (FILTER_MATCH_CLASS, str);
}

static void set_filter_no_filter (GtkObject *object) {
    filter_clear_filters ();
}

GtkWidget* build_filter_menu (cls* c) {
    GtkWidget* filters;
    char* i;

    /* Quick select of filter.... */
    filters = gtk_menu_new ();
    
    /* No filter. */
    add_menu_item (filters, _("No filter"), (GCallback)set_filter_no_filter);

    /* A recursive filter for each package type. */
    i = c->name;
    while ((i = strchr (i, '.'))) {
	*i = '\0';
	add_menu_item (filters, c->name, (GCallback)set_filter_recursive);
	*i = '.';
	i++;
    }
    
    /* And a filter for the selected class. */
    add_menu_item (filters, c->name, (GCallback)set_filter_class);
    
    gtk_widget_show_all (filters);
    return filters;
}

/* Emacs Local Variables: */
/* Emacs mode:C */
/* Emacs c-indentation-style:"gnu" */
/* Emacs c-hanging-braces-alist:((brace-list-open)(brace-entry-open)(defun-open after)(substatement-open after)(block-close . c-snug-do-while)(extern-lang-open after)) */
/* Emacs c-cleanup-list:(brace-else-brace brace-elseif-brace space-before-funcall) */
/* Emacs c-basic-offset:4 */
/* Emacs End: */