\section{Theme}
\label{group__Theme}\index{Theme@{Theme}}


Elementary uses Edje to theme its widgets, naturally.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+Elm\+\_\+\+Theme \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme}
\begin{DoxyCompactList}\small\item\em Opaque handler for the list of themes Elementary looks for when rendering widgets. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$ \hyperlink{group__Theme_ga7fd8587e80a75724e6ea3f9a384022c5}{elm\+\_\+theme\+\_\+new} (void)
\begin{DoxyCompactList}\small\item\em Create a new specific theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga653236cc5eb9a54b48c40fa913aa8848}{elm\+\_\+theme\+\_\+free} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Free a specific theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga4edbb2396ddde3ed3b73641c437d128f}{elm\+\_\+theme\+\_\+copy} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$thdst)
\begin{DoxyCompactList}\small\item\em Copy the theme from the source to the destination theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga31898dcc7f8c5b7414144ba58c8c9b5c}{elm\+\_\+theme\+\_\+ref\+\_\+set} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$thref)
\begin{DoxyCompactList}\small\item\em Tell the source theme to reference the ref theme. \end{DoxyCompactList}\item 
\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$ \hyperlink{group__Theme_gac5dd1e0811007254fecb6807c9a47d7e}{elm\+\_\+theme\+\_\+ref\+\_\+get} (const \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Return the theme referred to. \end{DoxyCompactList}\item 
\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$ \hyperlink{group__Theme_ga186b7b9116bc5bbf1b7e4c1d895ab0ec}{elm\+\_\+theme\+\_\+default\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Return the default theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$item)
\begin{DoxyCompactList}\small\item\em Prepends a theme overlay to the list of overlays. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga100c2a0f541686f3272cc6009aae5864}{elm\+\_\+theme\+\_\+overlay\+\_\+del} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$item)
\begin{DoxyCompactList}\small\item\em Delete a theme overlay from the list of overlays. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_gad2355bf673f163dbdeba76d2e7b3564c}{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const Eina\+\_\+\+File $\ast$f)
\begin{DoxyCompactList}\small\item\em Prepends a theme overlay to the list of overlays. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_gaae52bcc0e9da65f97d4b4e169964090d}{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const Eina\+\_\+\+File $\ast$f)
\begin{DoxyCompactList}\small\item\em Delete a theme overlay from the list of overlays. \end{DoxyCompactList}\item 
const Eina\+\_\+\+List $\ast$ \hyperlink{group__Theme_ga22f47eb91c14781b4aaff90b66fd7796}{elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get} (const \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Get the list of registered overlays for the given theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$item)
\begin{DoxyCompactList}\small\item\em Appends a theme extension to the list of extensions. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga474684d4227bc309a1ce314ff16c70a7}{elm\+\_\+theme\+\_\+extension\+\_\+del} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$item)
\begin{DoxyCompactList}\small\item\em Deletes a theme extension from the list of extensions. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga6dbc1857ae05f9e7f9fba7ad7e479c66}{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const Eina\+\_\+\+File $\ast$f)
\begin{DoxyCompactList}\small\item\em Appends a theme extension to the list of extensions. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_gad64e727418bba326f54cea4617dfeca6}{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const Eina\+\_\+\+File $\ast$f)
\begin{DoxyCompactList}\small\item\em Deletes a theme extension from the list of extensions. \end{DoxyCompactList}\item 
const Eina\+\_\+\+List $\ast$ \hyperlink{group__Theme_gac0cddf87cb36813037561492c3ed08bc}{elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get} (const \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Get the list of registered extensions for the given theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}{elm\+\_\+theme\+\_\+set} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$theme)
\begin{DoxyCompactList}\small\item\em Set the theme search order for the given theme. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Theme_ga09bbd45e07a8ab98e1541626a84775ef}{elm\+\_\+theme\+\_\+get} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Return the theme search order. \end{DoxyCompactList}\item 
const Eina\+\_\+\+List $\ast$ \hyperlink{group__Theme_gae34c35d3074e32c5c8d9b4f1cf2a0856}{elm\+\_\+theme\+\_\+list\+\_\+get} (const \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Return a list of theme elements to be used in a theme. \end{DoxyCompactList}\item 
char $\ast$ \hyperlink{group__Theme_ga049b8326fe7330879bf7db6752fb1ae9}{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get} (const char $\ast$f, Eina\+\_\+\+Bool $\ast$in\+\_\+search\+\_\+path)
\begin{DoxyCompactList}\small\item\em Return the full path for a theme element. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga9dae0883a2c3500294f3ebe69407eb78}{elm\+\_\+theme\+\_\+flush} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Flush the current theme. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga000d72eafa46bd473b564b4652a85962}{elm\+\_\+theme\+\_\+full\+\_\+flush} (void)
\begin{DoxyCompactList}\small\item\em This flushes all themes (default and specific ones). \end{DoxyCompactList}\item 
Eina\+\_\+\+List $\ast$ \hyperlink{group__Theme_ga9f5f73676a62d95454b3723da1fc1e26}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new} (void)
\begin{DoxyCompactList}\small\item\em Return a list of theme elements in the theme search path. \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga65214656238d379bc38e4ba963a039ab}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free} (Eina\+\_\+\+List $\ast$list)
\begin{DoxyCompactList}\small\item\em Free the list returned by \hyperlink{group__Theme_ga9f5f73676a62d95454b3723da1fc1e26}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new()} \end{DoxyCompactList}\item 
void \hyperlink{group__Theme_ga692e11bd4a285f815556a1e52def41d7}{elm\+\_\+object\+\_\+theme\+\_\+set} (Evas\+\_\+\+Object $\ast$obj, \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th)
\begin{DoxyCompactList}\small\item\em Set a specific theme to be used for this object and its children. \end{DoxyCompactList}\item 
\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$ \hyperlink{group__Theme_gad3a55120b082d9d38cdd9fd03e23b398}{elm\+\_\+object\+\_\+theme\+\_\+get} (const Evas\+\_\+\+Object $\ast$obj)
\begin{DoxyCompactList}\small\item\em Get the specific theme to be used. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Theme_ga719e2cbf1c77643f1b3af471d9f56abb}{elm\+\_\+theme\+\_\+data\+\_\+get} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Get a data item from a theme. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Theme_gae016c2e481ad6c9d1f3145819018a55b}{elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$group)
\begin{DoxyCompactList}\small\item\em Get the file path for an edje file for the group and theme given. \end{DoxyCompactList}\item 
Eina\+\_\+\+List $\ast$ \hyperlink{group__Theme_ga970d03b5e17f6bafd1f1e562b27857db}{elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list} (\hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} $\ast$th, const char $\ast$base)
\begin{DoxyCompactList}\small\item\em Get a list of groups that match the initial base string given within all themes. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Theme_gad32423edf14ad435715d5391296f52e0}{elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get the file path where elementary system theme files are found. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Theme_ga06b35f1fa0073d1bd567321e84d7a182}{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get the file path where elementary user theme files are found. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Elementary uses Edje to theme its widgets, naturally. 

But for the most part this is hidden behind a simpler interface that lets the user set extensions and choose the style of widgets in a much easier way.

Instead of thinking in terms of paths to Edje files and their groups each time you want to change the appearance of a widget, Elementary works so you can add any theme file with extensions or replace the main theme at one point in the application, and then just set the style of widgets with \hyperlink{group__Styles_ga7fc2d1f9ba723470da7a05799c49f7fe}{elm\+\_\+object\+\_\+style\+\_\+set()} and related functions. Elementary will then look in its list of themes for a matching group and apply it, and when the theme changes midway through the application, all widgets will be updated accordingly.

There are three concepts you need to know to understand how Elementary theming works\+: default theme, extensions and overlays.

Default theme, obviously enough, is the one that provides the default look of all widgets. End users can change the theme used by Elementary by setting the {\ttfamily E\+L\+M\+\_\+\+T\+H\+E\+M\+E} environment variable before running an application, or globally for all programs using the {\ttfamily elementary\+\_\+config} utility. Applications can change the default theme using \hyperlink{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}{elm\+\_\+theme\+\_\+set()}, but this can go against the user wishes, so it\textquotesingle{}s not an advised practice.

Ideally, applications should find everything they need in the already provided theme, but there may be occasions when that\textquotesingle{}s not enough and custom styles are required to correctly express the idea. For this cases, Elementary has extensions.

Extensions allow the application developer to write styles of its own to apply to some widgets. This requires knowledge of how each widget is themed, as extensions will always replace the entire group used by the widget, so important signals and parts need to be there for the object to behave properly (see documentation of Edje for details). Once the theme for the extension is done, the application needs to add it to the list of themes Elementary will look into, using \hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()}, and set the style of the desired widgets as he would normally with \hyperlink{group__Styles_ga7fc2d1f9ba723470da7a05799c49f7fe}{elm\+\_\+object\+\_\+style\+\_\+set()}.

