-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDialogs.cxx
130 lines (109 loc) · 3.58 KB
/
Dialogs.cxx
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <gtk/gtk.h>
#include "Dialogs.h"
/*
==================== Open =====================
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
open_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
*/
GtkWidget *CFileOpenDialog::CreateDialog(GtkWidget *parent,const char *title)
{
return gtk_file_chooser_dialog_new (title, GTK_WINDOW(parent), GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
}
CFileOpenDialog::CFileOpenDialog(GtkWidget *parent,const char *title)
{
GtkWidget *dialog = CreateDialog(parent,title);
SetWidget(dialog);
}
CFileOpenDialog::~CFileOpenDialog()
{
g_free (filename);
gtk_widget_destroy (GetWidget());
}
int CFileOpenDialog::RunDialog()
{
return (gtk_dialog_run (GTK_DIALOG (GetWidget())));
}
void CFileOpenDialog::SetFileName(const char *f)
{
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (GetWidget()), f);
}
char *CFileOpenDialog::GetFileName()
{
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (GetWidget()));
return filename;
}
/*
// =================== Save ===============
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Save File",
parent_window,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
NULL);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
if (user_edited_a_new_document)
{
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), default_folder_for_saving);
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "Untitled document");
}
else
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), filename_for_existing_document);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
save_to_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
*/
GtkWidget *CFileSaveDialog::CreateDialog(GtkWidget *parent,const char *title)
{
return gtk_file_chooser_dialog_new (title, GTK_WINDOW(parent), GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
}
CFileSaveDialog::CFileSaveDialog(GtkWidget *parent,const char *title)
:CFileOpenDialog(parent,title)
{
// GtkWidget *dialog = CreateDialog(parent,title);
// SetWidget(dialog);
}
CFileSaveDialog::~CFileSaveDialog()
{
//filename and dialog are freed in CFileOpenDialog
}
//==================== Message ============================
GtkResponseType message_dialog(GtkWindow *parent, const gchar *title, const gchar *message, GtkMessageType type)
{
GtkWidget *dialog;
GtkResponseType response;
GtkButtonsType buttons;
if (type == GTK_MESSAGE_QUESTION)
buttons = GTK_BUTTONS_YES_NO;
else
buttons = GTK_BUTTONS_OK;
dialog = gtk_message_dialog_new (parent, GTK_DIALOG_DESTROY_WITH_PARENT, type, buttons, "%s", message);
gtk_window_set_title(GTK_WINDOW(dialog), title);
response = GtkResponseType(gtk_dialog_run (GTK_DIALOG (dialog)));
gtk_widget_destroy (dialog);
return response;
}