1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
4
* This file is part of gedit
6
* Copyright (C) 2001 Paolo Maggi
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330,
21
* Boston, MA 02111-1307, USA.
25
* Modified by the gedit Team, 1998-2001. See the AUTHORS file for a
26
* list of people on the gedit Team.
27
* See the ChangeLog files for a list of changes.
34
#include <glade/glade-xml.h>
35
#include <libgnome/gnome-help.h>
36
#include <libgnome/gnome-i18n.h>
37
#include <libgnomeui/gnome-entry.h>
40
#include "gedit-mdi.h"
41
#include "gedit-utils.h"
42
#include "gedit-file.h"
43
#include "gedit-dialogs.h"
44
#include "gedit-encodings-option-menu.h"
46
typedef struct _GeditDialogOpenUri GeditDialogOpenUri;
48
struct _GeditDialogOpenUri {
53
GtkWidget *encoding_menu;
56
static void open_button_pressed (GeditDialogOpenUri * dialog);
57
static void help_button_pressed (GeditDialogOpenUri * dialog);
58
static GeditDialogOpenUri *dialog_open_uri_get_dialog (void);
60
static GeditDialogOpenUri *
61
dialog_open_uri_get_dialog (void)
63
static GeditDialogOpenUri *dialog = NULL;
67
GtkWidget *encoding_label;
68
GtkWidget *encoding_hbox;
70
window = GTK_WINDOW (gedit_get_active_window ());
74
gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog),
79
gui = glade_xml_new (GEDIT_GLADEDIR "uri.glade2",
80
"open_uri_dialog_content", NULL);
83
gedit_warning (window,
85
GEDIT_GLADEDIR "uri.glade2");
89
dialog = g_new0 (GeditDialogOpenUri, 1);
91
dialog->dialog = gtk_dialog_new_with_buttons (_("Open Location"),
102
g_return_val_if_fail (dialog->dialog != NULL, NULL);
104
gtk_window_set_resizable (GTK_WINDOW (dialog->dialog), FALSE);
105
gtk_dialog_set_has_separator (GTK_DIALOG (dialog->dialog), FALSE);
107
content = glade_xml_get_widget (gui, "open_uri_dialog_content");
109
dialog->uri = glade_xml_get_widget (gui, "uri");
110
dialog->uri_list = glade_xml_get_widget (gui, "uri_list");
111
encoding_label = glade_xml_get_widget (gui, "encoding_label");
112
encoding_hbox = glade_xml_get_widget (gui, "encoding_hbox");
114
if (!dialog->uri || !dialog->uri_list || !encoding_label || !encoding_hbox)
116
gedit_warning (window,
118
GEDIT_GLADEDIR "uri.glade2");
122
dialog->encoding_menu = gedit_encodings_option_menu_new (FALSE);
124
gtk_label_set_mnemonic_widget (GTK_LABEL (encoding_label),
125
dialog->encoding_menu);
127
gtk_box_pack_end (GTK_BOX (encoding_hbox),
128
dialog->encoding_menu,
133
gtk_widget_show (dialog->encoding_menu);
135
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog->dialog)->vbox),
136
content, FALSE, FALSE, 0);
138
gtk_dialog_set_default_response (GTK_DIALOG (dialog->dialog),
141
g_object_unref (gui);
147
gedit_dialog_open_uri (void)
149
GeditDialogOpenUri *dialog;
152
dialog = dialog_open_uri_get_dialog ();
156
gedit_encodings_option_menu_set_selected_encoding (
157
GEDIT_ENCODINGS_OPTION_MENU (dialog->encoding_menu),
160
gtk_widget_grab_focus (dialog->uri);
162
gtk_entry_set_text (GTK_ENTRY (dialog->uri), "");
165
response = gtk_dialog_run (GTK_DIALOG (dialog->dialog));
168
case GTK_RESPONSE_OK:
169
open_button_pressed (dialog);
172
case GTK_RESPONSE_HELP:
173
help_button_pressed (dialog);
177
gtk_widget_hide (dialog->dialog);
180
} while (response == GTK_RESPONSE_HELP);
184
open_button_pressed (GeditDialogOpenUri * dialog)
186
gchar *file_name = NULL;
187
const GeditEncoding *encoding;
189
g_return_if_fail (dialog != NULL);
192
gtk_editable_get_chars (GTK_EDITABLE (dialog->uri), 0, -1);
194
gnome_entry_prepend_history (GNOME_ENTRY (dialog->uri_list),
198
gtk_widget_hide (dialog->dialog);
200
encoding = gedit_encodings_option_menu_get_selected_encoding (
201
GEDIT_ENCODINGS_OPTION_MENU (dialog->encoding_menu));
203
gedit_file_open_single_uri (file_name, encoding);
209
help_button_pressed (GeditDialogOpenUri * dialog)
211
GError *error = NULL;
213
gnome_help_display ("gedit.xml", "gedit-open-from-uri", &error);
217
g_warning (error->message);
219
g_error_free (error);