Overlays, on the other hand, can replace the look of all widgets by overriding the default style. Like extensions, it\textquotesingle{}s up to the application developer to write the theme for the widgets it wants, the difference being that when looking for the theme, Elementary will check first the list of overlays, then the set theme and lastly the list of extensions, so with overlays it\textquotesingle{}s possible to replace the default view and every widget will be affected. This is very much alike to setting the whole theme for the application and will probably clash with the end user options, not to mention the risk of ending up with not matching styles across the program. Unless there\textquotesingle{}s a very special reason to use them, overlays should be avoided for the reasons exposed before.

All these theme lists are handled by \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} instances. Elementary keeps one default internally and every function that receives one of these can be called with N\+U\+L\+L to refer to this default (except for \hyperlink{group__Theme_ga653236cc5eb9a54b48c40fa913aa8848}{elm\+\_\+theme\+\_\+free()}). It\textquotesingle{}s possible to create a new instance of a \hyperlink{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}{Elm\+\_\+\+Theme} to set other theme for a specific widget (and all of its children), but this is as discouraged, if not even more so, than using overlays. Don\textquotesingle{}t use this unless you really know what you are doing.

But to be less negative about things, you can look at the following examples\+: \begin{DoxyItemize}
\item \hyperlink{theme_example_01}{Using extensions} \item \hyperlink{theme_example_02}{Using overlays} \end{DoxyItemize}


