~ubuntu-branches/ubuntu/hardy/gnome-commander/hardy

« back to all changes in this revision

Viewing changes to src/gnome-cmd-patternsel-dialog.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Vogt
  • Date: 2006-06-13 15:39:48 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060613153948-gvrt3mb2ddk5u62o
Tags: 1.2.0-3
added --disable-scrollkeeper on build

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
    GNOME Commander - A GNOME based file manager 
 
2
    GNOME Commander - A GNOME based file manager
3
3
    Copyright (C) 2001-2006 Marcus Bjurman
4
4
 
5
5
    This program is free software; you can redistribute it and/or modify
15
15
    You should have received a copy of the GNU General Public License
16
16
    along with this program; if not, write to the Free Software
17
17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
 
*/ 
 
18
*/
 
19
 
19
20
#include <config.h>
20
21
#include "gnome-cmd-includes.h"
21
22
#include "gnome-cmd-data.h"
25
26
 
26
27
struct _GnomeCmdPatternselDialogPrivate
27
28
{
28
 
        GnomeCmdFileList *fl;
29
 
 
30
 
        GtkWidget *case_check;
31
 
        GtkWidget *pattern_combo;
32
 
        GtkWidget *pattern_entry;
33
 
 
34
 
        gboolean mode;
 
29
    GnomeCmdFileList *fl;
 
30
 
 
31
    GtkWidget *case_check;
 
32
    GtkWidget *pattern_combo;
 
33
    GtkWidget *pattern_entry;
 
34
 
 
35
    gboolean mode;
35
36
};
36
37
 
37
38
 
38
39
static GnomeCmdDialogClass *parent_class = NULL;
39
40
 
40
41
 
41
 
 
42
42
static void
43
43
on_ok (GtkButton *button, GnomeCmdPatternselDialog *dialog)
44
44
{
45
 
        const gchar *s;
46
 
        gboolean case_sens;
47
 
        SearchDefaults *defaults = gnome_cmd_data_get_search_defaults ();
48
 
        
49
 
        g_return_if_fail (GNOME_CMD_IS_PATTERNSEL_DIALOG (dialog));
50
 
 
51
 
        s = gtk_entry_get_text (GTK_ENTRY (dialog->priv->pattern_entry));
52
 
        case_sens = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->case_check));
53
 
        
54
 
        if (dialog->priv->mode)
55
 
                gnome_cmd_file_list_select_pattern (dialog->priv->fl, s, case_sens);
56
 
        else
57
 
                gnome_cmd_file_list_unselect_pattern (dialog->priv->fl, s, case_sens);
58
 
 
59
 
        defaults->name_patterns = string_history_add (
60
 
                defaults->name_patterns, s, PATTERN_HISTORY_SIZE);
61
 
        
62
 
        gtk_widget_hide (GTK_WIDGET (dialog));
 
45
    const gchar *s;
 
46
    gboolean case_sens;
 
47
    SearchDefaults *defaults = gnome_cmd_data_get_search_defaults ();
 
48
 
 
49
    g_return_if_fail (GNOME_CMD_IS_PATTERNSEL_DIALOG (dialog));
 
50
 
 
51
    s = gtk_entry_get_text (GTK_ENTRY (dialog->priv->pattern_entry));
 
52
    case_sens = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->case_check));
 
53
 
 
54
    if (dialog->priv->mode)
 
55
        gnome_cmd_file_list_select_pattern (dialog->priv->fl, s, case_sens);
 
56
    else
 
57
        gnome_cmd_file_list_unselect_pattern (dialog->priv->fl, s, case_sens);
 
58
 
 
59
    defaults->name_patterns = string_history_add (defaults->name_patterns, s, PATTERN_HISTORY_SIZE);
 
60
 
 
61
    gtk_widget_hide (GTK_WIDGET (dialog));
63
62
}
64
63
 
65
64
 
66
65
static void
67
66
on_cancel (GtkButton *button, GnomeCmdPatternselDialog *dialog)
68
67
{
69
 
        gtk_widget_hide (GTK_WIDGET (dialog));
 
68
    gtk_widget_hide (GTK_WIDGET (dialog));
70
69
}
71
70
 
72
71
 
