]>
Commit | Line | Data |
---|---|---|
f8692241 | 1 | --- ../vim63b.orig/src/gui_gtk.c 2004-05-12 18:01:45.000000000 +0200 |
2 | +++ src/gui_gtk.c 2004-05-19 19:26:19.000000000 +0200 | |
3 | @@ -39,6 +39,16 @@ | |
4 | ||
5 | #include "vim.h" | |
6 | ||
7 | +/* Check to see if we are able to use GtkFileChooser */ | |
8 | +#undef HAVE_FILECHOOSER | |
9 | + | |
10 | +#if defined(HAVE_GTK2) | |
11 | +# if GTK_MINOR_VERSION >= 4 | |
12 | +# define HAVE_FILECHOOSER | |
13 | +# endif | |
14 | +#endif | |
15 | + | |
16 | + | |
17 | #ifdef FEAT_GUI_GNOME | |
18 | /* Gnome redefines _() and N_(). Grrr... */ | |
19 | # ifdef _ | |
20 | @@ -1202,6 +1212,7 @@ | |
21 | * Implementation of the file selector related stuff | |
22 | */ | |
23 | ||
24 | +#if !defined(HAVE_FILECHOOSER) | |
25 | /*ARGSUSED*/ | |
26 | static void | |
27 | browse_ok_cb(GtkWidget *widget, gpointer cbdata) | |
28 | @@ -1233,6 +1244,7 @@ | |
29 | if (gtk_main_level() > 0) | |
30 | gtk_main_quit(); | |
31 | } | |
32 | +#endif | |
33 | ||
34 | /*ARGSUSED*/ | |
35 | static gboolean | |
36 | @@ -1270,7 +1282,11 @@ | |
37 | char_u *initdir, | |
38 | char_u *filter) | |
39 | { | |
40 | +#if !defined(HAVE_FILECHOOSER) | |
41 | GtkFileSelection *fs; /* shortcut */ | |
42 | +#else | |
43 | + GtkFileChooserDialog *fs; | |
44 | +#endif | |
45 | char_u dirbuf[MAXPATHL]; | |
46 | char_u *p; | |
47 | ||
48 | @@ -1280,6 +1296,7 @@ | |
49 | ||
50 | if (!gui.filedlg) | |
51 | { | |
52 | +#if !defined(HAVE_FILECHOOSER) | |
53 | gui.filedlg = gtk_file_selection_new((const gchar *)title); | |
54 | gtk_window_set_modal(GTK_WINDOW(gui.filedlg), TRUE); | |
55 | gtk_window_set_transient_for(GTK_WINDOW(gui.filedlg), | |
56 | @@ -1296,6 +1313,26 @@ | |
57 | gtk_signal_connect_object(GTK_OBJECT(gui.filedlg), | |
58 | "destroy", GTK_SIGNAL_FUNC(browse_destroy_cb), | |
59 | GTK_OBJECT(gui.filedlg)); | |
60 | +#else | |
61 | + if(saving == 0) | |
62 | + gui.filedlg = gtk_file_chooser_dialog_new ((const gchar *)title, | |
63 | + GTK_WINDOW(gui.mainwin), | |
64 | + GTK_FILE_CHOOSER_ACTION_OPEN, | |
65 | + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
66 | + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, | |
67 | + NULL); | |
68 | + else | |
69 | + gui.filedlg = gtk_file_chooser_dialog_new ((const gchar *)title, | |
70 | + GTK_WINDOW(gui.mainwin), | |
71 | + GTK_FILE_CHOOSER_ACTION_SAVE, | |
72 | + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
73 | + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, | |
74 | + NULL); | |
75 | + | |
76 | + gtk_window_set_modal(GTK_WINDOW(gui.filedlg), TRUE); | |
77 | + fs = GTK_FILE_CHOOSER_DIALOG(gui.filedlg); | |
78 | + gtk_container_border_width(GTK_CONTAINER(fs), 4); | |
79 | +#endif | |
80 | } | |
81 | else | |
82 | gtk_window_set_title(GTK_WINDOW(gui.filedlg), (const gchar *)title); | |
83 | @@ -1319,18 +1356,41 @@ | |
84 | if (dflt != NULL && *dflt != NUL | |
85 | && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL) | |
86 | STRCAT(dirbuf, dflt); | |
87 | - | |
88 | +#if !defined(HAVE_FILECHOOSER) | |
89 | gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg), | |
90 | (const gchar *)dirbuf); | |
91 | +#else | |
92 | + | |
93 | + if((dirbuf[STRLEN(dirbuf) - 1]) == '/') | |
94 | + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fs), | |
95 | + (const gchar *)dirbuf); | |
96 | + else | |
97 | + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(fs), | |
98 | + (const gchar *)dirbuf); | |
99 | +#endif | |
100 | + | |
101 | # ifndef HAVE_GTK2 | |
102 | gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin), | |
103 | GTK_WIDGET(gui.filedlg), VW_POS_MOUSE); | |
104 | # endif | |
105 | ||
106 | +#if !defined(HAVE_FILECHOOSER) | |
107 | gtk_widget_show(gui.filedlg); | |
108 | while (gui.filedlg && GTK_WIDGET_DRAWABLE(gui.filedlg)) | |
109 | gtk_main_iteration_do(TRUE); | |
110 | +#else | |
111 | + if (gui.browse_fname != NULL) { | |
112 | + g_free(gui.browse_fname); | |
113 | + gui.browse_fname = NULL; | |
114 | + } | |
115 | + | |
116 | + if (gtk_dialog_run(GTK_DIALOG(fs)) == GTK_RESPONSE_ACCEPT) | |
117 | + gui.browse_fname = gtk_file_chooser_get_filename( | |
118 | + GTK_FILE_CHOOSER(fs)); | |
119 | ||
120 | + gtk_widget_destroy(GTK_WIDGET(fs)); | |
121 | + gui.filedlg = NULL; | |
122 | +#endif | |
123 | if (gui.browse_fname == NULL) | |
124 | return NULL; | |
125 |