\subsection{Typedef Documentation}
\index{Theme@{Theme}!Elm\+\_\+\+Theme@{Elm\+\_\+\+Theme}}
\index{Elm\+\_\+\+Theme@{Elm\+\_\+\+Theme}!Theme@{Theme}}
\subsubsection[{Elm\+\_\+\+Theme}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Elm\+\_\+\+Theme}}\label{group__Theme_ga19b1b1b2c1bcc52287455d3dd5654e79}


Opaque handler for the list of themes Elementary looks for when rendering widgets. 

Stay out of this unless you really know what you are doing. For most cases, sticking to the default is all a developer needs. 

\subsection{Function Documentation}
\index{Theme@{Theme}!elm\+\_\+object\+\_\+theme\+\_\+get@{elm\+\_\+object\+\_\+theme\+\_\+get}}
\index{elm\+\_\+object\+\_\+theme\+\_\+get@{elm\+\_\+object\+\_\+theme\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+object\+\_\+theme\+\_\+get(const Evas\+\_\+\+Object $\ast$obj)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Elm\+\_\+\+Theme}$\ast$ elm\+\_\+object\+\_\+theme\+\_\+get (
\begin{DoxyParamCaption}
\item[{const Evas\+\_\+\+Object $\ast$}]{obj}
\end{DoxyParamCaption}
)}\label{group__Theme_gad3a55120b082d9d38cdd9fd03e23b398}


Get the specific theme to be used. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to get the specific theme from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The specific theme set.
\end{DoxyReturn}
This will return a specific theme set, or N\+U\+L\+L if no specific theme is set on that object. It will not return inherited themes from parents, only the specific theme set for that specific object. See \hyperlink{group__Theme_ga692e11bd4a285f815556a1e52def41d7}{elm\+\_\+object\+\_\+theme\+\_\+set()} for more information. \index{Theme@{Theme}!elm\+\_\+object\+\_\+theme\+\_\+set@{elm\+\_\+object\+\_\+theme\+\_\+set}}
\index{elm\+\_\+object\+\_\+theme\+\_\+set@{elm\+\_\+object\+\_\+theme\+\_\+set}!Theme@{Theme}}
\subsubsection[{elm\+\_\+object\+\_\+theme\+\_\+set(\+Evas\+\_\+\+Object $\ast$obj, Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+object\+\_\+theme\+\_\+set (
\begin{DoxyParamCaption}
\item[{Evas\+\_\+\+Object $\ast$}]{obj, }
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_ga692e11bd4a285f815556a1e52def41d7}


Set a specific theme to be used for this object and its children. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to set the theme on \\
\hline
{\em th} & The theme to set\\
\hline
\end{DoxyParams}
This sets a specific theme that will be used for the given object and any child objects it has. If {\ttfamily th} is N\+U\+L\+L then the theme to be used is cleared and the object will inherit its theme from its parent (which ultimately will use the default theme if no specific themes are set).

Use special themes with great care as this will annoy users and make configuration difficult. Avoid any custom themes at all if it can be helped. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+copy@{elm\+\_\+theme\+\_\+copy}}
\index{elm\+\_\+theme\+\_\+copy@{elm\+\_\+theme\+\_\+copy}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+copy(\+Elm\+\_\+\+Theme $\ast$th, Elm\+\_\+\+Theme $\ast$thdst)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+copy (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{thdst}
\end{DoxyParamCaption}
)}\label{group__Theme_ga4edbb2396ddde3ed3b73641c437d128f}


Copy the theme from the source to the destination theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The source theme to copy from \\
\hline
{\em thdst} & The destination theme to copy data to\\
\hline
\end{DoxyParams}
This makes a one-\/time static copy of all the theme config, extensions and overlays from {\ttfamily th} to {\ttfamily thdst}. If {\ttfamily th} references a theme, then {\ttfamily thdst} is also set to reference it, with all the theme settings, overlays and extensions that {\ttfamily th} had. 

References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+data\+\_\+get@{elm\+\_\+theme\+\_\+data\+\_\+get}}
\index{elm\+\_\+theme\+\_\+data\+\_\+get@{elm\+\_\+theme\+\_\+data\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+data\+\_\+get(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$key)}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ elm\+\_\+theme\+\_\+data\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{key}
\end{DoxyParamCaption}
)}\label{group__Theme_ga719e2cbf1c77643f1b3af471d9f56abb}


