summaryrefslogtreecommitdiff
path: root/src/Fl_Native_File_Chooser_common.cxx
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2010-01-13 23:13:59 +0000
committerGreg Ercolano <erco@seriss.com>2010-01-13 23:13:59 +0000
commit1de0988c317c7b916daa7b4f102f0889e026c77d (patch)
treee479de5817a0d0388e1f4c1a62db018ea9f2981f /src/Fl_Native_File_Chooser_common.cxx
parent139c88c618ae6a186c59bde73e05ea93caa3e297 (diff)
Added Fl_Native_File_Chooser widget (with manolo's cocoa mods) to FLTK.
* Source brought into CMP standards compliance * test program added (test/native-filechooser.cxx) * Tested with linux (Ubuntu8) and with OSX (cocoa and non-cocoa builds) TODO: * Needs doxygen docs from Greg's original HTML documentation * Needs mods to Windows build files * Needs mods to cmake, and other build files * Needs Manolo's latest mods (from STR #2298) mentioned on and after "02:05 Jan 13, 2010" git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6997 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Native_File_Chooser_common.cxx')
-rw-r--r--src/Fl_Native_File_Chooser_common.cxx83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/Fl_Native_File_Chooser_common.cxx b/src/Fl_Native_File_Chooser_common.cxx
new file mode 100644
index 000000000..4eefcad14
--- /dev/null
+++ b/src/Fl_Native_File_Chooser_common.cxx
@@ -0,0 +1,83 @@
+// "$Id$"
+//
+// FLTK native OS file chooser widget
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 2004 Greg Ercolano.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <string.h>
+#include <FL/Enumerations.H>
+
+// COPY A STRING WITH 'new'
+// Value can be NULL
+//
+static char *strnew(const char *val) {
+ if ( val == NULL ) return(NULL);
+ char *s = new char[strlen(val)+1];
+ strcpy(s, val);
+ return(s);
+}
+
+// FREE STRING CREATED WITH strnew(), NULLS OUT STRING
+// Value can be NULL
+//
+static char *strfree(char *val) {
+ if ( val ) delete [] val;
+ return(NULL);
+}
+
+// 'DYNAMICALLY' APPEND ONE STRING TO ANOTHER
+// Returns newly allocated string, or NULL
+// if s && val == NULL.
+// 's' can be NULL; returns a strnew(val).
+// 'val' can be NULL; s is returned unmodified.
+//
+// Usage:
+// char *s = strnew("foo"); // s = "foo"
+// s = strapp(s, "bar"); // s = "foobar"
+//
+static char *strapp(char *s, const char *val) {
+ if ( ! val ) {
+ return(s); // Nothing to append? return s
+ }
+ if ( ! s ) {
+ return(strnew(val)); // New string? return copy of val
+ }
+ char *news = new char[strlen(s)+strlen(val)+1];
+ strcpy(news, s);
+ strcat(news, val);
+ delete [] s; // delete old string
+ return(news); // return new copy
+}
+
+// APPEND A CHARACTER TO A STRING
+// This does NOT allocate space for the new character.
+//
+static void chrcat(char *s, char c) {
+ char tmp[2] = { c, '\0' };
+ strcat(s, tmp);
+}
+
+//
+// End of "$Id:".
+//