-
Notifications
You must be signed in to change notification settings - Fork 0
/
C_GTK_FileChooser.cpp
104 lines (85 loc) · 4.26 KB
/
C_GTK_FileChooser.cpp
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
//////////////////////////////////////////////////////////////////////////////////
// [ GTK_FileChooser_Class_Source ]
//////////////////////////////////////////////////////////////////////////////////
#include "C_GTK_FileChooser.hpp"
//////////////////////////////////////////////////////////////////////////////////
// [Konstructor]
//////////////////////////////////////////////////////////////////////////////////
C_GTK_FileChooser::C_GTK_FileChooser(){
}
//////////////////////////////////////////////////////////////////////////////////
// [Destructor]
//////////////////////////////////////////////////////////////////////////////////
C_GTK_FileChooser::~C_GTK_FileChooser(){
}
//////////////////////////////////////////////////////////////////////////////////
// [getFolder]
//////////////////////////////////////////////////////////////////////////////////
int C_GTK_FileChooser::getFolder(const char* pCaption, GtkWindow* pParent, string* pFolder){
if(!pCaption || !pParent || !pFolder) return(C_GTK_FILECHOOSER_ERROR);
GtkWidget *pChooser = gtk_file_chooser_dialog_new(pCaption, pParent,
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN,
GTK_RESPONSE_OK,
NULL);
gint result = gtk_dialog_run(GTK_DIALOG(pChooser));
switch(result){
case GTK_RESPONSE_OK:
*pFolder = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pChooser));
gtk_widget_destroy(pChooser);
break;
default:
gtk_widget_destroy(pChooser);
return(C_GTK_FILECHOOSER_ERROR);
}
return(C_GTK_FILECHOOSER_READY);
}
//////////////////////////////////////////////////////////////////////////////////
// [getFile]
//////////////////////////////////////////////////////////////////////////////////
int C_GTK_FileChooser::getFile(const char* pCaption, GtkWindow* pParent, string* pFile){
if(!pCaption || !pParent || !pFile) return(C_GTK_FILECHOOSER_ERROR);
GtkWidget* pChooser = gtk_file_chooser_dialog_new(pCaption, pParent,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN,
GTK_RESPONSE_OK,
NULL);
gint result = gtk_dialog_run(GTK_DIALOG(pChooser));
switch(result){
case GTK_RESPONSE_OK:
*pFile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pChooser));
gtk_widget_destroy(pChooser);
break;
default:
gtk_widget_destroy(pChooser);
return(C_GTK_FILECHOOSER_ERROR);
}
return(C_GTK_FILECHOOSER_READY);
}
//////////////////////////////////////////////////////////////////////////////////
// [setFile]
//////////////////////////////////////////////////////////////////////////////////
int C_GTK_FileChooser::setFile(const char* pCaption, GtkWindow* pParent, string* pFile){
if(!pCaption || !pParent || !pFile) return(C_GTK_FILECHOOSER_ERROR);
GtkWidget * pChooser = gtk_file_chooser_dialog_new(pCaption, pParent,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN,
GTK_RESPONSE_OK,
NULL);
gint result = gtk_dialog_run(GTK_DIALOG(pChooser));
switch(result){
case GTK_RESPONSE_OK:
*pFile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pChooser));
gtk_widget_destroy(pChooser);
break;
default:
gtk_widget_destroy(pChooser);
return(C_GTK_FILECHOOSER_ERROR);
}
return(C_GTK_FILECHOOSER_READY);
}