Get a data item from a theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme, or N\+U\+L\+L for default theme \\
\hline
{\em key} & The data key to search with \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data value, or N\+U\+L\+L on failure
\end{DoxyReturn}
This function is used to return data items from edc in {\ttfamily th}, an overlay, or an extension. It works the same way as edje\+\_\+file\+\_\+data\+\_\+get() except that the return is stringshared. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+default\+\_\+get@{elm\+\_\+theme\+\_\+default\+\_\+get}}
\index{elm\+\_\+theme\+\_\+default\+\_\+get@{elm\+\_\+theme\+\_\+default\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+default\+\_\+get(void)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Elm\+\_\+\+Theme}$\ast$ elm\+\_\+theme\+\_\+default\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_ga186b7b9116bc5bbf1b7e4c1d895ab0ec}


Return the default theme. 

\begin{DoxyReturn}{Returns}
The default theme handle
\end{DoxyReturn}
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 N\+U\+L\+L. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+extension\+\_\+add@{elm\+\_\+theme\+\_\+extension\+\_\+add}}
\index{elm\+\_\+theme\+\_\+extension\+\_\+add@{elm\+\_\+theme\+\_\+extension\+\_\+add}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+extension\+\_\+add(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$item)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+extension\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{item}
\end{DoxyParamCaption}
)}\label{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}


Appends a theme extension to the list of extensions. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to add to, or if N\+U\+L\+L, the default theme \\
\hline
{\em item} & The Edje file path to be used\\
\hline
\end{DoxyParams}
This is intended when an application needs more styles of widgets or new widget themes that the default does not provide (or may not provide). The application has \char`\"{}extended\char`\"{} usage by coming up with new custom style names for widgets for specific uses, but as these are not \char`\"{}standard\char`\"{}, they are not guaranteed to be provided by a default theme. This means the application is required to provide these extra elements itself in specific Edje files. This call adds one of those Edje files to the theme search path to be search after the default theme. The use of this call is encouraged when default styles do not meet the needs of the application. Use this call instead of \hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add()} for almost all cases.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Styles_ga7fc2d1f9ba723470da7a05799c49f7fe}{elm\+\_\+object\+\_\+style\+\_\+set()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+extension\+\_\+del@{elm\+\_\+theme\+\_\+extension\+\_\+del}}
\index{elm\+\_\+theme\+\_\+extension\+\_\+del@{elm\+\_\+theme\+\_\+extension\+\_\+del}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+extension\+\_\+del(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$item)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+extension\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{item}
\end{DoxyParamCaption}
)}\label{group__Theme_ga474684d4227bc309a1ce314ff16c70a7}


Deletes a theme extension from the list of extensions. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to delete from, or if N\+U\+L\+L, the default theme \\
\hline
{\em item} & The name of the theme extension\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get}}
\index{elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get(const Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}const Eina\+\_\+\+List$\ast$ elm\+\_\+theme\+\_\+extension\+\_\+list\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_gac0cddf87cb36813037561492c3ed08bc}


Get the list of registered extensions for the given theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme from which to get the extensions \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
List of theme extensions. Do not free it.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()} 
\end{DoxySeeAlso}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add@{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add}}
\index{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add@{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add(\+Elm\+\_\+\+Theme $\ast$th, const Eina\+\_\+\+File $\ast$f)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const Eina\+\_\+\+File $\ast$}]{f}
\end{DoxyParamCaption}
)}\label{group__Theme_ga6dbc1857ae05f9e7f9fba7ad7e479c66}


Appends a theme extension to the list of extensions. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to add to, or if N\+U\+L\+L, the default theme \\
\hline
{\em f} & The Edje file handle to be used\\
\hline
\end{DoxyParams}
This is intended when an application needs more styles of widgets or new widget themes that the default does not provide (or may not provide). The application has \char`\"{}extended\char`\"{} usage by coming up with new custom style names for widgets for specific uses, but as these are not \char`\"{}standard\char`\"{}, they are not guaranteed to be provided by a default theme. This means the application is required to provide these extra elements itself in specific Edje files. This call adds one of those Edje files to the theme search path to be search after the default theme. The use of this call is encouraged when default styles do not meet the needs of the application. Use this call instead of \hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add()} for almost all cases.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Styles_ga7fc2d1f9ba723470da7a05799c49f7fe}{elm\+\_\+object\+\_\+style\+\_\+set()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del@{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del}}
\index{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del@{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del(\+Elm\+\_\+\+Theme $\ast$th, const Eina\+\_\+\+File $\ast$f)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const Eina\+\_\+\+File $\ast$}]{f}
\end{DoxyParamCaption}
)}\label{group__Theme_gad64e727418bba326f54cea4617dfeca6}


