Reference Manual
Inti Logo
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

iconfactory.h

Go to the documentation of this file.
00001 /*  Inti: Integrated Foundation Classes
00002  *  Copyright (C) 2002-2003 The Inti Development Team.
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018 
00027 
00028 #ifndef INTI_GTK_ICON_FACTORY_H
00029 #define INTI_GTK_ICON_FACTORY_H
00030 
00031 #ifndef INTI_G_BOXED_H
00032 #include <inti/glib/boxed.h>
00033 #endif
00034 
00035 #ifndef INTI_G_OBJECT_H
00036 #include <inti/glib/object.h>
00037 #endif
00038 
00039 #ifndef INTI_GTK_ENUMS_H
00040 #include <inti/gtk/enums.h>
00041 #endif
00042 
00043 #ifndef __GTK_ICON_FACTORY_H__
00044 #include <gtk/gtkiconfactory.h>
00045 #endif
00046 
00047 #ifndef _CPP_VECTOR
00048 #include <vector>
00049 #endif
00050 
00051 namespace Inti {
00052 
00053 namespace Gdk {
00054 class Pixbuf;
00055 }
00056 
00057 namespace Gtk {
00058 
00059 class IconFactoryClass;
00060 class Settings;
00061 class Style;
00062 class Widget;
00063 
00066 
00067 bool icon_size_lookup(IconSize size, int *width, int *height, Settings *settings = 0);
00084 
00085 IconSize icon_size_register(const char *name, int width, int height);
00091 
00092 void icon_size_register_alias(const char *alias, IconSize target);
00098 
00099 IconSize icon_size_from_name(const char *name);
00103 
00104 String icon_size_get_name(IconSize size);
00108 
00110 
00133 
00134 class IconSource : public G::Boxed
00135 {
00136 public:
00139 
00140         IconSource();
00142 
00143         explicit IconSource(GtkIconSource *source);
00149 
00150         IconSource(GtkIconSource *source, bool copy);
00157 
00158         IconSource(const IconSource& src);
00160 
00161         ~IconSource();
00163 
00164         IconSource& operator=(const IconSource& src);
00166 
00170 
00171         GtkIconSource* gtk_icon_source() const { return (GtkIconSource*)boxed_; }
00173 
00174         operator GtkIconSource* () const;
00176 
00177         String get_filename() const;
00180 
00181         Gdk::Pixbuf* get_pixbuf() const;
00184 
00185         bool get_size_wildcarded() const;
00188 
00189         bool get_state_wildcarded() const;
00192 
00193         bool get_direction_wildcarded() const;
00196 
00197         TextDirection get_direction() const;
00202         
00203         StateType get_state() const;
00208 
00209         IconSize get_size() const;
00214 
00218 
00219         void set_filename(const String& filename);
00225 
00226         void set_pixbuf(Gdk::Pixbuf *pixbuf);
00231 
00232         void set_direction_wildcarded(bool setting);
00241         
00242         void set_state_wildcarded(bool setting);
00253 
00254         void set_size_wildcarded(bool setting);
00265         
00266         void set_direction(TextDirection direction);
00273 
00274         void set_state(StateType state);
00281 
00282         void set_size(IconSize size);
00289 
00291 };
00292 
00302 
00303 class IconSet : public G::Boxed
00304 {
00305 public:
00308 
00309         IconSet();
00311 
00312         explicit IconSet(Gdk::Pixbuf& pixbuf);
00319 
00320         explicit IconSet(GtkIconSet *icon_set);
00326 
00327         IconSet(GtkIconSet *icon_set, bool copy);
00335 
00336         IconSet(const IconSet& src);
00338 
00339         ~IconSet();
00341 
00342         IconSet& operator=(const IconSet& src);
00344         
00348 
00349         GtkIconSet* gtk_icon_set() const { return (GtkIconSet*)boxed_; }
00351 
00352         operator GtkIconSet* () const;
00354 
00355         bool get_sizes(std::vector<IconSize>& sizes) const;
00359 
00363 
00364         Pointer<Gdk::Pixbuf> render_icon(Style& style, StateType state, IconSize size,
00365                                          Widget* widget = 0, const char *detail = 0,
00366                                          TextDirection direction = TEXT_DIR_LTR);
00382 
00383         void add_source(const IconSource& source);
00404 
00406 };
00407 
00421 
00422 class IconFactory : public G::Object
00423 {
00424         friend class G::Object;
00425         friend class IconFactoryClass;
00426 
00427         IconFactory(const IconFactory&);
00428         IconFactory& operator=(const IconFactory&);
00429         
00430 protected:
00433 
00434         explicit IconFactory(GtkIconFactory *icon_factory, bool reference = true);
00441 
00443         
00444 public:
00447 
00448         IconFactory();
00450 
00451         virtual ~IconFactory();
00453         
00457 
00458         GtkIconFactory* gtk_icon_factory() const { return (GtkIconFactory*)instance; }
00460 
00461         GtkIconFactoryClass* gtk_icon_factory_class() const;
00463 
00464         operator GtkIconFactory* () const;
00466 
00470 
00471         void add(const char *stock_id, IconSet& icon_set);
00483 
00484         Pointer<IconSet> lookup(const char *stock_id);
00493         
00494         void add_default();
00499 
00500         void remove_default();
00502 
00504         
00505         static Pointer<IconSet> lookup_default(const char *stock_id);
00513 };
00514 
00515 } // namespace Gtk
00516 
00517 } // namespace Inti
00518 
00519 #endif // INTI_GTK_ICON_FACTORY_H
00520 
Main Page - Footer


Generated on Sun Sep 14 20:08:03 2003 for Inti by doxygen 1.3.2 written by Dimitri van Heesch, © 1997-2002