Add fl_open_uri() function as discussed on fltk.development.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5579 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2007-01-04 14:53:54 +00:00
parent e806450644
commit 5456a2b8fc
11 changed files with 508 additions and 31 deletions

View File

@ -1,8 +1,10 @@
CHANGES IN FLTK 1.1.8
- added "Fl::has_check()" which previously was prototyped
- Added fl_open_uri() function as proposed on
fltk.development.
- Added Fl::has_check() which previously was prototyped
and documented, but not implemented (STR #1542)
- enabled "add_check()" on OS X (STR #1534)
- Enabled Fl::add_check() on OS X (STR #1534)
- Documented tooltip inheritance (STR #1467)
- Better event mouse handling fixing detached menus and
sticky tooltips (STR #1463, STR #449)

View File

@ -111,6 +111,14 @@ typedef int (Fl_File_Sort_F)(struct dirent **, struct dirent **);
FL_EXPORT int fl_filename_list(const char *d, struct dirent ***l,
Fl_File_Sort_F *s = fl_numericsort);
/*
* Generic function to open a Uniform Resource Identifier (URI) using a
* system-defined program (added in FLTK 1.1.8)
*/
FL_EXPORT int fl_open_uri(const char *uri, char *msg = (char *)0,
int msglen = 0);
# endif /* __cplusplus */
/*

View File

@ -114,6 +114,7 @@ A</A>.
<LI><A HREF="#fl_numericsort"><TT>fl_numericsort</TT></A></LI>
<LI><A HREF="osissues.html#fl_open_callback"><TT>fl_open_callback</TT></A></LI>
<LI><A HREF="osissues.html#fl_open_display"><TT>fl_open_display</TT></A></LI>
<LI><A HREF="#fl_open_uri"><TT>fl_open_uri</TT></A></LI>
<LI><A HREF="drawing.html#overlay"><TT>fl_overlay_clear</TT></A></LI>
<LI><A HREF="drawing.html#overlay"><TT>fl_overlay_rect</TT></A></LI>
<LI><A HREF="osissues.html#fl_parse_color"><TT>fl_parse_color</TT></A></LI>
@ -313,6 +314,7 @@ A</A>.
<LI><A HREF="#fl_filename_name"><TT>fl_filename_name</TT></A></LI>
<LI><A HREF="#fl_filename_relative"><TT>fl_filename_relative</TT></A></LI>
<LI><A HREF="#fl_filename_setext"><TT>fl_filename_setext</TT></A></LI>
<LI><A HREF="#fl_open_uri"><TT>fl_open_uri</TT></A></LI>
</UL>
</LI>
@ -330,24 +332,24 @@ A</A>.
<LI>Box Types
<UL>
<LI><A HREF="common.html#fl_down"><TT>fl_down</TT></A></LI>
<LI><A HREF="drawing.html#fl_draw_box"><TT>fl_draw_box</TT></A></LI>
<LI><A HREF="common.html#fl_frame"><TT>fl_frame</TT></A></LI>
<LI><A HREF="common.html#fl_down"><TT>fl_down</TT></A></LI>
<LI><A HREF="drawing.html#fl_draw_box"><TT>fl_draw_box</TT></A></LI>
<LI><A HREF="common.html#fl_frame"><TT>fl_frame</TT></A></LI>
</UL>
<LI>System Related Functions
<UL>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_RGB</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_brush</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#fl_close_display"><TT>fl_close_display</TT></A></LI>
<LI><A HREF="osissues.html#fl_find"><TT>fl_find</TT></A></LI>
<LI><A HREF="osissues.html#fl_handle"><TT>fl_handle</TT></A> (X11)</LI>
<LI><A HREF="osissues.html#fl_open_callback"><TT>fl_open_callback</TT></A></LI>
<LI><A HREF="osissues.html#fl_open_display"><TT>fl_open_display</TT></A></LI>
<LI><A HREF="osissues.html#fl_parse_color"><TT>fl_parse_color</TT></A></LI>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_pen</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#fl_xid"><TT>fl_xid</TT></A></LI>
<LI><A HREF="osissues.html#fl_xpixel"><TT>fl_xpixel</TT></A></LI>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_RGB</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_brush</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#fl_close_display"><TT>fl_close_display</TT></A></LI>
<LI><A HREF="osissues.html#fl_find"><TT>fl_find</TT></A></LI>
<LI><A HREF="osissues.html#fl_handle"><TT>fl_handle</TT></A> (X11)</LI>
<LI><A HREF="osissues.html#fl_open_callback"><TT>fl_open_callback</TT></A></LI>
<LI><A HREF="osissues.html#fl_open_display"><TT>fl_open_display</TT></A></LI>
<LI><A HREF="osissues.html#fl_parse_color"><TT>fl_parse_color</TT></A></LI>
<LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_pen</TT></A> (WIN32)</LI>
<LI><A HREF="osissues.html#fl_xid"><TT>fl_xid</TT></A></LI>
<LI><A HREF="osissues.html#fl_xpixel"><TT>fl_xpixel</TT></A></LI>
</UL>
</td>
@ -1319,6 +1321,32 @@ popups. You can alter the font, color, label, or image before
calling the functions.
<!-- NEED 4in -->
<H2><A NAME="fl_open_uri">fl_open_uri</A></H2>
<HR>
<H3>Include Files</H3>
<UL><PRE>
#include &lt;FL/filename.H&gt;
</PRE></UL>
<H3>Prototype</H3>
<UL><PRE>
void fl_open_uri(const char *uri, char *msg = (char *)0, int msglen = 0);
</PRE></UL>
<H3>Description</H3>
<P>fl_open_uri() opens the specified Uniform Resource Identifier (URI) using an operating-system dependent program or interface. For URIs using the "ftp", "http", or "https" schemes, the system default web browser is used to open the URI, while "mailto" and "news" URIs are typically opened using the system default mail reader and "file" URIs are opened using the file system navigator.</P>
<P>On success, the (optional) <TT>msg</TT> buffer is filled with the command that was run to open the URI; on Windows, this will always be "open uri".</P>
<P>On failure, the <TT>msg</TT> buffer is filled with an English error message.</P>
<!-- NEED 4in -->
<H2><A NAME="fl_password">fl_password</A></H2>

View File

@ -107,6 +107,7 @@ SET(CPPFILES
fl_gtk.cxx
fl_labeltype.cxx
fl_line_style.cxx
fl_open_uri.cxx
fl_oval_box.cxx
fl_overlay.cxx
fl_overlay_visual.cxx

View File

@ -136,6 +136,7 @@ CPPFILES = \
fl_gtk.cxx \
fl_labeltype.cxx \
fl_line_style.cxx \
fl_open_uri.cxx \
fl_oval_box.cxx \
fl_overlay.cxx \
fl_overlay_visual.cxx \

365
src/fl_open_uri.cxx Normal file
View File

@ -0,0 +1,365 @@
//
// "$Id$"
//
// fl_open_uri() code for FLTK.
//
// Test with:
//
// gcc -I/fltk/dir -I/fltk/dir/src -DTEST -o fl_open_uri fl_open_uri.cxx -lfltk
//
// Copyright 2003-2007 by Michael R Sweet
//
// 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.
//
//
// Include necessary headers...
//
#include <FL/filename.H>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "flstring.h"
#ifdef WIN32
# include <windows.h>
#else
# include <signal.h>
# include <fcntl.h>
# include <unistd.h>
#endif // WIN32
//
// Local functions...
//
#ifndef WIN32
static char *path_find(const char *program, char *filename, int filesize);
static int run_program(const char *program, char **argv, char *msg, int msglen);
#endif // !WIN32
/**
* Open the specified URI.
*
* fl_open_uri() opens the specified Uniform Resource Identifier (URI)
* using an operating-system dependent program or interface. For URIs
* using the "ftp", "http", or "https" schemes, the system default web
* browser is used to open the URI, while "mailto" and "news" URIs are
* typically opened using the system default mail reader and "file" URIs
* are opened using the file system navigator.
*
* On success, the (optional) msg buffer is filled with the command that
* was run to open the URI; on Windows, this will always be "open uri".
*
* On failure, the msg buffer is filled with an English error message.
*
* @param uri The URI to open
* @param msg Optional buffer which contains the command or error message
* @param msglen Length of optional buffer
* @return 1 on success, 0 on failure
*/
int
fl_open_uri(const char *uri, char *msg, int msglen) {
// Supported URI schemes...
static const char * const schemes[] = {
"file://",
"ftp://",
"http://",
"https://",
"mailto:",
"news://",
NULL
};
// Validate the URI scheme...
int i;
for (i = 0; schemes[i]; i ++)
if (!strncmp(uri, schemes[i], strlen(schemes[i])))
break;
if (!schemes[i]) {
if (msg) {
char scheme[255];
if (sscanf(uri, "%254[^:]", scheme) == 1) {
snprintf(msg, msglen, "URI scheme \"%s\" not supported.", scheme);
} else {
snprintf(msg, msglen, "Bad URI \"%s\"", uri);
}
}
return 0;
}
#ifdef WIN32
if (msg) snprintf(msg, msglen, "open %s", uri);
ShellExecute(HWND_DESKTOP, "open", uri, NULL, NULL, SW_SHOW);
#elif defined(__APPLE__)
char *argv[3]; // Command-line arguments
argv[0] = "open";
argv[1] = (char *)uri;
argv[2] = 0;
if (msg) snprintf(msg, msglen, "open %s", uri);
return run_program("/usr/bin/open", argv, msg, msglen) != 0;
#else // !WIN32 && !__APPLE__
// Run any of several well-known commands to open the URI.
//
// We give preference to the Portland group's xdg-utils
// programs which run the user's preferred web browser, etc.
// based on the current desktop environment in use. We fall
// back on older standards and then finally test popular programs
// until we find one we can use.
//
// Note that we specifically do not support the MAILER and
// BROWSER environment variables because we have no idea whether
// we need to run the listed commands in a terminal program.
char command[1024], // Command to run...
*argv[4], // Command-line arguments
remote[1024]; // Remote-mode command...
const char * const *commands; // Array of commands to check...
static const char * const browsers[] = {
"xdg-open", // Portland
"htmlview", // Freedesktop.org
"firefox",
"mozilla",
"netscape",
"konqueror", // KDE
"opera",
"hotjava", // Solaris
"mosaic",
NULL
};
static const char * const readers[] = {
"xdg-email", // Portland
"thunderbird",
"mozilla",
"netscape",
"evolution", // GNOME
"kmailservice", // KDE
NULL
};
static const char * const managers[] = {
"xdg-open", // Portland
"fm", // IRIX
"dtaction", // CDE
"nautilus", // GNOME
"konqueror", // KDE
NULL
};
// Figure out which commands to check for...
if (!strncmp(uri, "file://", 7)) commands = managers;
else if (!strncmp(uri, "mailto:", 7) ||
!strncmp(uri, "news:", 5)) commands = readers;
else commands = browsers;
// Find the command to run...
for (i = 0; commands[i]; i ++)
if (path_find(commands[i], command, sizeof(command))) break;
if (!commands[i]) {
if (msg) {
snprintf(msg, msglen, "No helper application found for \"%s\"", uri);
}
return 0;
}
// Handle command-specific arguments...
argv[0] = (char *)commands[i];
if (!strcmp(commands[i], "firefox") ||
!strcmp(commands[i], "mozilla") ||
!strcmp(commands[i], "netscape") ||
!strcmp(commands[i], "thunderbird")) {
// program -remote openURL(uri)
snprintf(remote, sizeof(remote), "openURL(%s)", uri);
argv[1] = (char *)"-remote";
argv[2] = remote;
argv[3] = 0;
} else if (!strcmp(commands[i], "dtaction")) {
// dtaction open uri
argv[1] = (char *)"open";
argv[2] = (char *)uri;
argv[3] = 0;
} else {
// program uri
argv[1] = (char *)uri;
argv[2] = 0;
}
if (msg) {
strlcpy(msg, argv[0], msglen);
for (i = 1; argv[i]; i ++) {
strlcat(msg, " ", msglen);
strlcat(msg, argv[i], msglen);
}
}
return run_program(command, argv, msg, msglen) != 0;
#endif // WIN32
}
#ifndef WIN32
// Find a program in the path...
static char *path_find(const char *program, char *filename, int filesize) {
const char *path; // Search path
char *ptr, // Pointer into filename
*end; // End of filename buffer
if ((path = getenv("PATH")) == NULL) path = "/bin:/usr/bin";
for (ptr = filename, end = filename + filesize - 1; *path; path ++) {
if (*path == ':') {
if (ptr > filename && ptr[-1] != '/' && ptr < end) *ptr++ = '/';
strlcpy(ptr, program, end - ptr + 1);
if (!access(filename, X_OK)) return filename;
ptr = filename;
} else if (ptr < end) *ptr++ = *path;
}
if (ptr > filename) {
if (ptr[-1] != '/' && ptr < end) *ptr++ = '/';
strlcpy(ptr, program, end - ptr + 1);
if (!access(filename, X_OK)) return filename;
}
return 0;
}
// Run the specified program, returning 1 on success and 0 on failure
static int
run_program(const char *program, char **argv, char *msg, int msglen) {
pid_t pid; // Process ID of first child
int status; // Exit status from first child
sigset_t set, oldset; // Signal masks
// Block SIGCHLD while we run the program...
//
// Note that I only use the POSIX signal APIs, however older operating
// systems may either not support POSIX signals or have side effects.
// IRIX, for example, provides three separate and incompatible signal
// APIs, so it is possible that an application setting a signal handler
// via signal() or sigset() will not have its SIGCHLD signals blocked...
sigemptyset(&set);
sigaddset(&set, SIGCHLD);
sigprocmask(SIG_BLOCK, &set, &oldset);
// Create child processes that actually run the program for us...
if ((pid = fork()) == 0) {
// First child comes here, fork a second child and exit...
if (!fork()) {
// Second child comes here, redirect stdin/out/err to /dev/null...
close(0);
open("/dev/null", O_RDONLY);
close(1);
open("/dev/null", O_WRONLY);
close(2);
open("/dev/null", O_WRONLY);
// Detach from the current process group...
setsid();
// Run the program...
execv(program, argv);
_exit(0);
} else {
// First child gets here, exit immediately...
_exit(0);
}
} else if (pid < 0) {
// Restore signal handling...
sigprocmask(SIG_SETMASK, &oldset, NULL);
// Return indicating failure...
return 0;
}
// Wait for the first child to exit...
while (waitpid(pid, &status, 0) < 0) {
if (errno != EINTR) {
// Someone else grabbed the child status...
if (msg) snprintf(msg, msglen, "waitpid(%ld) failed: %s", (long)pid,
strerror(errno));
// Restore signal handling...
sigprocmask(SIG_SETMASK, &oldset, NULL);
// Return indicating failure...
return 0;
}
}
// Restore signal handling...
sigprocmask(SIG_SETMASK, &oldset, NULL);
// Return indicating success...
return 1;
}
#endif // !WIN32
#ifdef TEST
//
// Test code...
//
// Open the URI on the command-line...
int main(int argc, char **argv) {
char msg[1024];
if (argc != 2) {
puts("Usage: fl_open_uri URI");
return 1;
}
if (!fl_open_uri(argv[1], msg, sizeof(msg))) {
puts(msg);
return 1;
} else return 0;
}
#endif // TEST
//
// End of "$Id$".
//

View File

@ -43,7 +43,8 @@ Fl_Check_Button.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
Fl_Check_Button.o: ../FL/Fl_Button.H ../FL/Fl_Widget.H
Fl_Choice.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Choice.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H
Fl_Choice.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
Fl_Choice.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H flstring.h
Fl_Choice.o: ../FL/Fl_Export.H ../config.h
Fl_Clock.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Clock.o: ../FL/Fl_Clock.H ../FL/Fl_Widget.H ../FL/fl_draw.H
Fl_Color_Chooser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
@ -113,12 +114,14 @@ Fl_Help_View.o: ../FL/Fl_Help_View.H ../FL/Fl.H ../FL/Enumerations.H
Fl_Help_View.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
Fl_Help_View.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Help_View.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
Fl_Help_View.o: ../FL/Fl_Pixmap.H flstring.h ../FL/Fl_Export.H ../config.h
Fl_Help_View.o: ../FL/Fl_Window.H ../FL/Fl_Pixmap.H flstring.h
Fl_Help_View.o: ../FL/Fl_Export.H ../config.h
Fl_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H
Fl_Image.o: ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Widget.H
Fl_Image.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
Fl_Image.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
Fl_Input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Input.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
Fl_Input.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H ../FL/fl_ask.H
Fl_Input.o: flstring.h ../FL/Fl_Export.H ../config.h
Fl_Input_.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
@ -127,11 +130,13 @@ Fl_Input_.o: ../FL/Fl_Group.H ../FL/fl_draw.H ../FL/fl_ask.H flstring.h
Fl_Input_.o: ../FL/Fl_Export.H ../config.h
Fl_Light_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Light_Button.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
Fl_Light_Button.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
Fl_Light_Button.o: ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h
Fl_Light_Button.o: ../FL/Fl_Export.H ../config.h
Fl_Menu.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Menu.o: ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H
Fl_Menu.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
Fl_Menu.o: ../FL/Fl_Image.H ../FL/fl_draw.H
Fl_Menu.o: ../FL/Fl_Image.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H
Fl_Menu.o: ../config.h
Fl_Menu_.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Menu_.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
Fl_Menu_.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
@ -189,7 +194,8 @@ Fl_Scroll.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
Fl_Scroll.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
Fl_Scrollbar.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Scrollbar.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Scrollbar.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
Fl_Scrollbar.o: ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h
Fl_Scrollbar.o: ../FL/Fl_Export.H ../config.h
Fl_Shared_Image.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
Fl_Shared_Image.o: ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Shared_Image.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
@ -198,9 +204,10 @@ Fl_Shared_Image.o: ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H
Fl_Single_Window.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H
Fl_Slider.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Slider.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
Fl_Slider.o: ../FL/fl_draw.H
Fl_Slider.o: ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
Fl_Tabs.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Tabs.H
Fl_Tabs.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H
Fl_Tabs.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H
Fl_Text_Buffer.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
Fl_Text_Buffer.o: ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Text_Buffer.o: ../FL/Fl_Text_Buffer.H
@ -211,9 +218,9 @@ Fl_Text_Display.o: ../FL/fl_draw.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
Fl_Text_Display.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Text_Display.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Window.H
Fl_Text_Editor.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
Fl_Text_Editor.o: ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Text_Editor.o: ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H
Fl_Text_Editor.o: ../FL/fl_draw.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
Fl_Text_Editor.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
Fl_Text_Editor.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Text_Editor.H
Fl_Text_Editor.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H
Fl_Text_Editor.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Text_Editor.o: ../FL/Fl_Text_Buffer.H ../FL/fl_ask.H
Fl_Tile.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Tile.H
@ -286,7 +293,8 @@ Fl_visual.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_visual.o: ../FL/x.H ../FL/Fl_Window.H
Fl_x.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
Fl_x.o: ../FL/Fl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
Fl_x.o: ../FL/Fl_Widget.H flstring.h ../FL/Fl_Export.H ../config.h
Fl_x.o: ../FL/Fl_Widget.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H flstring.h
Fl_x.o: ../FL/Fl_Export.H ../config.h
filename_absolute.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H
filename_absolute.o: ../config.h
filename_expand.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
@ -318,7 +326,7 @@ fl_diamond_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_diamond_box.o: ../FL/fl_draw.H
fl_dnd.o: fl_dnd_x.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_dnd.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H
fl_dnd.o: ../FL/Fl_Window.H
fl_dnd.o: ../FL/Fl_Window.H flstring.h ../FL/Fl_Export.H ../config.h
fl_draw.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_draw.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
fl_draw_image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
@ -328,6 +336,12 @@ fl_draw_image.o: ../FL/Fl_Export.H
fl_draw_pixmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_draw_pixmap.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H flstring.h
fl_draw_pixmap.o: ../FL/Fl_Export.H ../config.h
fl_encoding_latin1.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_encoding_latin1.o: ../FL/Enumerations.H flstring.h ../FL/Fl_Export.H
fl_encoding_latin1.o: ../config.h
fl_encoding_mac_roman.o: ../FL/fl_draw.H ../FL/Enumerations.H
fl_encoding_mac_roman.o: ../FL/Fl_Export.H ../FL/Enumerations.H flstring.h
fl_encoding_mac_roman.o: ../FL/Fl_Export.H ../config.h
fl_engraved_label.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_engraved_label.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
fl_file_dir.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/filename.H
@ -345,13 +359,15 @@ fl_file_dir.o: ../FL/Fl_Button.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H
fl_file_dir.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
fl_font.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
fl_font.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H
fl_font.o: ../FL/Fl_Window.H Fl_Font.H fl_font_x.cxx
fl_font.o: ../FL/Fl_Window.H Fl_Font.H fl_font_xft.cxx
fl_gtk.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H
fl_labeltype.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_labeltype.o: ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/fl_draw.H
fl_labeltype.o: ../FL/Fl_Image.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
fl_line_style.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_line_style.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H flstring.h
fl_line_style.o: ../FL/Fl_Export.H ../config.h
fl_open_uri.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
fl_oval_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_oval_box.o: ../FL/fl_draw.H
fl_overlay.o: ../FL/x.H ../FL/Enumerations.H ../FL/Fl_Export.H
@ -369,13 +385,14 @@ fl_round_box.o: ../FL/fl_draw.H
fl_rounded_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_rounded_box.o: ../FL/fl_draw.H
fl_set_font.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
fl_set_font.o: ../FL/Fl_Window.H flstring.h ../FL/Fl_Export.H ../config.h
fl_set_font.o: Fl_Font.H
fl_set_font.o: ../FL/Fl_Window.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H
fl_set_font.o: ../config.h Fl_Font.H
fl_set_fonts.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
fl_set_fonts.o: ../FL/Fl_Window.H Fl_Font.H ../config.h flstring.h
fl_set_fonts.o: ../FL/Fl_Export.H fl_set_fonts_x.cxx
fl_set_fonts.o: ../FL/Fl_Export.H fl_set_fonts_xft.cxx
fl_scroll_area.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
fl_scroll_area.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H
fl_scroll_area.o: ../FL/fl_draw.H
fl_shadow_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fl_shadow_box.o: ../FL/fl_draw.H
fl_shortcut.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H

View File

@ -1515,6 +1515,26 @@
PreprocessorDefinitions=""/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\fl_open_uri.cxx">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
FavorSizeOrSpeed="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\fl_oval_box.cxx">
<FileConfiguration

View File

@ -1550,6 +1550,24 @@
PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\fl_open_uri.cxx">
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\fl_oval_box.cxx">
<FileConfiguration

View File

@ -375,6 +375,10 @@ SOURCE=..\src\Fl_Multi_Label.cxx
# End Source File
# Begin Source File
SOURCE=..\src\fl_open_uri.cxx
# End Source File
# Begin Source File
SOURCE=..\src\fl_oval_box.cxx
# End Source File
# Begin Source File

View File

@ -1487,6 +1487,19 @@ DEP_CPP_FL_MU=\
# End Source File
# Begin Source File
SOURCE=..\src\fl_open_uri.cxx
DEP_CPP_FL_AR=\
"..\fl\enumerations.h"\
"..\fl\fl_draw.h"\
"..\fl\fl_export.h"\
"..\FL\math.h"\
NODEP_CPP_FL_AR=\
"..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_oval_box.cxx
DEP_CPP_FL_OV=\
"..\fl\enumerations.h"\