00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __EDELIB_ICONTHEME_H__
00022 #define __EDELIB_ICONTHEME_H__
00023
00024 #include "String.h"
00025 #include "List.h"
00026
00027 EDELIB_NS_BEGIN
00028
00033 enum IconSizes {
00034 ICON_SIZE_TINY = 16,
00035 ICON_SIZE_SMALL = 22,
00036 ICON_SIZE_MEDIUM = 32,
00037 ICON_SIZE_LARGE = 48,
00038 ICON_SIZE_HUGE = 64,
00039 ICON_SIZE_ENORMOUS = 128
00040 };
00041
00046 enum IconContext {
00047 ICON_CONTEXT_ANY = 0,
00048 ICON_CONTEXT_ACTION,
00049 ICON_CONTEXT_APPLICATION,
00050 ICON_CONTEXT_DEVICE,
00051 ICON_CONTEXT_FILESYSTEM,
00052 ICON_CONTEXT_MIMETYPE,
00053 ICON_CONTEXT_STOCK,
00054 ICON_CONTEXT_EMBLEM,
00055 ICON_CONTEXT_MISC
00056 };
00057
00058 class IconThemePrivate;
00059
00080 class EDELIB_API IconTheme {
00081 private:
00082 IconThemePrivate* priv;
00083
00084 void load_theme(const char* name);
00085 void read_inherits(const char* buf);
00086
00087 E_DISABLE_CLASS_COPY(IconTheme)
00088 public:
00092 IconTheme() : priv(NULL) { }
00093
00097 ~IconTheme() { clear(); }
00098
00103 void load(const char* name);
00104
00108 void clear(void);
00109
00113 String find_icon(const char* icon, IconSizes size, IconContext context = ICON_CONTEXT_ANY);
00114
00118 const char* theme_name(void) const;
00119
00127 const char* stylized_theme_name(void) const;
00128
00132 const char* description(void) const;
00133
00138 const char* example_icon(void) const;
00139
00143 void query_icons(list<String>& lst, IconSizes size, IconContext context = ICON_CONTEXT_ANY) const;
00144
00148 static const char* default_theme_name(void) { return "edeneu"; }
00149 };
00150
00151 EDELIB_NS_END
00152 #endif