Commit 6e737ce0e5762985c0b20ff093914aae018a1b4c

Authored by Perry Werneck
1 parent 008d7136
Exists in master and in 1 other branch develop

Adjustments on 'save' dialog.

Showing 2 changed files with 28 additions and 10 deletions   Show diff stats
src/dialogs/save/save.c
@@ -34,6 +34,7 @@ @@ -34,6 +34,7 @@
34 #include <lib3270/selection.h> 34 #include <lib3270/selection.h>
35 #include <clipboard.h> 35 #include <clipboard.h>
36 #include <limits.h> 36 #include <limits.h>
  37 + #include <v3270/tools.h>
37 38
38 /*--[ GTK Requires ]---------------------------------------------------------------------------------*/ 39 /*--[ GTK Requires ]---------------------------------------------------------------------------------*/
39 40
@@ -71,6 +72,7 @@ @@ -71,6 +72,7 @@
71 72
72 } 73 }
73 74
  75 +/*
74 #ifdef WIN32 76 #ifdef WIN32
75 static void icon_press(GtkEntry G_GNUC_UNUSED(*entry), G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, V3270SaveDialog *widget) 77 static void icon_press(GtkEntry G_GNUC_UNUSED(*entry), G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, V3270SaveDialog *widget)
76 { 78 {
@@ -119,7 +121,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ @@ -119,7 +121,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
119 121
120 } 122 }
121 #endif // _WIN32 123 #endif // _WIN32
122 - 124 +*/
123 125
124 static void filename_changed(GtkEntry *entry, V3270SaveDialog *dialog) 126 static void filename_changed(GtkEntry *entry, V3270SaveDialog *dialog)
125 { 127 {
@@ -139,9 +141,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ @@ -139,9 +141,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
139 g_autofree gchar * dirname = g_path_get_dirname(text); 141 g_autofree gchar * dirname = g_path_get_dirname(text);
140 g_autofree gchar * basename = g_path_get_basename(text); 142 g_autofree gchar * basename = g_path_get_basename(text);
141 143
142 - gtk_widget_set_sensitive(button,g_file_test(dirname,G_FILE_TEST_IS_DIR) && *basename && (*basename != '.'));  
143 -  
144 - debug("*************[%s]***********",basename); 144 + gtk_widget_set_sensitive(button,g_file_test(dirname,G_FILE_TEST_IS_DIR));
145 145
146 const gchar * extension = strrchr(basename,'.'); 146 const gchar * extension = strrchr(basename,'.');
147 if(!extension) 147 if(!extension)
@@ -250,10 +250,21 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ @@ -250,10 +250,21 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
250 gtk_grid_attach(grid,widget,0,0,1,1); 250 gtk_grid_attach(grid,widget,0,0,1,1);
251 gtk_label_set_mnemonic_widget(GTK_LABEL(widget),dialog->filename); 251 gtk_label_set_mnemonic_widget(GTK_LABEL(widget),dialog->filename);
252 252
  253 + /*
253 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,"document-save-as"); 254 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,"document-save-as");
254 gtk_entry_set_icon_activatable(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,TRUE); 255 gtk_entry_set_icon_activatable(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,TRUE);
255 gtk_entry_set_icon_tooltip_text(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,_("Select file")); 256 gtk_entry_set_icon_tooltip_text(GTK_ENTRY(dialog->filename),GTK_ENTRY_ICON_SECONDARY,_("Select file"));
256 g_signal_connect(G_OBJECT(dialog->filename),"icon-press",G_CALLBACK(icon_press),dialog); 257 g_signal_connect(G_OBJECT(dialog->filename),"icon-press",G_CALLBACK(icon_press),dialog);
  258 + */
  259 +
  260 + gtk_entry_bind_to_filechooser(
  261 + dialog->filename,
  262 + GTK_FILE_CHOOSER_ACTION_SAVE,
  263 + _( "Select destination file" ),
  264 + NULL,
  265 + NULL,
  266 + NULL
  267 + );
257 268
258 gtk_entry_set_width_chars(GTK_ENTRY(dialog->filename),60); 269 gtk_entry_set_width_chars(GTK_ENTRY(dialog->filename),60);
259 gtk_entry_set_max_length(GTK_ENTRY(dialog->filename),PATH_MAX); 270 gtk_entry_set_max_length(GTK_ENTRY(dialog->filename),PATH_MAX);
src/tools/entry.c
@@ -101,7 +101,8 @@ @@ -101,7 +101,8 @@
101 NULL 101 NULL
102 ); 102 );
103 103
104 - { 104 + if(descr->pattern) {
  105 +
105 GtkFileFilter *filter; 106 GtkFileFilter *filter;
106 107
107 // Standard filter 108 // Standard filter
@@ -148,7 +149,11 @@ @@ -148,7 +149,11 @@
148 ); 149 );
149 150
150 // Store data 151 // Store data
151 - gsize szEntry = sizeof(struct FileEntry) + strlen(title) + strlen(pattern) + strlen(name) + 4; 152 + gsize szEntry = sizeof(struct FileEntry) + strlen(title) + 4;
  153 +
  154 + if(pattern) {
  155 + szEntry += (strlen(pattern) + strlen(name));
  156 + }
152 struct FileEntry * entry = (struct FileEntry *) g_malloc0(szEntry); 157 struct FileEntry * entry = (struct FileEntry *) g_malloc0(szEntry);
153 gtk_widget_bind_ptr(widget,entry); 158 gtk_widget_bind_ptr(widget,entry);
154 159
@@ -171,11 +176,13 @@ @@ -171,11 +176,13 @@
171 entry->title = (const char *) (entry+1); 176 entry->title = (const char *) (entry+1);
172 strcpy((char *) entry->title,title); 177 strcpy((char *) entry->title,title);
173 178
174 - entry->pattern = entry->title + strlen(entry->title) +1;  
175 - strcpy((char *) entry->pattern,pattern); 179 + if(pattern) {
  180 + entry->pattern = entry->title + strlen(entry->title) +1;
  181 + strcpy((char *) entry->pattern,pattern);
176 182
177 - entry->name = entry->pattern + strlen(entry->pattern) + 1;  
178 - strcpy((char *) entry->name,name); 183 + entry->name = entry->pattern + strlen(entry->pattern) + 1;
  184 + strcpy((char *) entry->name,name);
  185 + }
179 186
180 g_signal_connect(widget,"icon_press",G_CALLBACK(icon_press),(gpointer) entry); 187 g_signal_connect(widget,"icon_press",G_CALLBACK(icon_press),(gpointer) entry);
181 188