2
* arch-tag: Implementation of Rhythmbox dialog wrapper functions
4
* Copyright (C) 2002 Jorn Baayen
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2, or (at your option)
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
#include <libgnome/gnome-i18n.h>
30
#include "rb-dialog.h"
31
#include "rb-stock-icons.h"
33
static void rb_dialog (const char *format, va_list args, GtkMessageType type);
36
rb_error_dialog (const char *format, ...)
40
va_start (args, format);
42
rb_dialog (format, args, GTK_MESSAGE_ERROR);
48
rb_warning_dialog (const char *format, ...)
52
va_start (args, format);
54
rb_dialog (format, args, GTK_MESSAGE_WARNING);
60
rb_message_dialog (const char *format, ...)
64
va_start (args, format);
66
rb_dialog (format, args, GTK_MESSAGE_INFO);
72
rb_dialog (const char *format, va_list args, GtkMessageType type)
77
g_vsnprintf (buffer, 1024, format, args);
79
dialog = gtk_message_dialog_new (NULL,
86
g_signal_connect_swapped (GTK_OBJECT (dialog), "response",
87
G_CALLBACK (gtk_widget_destroy),
90
gtk_widget_show (GTK_WIDGET (dialog));
94
rb_ask_file_internal (const char *title,
95
const char *default_file,
103
filesel = gtk_file_selection_new (title);
104
if (default_file != NULL)
105
gtk_file_selection_set_filename (GTK_FILE_SELECTION (filesel), default_file);
107
gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
110
GtkFileChooserAction mode;
112
mode = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
114
mode = GTK_FILE_CHOOSER_ACTION_OPEN;
117
filesel = gtk_file_chooser_dialog_new (title,
125
gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (filesel),
129
if (default_file != NULL)
130
gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (filesel),
133
gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (filesel), multiple);
135
gtk_dialog_set_default_response (GTK_DIALOG (filesel),
138
gtk_window_set_transient_for (GTK_WINDOW (filesel),
140
gtk_window_set_modal (GTK_WINDOW (filesel),
142
gtk_window_set_destroy_with_parent (GTK_WINDOW (filesel),
145
gtk_widget_show_all (filesel);
151
rb_ask_file (const char *title,
152
const char *default_file,
155
return rb_ask_file_internal (title, default_file, parent, FALSE, FALSE);
159
rb_ask_file_save (const char *title,
160
const char *default_file,
164
return rb_ask_file_internal (title, default_file, parent, FALSE, FALSE);
167
filesel = gtk_file_chooser_dialog_new (title,
169
GTK_FILE_CHOOSER_ACTION_SAVE,
175
if (default_file != NULL)
176
gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (filesel),
178
gtk_window_set_destroy_with_parent (GTK_WINDOW (filesel), TRUE);
180
gtk_widget_show_all (filesel);
186
rb_ask_file_multiple (const char *title,
187
const char *default_file,
190
return rb_ask_file_internal (title, default_file, parent, TRUE, FALSE);
194
rb_ask_dir (const char *title,
195
const char *default_file,
198
return rb_ask_file_internal (title, default_file, parent, FALSE, TRUE);
202
rb_ask_dir_multiple (const char *title,
203
const char *default_file,
206
return rb_ask_file_internal (title, default_file, parent, TRUE, TRUE);
210
rb_ask_string (const char *question,
211
const char *accept_button_text,
212
const char *default_text,
215
GtkWidget *dialog, *hbox, *image, *entry, *label, *vbox;
218
dialog = gtk_dialog_new_with_buttons ("",
226
gtk_dialog_set_default_response (GTK_DIALOG (dialog),
228
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
229
gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
230
gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 12);
232
gtk_window_set_transient_for (GTK_WINDOW (dialog),
234
gtk_window_set_modal (GTK_WINDOW (dialog),
236
gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog),
238
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
240
hbox = gtk_hbox_new (FALSE, 12);
241
gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
242
image = gtk_image_new_from_stock (RB_STOCK_PLAYLIST,
243
GTK_ICON_SIZE_DIALOG);
244
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0);
246
vbox = gtk_vbox_new (FALSE, 0);
248
tmp = g_strdup_printf ("%s\n", question);
249
label = gtk_label_new (tmp);
251
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
252
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
254
entry = gtk_entry_new ();
255
gtk_entry_set_text (GTK_ENTRY (entry), default_text);
256
gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
257
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, TRUE, 0);
259
gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
260
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
261
gtk_widget_show_all (hbox);
263
gtk_widget_grab_focus (entry);
265
g_object_set_data (G_OBJECT (dialog), "entry", entry);
267
gtk_widget_show_all (dialog);