Mercurial > vim
comparison src/gui_gtk.c @ 29:ac33b7c03fac v7.0018
updated for version 7.0018
author | vimboss |
---|---|
date | Mon, 11 Oct 2004 10:16:09 +0000 |
parents | 404aac550f35 |
children | 410fa1a31baf |
comparison
equal
deleted
inserted
replaced
28:726bdc53fa49 | 29:ac33b7c03fac |
---|---|
1274 char_u *dflt, | 1274 char_u *dflt, |
1275 char_u *ext, | 1275 char_u *ext, |
1276 char_u *initdir, | 1276 char_u *initdir, |
1277 char_u *filter) | 1277 char_u *filter) |
1278 { | 1278 { |
1279 GtkFileSelection *fs; /* shortcut */ | 1279 GtkFileSelection *fs; /* shortcut */ |
1280 char_u dirbuf[MAXPATHL]; | 1280 char_u dirbuf[MAXPATHL]; |
1281 char_u *p; | 1281 char_u *p; |
1282 | 1282 |
1283 # ifdef HAVE_GTK2 | 1283 # ifdef HAVE_GTK2 |
1284 title = CONVERT_TO_UTF8(title); | 1284 title = CONVERT_TO_UTF8(title); |
1285 # endif | 1285 # endif |
1286 | 1286 |
1344 mch_dirname(dirbuf, MAXPATHL); | 1344 mch_dirname(dirbuf, MAXPATHL); |
1345 p = shorten_fname(gui.browse_fname, dirbuf); | 1345 p = shorten_fname(gui.browse_fname, dirbuf); |
1346 if (p == NULL) | 1346 if (p == NULL) |
1347 p = gui.browse_fname; | 1347 p = gui.browse_fname; |
1348 return vim_strsave(p); | 1348 return vim_strsave(p); |
1349 } | |
1350 | |
1351 /* | |
1352 * Put up a directory selector | |
1353 * Returns the selected name in allocated memory, or NULL for Cancel. | |
1354 * title title for the window | |
1355 * dflt default name | |
1356 * initdir initial directory, NULL for current dir | |
1357 */ | |
1358 /*ARGSUSED*/ | |
1359 char_u * | |
1360 gui_mch_browsedir( | |
1361 char_u *title, | |
1362 char_u *initdir) | |
1363 { | |
1364 # if defined(GTK_FILE_CHOOSER) /* Only in GTK 2.4 and later. */ | |
1365 char_u dirbuf[MAXPATHL]; | |
1366 char_u *p; | |
1367 GtkWidget *dirdlg; /* file selection dialog */ | |
1368 char_u *dirname = NULL; | |
1369 | |
1370 title = CONVERT_TO_UTF8(title); | |
1371 | |
1372 dirdlg = gtk_file_chooser_dialog_new( | |
1373 (const gchar *)title, | |
1374 GTK_WINDOW(gui.mainwin), | |
1375 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, | |
1376 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
1377 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, | |
1378 NULL); | |
1379 | |
1380 CONVERT_TO_UTF8_FREE(title); | |
1381 | |
1382 /* if our pointer is currently hidden, then we should show it. */ | |
1383 gui_mch_mousehide(FALSE); | |
1384 | |
1385 /* GTK appears to insist on an absolute path. */ | |
1386 if (initdir == NULL || *initdir == NUL | |
1387 || vim_FullName(initdir, dirbuf, MAXPATHL - 10, FALSE) == FAIL) | |
1388 mch_dirname(dirbuf, MAXPATHL - 10); | |
1389 | |
1390 /* Always need a trailing slash for a directory. | |
1391 * Also add a dummy file name, so that we get to the directory. */ | |
1392 add_pathsep(dirbuf); | |
1393 STRCAT(dirbuf, "@zd(*&1|"); | |
1394 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dirdlg), | |
1395 (const gchar *)dirbuf); | |
1396 | |
1397 /* Run the dialog. */ | |
1398 if (gtk_dialog_run(GTK_DIALOG(dirdlg)) == GTK_RESPONSE_ACCEPT) | |
1399 dirname = (char_u *)gtk_file_chooser_get_filename( | |
1400 GTK_FILE_CHOOSER(dirdlg)); | |
1401 gtk_widget_destroy(dirdlg); | |
1402 if (dirname == NULL) | |
1403 return NULL; | |
1404 | |
1405 /* shorten the file name if possible */ | |
1406 mch_dirname(dirbuf, MAXPATHL); | |
1407 p = shorten_fname(dirname, dirbuf); | |
1408 if (p == NULL || *p == NUL) | |
1409 p = dirname; | |
1410 p = vim_strsave(p); | |
1411 g_free(dirname); | |
1412 return p; | |
1413 | |
1414 # else | |
1415 /* For GTK 2.2 and earlier: fall back to ordinary file selector. */ | |
1416 return gui_mch_browse(0, title, NULL, NULL, initdir, NULL); | |
1417 # endif | |
1349 } | 1418 } |
1350 | 1419 |
1351 #endif /* FEAT_BROWSE */ | 1420 #endif /* FEAT_BROWSE */ |
1352 | 1421 |
1353 #if (defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)) || defined(PROTO) | 1422 #if (defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)) || defined(PROTO) |
3036 | 3105 |
3037 gtk_widget_set_uposition(child, pos_x, pos_y); | 3106 gtk_widget_set_uposition(child, pos_x, pos_y); |
3038 } | 3107 } |
3039 | 3108 |
3040 #endif /* !HAVE_GTK2 */ | 3109 #endif /* !HAVE_GTK2 */ |
3041 |