tasn pushed a commit to branch master.

http://git.enlightenment.org/bindings/cxx/eflxx.git/commit/?id=e23711d0acc39f4247c03b3245eac2777bd2c1a5

commit e23711d0acc39f4247c03b3245eac2777bd2c1a5
Author: Andreas Volz <[email protected]>
Date:   Thu Nov 15 22:02:11 2012 +0000

    add more Theme wrapper functions
    TODO: wrap Eina_List functions, but before enhance Eina::List wrapper
    
    SVN revision: 79354
---
 elementaryxx/include/elementaryxx/Theme.h | 200 ++++++++++++++----------------
 elementaryxx/src/Theme.cpp                |  50 +++++++-
 2 files changed, 141 insertions(+), 109 deletions(-)

diff --git a/elementaryxx/include/elementaryxx/Theme.h 
b/elementaryxx/include/elementaryxx/Theme.h
index 5c51a04..4223d1b 100644
--- a/elementaryxx/include/elementaryxx/Theme.h
+++ b/elementaryxx/include/elementaryxx/Theme.h
@@ -12,17 +12,13 @@
 
 namespace Elmxx {
 
-/*!
- * smart callbacks called:
- * "changed" - the user toggled the state
- */
 class Theme
 {
 public:
-  Theme ();
+  Theme (bool default_theme = true);
   ~Theme ();
   Theme (const Theme &th); // specific copy constructor
-
+  
   /**
    * Prepends a theme overlay to the list of overlays
    *
@@ -86,6 +82,96 @@ public:
    * @ingroup Theme
    */
   void delExtension (const std::string& item);
+
+  /**
+   * Set the theme search order for the given theme
+   *
+   * @param theme Theme search string
+   *
+   * This sets the search string for the theme in path-notation from first
+   * theme to search, to last, delimited by the : character. Example:
+   *
+   * "shiny:/path/to/file.edj:default"
+   *
+   * See the ELM_THEME environment variable for more information.
+   *
+   * @see getTheme()
+   * @see getThemeList()
+   *
+   * @ingroup Theme
+   */
+  void setTheme (const std::string &theme);
+
+  /**
+   * Return the theme search order
+   *
+   * @return The internal search order path
+   *
+   * This function returns a colon separated string of theme elements as
+   * returned by elm_theme_list_get().
+   *
+   * @see elm_theme_set()
+   * @see elm_theme_list_get()
+   *
+   * @ingroup Theme
+   */
+  std::string getTheme ();
+
+  /**
+   * Return the full path for a theme element
+   *
+   * @param f The theme element name
+   * @param in_search_path Reference to a boolean to indicate if item is in 
the search path or not
+   * @return The full path to the file found.
+   *
+   * This returns a string you should free with free() on success, NULL on
+   * failure. This will search for the given theme element, and if it is a
+   * full or relative path element or a simple search-able name. The returned
+   * path is the full path to the file, if searched, and the file exists, or it
+   * is simply the full path given in the element or a resolved path if
+   * relative to home. The @p in_search_path boolean pointed to is set to
+   * EINA_TRUE if the file was a search-able file and is in the search path,
+   * and EINA_FALSE otherwise.
+   *
+   * @ingroup Theme
+   */
+  static std::string getItemListPath (const std::string &f, bool 
&in_search_path);
+
+  /**
+   * Flush the current theme.
+   *
+   *
+   * This flushes caches that let elementary know where to find theme elements
+   * in the given theme. If @p th is NULL, then the default theme is flushed.
+   * Call this function if source theme data has changed in such a way as to
+   * make any caches Elementary kept invalid.
+   *
+   * @ingroup Theme
+   */
+  void flush ();
+
+  /**
+   * This flushes all themes (default and specific ones).
+   *
+   * This will flush all themes in the current application context, by calling
+   * flush() on each of them.
+   *
+   * @ingroup Theme
+   */
+  static void flushFull ();
+
+  /**
+   * Get a data item from a theme
+   *
+   * @param key The data key to search with
+   * @return The data value, or NULL on failure
+   *
+   * This function is used to return data items from edc in @p th, an overlay, 
or an extension.
+   * It works the same way as edje_file_data_get() except that the return is 
stringshared.
+   *
+   * @ingroup Theme
+   */
+  std::string getData (const std::string &key); 
   
 private:
   Elm_Theme *mTheme;
@@ -122,18 +208,6 @@ EAPI void             elm_theme_ref_set(Elm_Theme *th, 
Elm_Theme *thref);
  */
 EAPI Elm_Theme       *elm_theme_ref_get(Elm_Theme *th);
 
-/**
- * Return the default theme
- *
- * @return The default theme handle
- *
- * This returns the internal default theme setup handle that all widgets
- * use implicitly unless a specific theme is set. This is also often use
- * as a shorthand of NULL.
- *
- * @ingroup Theme
- */
-EAPI Elm_Theme       *elm_theme_default_get(void);
 
 /**
  * Get the list of registered overlays for the given theme
@@ -160,41 +234,7 @@ EAPI const Eina_List *elm_theme_overlay_list_get(const 
Elm_Theme *th);
  */
 EAPI const Eina_List *elm_theme_extension_list_get(const Elm_Theme *th);
 
-/**
- * Set the theme search order for the given theme
- *
- * @param th The theme to set the search order, or if NULL, the default theme
- * @param theme Theme search string
- *
- * This sets the search string for the theme in path-notation from first
- * theme to search, to last, delimited by the : character. Example:
- *
- * "shiny:/path/to/file.edj:default"
- *
- * See the ELM_THEME environment variable for more information.
- *
- * @see elm_theme_get()
- * @see elm_theme_list_get()
- *
- * @ingroup Theme
- */
-EAPI void             elm_theme_set(Elm_Theme *th, const char *theme);
 
-/**
- * Return the theme search order
- *
- * @param th The theme to get the search order, or if NULL, the default theme
- * @return The internal search order path
- *
- * This function returns a colon separated string of theme elements as
- * returned by elm_theme_list_get().
- *
- * @see elm_theme_set()
- * @see elm_theme_list_get()
- *
- * @ingroup Theme
- */
-EAPI const char      *elm_theme_get(Elm_Theme *th);
 
 /**
  * Return a list of theme elements to be used in a theme.
@@ -219,49 +259,9 @@ EAPI const char      *elm_theme_get(Elm_Theme *th);
  */
 EAPI const Eina_List *elm_theme_list_get(const Elm_Theme *th);
 
-/**
- * Return the full path for a theme element
- *
- * @param f The theme element name
- * @param in_search_path Pointer to a boolean to indicate if item is in the 
search path or not
- * @return The full path to the file found.
- *
- * This returns a string you should free with free() on success, NULL on
- * failure. This will search for the given theme element, and if it is a
- * full or relative path element or a simple search-able name. The returned
- * path is the full path to the file, if searched, and the file exists, or it
- * is simply the full path given in the element or a resolved path if
- * relative to home. The @p in_search_path boolean pointed to is set to
- * EINA_TRUE if the file was a search-able file and is in the search path,
- * and EINA_FALSE otherwise.
- *
- * @ingroup Theme
- */
-EAPI char            *elm_theme_list_item_path_get(const char *f, Eina_Bool 
*in_search_path);
 
-/**
- * Flush the current theme.
- *
- * @param th Theme to flush
- *
- * This flushes caches that let elementary know where to find theme elements
- * in the given theme. If @p th is NULL, then the default theme is flushed.
- * Call this function if source theme data has changed in such a way as to
- * make any caches Elementary kept invalid.
- *
- * @ingroup Theme
- */
-EAPI void             elm_theme_flush(Elm_Theme *th);
 
-/**
- * This flushes all themes (default and specific ones).
- *
- * This will flush all themes in the current application context, by calling
- * elm_theme_flush() on each of them.
- *
- * @ingroup Theme
- */
-EAPI void             elm_theme_full_flush(void);
+
 
 /**
  * Return a list of theme elements in the theme search path
@@ -322,19 +322,7 @@ EAPI void             elm_object_theme_set(Evas_Object 
*obj, Elm_Theme *th);
  */
 EAPI Elm_Theme       *elm_object_theme_get(const Evas_Object *obj);
 
-/**
- * Get a data item from a theme
- *
- * @param th The theme, or NULL for default theme
- * @param key The data key to search with
- * @return The data value, or NULL on failure
- *
- * This function is used to return data items from edc in @p th, an overlay, 
or an extension.
- * It works the same way as edje_file_data_get() except that the return is 
stringshared.
- *
- * @ingroup Theme
- */
-EAPI const char      *elm_theme_data_get(Elm_Theme *th, const char *key);
+
 
 #endif
 
diff --git a/elementaryxx/src/Theme.cpp b/elementaryxx/src/Theme.cpp
index 6d209bd..f8c54b5 100644
--- a/elementaryxx/src/Theme.cpp
+++ b/elementaryxx/src/Theme.cpp
@@ -8,14 +8,24 @@ using namespace std;
 
 namespace Elmxx {
 
-Theme::Theme () :
-  mTheme (NULL) // elm_theme_new ()
+Theme::Theme (bool default_theme)
 {
+  if (default_theme)
+  {
+    mTheme = NULL;
+  }
+  else
+  {
+    mTheme = elm_theme_new ();
+  }
 }
 
 Theme::~Theme ()
 {
-  //elm_theme_free (mTheme);
+  if (mTheme)
+  {
+    elm_theme_free (mTheme);
+  }
 }
 
 Theme::Theme (const Theme &th)
@@ -43,5 +53,39 @@ void Theme::delExtension (const std::string& item)
   elm_theme_extension_del(mTheme, item.c_str());
 }
 
+void Theme::setTheme (const std::string &theme)
+{
+  elm_theme_set(mTheme, theme.c_str());
+}
+
+std::string Theme::getTheme ()
+{
+  return elm_theme_get(mTheme);
+}
+
+std::string Theme::getItemListPath (const std::string &f, bool &in_search_path)
+{
+  Eina_Bool b;
+  
+  const char *ret = elm_theme_list_item_path_get(f.c_str(), &b);
+  in_search_path = b;
+  
+  return ret;
+}
+
+void Theme::flush ()
+{
+  elm_theme_flush(mTheme);
+}
+
+void Theme::flushFull ()
+{
+  elm_theme_full_flush();
+}
+
+std::string Theme::getData (const std::string &key)
+{
+  return elm_theme_data_get(mTheme, key.c_str());
+}
 
 } // end namespace Elmxx

-- 


Reply via email to