Deletes a theme extension from the list of extensions. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to delete from, or if N\+U\+L\+L, the default theme \\
\hline
{\em f} & The file handle of the theme extension\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+flush@{elm\+\_\+theme\+\_\+flush}}
\index{elm\+\_\+theme\+\_\+flush@{elm\+\_\+theme\+\_\+flush}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+flush(\+Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+flush (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_ga9dae0883a2c3500294f3ebe69407eb78}


Flush the current theme. 


\begin{DoxyParams}{Parameters}
{\em th} & Theme to flush\\
\hline
\end{DoxyParams}
This flushes caches that let elementary know where to find theme elements in the given theme. If {\ttfamily th} is N\+U\+L\+L, 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. 

References elm\+\_\+theme\+\_\+flush().



Referenced by elm\+\_\+theme\+\_\+copy(), elm\+\_\+theme\+\_\+extension\+\_\+add(), elm\+\_\+theme\+\_\+extension\+\_\+del(), elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add(), elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+del(), elm\+\_\+theme\+\_\+flush(), elm\+\_\+theme\+\_\+full\+\_\+flush(), elm\+\_\+theme\+\_\+overlay\+\_\+add(), elm\+\_\+theme\+\_\+overlay\+\_\+del(), elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add(), elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del(), elm\+\_\+theme\+\_\+ref\+\_\+set(), and elm\+\_\+theme\+\_\+set().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+free@{elm\+\_\+theme\+\_\+free}}
\index{elm\+\_\+theme\+\_\+free@{elm\+\_\+theme\+\_\+free}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+free(\+Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+free (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_ga653236cc5eb9a54b48c40fa913aa8848}


Free a specific theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to free\\
\hline
\end{DoxyParams}
This frees a theme created with \hyperlink{group__Theme_ga7fd8587e80a75724e6ea3f9a384022c5}{elm\+\_\+theme\+\_\+new()}. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+full\+\_\+flush@{elm\+\_\+theme\+\_\+full\+\_\+flush}}
\index{elm\+\_\+theme\+\_\+full\+\_\+flush@{elm\+\_\+theme\+\_\+full\+\_\+flush}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+full\+\_\+flush(void)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+full\+\_\+flush (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_ga000d72eafa46bd473b564b4652a85962}


This flushes all themes (default and specific ones). 

This will flush all themes in the current application context, by calling \hyperlink{group__Theme_ga9dae0883a2c3500294f3ebe69407eb78}{elm\+\_\+theme\+\_\+flush()} on each of them. 

References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+get@{elm\+\_\+theme\+\_\+get}}
\index{elm\+\_\+theme\+\_\+get@{elm\+\_\+theme\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+get(\+Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ elm\+\_\+theme\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_ga09bbd45e07a8ab98e1541626a84775ef}


Return the theme search order. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to get the search order, or if N\+U\+L\+L, the default theme \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The internal search order path
\end{DoxyReturn}
This function returns a colon separated string of theme elements as returned by \hyperlink{group__Theme_gae34c35d3074e32c5c8d9b4f1cf2a0856}{elm\+\_\+theme\+\_\+list\+\_\+get()}.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}{elm\+\_\+theme\+\_\+set()} 

\hyperlink{group__Theme_gae34c35d3074e32c5c8d9b4f1cf2a0856}{elm\+\_\+theme\+\_\+list\+\_\+get()} 
\end{DoxySeeAlso}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list@{elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list}}
\index{elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list@{elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$base)}]{\setlength{\rightskip}{0pt plus 5cm}Eina\+\_\+\+List$\ast$ elm\+\_\+theme\+\_\+group\+\_\+base\+\_\+list (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{base}
\end{DoxyParamCaption}
)}\label{group__Theme_ga970d03b5e17f6bafd1f1e562b27857db}


Get a list of groups that match the initial base string given within all themes. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme, or N\+U\+L\+L for default theme \\
\hline
{\em base} & The base string group collection to look for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A list of collection names (sorted) or N\+U\+L\+L if none found
\end{DoxyReturn}
This function will walk all theme files configured in the theme {\ttfamily th} (or N\+U\+L\+L if its the default) and find all groups that B\+E\+G\+I\+N with the string {\ttfamily begin} and have that string as at L\+E\+A\+S\+T their start, and then add the fulll group name that matches to the list and return that full group group string.

The list returned must be freed by the caller, with each string being a stringshared string to be freed with eina\+\_\+stringshare\+\_\+del(). Not doing so may result in a leak.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find@{elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find}}
\index{elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find@{elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$group)}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ elm\+\_\+theme\+\_\+group\+\_\+path\+\_\+find (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{group}
\end{DoxyParamCaption}
)}\label{group__Theme_gae016c2e481ad6c9d1f3145819018a55b}


