From: mental Date: Thu, 6 Apr 2006 03:34:45 +0000 (+0000) Subject: introduce uniform resource path API to replace copy-and-pasted hacks X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=63ab7baa15a95e6416ba39e08b56aa76f6966454;p=inkscape.git introduce uniform resource path API to replace copy-and-pasted hacks --- diff --git a/ChangeLog b/ChangeLog index c4e4df385..c604ebde8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,23 @@ -2005-04-05 Jon A. Cruz +2006-04-05 MenTaLguY + + * src/io/Makefile_insert, src/io/resource.cpp, src/io/resource.h: + + introduce uniform resource path API to replace copy-and-pasted hacks + +2006-04-05 Jon A. Cruz * src/svg/svg-color-test.h, src/svg/svg-color.cpp: Tuned icc-color() parsing. -2005-04-02 Jon A. Cruz +2006-04-02 Jon A. Cruz * src/color-profile.h, src/color-profile.cpp, src/color-profile-fns.h, src/sp-image.h, src/sp-image.cpp: Initial support of color-profile on elements. -2005-04-02 Jon A. Cruz +2006-04-02 Jon A. Cruz * src/color-profile.h, src/color-profile.cpp, src/color-profile-fns.h, src/Makefile_insert, src/attributes.cpp, @@ -19,7 +25,7 @@ Adding support for element. -2005-04-02 Jon A. Cruz +2006-04-02 Jon A. Cruz * src/knot.h: Fixed warning messages. diff --git a/src/io/Makefile_insert b/src/io/Makefile_insert index 57978d678..f575b6e8d 100644 --- a/src/io/Makefile_insert +++ b/src/io/Makefile_insert @@ -14,6 +14,8 @@ io_libio_a_SOURCES = \ io/gzipstream.h \ io/inkscapestream.cpp \ io/inkscapestream.h \ + io/resource.cpp \ + io/resource.h \ io/simple-sax.cpp \ io/simple-sax.h \ io/stringstream.cpp \ diff --git a/src/io/resource.cpp b/src/io/resource.cpp new file mode 100644 index 000000000..fc5eb6723 --- /dev/null +++ b/src/io/resource.cpp @@ -0,0 +1,99 @@ +/** \file + * Inkscape::IO::Resource - simple resource API + * + * Copyright 2006 MenTaLguY + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * See the file COPYING for details. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include "path-prefix.h" +#include "inkscape.h" +#include "io/resource.h" + +namespace Inkscape { + +namespace IO { + +namespace Resource { + +Util::ptr_shared get_path(Domain domain, Type type, char const *filename) +{ + gchar *path=NULL; + switch (domain) { + case SYSTEM: { + switch (type) { + case APPICONS: path = INKSCAPE_APPICONDIR; break; + case EXTENSIONS: path = INKSCAPE_EXTENSIONDIR; break; + case GRADIENTS: path = INKSCAPE_GRADIENTSDIR; break; + case ICONS: path = INKSCAPE_PIXMAPDIR; break; + case KEYS: path = INKSCAPE_KEYSDIR; break; + case MARKERS: path = INKSCAPE_MARKERSDIR; break; + case PALETTES: path = INKSCAPE_PALETTESDIR; break; + case PATTERNS: path = INKSCAPE_PATTERNSDIR; break; + case PLUGINS: path = INKSCAPE_PLUGINDIR; break; + case SCREENS: path = INKSCAPE_SCREENSDIR; break; + case TEMPLATES: path = INKSCAPE_TEMPLATESDIR; break; + case TUTORIALS: path = INKSCAPE_TUTORIALSDIR; break; + case UI: path = INKSCAPE_UIDIR; break; + default: g_assert_not_reached(); + } + path = g_strdup(path); + } break; + case USER: { + char const *name=NULL; + switch (type) { + case EXTENSIONS: name = "extensions"; break; + case GRADIENTS: name = "gradients"; break; + case ICONS: name = "icons"; break; + case KEYS: name = "keys"; break; + case MARKERS: name = "markers"; break; + case PALETTES: name = "palettes"; break; + case PATTERNS: name = "patterns"; break; + case PLUGINS: name = "plugins"; break; + case TEMPLATES: name = "templates"; break; + default: return get_path(SYSTEM, type, filename); + } + path = profile_path(name); + } break; + } + + if (filename) { + gchar *temp=g_build_filename(path, filename, NULL); + g_free(path); + path = temp; + } + + Util::ptr_shared result=Util::share_string(path); + g_free(path); + return result; +} + +} + +} + +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/io/resource.h b/src/io/resource.h new file mode 100644 index 000000000..948866f1e --- /dev/null +++ b/src/io/resource.h @@ -0,0 +1,66 @@ +/** \file + * Inkscape::IO::Resource - simple resource API + * + * Copyright 2006 MenTaLguY + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * See the file COPYING for details. + * + */ + +#ifndef SEEN_INKSCAPE_IO_RESOURCE_H +#define SEEN_INKSCAPE_IO_RESOURCE_H + +#include "util/share.h" + +namespace Inkscape { + +namespace IO { + +namespace Resource { + +enum Type { + APPICONS, + EXTENSIONS, + GRADIENTS, + ICONS, + KEYS, + MARKERS, + PALETTES, + PATTERNS, + PLUGINS, + SCREENS, + TEMPLATES, + TUTORIALS, + UI +}; + +enum Domain { + SYSTEM, + USER +}; + +Util::ptr_shared get_path(Domain domain, Type type, + char const *filename=NULL); + +} + +} + +} + +#endif +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/path-prefix.h b/src/path-prefix.h index 89bc6309c..00862917f 100644 --- a/src/path-prefix.h +++ b/src/path-prefix.h @@ -24,6 +24,7 @@ extern "C" { # define INKSCAPE_APPICONDIR BR_DATADIR( "/pixmaps" ) # define INKSCAPE_EXTENSIONDIR BR_DATADIR( "/inkscape/extensions" ) # define INKSCAPE_GRADIENTSDIR BR_DATADIR( "/inkscape/gradients" ) +# define INKSCAPE_KEYSDIR BR_DATADIR( "/inkscape/keys" ) # define INKSCAPE_PIXMAPDIR BR_DATADIR( "/inkscape/icons" ) # define INKSCAPE_MARKERSDIR BR_DATADIR( "/inkscape/markers" ) # define INKSCAPE_PALETTESDIR BR_DATADIR( "/inkscape/palettes" ) @@ -38,6 +39,7 @@ extern "C" { # define INKSCAPE_APPICONDIR "pixmaps" # define INKSCAPE_EXTENSIONDIR "share\\extensions" # define INKSCAPE_GRADIENTSDIR "share\\gradients" +# define INKSCAPE_KEYSDIR "share\\keys" # define INKSCAPE_PIXMAPDIR "share\\icons" # define INKSCAPE_MARKERSDIR "share\\markers" # define INKSCAPE_PALETTESDIR "share\\palettes" @@ -51,6 +53,7 @@ extern "C" { # define INKSCAPE_APPICONDIR "Contents/Resources/pixmaps" # define INKSCAPE_EXTENSIONDIR "Contents/Resources/extensions" # define INKSCAPE_GRADIENTSDIR "Contents/Resources/gradients" +# define INKSCAPE_KEYSDIR "Contents/Resources/keys" # define INKSCAPE_PIXMAPDIR "Contents/Resources/icons" # define INKSCAPE_MARKERSDIR "Contents/Resources/markers" # define INKSCAPE_PALETTESDIR "Contents/Resources/palettes" @@ -64,6 +67,7 @@ extern "C" { # define INKSCAPE_APPICONDIR INKSCAPE_DATADIR "/pixmaps" # define INKSCAPE_EXTENSIONDIR INKSCAPE_DATADIR "/inkscape/extensions" # define INKSCAPE_GRADIENTSDIR INKSCAPE_DATADIR "/inkscape/gradients" +# define INKSCAPE_KEYSDIR INKSCAPE_DATADIR "/inkscape/keys" # define INKSCAPE_PIXMAPDIR INKSCAPE_DATADIR "/inkscape/icons" # define INKSCAPE_MARKERSDIR INKSCAPE_DATADIR "/inkscape/markers" # define INKSCAPE_PALETTESDIR INKSCAPE_DATADIR "/inkscape/palettes"