77
76
static void
78
77
destroy (GtkObject *object)
79
78
{
80
 
        GnomeCmdPatternselDialog *dialog = GNOME_CMD_PATTERNSEL_DIALOG (object);
81
 
 
82
 
        g_free (dialog->priv);
83
 
        
84
 
        if (GTK_OBJECT_CLASS (parent_class)->destroy)
85
 
                (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
 
79
    GnomeCmdPatternselDialog *dialog = GNOME_CMD_PATTERNSEL_DIALOG (object);
 
80
 
 
81
    g_free (dialog->priv);
 
82
 
 
83
    if (GTK_OBJECT_CLASS (parent_class)->destroy)
 
84
        (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
86
85
}
87
86
 
88
87
 
89
88
static void
90
89
map (GtkWidget *widget)
91
90
{
92
 
        if (GTK_WIDGET_CLASS (parent_class)->map != NULL)
93
 
                GTK_WIDGET_CLASS (parent_class)->map (widget);
 
91
    if (GTK_WIDGET_CLASS (parent_class)->map != NULL)
 
92
        GTK_WIDGET_CLASS (parent_class)->map (widget);
94
93
}
95
94
 
96
95
 
97
96
static void
98
97
class_init (GnomeCmdPatternselDialogClass *class)
99
98
{
100
 
        GtkObjectClass *object_class;
101
 
        GtkWidgetClass *widget_class;
102
 
 
103
 
        object_class = GTK_OBJECT_CLASS (class);
104
 
        widget_class = GTK_WIDGET_CLASS (class);
105
 
 
106
 
        parent_class = gtk_type_class (gnome_cmd_dialog_get_type ());
107
 
        object_class->destroy = destroy;
108
 
        widget_class->map = map;
 
99
    GtkObjectClass *object_class = GTK_OBJECT_CLASS (class);
 
100
    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
 
101
 
 
102
    parent_class = gtk_type_class (gnome_cmd_dialog_get_type ());
 
103
    object_class->destroy = destroy;
 
104
    widget_class->map = map;
109
105
}
110
106
 
111
107
 
112
108
static void
113
109
init (GnomeCmdPatternselDialog *dialog)
114
110
{
115
 
        dialog->priv = g_new (GnomeCmdPatternselDialogPrivate, 1);
 
111
    dialog->priv = g_new (GnomeCmdPatternselDialogPrivate, 1);
116
112
}
117
113
 
118
114
 
119
 
 
120
 
 
121
115
/***********************************
122
116
 * Public functions
123
117
 ***********************************/
125
119
GtkWidget*
126
120
gnome_cmd_patternsel_dialog_new (GnomeCmdFileList *fl, gboolean mode)
127
121
{
128
 
        GtkWidget *hbox, *vbox, *label;
129
 
        SearchDefaults *defaults = gnome_cmd_data_get_search_defaults ();
130
 
        GnomeCmdPatternselDialog *dialog = gtk_type_new (gnome_cmd_patternsel_dialog_get_type ());
131
 
        dialog->priv->mode = mode;
132
 
        dialog->priv->fl = fl;
133
 
        
134
 
        gnome_cmd_dialog_setup (
135
 
                GNOME_CMD_DIALOG (dialog),
136
 
                mode?_("Select Using Pattern"):_("Unselect Using Pattern"));
137
 
 
138
 
        gnome_cmd_dialog_add_button (
139
 
                GNOME_CMD_DIALOG (dialog), GNOME_STOCK_BUTTON_CANCEL,
140
 
                GTK_SIGNAL_FUNC (on_cancel), dialog);
141
 
        gnome_cmd_dialog_add_button (
142
 
                GNOME_CMD_DIALOG (dialog), GNOME_STOCK_BUTTON_OK,
143
 
                GTK_SIGNAL_FUNC (on_ok), dialog);
144
 
 
145
 
        vbox = create_vbox (GTK_WIDGET (dialog), FALSE, 6);
146
 
        hbox = create_hbox (GTK_WIDGET (dialog), FALSE, 6);
147
 
        label = create_label (GTK_WIDGET (dialog), _("Pattern:"));
148
 
        
149
 
        dialog->priv->pattern_combo = create_combo (GTK_WIDGET (dialog));
150
 
        gtk_combo_disable_activate (GTK_COMBO (dialog->priv->pattern_combo));
151
 
        if (defaults->name_patterns)
152
 
                gtk_combo_set_popdown_strings (GTK_COMBO (dialog->priv->pattern_combo),
153
 
                                                                           defaults->name_patterns);
154
 
        dialog->priv->pattern_entry = GTK_COMBO (dialog->priv->pattern_combo)->entry;
155
 
    gnome_cmd_dialog_editable_enters (
156
 
                GNOME_CMD_DIALOG (dialog), GTK_EDITABLE (dialog->priv->pattern_entry));
157
 
        gtk_entry_select_region (GTK_ENTRY (dialog->priv->pattern_entry), 0, -1);
158
 
        
159
 
        dialog->priv->case_check = create_check (
160
 
                GTK_WIDGET (dialog), _("Case sensitive"), "case_sens");
161
 
        
162
 
        gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0);
163
 
        gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);
164
 
        gtk_box_pack_start (GTK_BOX (hbox), dialog->priv->pattern_combo, TRUE, FALSE, 0);
165
 
        gtk_box_pack_start (GTK_BOX (vbox), dialog->priv->case_check, TRUE, FALSE, 0);
166
 
 
167
 
        gnome_cmd_dialog_add_category (GNOME_CMD_DIALOG (dialog), vbox);
168
 
 
169
 
        gtk_widget_grab_focus (dialog->priv->pattern_entry);
170
 
 
171
 
        return GTK_WIDGET (dialog);
 
122
    GtkWidget *hbox, *vbox, *label;
 
123
    SearchDefaults *defaults = gnome_cmd_data_get_search_defaults ();
 
124
    GnomeCmdPatternselDialog *dialog = gtk_type_new (gnome_cmd_patternsel_dialog_get_type ());
 
125
    dialog->priv->mode = mode;
 
126
    dialog->priv->fl = fl;
 
127
 
 
128
    gnome_cmd_dialog_setup (
 
129
        GNOME_CMD_DIALOG (dialog),
 
130
        mode ? _("Select Using Pattern") : _("Unselect Using Pattern"));
 
131
 
 
132
    gnome_cmd_dialog_add_button (GNOME_CMD_DIALOG (dialog), GNOME_STOCK_BUTTON_CANCEL, GTK_SIGNAL_FUNC (on_cancel), dialog);
 
133
    gnome_cmd_dialog_add_button (GNOME_CMD_DIALOG (dialog), GNOME_STOCK_BUTTON_OK, GTK_SIGNAL_FUNC (on_ok), dialog);
 
134
 
 
135
    vbox = create_vbox (GTK_WIDGET (dialog), FALSE, 6);
 
136
    hbox = create_hbox (GTK_WIDGET (dialog), FALSE, 6);
 
137
    label = create_label (GTK_WIDGET (dialog), _("Pattern:"));
 
138
 
 
139
    dialog->priv->pattern_combo = create_combo (GTK_WIDGET (dialog));
 
140
    gtk_combo_disable_activate (GTK_COMBO (dialog->priv->pattern_combo));
 
141
    if (defaults->name_patterns)
 
142
        gtk_combo_set_popdown_strings (GTK_COMBO (dialog->priv->pattern_combo), defaults->name_patterns);
 
143
    dialog->priv->pattern_entry = GTK_COMBO (dialog->priv->pattern_combo)->entry;
 
144
    gnome_cmd_dialog_editable_enters (GNOME_CMD_DIALOG (dialog), GTK_EDITABLE (dialog->priv->pattern_entry));
 
145
    gtk_entry_select_region (GTK_ENTRY (dialog->priv->pattern_entry), 0, -1);
 
146
 
 
147
    dialog->priv->case_check = create_check (GTK_WIDGET (dialog), _("Case sensitive"), "case_sens");
 
148
 
 
149
    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0);
 