Get the file path for an edje file for the group and theme given. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme, or N\+U\+L\+L for default theme \\
\hline
{\em group} & The group in the edje file to look for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The full path to the file as a string
\end{DoxyReturn}
This function looks up the given edje {\ttfamily group} in the set of theme edje files configured for the theme {\ttfamily th} (which if N\+U\+L\+L indicates the default theme). If not found in any, N\+U\+L\+L wil be returned. If found, the string returned is internal and should not be freed, but will only be valid until the theme is re-\/configured, or cache flushed, so if the string needs to be kept, duplicate it and store that. The string will be a stringshare string that is returned by functions like eina\+\_\+stringshare\+\_\+add() so it can be just references via stringshare functions if desired.

If group is N\+U\+L\+L, then nothing can be looked up, so it is a non-\/sensical request.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+list\+\_\+get}}
\index{elm\+\_\+theme\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+list\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+list\+\_\+get(const Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}const Eina\+\_\+\+List$\ast$ elm\+\_\+theme\+\_\+list\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_gae34c35d3074e32c5c8d9b4f1cf2a0856}


Return a list of theme elements to be used in a theme. 


\begin{DoxyParams}{Parameters}
{\em th} & Theme to get the list of theme elements from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The internal list of theme elements
\end{DoxyReturn}
This returns the internal list of theme elements (will only be valid as long as the theme is not modified by \hyperlink{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}{elm\+\_\+theme\+\_\+set()} or theme is not freed by \hyperlink{group__Theme_ga653236cc5eb9a54b48c40fa913aa8848}{elm\+\_\+theme\+\_\+free()}. This is a list of strings which must not be altered as they are also internal. If {\ttfamily th} is N\+U\+L\+L, then the default theme element list is returned.

A theme element can consist of a full or relative path to a .edj file, or a name, without extension, for a theme to be searched in the known theme paths for Elementary.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}{elm\+\_\+theme\+\_\+set()} 

\hyperlink{group__Theme_ga09bbd45e07a8ab98e1541626a84775ef}{elm\+\_\+theme\+\_\+get()} 
\end{DoxySeeAlso}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get@{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get}}
\index{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get@{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get(const char $\ast$f, Eina\+\_\+\+Bool $\ast$in\+\_\+search\+\_\+path)}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{f, }
\item[{Eina\+\_\+\+Bool $\ast$}]{in\+\_\+search\+\_\+path}
\end{DoxyParamCaption}
)}\label{group__Theme_ga049b8326fe7330879bf7db6752fb1ae9}


Return the full path for a theme element. 


\begin{DoxyParams}{Parameters}
{\em f} & The theme element name \\
\hline
{\em in\+\_\+search\+\_\+path} & Pointer to a boolean to indicate if item is in the search path or not \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The full path to the file found.
\end{DoxyReturn}
This returns a string you should free with free() on success, N\+U\+L\+L 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 {\ttfamily in\+\_\+search\+\_\+path} boolean pointed to is set to {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the file was a search-\/able file and is in the search path, and {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} otherwise. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free@{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free}}
\index{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free@{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free(\+Eina\+\_\+\+List $\ast$list)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free (
\begin{DoxyParamCaption}
\item[{Eina\+\_\+\+List $\ast$}]{list}
\end{DoxyParamCaption}
)}\label{group__Theme_ga65214656238d379bc38e4ba963a039ab}


Free the list returned by \hyperlink{group__Theme_ga9f5f73676a62d95454b3723da1fc1e26}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new()} 

This frees the list of themes returned by \hyperlink{group__Theme_ga9f5f73676a62d95454b3723da1fc1e26}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new()}. Once freed the list should no longer be used. a new list mys be created. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new@{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new}}
\index{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new@{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new(void)}]{\setlength{\rightskip}{0pt plus 5cm}Eina\+\_\+\+List$\ast$ elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_ga9f5f73676a62d95454b3723da1fc1e26}


Return a list of theme elements in the theme search path. 

\begin{DoxyReturn}{Returns}
A list of strings that are the theme element names.
\end{DoxyReturn}
This lists all available theme files in the standard Elementary search path for theme elements, and returns them in alphabetical order as theme element names in a list of strings. Free this with \hyperlink{group__Theme_ga65214656238d379bc38e4ba963a039ab}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+free()} when you are done with the list. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+new@{elm\+\_\+theme\+\_\+new}}
\index{elm\+\_\+theme\+\_\+new@{elm\+\_\+theme\+\_\+new}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+new(void)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Elm\+\_\+\+Theme}$\ast$ elm\+\_\+theme\+\_\+new (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_ga7fd8587e80a75724e6ea3f9a384022c5}


