summaryrefslogtreecommitdiff
path: root/src/Fl_Native_File_Chooser_GTK.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-01 18:03:10 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-06 20:28:20 +0200
commitf09e17c3c564e8310125a10c03397cbf473ff643 (patch)
tree8d0fd4a28e3686c33aaa140d07ddba26ab28bdc2 /src/Fl_Native_File_Chooser_GTK.cxx
parentb0e0c355edaa2e23148cb0260ada907aec930f05 (diff)
Remove $Id$ tags, update URL's, and more
- remove obsolete svn '$Id$' tags from all source files - update .fl files and generated files accordingly - replace 'http://www.fltk.org' URL's with 'https://...' - replace bug report URL 'str.php' with 'bugs.php' - remove trailing whitespace - fix other whitespace errors flagged by Git - add and/or fix missing or wrong standard headers - convert tabs to spaces in all source files The only relevant code changes are in the fluid/ folder where some .fl files and other source files were used to generate the '$Id' headers and footers.
Diffstat (limited to 'src/Fl_Native_File_Chooser_GTK.cxx')
-rw-r--r--src/Fl_Native_File_Chooser_GTK.cxx117
1 files changed, 56 insertions, 61 deletions
diff --git a/src/Fl_Native_File_Chooser_GTK.cxx b/src/Fl_Native_File_Chooser_GTK.cxx
index 4195ef9bf..4de7343b6 100644
--- a/src/Fl_Native_File_Chooser_GTK.cxx
+++ b/src/Fl_Native_File_Chooser_GTK.cxx
@@ -1,6 +1,5 @@
-// "$Id$"
//
-// FLTK native file chooser widget wrapper for GTK's GtkFileChooserDialog
+// FLTK native file chooser widget wrapper for GTK's GtkFileChooserDialog
//
// Copyright 1998-2018 by Bill Spitzak and others.
// Copyright 2012 IMM
@@ -9,11 +8,11 @@
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
-// http://www.fltk.org/COPYING.php
+// https://www.fltk.org/COPYING.php
//
-// Please report all bugs and problems to:
+// Please see the following page on how to report bugs and issues:
//
-// http://www.fltk.org/str.php
+// https://www.fltk.org/bugs.php
//
#include "config_lib.h"
@@ -31,11 +30,11 @@
/* --------------------- Type definitions from GLIB and GTK --------------------- */
/* all of this is from the public gnome API, so unlikely to change */
-#ifndef FALSE
-#define FALSE (0)
+#ifndef FALSE
+#define FALSE (0)
#endif
-#ifndef TRUE
-#define TRUE (!FALSE)
+#ifndef TRUE
+#define TRUE (!FALSE)
#endif
typedef void* gpointer;
typedef int gint;
@@ -49,7 +48,7 @@ struct _GSList
gpointer data;
GSList *next;
};
-#define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL)
+#define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL)
typedef struct _GtkWidget GtkWidget;
typedef struct _GtkFileChooser GtkFileChooser;
typedef struct _GtkDialog GtkDialog;
@@ -69,7 +68,7 @@ typedef enum {
struct _GtkFileFilterInfo
{
GtkFileFilterFlags contains;
-
+
const gchar *filename;
const gchar *uri;
const gchar *display_name;
@@ -93,10 +92,10 @@ const int GTK_RESPONSE_ACCEPT = -3;
const int GTK_RESPONSE_DELETE_EVENT = -4;
const int GTK_RESPONSE_CANCEL = -6;
typedef void (*GCallback)(void);
-#define G_CALLBACK(f) ((GCallback) (f))
+#define G_CALLBACK(f) ((GCallback) (f))
typedef int GConnectFlags;
-typedef struct _GClosure GClosure;
-typedef void (*GClosureNotify)(gpointer data, GClosure *closure);
+typedef struct _GClosure GClosure;
+typedef void (*GClosureNotify)(gpointer data, GClosure *closure);
/* --------------------- End of Type definitions from GLIB and GTK --------------------- */
@@ -123,7 +122,7 @@ private:
mutable char *gtkw_filename; // last name we read back
char *gtkw_title; // the title to be applied to the dialog
const char *previous_filter;
-
+
int fl_gtk_chooser_wrapper(); // method that wraps the GTK widget
Fl_GTK_Native_File_Chooser_Driver(int val);
virtual ~Fl_GTK_Native_File_Chooser_Driver();
@@ -137,7 +136,7 @@ private:
virtual const char* title() const;
virtual int show();
void changed_output_type(const char *filter);
-
+
static int custom_gtk_filter_function(const GtkFileFilterInfo*, Fl_GTK_Native_File_Chooser_Driver::pair*);
static void free_pair(pair *p);
Fl_Preferences gtk_chooser_prefs;
@@ -242,8 +241,8 @@ static XX_gtk_file_filter_add_pattern fl_gtk_file_filter_add_pattern = NULL;
// void gtk_file_filter_add_custom(GtkFileFilter *filter, GtkFileFilterFlags needed,
// GtkFileFilterFunc func, gpointer data, GDestroyNotify notify);
typedef void (*XX_gtk_file_filter_add_custom)(GtkFileFilter *filter, GtkFileFilterFlags needed,
- GtkFileFilterFunc func, gpointer data,
- GDestroyNotify notify);
+ GtkFileFilterFunc func, gpointer data,
+ GDestroyNotify notify);
static XX_gtk_file_filter_add_custom fl_gtk_file_filter_add_custom = NULL;
// void gtk_file_filter_set_name(GtkFileFilter*, const gchar*);
@@ -355,7 +354,7 @@ int Fl_GTK_Native_File_Chooser_Driver::have_looked_for_GTK_libs = 0;
Fl_GTK_Native_File_Chooser_Driver::Fl_GTK_Native_File_Chooser_Driver(int val) : Fl_Native_File_Chooser_FLTK_Driver(-1),
gtk_chooser_prefs(Fl_Preferences::USER, "fltk.org", "fltk/GTK-file-chooser")
{
- gtkw_ptr = NULL; // used to hold a GtkWidget*
+ gtkw_ptr = NULL; // used to hold a GtkWidget*
gtkw_slist = NULL; // will hold the returned file names in a multi-selection...
gtkw_count = 0; // How many items were selected?
gtkw_filename = NULL; // holds the last name we read back in a single file selection...
@@ -368,7 +367,7 @@ gtk_chooser_prefs(Fl_Preferences::USER, "fltk.org", "fltk/GTK-file-chooser")
Fl_GTK_Native_File_Chooser_Driver::~Fl_GTK_Native_File_Chooser_Driver()
{
// Should free up resources taken for...
- if(gtkw_ptr) {
+ if(gtkw_ptr) {
fl_gtk_widget_destroy (gtkw_ptr);
gtkw_ptr = NULL;
}
@@ -456,7 +455,7 @@ void Fl_GTK_Native_File_Chooser_Driver::changed_output_type(const char *filter)
delete[] r;
}
-/* Filters files before display in chooser.
+/* Filters files before display in chooser.
Also used to detect when the filter just changed */
gboolean Fl_GTK_Native_File_Chooser_Driver::custom_gtk_filter_function(const GtkFileFilterInfo *info, Fl_GTK_Native_File_Chooser_Driver::pair* p)
{
@@ -557,10 +556,10 @@ static void update_preview_cb(GtkFileChooser *file_chooser, GtkImage* gtkimg)
Fl_Shared_Image *img = NULL;
char *preview_text = NULL;
char *filename = NULL;
-
+
fl_gtk_widget_set_sensitive(plus_button, false);
fl_gtk_widget_set_sensitive(minus_button, false);
-
+
if (Fl_GTK_Native_File_Chooser_Driver::want_preview) filename = fl_gtk_file_chooser_get_preview_filename(file_chooser); // 2.4
if (filename) {
if (!fl_filename_isdir(filename)) {
@@ -640,7 +639,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
fl_gtk_widget_destroy (gtkw_ptr);
gtkw_ptr = NULL;
}
-
+
// set the dialog action type
GtkFileChooserAction gtw_action_type;
switch (_btype) {
@@ -648,15 +647,15 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
case Fl_Native_File_Chooser::BROWSE_MULTI_DIRECTORY:
gtw_action_type = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
break;
-
+
case Fl_Native_File_Chooser::BROWSE_SAVE_FILE:
gtw_action_type = GTK_FILE_CHOOSER_ACTION_SAVE;
break;
-
+
case Fl_Native_File_Chooser::BROWSE_SAVE_DIRECTORY:
gtw_action_type = GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER;
break;
-
+
case Fl_Native_File_Chooser::BROWSE_MULTI_FILE:
case Fl_Native_File_Chooser::BROWSE_FILE:
default:
@@ -665,26 +664,26 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
}
// create a new dialog
gtkw_ptr = fl_gtk_file_chooser_dialog_new (gtkw_title,
- NULL, /* parent_window */
- gtw_action_type,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- gtw_action_type == GTK_FILE_CHOOSER_ACTION_SAVE || gtw_action_type == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER ?
- GTK_STOCK_SAVE : GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
- NULL);
+ NULL, /* parent_window */
+ gtw_action_type,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ gtw_action_type == GTK_FILE_CHOOSER_ACTION_SAVE || gtw_action_type == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER ?
+ GTK_STOCK_SAVE : GTK_STOCK_OPEN,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
// did we create a valid dialog widget?
if(!gtkw_ptr) {
// fail
return -1;
}
-
+
// set the dialog properties
switch (_btype) {
case Fl_Native_File_Chooser::BROWSE_MULTI_DIRECTORY:
case Fl_Native_File_Chooser::BROWSE_MULTI_FILE:
fl_gtk_file_chooser_set_select_multiple((GtkFileChooser *)gtkw_ptr, TRUE);
break;
-
+
case Fl_Native_File_Chooser::BROWSE_SAVE_FILE:
if (_preset_file)fl_gtk_file_chooser_set_current_name ((GtkFileChooser *)gtkw_ptr, fl_filename_name(_preset_file));
/* FALLTHROUGH */
@@ -692,13 +691,13 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
fl_gtk_file_chooser_set_create_folders((GtkFileChooser *)gtkw_ptr, TRUE);
fl_gtk_file_chooser_set_do_overwrite_confirmation ((GtkFileChooser *)gtkw_ptr, (_options & Fl_Native_File_Chooser::SAVEAS_CONFIRM)?TRUE:FALSE);
break;
-
+
case Fl_Native_File_Chooser::BROWSE_DIRECTORY:
case Fl_Native_File_Chooser::BROWSE_FILE:
default:
break;
}
-
+
if (_directory && _directory[0]) {
p = extract_dir_from_path(_directory);
if (p) fl_gtk_file_chooser_set_current_folder((GtkFileChooser *)gtkw_ptr, p);
@@ -707,7 +706,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
p = extract_dir_from_path(_preset_file);
if (p) fl_gtk_file_chooser_set_current_folder((GtkFileChooser *)gtkw_ptr, p);
}
-
+
GtkFileFilter **filter_tab = NULL;
if (_parsedfilt) {
filter_tab = new GtkFileFilter*[_nfilters];
@@ -719,11 +718,11 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
fl_gtk_file_filter_set_name(filter_tab[count], p);
p = strchr(p, '(') + 1;
char *q = strchr(p, ')'); *q = 0;
- fl_gtk_file_filter_add_custom(filter_tab[count],
- GTK_FILE_FILTER_FILENAME,
- (GtkFileFilterFunc)Fl_GTK_Native_File_Chooser_Driver::custom_gtk_filter_function,
- new Fl_GTK_Native_File_Chooser_Driver::pair(this, p),
- (GDestroyNotify)Fl_GTK_Native_File_Chooser_Driver::free_pair);
+ fl_gtk_file_filter_add_custom(filter_tab[count],
+ GTK_FILE_FILTER_FILENAME,
+ (GtkFileFilterFunc)Fl_GTK_Native_File_Chooser_Driver::custom_gtk_filter_function,
+ new Fl_GTK_Native_File_Chooser_Driver::pair(this, p),
+ (GDestroyNotify)Fl_GTK_Native_File_Chooser_Driver::free_pair);
fl_gtk_file_chooser_add_filter((GtkFileChooser *)gtkw_ptr, filter_tab[count]);
p = strtok(NULL, "\t");
count++;
@@ -738,7 +737,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
fl_gtk_file_chooser_add_filter((GtkFileChooser *)gtkw_ptr, gfilter);
}
}
-
+
// extra buttons "Show hidden" [+ "Preview" before it if fl_register_images() was called]
GtkWidget *show_hidden_button = fl_gtk_check_button_new_with_label(Fl_File_Chooser::hidden_label);
fl_g_signal_connect_data(show_hidden_button, "toggled", G_CALLBACK(hidden_files_cb), gtkw_ptr, NULL, (GConnectFlags) 0);
@@ -760,7 +759,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
minus_button = fl_gtk_button_new_with_label(">---<");
fl_g_signal_connect_data(minus_button, "clicked", G_CALLBACK(minus_cb), preview, NULL, (GConnectFlags) 0);
fl_gtk_table_attach_defaults(table, minus_button, 2,3, 0, 1);
-
+
fl_gtk_table_attach_defaults(table, show_hidden_button, 3, 4, 0, 1);
extra = (GtkWidget*)table;
}
@@ -775,7 +774,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
}
gboolean state = fl_gtk_file_chooser_get_show_hidden((GtkFileChooser *)gtkw_ptr);
fl_gtk_toggle_button_set_active((GtkToggleButton *)show_hidden_button, state);
-
+
gint response_id = GTK_RESPONSE_NONE;
fl_g_signal_connect_data(gtkw_ptr, "response", G_CALLBACK(run_response_handler), &response_id, NULL, (GConnectFlags) 0);
while (response_id == GTK_RESPONSE_NONE) { // loop that shows the GTK dialog window
@@ -790,16 +789,16 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
if ( xevent.type == Expose || xevent.type == ConfigureNotify ) fl_handle(xevent);
}
Fl::flush(); // do the drawings needed after Expose events
- }
-
+ }
+
if (response_id == GTK_RESPONSE_ACCEPT) {
if (_parsedfilt) {
GtkFileFilter *gfilter = fl_gtk_file_chooser_get_filter((GtkFileChooser *)gtkw_ptr);
for (_filtvalue = 0; _filtvalue < _nfilters; _filtvalue++) {
- if (filter_tab[_filtvalue] == gfilter) break;
+ if (filter_tab[_filtvalue] == gfilter) break;
}
}
-
+
// discard any filenames or lists from previous calls
if(gtkw_filename) {
fl_g_free(gtkw_filename);
@@ -815,7 +814,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
gtkw_slist = NULL;
}
gtkw_count = 0; // assume we have no files selected now
-
+
if(fl_gtk_file_chooser_get_select_multiple((GtkFileChooser *)gtkw_ptr) == FALSE) {
gtkw_filename = fl_gtk_file_chooser_get_filename ((GtkFileChooser *)gtkw_ptr);
if (gtkw_filename) {
@@ -828,7 +827,7 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
gtkw_slist = fl_gtk_file_chooser_get_filenames((GtkFileChooser *)gtkw_ptr);
gtkw_count = fl_g_slist_length((GSList *)gtkw_slist);
if(gtkw_count) result = 0;
-
+
// puts("multiple");
// GSList *iter = (GSList *)gtkw_slist;
// printf ("Selected %d files\n", gtkw_count);
@@ -842,11 +841,11 @@ int Fl_GTK_Native_File_Chooser_Driver::fl_gtk_chooser_wrapper()
delete[] filter_tab;
if ( response_id == GTK_RESPONSE_DELETE_EVENT) gtkw_ptr = NULL;
else fl_gtk_widget_hide (gtkw_ptr);
-
+
// I think this is analogus to doing an Fl::check() - we need this here to make sure
// the GtkFileChooserDialog is removed from the display correctly
- while (fl_gtk_events_pending ()) fl_gtk_main_iteration ();
-
+ while (fl_gtk_events_pending ()) fl_gtk_main_iteration ();
+
return result;
} // fl_gtk_chooser_wrapper
@@ -926,7 +925,7 @@ void Fl_GTK_Native_File_Chooser_Driver::probe_for_GTK_libs(void) {
GET_SYM(gtk_file_chooser_set_show_hidden, ptr_gtk);
GET_SYM(gtk_file_chooser_get_show_hidden, ptr_gtk);
GET_SYM(gtk_toggle_button_set_active, ptr_gtk);
-
+
did_find_GTK_libs = 1;
} // probe_for_GTK_libs
@@ -949,7 +948,3 @@ Fl_Native_File_Chooser::Fl_Native_File_Chooser(int val) {
}
#endif // FL_CFG_WIN_X11
-
-//
-// End of "$Id$".
-//