150
    gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);
 
151
    gtk_box_pack_start (GTK_BOX (hbox), dialog->priv->pattern_combo, TRUE, FALSE, 0);
 
152
    gtk_box_pack_start (GTK_BOX (vbox), dialog->priv->case_check, TRUE, FALSE, 0);
 
153
 
 
154
    gnome_cmd_dialog_add_category (GNOME_CMD_DIALOG (dialog), vbox);
 
155
 
 
156
    gtk_widget_grab_focus (dialog->priv->pattern_entry);
 
157
 
 
158
    return GTK_WIDGET (dialog);
172
159
}
173
160
 
174
161
 
175
 
 
176
162
GtkType
177
163
gnome_cmd_patternsel_dialog_get_type         (void)
178
164
{
179
 
        static GtkType dlg_type = 0;
180
 
 
181
 
        if (dlg_type == 0)
182
 
        {
183
 
                GtkTypeInfo dlg_info =
184
 
                {
185
 
                        "GnomeCmdPatternselDialog",
186
 
                        sizeof (GnomeCmdPatternselDialog),
187
 
                        sizeof (GnomeCmdPatternselDialogClass),
188
 
                        (GtkClassInitFunc) class_init,
189
 
                        (GtkObjectInitFunc) init,
190
 
                        /* reserved_1 */ NULL,
191
 
                        /* reserved_2 */ NULL,
192
 
                        (GtkClassInitFunc) NULL
193
 
                };
194
 
 
195
 
                dlg_type = gtk_type_unique (gnome_cmd_dialog_get_type (), &dlg_info);
196
 
        }
197
 
        return dlg_type;
 
165
    static GtkType dlg_type = 0;
 
166
 
 
167
    if (dlg_type == 0)
 
168
    {
 
169
        GtkTypeInfo dlg_info =
 
170
        {
 
171
            "GnomeCmdPatternselDialog",
 
172
            sizeof (GnomeCmdPatternselDialog),
 
173
            sizeof (GnomeCmdPatternselDialogClass),
 
174
            (GtkClassInitFunc) class_init,
 
175
            (GtkObjectInitFunc) init,
 
176
            /* reserved_1 */ NULL,
 
177
            /* reserved_2 */ NULL,
 
178
            (GtkClassInitFunc) NULL
 
179
        };
 
180
 
 
181
        dlg_type = gtk_type_unique (gnome_cmd_dialog_get_type (), &dlg_info);
 
182
    }
 
183
    return dlg_type;
198
184
}
199
 
 
200
 
 
201