Create a new specific theme. 

This creates an empty specific theme that only uses the default theme. A specific theme has its own private set of extensions and overlays too (which are empty by default). Specific themes do not fall back to themes of parent objects. They are not intended for this use. Use styles, overlays and extensions when needed, but avoid specific themes unless there is no other way (example\+: you want to have a preview of a new theme you are selecting in a \char`\"{}theme selector\char`\"{} window. The preview is inside a scroller and should display what the theme you selected will look like, but not actually apply it yet. The child of the scroller will have a specific theme set to show this preview before the user decides to apply it to all applications). \index{Theme@{Theme}!elm\+\_\+theme\+\_\+overlay\+\_\+add@{elm\+\_\+theme\+\_\+overlay\+\_\+add}}
\index{elm\+\_\+theme\+\_\+overlay\+\_\+add@{elm\+\_\+theme\+\_\+overlay\+\_\+add}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+overlay\+\_\+add(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$item)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+overlay\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{item}
\end{DoxyParamCaption}
)}\label{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}


Prepends a theme overlay to the list of overlays. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to add to, or if N\+U\+L\+L, the default theme \\
\hline
{\em item} & The Edje file path to be used\\
\hline
\end{DoxyParams}
Use this if your application needs to provide some custom overlay theme (An Edje file that replaces some default styles of widgets) where adding new styles, or changing system theme configuration is not possible. Do N\+O\+T use this instead of a proper system theme configuration. Use proper configuration files, profiles, environment variables etc. to set a theme so that the theme can be altered by simple configuration by a user. Using this call to achieve that effect is abusing the A\+P\+I and will create lots of trouble.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()} 

\hyperlink{group__Theme_gad2355bf673f163dbdeba76d2e7b3564c}{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+overlay\+\_\+del@{elm\+\_\+theme\+\_\+overlay\+\_\+del}}
\index{elm\+\_\+theme\+\_\+overlay\+\_\+del@{elm\+\_\+theme\+\_\+overlay\+\_\+del}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+overlay\+\_\+del(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$item)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+overlay\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{item}
\end{DoxyParamCaption}
)}\label{group__Theme_ga100c2a0f541686f3272cc6009aae5864}


Delete a theme overlay from the list of overlays. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to delete from, or if N\+U\+L\+L, the default theme \\
\hline
{\em item} & The name of the theme overlay\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get}}
\index{elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get@{elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get(const Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}const Eina\+\_\+\+List$\ast$ elm\+\_\+theme\+\_\+overlay\+\_\+list\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_ga22f47eb91c14781b4aaff90b66fd7796}


Get the list of registered overlays for the given theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme from which to get the overlays \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
List of theme overlays. Do not free it.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add()} 
\end{DoxySeeAlso}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add@{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add}}
\index{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add@{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add(\+Elm\+\_\+\+Theme $\ast$th, const Eina\+\_\+\+File $\ast$f)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const Eina\+\_\+\+File $\ast$}]{f}
\end{DoxyParamCaption}
)}\label{group__Theme_gad2355bf673f163dbdeba76d2e7b3564c}


Prepends a theme overlay to the list of overlays. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to add to, or if N\+U\+L\+L, the default theme \\
\hline
{\em f} & The Edje file handle to be used\\
\hline
\end{DoxyParams}
Use this if your application needs to provide some custom overlay theme (An Edje file that replaces some default styles of widgets) where adding new styles, or changing system theme configuration is not possible. Do N\+O\+T use this instead of a proper system theme configuration. Use proper configuration files, profiles, environment variables etc. to set a theme so that the theme can be altered by simple configuration by a user. Using this call to achieve that effect is abusing the A\+P\+I and will create lots of trouble.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga71d7575c05248a5c6d7ae3b525e964cc}{elm\+\_\+theme\+\_\+extension\+\_\+add()} 

\hyperlink{group__Theme_ga6c9e97741f3893e14508ec5e4410b4f0}{elm\+\_\+theme\+\_\+overlay\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del@{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del}}
\index{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del@{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del(\+Elm\+\_\+\+Theme $\ast$th, const Eina\+\_\+\+File $\ast$f)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const Eina\+\_\+\+File $\ast$}]{f}
\end{DoxyParamCaption}
)}\label{group__Theme_gaae52bcc0e9da65f97d4b4e169964090d}


