< prev index next >

modules/javafx.graphics/src/main/native-glass/gtk/GlassCommonDialogs.cpp

Print this page




  95     const char* chooser_folder;
  96     const char* chooser_filename;
  97     const char* chooser_title;
  98     const int chooser_type = type == 0 ? GTK_FILE_CHOOSER_ACTION_OPEN : GTK_FILE_CHOOSER_ACTION_SAVE;
  99 
 100     if (!jstring_to_utf_get(env, folder, &chooser_folder)) {
 101         return create_empty_result();
 102     }
 103 
 104     if (!jstring_to_utf_get(env, title, &chooser_title)) {
 105         jstring_to_utf_release(env, folder, chooser_folder);
 106         return create_empty_result();
 107     }
 108 
 109     if (!jstring_to_utf_get(env, name, &chooser_filename)) {
 110         jstring_to_utf_release(env, folder, chooser_folder);
 111         jstring_to_utf_release(env, title, chooser_title);
 112         return create_empty_result();
 113     }
 114 
 115     GtkWidget* chooser = glass_file_chooser_dialog(
 116             chooser_title,
 117             gdk_window_handle_to_gtk(parent),
 118             static_cast<GtkFileChooserAction>(chooser_type),
 119             (chooser_type == GTK_FILE_CHOOSER_ACTION_OPEN ? GTK_STOCK_OPEN : GTK_STOCK_SAVE)
 120             );



 121 
 122     if (chooser_type == GTK_FILE_CHOOSER_ACTION_SAVE) {
 123         gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), chooser_filename);
 124         gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER (chooser), TRUE);
 125     }
 126 
 127     gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), (JNI_TRUE == multiple));
 128     gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), chooser_folder);
 129     GSList* filters = setup_GtkFileFilters(GTK_FILE_CHOOSER(chooser), env, jFilters, default_filter_index);
 130 
 131     if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) {
 132         GSList* fnames_gslist = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(chooser));
 133         guint fnames_list_len = g_slist_length(fnames_gslist);
 134         LOG1("FileChooser selected files: %d\n", fnames_list_len)
 135 
 136         if (fnames_list_len > 0) {
 137             jFileNames = env->NewObjectArray((jsize)fnames_list_len, jStringCls, NULL);
 138             EXCEPTION_OCCURED(env);
 139             for (guint i = 0; i < fnames_list_len; i++) {
 140                 filename = (char*)g_slist_nth(fnames_gslist, i)->data;


 179     return result;
 180 }
 181 
 182 JNIEXPORT jstring JNICALL Java_com_sun_glass_ui_gtk_GtkCommonDialogs__1showFolderChooser
 183   (JNIEnv *env, jclass clazz, jlong parent, jstring folder, jstring title) {
 184     (void)clazz;
 185 
 186     jstring jfilename = NULL;
 187     const char *chooser_folder;
 188     const char *chooser_title;
 189 
 190     if (!jstring_to_utf_get(env, folder, &chooser_folder)) {
 191         return NULL;
 192     }
 193 
 194     if (!jstring_to_utf_get(env, title, &chooser_title)) {
 195         jstring_to_utf_release(env, folder, chooser_folder);
 196         return NULL;
 197     }
 198 
 199     GtkWidget* chooser = glass_file_chooser_dialog(
 200             chooser_title,
 201             gdk_window_handle_to_gtk(parent),
 202             GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
 203             GTK_STOCK_OPEN
 204             );



 205 
 206     if (chooser_folder != NULL) {
 207         gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser),
 208                                             chooser_folder);
 209     }
 210 
 211     if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) {
 212         gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
 213         jfilename = env->NewStringUTF(filename);
 214         LOG1("Selected folder: %s\n", filename);
 215         g_free(filename);
 216     }
 217 
 218     jstring_to_utf_release(env, folder, chooser_folder);
 219     jstring_to_utf_release(env, title, chooser_title);
 220 
 221     gtk_widget_destroy(chooser);
 222     return jfilename;
 223 }
 224 




  95     const char* chooser_folder;
  96     const char* chooser_filename;
  97     const char* chooser_title;
  98     const int chooser_type = type == 0 ? GTK_FILE_CHOOSER_ACTION_OPEN : GTK_FILE_CHOOSER_ACTION_SAVE;
  99 
 100     if (!jstring_to_utf_get(env, folder, &chooser_folder)) {
 101         return create_empty_result();
 102     }
 103 
 104     if (!jstring_to_utf_get(env, title, &chooser_title)) {
 105         jstring_to_utf_release(env, folder, chooser_folder);
 106         return create_empty_result();
 107     }
 108 
 109     if (!jstring_to_utf_get(env, name, &chooser_filename)) {
 110         jstring_to_utf_release(env, folder, chooser_folder);
 111         jstring_to_utf_release(env, title, chooser_title);
 112         return create_empty_result();
 113     }
 114 
 115     GtkWidget* chooser = gtk_file_chooser_dialog_new(chooser_title, gdk_window_handle_to_gtk(parent),


 116             static_cast<GtkFileChooserAction>(chooser_type),
 117             GTK_STOCK_CANCEL,
 118             GTK_RESPONSE_CANCEL,
 119             (chooser_type == GTK_FILE_CHOOSER_ACTION_OPEN ? GTK_STOCK_OPEN : GTK_STOCK_SAVE),
 120             GTK_RESPONSE_ACCEPT,
 121             NULL);
 122 
 123     if (chooser_type == GTK_FILE_CHOOSER_ACTION_SAVE) {
 124         gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), chooser_filename);
 125         gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER (chooser), TRUE);
 126     }
 127 
 128     gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), (JNI_TRUE == multiple));
 129     gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), chooser_folder);
 130     GSList* filters = setup_GtkFileFilters(GTK_FILE_CHOOSER(chooser), env, jFilters, default_filter_index);
 131 
 132     if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) {
 133         GSList* fnames_gslist = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(chooser));
 134         guint fnames_list_len = g_slist_length(fnames_gslist);
 135         LOG1("FileChooser selected files: %d\n", fnames_list_len)
 136 
 137         if (fnames_list_len > 0) {
 138             jFileNames = env->NewObjectArray((jsize)fnames_list_len, jStringCls, NULL);
 139             EXCEPTION_OCCURED(env);
 140             for (guint i = 0; i < fnames_list_len; i++) {
 141                 filename = (char*)g_slist_nth(fnames_gslist, i)->data;


 180     return result;
 181 }
 182 
 183 JNIEXPORT jstring JNICALL Java_com_sun_glass_ui_gtk_GtkCommonDialogs__1showFolderChooser
 184   (JNIEnv *env, jclass clazz, jlong parent, jstring folder, jstring title) {
 185     (void)clazz;
 186 
 187     jstring jfilename = NULL;
 188     const char *chooser_folder;
 189     const char *chooser_title;
 190 
 191     if (!jstring_to_utf_get(env, folder, &chooser_folder)) {
 192         return NULL;
 193     }
 194 
 195     if (!jstring_to_utf_get(env, title, &chooser_title)) {
 196         jstring_to_utf_release(env, folder, chooser_folder);
 197         return NULL;
 198     }
 199 
 200     GtkWidget* chooser = gtk_file_chooser_dialog_new(
 201             chooser_title,
 202             gdk_window_handle_to_gtk(parent),
 203             GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
 204             GTK_STOCK_CANCEL,
 205             GTK_RESPONSE_CANCEL,
 206             GTK_STOCK_OPEN,
 207             GTK_RESPONSE_ACCEPT,
 208             NULL);
 209 
 210     if (chooser_folder != NULL) {
 211         gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser),
 212                                             chooser_folder);
 213     }
 214 
 215     if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) {
 216         gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
 217         jfilename = env->NewStringUTF(filename);
 218         LOG1("Selected folder: %s\n", filename);
 219         g_free(filename);
 220     }
 221 
 222     jstring_to_utf_release(env, folder, chooser_folder);
 223     jstring_to_utf_release(env, title, chooser_title);
 224 
 225     gtk_widget_destroy(chooser);
 226     return jfilename;
 227 }
 228 


< prev index next >