summaryrefslogtreecommitdiff
path: root/src/Fl_File_Icon2.cxx
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2002-10-03 15:23:46 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2002-10-03 15:23:46 +0000
commitb6e2aceb4aa69d8eac85f8944434b4af5575985b (patch)
tree78e6c6082d938ade76a4df0fe65c4bacdb975dc8 /src/Fl_File_Icon2.cxx
parenta04d891607ceb56393cf6f4b332cc9e41012dbaf (diff)
Fix the filename pattern in FLUID for images.
Better KDE installation directory detection at run-time. Fix Fl_Preferences::entryExists(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2646 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_File_Icon2.cxx')
-rw-r--r--src/Fl_File_Icon2.cxx71
1 files changed, 50 insertions, 21 deletions
diff --git a/src/Fl_File_Icon2.cxx b/src/Fl_File_Icon2.cxx
index 78030c014..d86fa165a 100644
--- a/src/Fl_File_Icon2.cxx
+++ b/src/Fl_File_Icon2.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Icon2.cxx,v 1.1.2.16 2002/08/09 01:09:48 easysw Exp $"
+// "$Id: Fl_File_Icon2.cxx,v 1.1.2.17 2002/10/03 15:23:46 easysw Exp $"
//
// Fl_File_Icon system icon routines.
//
@@ -81,6 +81,13 @@ static char *get_kde_val(char *str, const char *key);
//
+// Local globals...
+//
+
+static const char *kdedir = NULL;
+
+
+//
// 'Fl_File_Icon::load()' - Load an icon file...
//
@@ -576,6 +583,7 @@ void
Fl_File_Icon::load_system_icons(void)
{
Fl_File_Icon *icon; // New icons
+ char filename[1024]; // Filename
static int init = 0; // Have the icons been initialized?
static short plain[] = // Plain file icon
{
@@ -649,26 +657,46 @@ Fl_File_Icon::load_system_icons(void)
// This method requires the images library...
fl_register_images();
- if (!access("/usr/share/mimelnk", F_OK))
+ if (!kdedir)
+ {
+ // Figure out where KDE is installed...
+ if ((kdedir = getenv("KDEDIR")) == NULL)
+ {
+ if (!access("/opt/kde", F_OK))
+ kdedir = "/opt/kde";
+ else if (!access("/usr/local/share/mimelnk", F_OK))
+ kdedir = "/usr/local";
+ else
+ kdedir = "/usr";
+ }
+ }
+
+ snprintf(filename, sizeof(filename), "%s/share/mimelnk", kdedir);
+
+ if (!access(filename, F_OK))
{
// Load KDE icons...
icon = new Fl_File_Icon("*", Fl_File_Icon::PLAIN);
- if (!access("/usr/share/icons/hicolor/16x16/mimetypes/unknown.png", F_OK))
- icon->load_image("/usr/share/icons/hicolor/16x16/mimetypes/unknown.png");
- else
- icon->load_image("/usr/share/icons/unknown.xpm");
+
+ snprintf(filename, sizeof(filename),
+ "%s/share/icons/hicolor/16x16/mimetypes/unknown.png", kdedir);
+
+ if (access(filename, F_OK))
+ snprintf(filename, sizeof(filename), "%s/share/icons/unknown.xpm",
+ kdedir);
+
+ icon->load_image(filename);
icon = new Fl_File_Icon("*", Fl_File_Icon::LINK);
- if (!access("/usr/share/icons/hicolor/16x16/mimetypes/unknown.png", F_OK))
- icon->load_image("/usr/share/icons/hicolor/16x16/mimetypes/unknown.png");
- else
- icon->load_image("/usr/share/icons/unknown.xpm");
- if (!access("/usr/share/icons/hicolor/16x16/filesystems/link.png", F_OK))
- icon->load_image("/usr/share/icons/hicolor/16x16/filesystems/link.png");
- else
- icon->load_image("/usr/share/icons/unknown.xpm");
- load_kde_icons("/usr/share/mimelnk");
+ snprintf(filename, sizeof(filename),
+ "%s/share/icons/hicolor/16x16/filesystems/link.png", kdedir);
+
+ if (!access(filename, F_OK))
+ icon->load_image(filename);
+
+ snprintf(filename, sizeof(filename), "%s/share/mimelnk", kdedir);
+ load_kde_icons(filename);
}
else if (!access("/usr/share/icons/folder.xpm", F_OK))
{
@@ -800,7 +828,7 @@ static void
load_kde_mimelnk(const char *filename)
{
FILE *fp;
- char tmp[256];
+ char tmp[1024];
char iconfilename[1024];
char pattern[1024];
char mimetype[1024];
@@ -829,7 +857,9 @@ load_kde_mimelnk(const char *filename)
if (iconfilename[0] && (pattern[0] || strncmp(mimetype, "inode/", 6) == 0))
{
- if (!access("/usr/share/icons/hicolor", F_OK))
+ snprintf(tmp, sizeof(tmp), "%s/share/icons/hicolor", kdedir);
+
+ if (!access(tmp, F_OK))
{
// KDE 2.x icons
int i; // Looping var
@@ -855,8 +885,7 @@ load_kde_mimelnk(const char *filename)
for (i = 0; i < (int)(sizeof(paths) / sizeof(paths[0])); i ++) {
snprintf(full_iconfilename, sizeof(full_iconfilename),
- "/usr/share/icons/hicolor/%s/%s.png", paths[i],
- iconfilename);
+ "%s/%s/%s.png", tmp, paths[i], iconfilename);
if (!access(full_iconfilename, F_OK)) break;
}
@@ -865,7 +894,7 @@ load_kde_mimelnk(const char *filename)
} else {
// KDE 1.x icons
snprintf(full_iconfilename, sizeof(full_iconfilename),
- "/usr/share/icons/%s", iconfilename);
+ "%s/%s", tmp, iconfilename);
if (access(full_iconfilename, F_OK)) return;
}
@@ -942,5 +971,5 @@ get_kde_val(char *str,
//
-// End of "$Id: Fl_File_Icon2.cxx,v 1.1.2.16 2002/08/09 01:09:48 easysw Exp $".
+// End of "$Id: Fl_File_Icon2.cxx,v 1.1.2.17 2002/10/03 15:23:46 easysw Exp $".
//