Delete a theme overlay from the list of overlays. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to delete from, or if N\+U\+L\+L, the default theme \\
\hline
{\em f} & The file handle of the theme overlay\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_gad2355bf673f163dbdeba76d2e7b3564c}{elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+ref\+\_\+get@{elm\+\_\+theme\+\_\+ref\+\_\+get}}
\index{elm\+\_\+theme\+\_\+ref\+\_\+get@{elm\+\_\+theme\+\_\+ref\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+ref\+\_\+get(const Elm\+\_\+\+Theme $\ast$th)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Elm\+\_\+\+Theme}$\ast$ elm\+\_\+theme\+\_\+ref\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Elm\+\_\+\+Theme} $\ast$}]{th}
\end{DoxyParamCaption}
)}\label{group__Theme_gac5dd1e0811007254fecb6807c9a47d7e}


Return the theme referred to. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to get the reference from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The referenced theme handle
\end{DoxyReturn}
This gets the theme set as the reference theme by \hyperlink{group__Theme_ga31898dcc7f8c5b7414144ba58c8c9b5c}{elm\+\_\+theme\+\_\+ref\+\_\+set()}. If no theme is set as a reference, N\+U\+L\+L is returned. \index{Theme@{Theme}!elm\+\_\+theme\+\_\+ref\+\_\+set@{elm\+\_\+theme\+\_\+ref\+\_\+set}}
\index{elm\+\_\+theme\+\_\+ref\+\_\+set@{elm\+\_\+theme\+\_\+ref\+\_\+set}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+ref\+\_\+set(\+Elm\+\_\+\+Theme $\ast$th, Elm\+\_\+\+Theme $\ast$thref)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+ref\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{thref}
\end{DoxyParamCaption}
)}\label{group__Theme_ga31898dcc7f8c5b7414144ba58c8c9b5c}


Tell the source theme to reference the ref theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme that will do the referencing \\
\hline
{\em thref} & The theme that is the reference source\\
\hline
\end{DoxyParams}
This clears {\ttfamily th} to be empty and then sets it to refer to {\ttfamily thref} so {\ttfamily th} acts as an override to {\ttfamily thref}, but where its overrides don\textquotesingle{}t apply, it will fall through to {\ttfamily thref} for configuration. 

References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+set@{elm\+\_\+theme\+\_\+set}}
\index{elm\+\_\+theme\+\_\+set@{elm\+\_\+theme\+\_\+set}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+set(\+Elm\+\_\+\+Theme $\ast$th, const char $\ast$theme)}]{\setlength{\rightskip}{0pt plus 5cm}void elm\+\_\+theme\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Elm\+\_\+\+Theme} $\ast$}]{th, }
\item[{const char $\ast$}]{theme}
\end{DoxyParamCaption}
)}\label{group__Theme_ga3b3e6f54149ccdc8dfec774e05e8bf1c}


Set the theme search order for the given theme. 


\begin{DoxyParams}{Parameters}
{\em th} & The theme to set the search order, or if N\+U\+L\+L, the default theme \\
\hline
{\em theme} & Theme search string\\
\hline
\end{DoxyParams}
This sets the search string for the theme in path-\/notation from first theme to search, to last, delimited by the \+: character. Example\+:

\char`\"{}shiny\+:/path/to/file.\+edj\+:default\char`\"{}

See the E\+L\+M\+\_\+\+T\+H\+E\+M\+E environment variable for more information.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Theme_ga09bbd45e07a8ab98e1541626a84775ef}{elm\+\_\+theme\+\_\+get()} 

\hyperlink{group__Theme_gae34c35d3074e32c5c8d9b4f1cf2a0856}{elm\+\_\+theme\+\_\+list\+\_\+get()} 
\end{DoxySeeAlso}


References elm\+\_\+theme\+\_\+flush().

\index{Theme@{Theme}!elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get@{elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get}}
\index{elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get@{elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get(void)}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ elm\+\_\+theme\+\_\+system\+\_\+dir\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_gad32423edf14ad435715d5391296f52e0}


Get the file path where elementary system theme files are found. 

\begin{DoxyReturn}{Returns}
A string that holds the path where system themes are
\end{DoxyReturn}
This returns the location in the filesystem where the system themes are to be found that elementary looks for. This is useful for something that wishes toiterate over the files in this folder and display them, for example a theme selector.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\index{Theme@{Theme}!elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get@{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get}}
\index{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get@{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get}!Theme@{Theme}}
\subsubsection[{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get(void)}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Theme_ga06b35f1fa0073d1bd567321e84d7a182}


Get the file path where elementary user theme files are found. 

\begin{DoxyReturn}{Returns}
A string that holds the path where user themes are
\end{DoxyReturn}
This returns the location in the filesystem where the user themes are to be found that elementary looks for. This is useful for something that wishes toiterate over the files in this folder and display them, for example a theme selector.

User themes are always looked for before system themes. The user theme directory is normally expected to be writable by the user.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
