summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2017-01-01 18:08:49 +0100
committerDave Davenport <qball@gmpclient.org>2017-01-01 18:08:49 +0100
commitccf3f23d9b1da3f52c269422c22c4faa4b43eb0a (patch)
treefd524c8666c7d60ab978210940e782255853be0a
parent62bfeafb1a84ddf9cd200200dcfd613cf796be0b (diff)
Update comments, rename Widget to ThemeWidget.
-rw-r--r--include/theme.h194
-rw-r--r--include/view-internal.h2
-rw-r--r--include/widgets/scrollbar.h6
-rw-r--r--include/widgets/textbox.h7
-rw-r--r--include/widgets/widget-internal.h75
-rw-r--r--include/widgets/widget.h15
-rw-r--r--include/widgets/window.h7
-rw-r--r--lexer/theme-parser.y10
-rw-r--r--source/theme.c98
-rw-r--r--source/widgets/box.c3
-rw-r--r--source/widgets/textbox.c8
-rw-r--r--source/widgets/widget.c2
-rw-r--r--source/widgets/window.c2
13 files changed, 366 insertions, 63 deletions
diff --git a/include/theme.h b/include/theme.h
index e96636d2..1eaf4718 100644
--- a/include/theme.h
+++ b/include/theme.h
@@ -2,27 +2,48 @@
#define THEME_H
#include <glib.h>
#include <cairo.h>
+
+/**
+ * Distance unit type.
+ */
typedef enum {
+ /** PixelWidth in pixels. */
PW_PX,
+ /** PixelWidth in EM. */
PW_EM,
-
} PixelWidth;
+/**
+ * Structure representing a distance.
+ */
typedef struct {
+ /** Distance */
double distance;
+ /** Unit type of the distance */
PixelWidth type;
} Distance;
+/**
+ * Type of property
+ */
typedef enum {
+ /** Integer */
P_INTEGER,
+ /** Double */
P_DOUBLE,
+ /** String */
P_STRING,
+ /** Boolean */
P_BOOLEAN,
+ /** Color */
P_COLOR,
- // Used in padding.
+ /** Padding */
P_PADDING,
} PropertyType;
+/**
+ * Represent the color in theme.
+ */
typedef struct
{
/** red channel */
@@ -35,6 +56,9 @@ typedef struct
double alpha;
} ThemeColor;
+/**
+ * Padding
+ */
typedef struct
{
Distance top;
@@ -55,45 +79,189 @@ typedef struct {
Padding padding;
} value;
} Property;
-
-typedef struct _Widget {
+/**
+ * ThemeWidget.
+ */
+typedef struct ThemeWidget {
int set;
char *name;
unsigned int num_widgets;
- struct _Widget **widgets;
+ struct ThemeWidget **widgets;
GHashTable *properties;
- struct _Widget *parent;
-} Widget;
-
+ struct ThemeWidget *parent;
+} ThemeWidget;
-extern Widget *rofi_theme;
-Widget *rofi_theme_find_or_create_class ( Widget *base, const char *class );
+/**
+ * Global pointer to the current active theme.
+ */
+extern ThemeWidget *rofi_theme;
+/**
+ * @param base Handle to the current level in the theme.
+ * @param class Name of the new element.
+ *
+ * Create a new element in the theme structure.
+ *
+ * @returns handle to the new entry.
+ */
+ThemeWidget *rofi_theme_find_or_create_class ( ThemeWidget *base, const char *class );
-void rofi_theme_print ( Widget *widget );
+/**
+ * @param widget The widget handle.
+ *
+ * Print out the widget to the commandline.
+ */
+void rofi_theme_print ( ThemeWidget *widget );
+/**
+ * @param type The type of the property to create.
+ *
+ * Create a theme property of type.
+ *
+ * @returns a new property.
+ */
Property *rofi_theme_property_create ( PropertyType type );
+
+/**
+ * @param p The property to free.
+ *
+ * Free the content of the property.
+ */
void rofi_theme_property_free ( Property *p );
-void rofi_theme_free ( Widget * );
+
+/**
+ * @param wid
+ *
+ * Free the widget and alll children.
+ */
+void rofi_theme_free ( ThemeWidget * );
+
+/**
+ * @param file filename to parse.
+ *
+ * Parse the input theme file.
+ */
void rofi_theme_parse_file ( const char *file );
-void rofi_theme_widget_add_properties ( Widget *widget, GHashTable *table );
+
+/**
+ * @param widget The widget handle.
+ * @param table HashTable containing properties set.
+ *
+ * Merge properties with widgets current property.
+ */
+void rofi_theme_widget_add_properties ( ThemeWidget *widget, GHashTable *table );
/**
* Public API
*/
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the distance of the widget.
+ *
+ * @returns The distance value of this property for this widget.
+ */
Distance rofi_theme_get_distance ( const char *wclass, const char *name, const char *state, const char *property, int def );
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the integer of the widget.
+ *
+ * @returns The integer value of this property for this widget.
+ */
int rofi_theme_get_integer ( const char *wclass, const char *name, const char *state, const char *property, int def );
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the boolean of the widget.
+ *
+ * @returns The boolean value of this property for this widget.
+ */
int rofi_theme_get_boolean ( const char *wclass, const char *name, const char *state, const char *property, int def );
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the string of the widget.
+ *
+ * @returns The string value of this property for this widget.
+ */
char *rofi_theme_get_string ( const char *wclass, const char *name, const char *state, const char *property, char *def );
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the padding of the widget.
+ *
+ * @returns The double value of this property for this widget.
+ */
double rofi_theme_get_double ( const char *wclass, const char *name, const char *state, const char *property, double def );
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the color of the widget.
+ *
+ * @returns The color value of this property for this widget.
+ */
void rofi_theme_get_color ( const char *wclass, const char *name, const char *state, const char *property, cairo_t *d);
+
+/**
+ * @param wclass The widget class
+ * @param name The name class
+ * @param state The widget current state
+ * @param property The property to query.
+ * @param def The default value.
+ *
+ * Obtain the padding of the widget.
+ *
+ * @returns The padding of this property for this widget.
+ */
Padding rofi_theme_get_padding ( const char *wclass, const char *name, const char *state, const char *property, Padding pad );
+/**
+ * @param d The distance handle.
+ *
+ * Convert Distance into pixels.
+ * @returns the number of pixels this distance represents.
+ */
int distance_get_pixel ( Distance d );
+
+#ifdef THEME_CONVERTER
+/**
+ * Function to convert old theme into new theme format.
+ */
void rofi_theme_convert_old_theme ( void );
#endif
+#endif
diff --git a/include/view-internal.h b/include/view-internal.h
index f2f000bb..96dffdb7 100644
--- a/include/view-internal.h
+++ b/include/view-internal.h
@@ -24,7 +24,7 @@ struct RofiViewState
/** Flag indicating if view needs to be refiltered. */
int refilter;
-
+ /** Widget representing the main window. */
window *main_window;
/** Main #box widget holding different elements. */
box *main_box;
diff --git a/include/widgets/scrollbar.h b/include/widgets/scrollbar.h
index 0abfa521..4efbaaa5 100644
--- a/include/widgets/scrollbar.h
+++ b/include/widgets/scrollbar.h
@@ -63,6 +63,12 @@ void scrollbar_set_max_value ( scrollbar *sb, unsigned int max );
*/
unsigned int scrollbar_clicked ( const scrollbar *sb, int y );
+/**
+ * @param sb scrollbar object
+ * @param width width of the scrollbar
+ *
+ * Set the width of the scrollbar handle.
+ */
void scrollbar_set_width ( scrollbar *sb, int width );
/*@}*/
#endif // ROFI_SCROLLBAR_H
diff --git a/include/widgets/textbox.h b/include/widgets/textbox.h
index 14484a25..1b6a4152 100644
--- a/include/widgets/textbox.h
+++ b/include/widgets/textbox.h
@@ -196,6 +196,12 @@ int textbox_get_font_width ( const textbox *tb );
* @returns the width of a character in pixels.
*/
double textbox_get_estimated_char_width ( void );
+
+/**
+ * Estimate the height of a character.
+ *
+ * @returns the height of a character in pixels.
+ */
double textbox_get_estimated_char_height ( void );
/**
@@ -255,6 +261,5 @@ PangoAttrList *textbox_get_pango_attributes ( textbox *tb );
* @returns the visible text.
*/
const char *textbox_get_visible_text ( const textbox *tb );
-int distance_get_pixel ( Distance d );
/*@}*/
#endif //ROFI_TEXTBOX_H
diff --git a/include/widgets/widget-internal.h b/include/widgets/widget-internal.h
index 0eb1ef54..5151c8b1 100644
--- a/include/widgets/widget-internal.h
+++ b/include/widgets/widget-internal.h
@@ -57,15 +57,90 @@ struct _widget
const char *state;
};
+/**
+ * @param widget The widget to initialize.
+ * @param name The name of the widget.
+ * @param class The class of the widget.
+ *
+ * Initializes the @widget structure.
+ *
+ */
void widget_init ( widget *widget , const char *name, const char *class_name );
+
+/**
+ * @param widget The widget handle.
+ * @param state The state of the widget.
+ *
+ * Set the state of the widget.
+ */
void widget_set_state ( widget *widget, const char *state );
+/**
+ * @param wid The widget handle.
+ *
+ * Get the left padding of the widget.
+ *
+ * @returns the left padding in pixels.
+ */
int widget_padding_get_left ( const widget *wid );
+
+/**
+ * @param wid The widget handle.
+ *
+ * Get the right padding of the widget.
+ *
+ * @returns the right padding in pixels.
+ */
int widget_padding_get_right ( const widget *wid );
+
+/**
+ * @param wid The widget handle.
+ *
+ * Get the top padding of the widget.
+ *
+ * @returns the top padding in pixels.
+ */
int widget_padding_get_top ( const widget *wid );
+
+/**
+ * @param wid The widget handle.
+ *
+ * Get the bottom padding of the widget.
+ *
+ * @returns the bottom padding in pixels.
+ */
int widget_padding_get_bottom ( const widget *wid );
+
+/**
+ * @param wid The widget handle.
+ *
+ * Get width of the content of the widget
+ *
+ * @returns the widget width, excluding padding.
+ */
int widget_padding_get_remaining_width ( const widget *wid );
+/**
+ * @param wid The widget handle.
+ *
+ * Get height of the content of the widget
+ *
+ * @returns the widget height, excluding padding.
+ */
int widget_padding_get_remaining_height ( const widget *wid );
+/**
+ * @param wid The widget handle.
+ *
+ * Get the combined top and bottom padding.
+ *
+ * @returns the top and bottom padding of the widget in pixels.
+ */
int widget_padding_get_padding_height ( const widget *wid );
+/**
+ * @param wid The widget handle.
+ *
+ * Get the combined left and right padding.
+ *
+ * @returns the left and right padding of the widget in pixels.
+ */
int widget_padding_get_padding_width ( const widget *wid );
#endif // WIDGET_INTERNAL_H
diff --git a/include/widgets/widget.h b/include/widgets/widget.h
index 03e85387..9dda0457 100644
--- a/include/widgets/widget.h
+++ b/include/widgets/widget.h
@@ -175,7 +175,22 @@ void widget_set_clicked_handler ( widget *wid, widget_clicked_cb cb, void *udata
gboolean widget_motion_notify ( widget *wid, xcb_motion_notify_event_t *xme );
+/**
+ * @param wid The widget handle
+ * @param name The name of the widget.
+ *
+ * Set name on widget.
+ */
void widget_set_name ( widget *wid, const char *name );
+
+/**
+ * @param wid The widget handle
+ *
+ * Get the desired height of this widget recursively.
+ *
+ * @returns the desired height of the widget in pixels.
+ */
int widget_get_desired_height ( widget *wid );
+
/*@}*/
#endif // ROFI_WIDGET_H
diff --git a/include/widgets/window.h b/include/widgets/window.h
index 6d8a90a1..3c320d10 100644
--- a/include/widgets/window.h
+++ b/include/widgets/window.h
@@ -32,6 +32,13 @@ window * window_create ( const char *name );
*/
void window_add ( window *window, widget *child );
+/**
+ * @param window Handle to the window widget.
+ *
+ * Get the border width of the widget.
+ *
+ * @returns the border width (times 2) of the widget.
+ */
int window_get_border_width ( const window *window );
/*@}*/
#endif // ROFI_WINDOW_H
diff --git a/lexer/theme-parser.y b/lexer/theme-parser.y
index e2f7795f..9730de7a 100644
--- a/lexer/theme-parser.y
+++ b/lexer/theme-parser.y
@@ -16,7 +16,7 @@
#include "theme.h"
#include "lexer/theme-parser.h"
-Widget *rofi_theme = NULL;
+ThemeWidget *rofi_theme = NULL;
void yyerror(YYLTYPE *yylloc, const char* s);
int yylex (YYSTYPE *, YYLTYPE *);
%}
@@ -27,7 +27,7 @@ int yylex (YYSTYPE *, YYLTYPE *);
char *sval;
int bval;
ThemeColor colorval;
- Widget *theme;
+ ThemeWidget *theme;
GList *name_path;
Property *property;
GHashTable *property_list;
@@ -79,7 +79,7 @@ start:
entries:
%empty {
// There is always a base widget.
- $$ = rofi_theme = (Widget*)g_malloc0 (sizeof(Widget));
+ $$ = rofi_theme = (ThemeWidget*)g_malloc0 (sizeof(ThemeWidget));
rofi_theme->name = g_strdup ( "Root" );
}
| entries
@@ -94,7 +94,7 @@ entry:
CLASS_PREFIX class_name state_path BOPEN optional_properties BCLOSE
{
gchar *classn = g_strconcat ( "@", $2, NULL);
- Widget *widget = rofi_theme_find_or_create_class ( rofi_theme , classn );
+ ThemeWidget *widget = rofi_theme_find_or_create_class ( rofi_theme , classn );
g_free(classn);
widget->set = TRUE;
for ( GList *iter = g_list_first ( $3 ); iter ; iter = g_list_next ( iter ) ) {
@@ -107,7 +107,7 @@ CLASS_PREFIX class_name state_path BOPEN optional_properties BCLOSE
}
| NAME_PREFIX name_path state_path BOPEN optional_properties BCLOSE
{
- Widget *widget = rofi_theme;
+ ThemeWidget *widget = rofi_theme;
for ( GList *iter = g_list_first ( $2 ); iter ; iter = g_list_next ( iter ) ) {
widget = rofi_theme_find_or_create_class ( widget, iter->data );
}
diff --git a/source/theme.c b/source/theme.c
index 13c1d1cd..8bba8206 100644
--- a/source/theme.c
+++ b/source/theme.c
@@ -10,7 +10,7 @@
void yyerror ( YYLTYPE *ylloc, const char *);
-Widget *rofi_theme_find_or_create_class ( Widget *base, const char *class )
+ThemeWidget *rofi_theme_find_or_create_class ( ThemeWidget *base, const char *class )
{
for ( unsigned int i = 0; i < base->num_widgets;i++){
if ( g_strcmp0(base->widgets[i]->name, class) == 0 ){
@@ -18,9 +18,9 @@ Widget *rofi_theme_find_or_create_class ( Widget *base, const char *class )
}
}
- base->widgets = g_realloc ( base->widgets, sizeof(Widget*)*(base->num_widgets+1));
- base->widgets[base->num_widgets] = g_malloc0(sizeof(Widget));
- Widget *retv = base->widgets[base->num_widgets];
+ base->widgets = g_realloc ( base->widgets, sizeof(ThemeWidget*)*(base->num_widgets+1));
+ base->widgets[base->num_widgets] = g_malloc0(sizeof(ThemeWidget));
+ ThemeWidget *retv = base->widgets[base->num_widgets];
retv->parent = base;
retv->name = g_strdup(class);
base->num_widgets++;
@@ -47,7 +47,7 @@ void rofi_theme_property_free ( Property *p )
g_free(p);
}
-void rofi_theme_free ( Widget *widget )
+void rofi_theme_free ( ThemeWidget *widget )
{
if ( widget == NULL ){
return;
@@ -116,14 +116,14 @@ static void rofi_theme_print_property_index ( int depth, Property *p )
putchar ( '\n' );
}
-static void rofi_theme_print_index ( Widget *widget )
+static void rofi_theme_print_index ( ThemeWidget *widget )
{
GHashTableIter iter;
gpointer key, value;
if ( widget->properties ){
int index = 0;
GList *list = NULL;
- Widget *w = widget;
+ ThemeWidget *w = widget;
while ( w){
if ( g_strcmp0(w->name,"Root") == 0 ) {
break;
@@ -164,16 +164,32 @@ static void rofi_theme_print_index ( Widget *widget )
rofi_theme_print_index ( widget->widgets[i] );
}
}
-void rofi_theme_print ( Widget *widget )
+void rofi_theme_print ( ThemeWidget *widget )
{
rofi_theme_print_index ( widget );
}
+/**
+ * Main lex parser.
+ */
int yyparse();
+
+/**
+ * Destroy the internal of lex parser.
+ */
void yylex_destroy( void );
+
+/**
+ * Global handle input file to flex parser.
+ */
extern FILE* yyin;
-extern Widget *rofi_theme;
+/**
+ * @param yylloc The file location.
+ * @param s Error message string.
+ *
+ * Error handler for the lex parser.
+ */
void yyerror(YYLTYPE *yylloc, const char* s) {
fprintf(stderr, "Parse error: %s\n", s);
fprintf(stderr, "From line %d column %d to line %d column %d\n", yylloc->first_line, yylloc->first_column, yylloc->last_line, yylloc->last_column);
@@ -186,7 +202,7 @@ static gboolean rofi_theme_steal_property_int ( gpointer key, gpointer value, gp
g_hash_table_replace ( table, key, value);
return TRUE;
}
-void rofi_theme_widget_add_properties ( Widget *widget, GHashTable *table )
+void rofi_theme_widget_add_properties ( ThemeWidget *widget, GHashTable *table )
{
if ( table == NULL ) {
return;
@@ -204,7 +220,7 @@ void rofi_theme_widget_add_properties ( Widget *widget, GHashTable *table )
* Public API
*/
-static Widget *rofi_theme_find_single ( Widget *widget, const char *name)
+static ThemeWidget *rofi_theme_find_single ( ThemeWidget *widget, const char *name)
{
for ( unsigned int j = 0; j < widget->num_widgets;j++){
if ( g_strcmp0(widget->widgets[j]->name, name ) == 0 ){
@@ -214,7 +230,7 @@ static Widget *rofi_theme_find_single ( Widget *widget, const char *name)
return widget;
}
-static Widget *rofi_theme_find ( Widget *widget , const char *name, const gboolean exact )
+static ThemeWidget *rofi_theme_find ( ThemeWidget *widget , const char *name, const gboolean exact )
{
if ( widget == NULL || name == NULL ) {
return widget;
@@ -223,7 +239,7 @@ static Widget *rofi_theme_find ( Widget *widget , const char *name, const gboole
int found = TRUE;
for ( unsigned int i = 0; found && names && names[i]; i++ ){
found = FALSE;
- Widget *f = rofi_theme_find_single ( widget, names[i]);
+ ThemeWidget *f = rofi_theme_find_single ( widget, names[i]);
if ( f != widget ){
widget = f;
found = TRUE;
@@ -237,7 +253,7 @@ static Widget *rofi_theme_find ( Widget *widget , const char *name, const gboole
}
}
-static Property *rofi_theme_find_property ( Widget *widget, PropertyType type, const char *property )
+static Property *rofi_theme_find_property ( ThemeWidget *widget, PropertyType type, const char *property )
{
while ( widget ) {
if ( widget->properties && g_hash_table_contains ( widget->properties, property) ) {
@@ -250,10 +266,10 @@ static Property *rofi_theme_find_property ( Widget *widget, PropertyType type, c
}
return NULL;
}
-static Widget *rofi_theme_find_widget ( const char *wclass, const char *name, const char *state )
+static ThemeWidget *rofi_theme_find_widget ( const char *wclass, const char *name, const char *state )
{
// First find exact match based on name.
- Widget *widget = rofi_theme_find ( rofi_theme, name, TRUE );
+ ThemeWidget *widget = rofi_theme_find ( rofi_theme, name, TRUE );
widget = rofi_theme_find ( widget, state, TRUE );
if ( widget == NULL ){
@@ -274,7 +290,7 @@ static Widget *rofi_theme_find_widget ( const char *wclass, const char *name, co
int rofi_theme_get_integer ( const char *wclass, const char *name, const char *state, const char *property, int def )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_INTEGER, property );
if ( p ){
return p->value.i;
@@ -283,7 +299,7 @@ int rofi_theme_get_integer ( const char *wclass, const char *name, const char *
}
Distance rofi_theme_get_distance ( const char *wclass, const char *name, const char *state, const char *property, int def )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_PADDING, property );
if ( p ){
return p->value.padding.left;
@@ -298,7 +314,7 @@ Distance rofi_theme_get_distance ( const char *wclass, const char *name, const
int rofi_theme_get_boolean ( const char *wclass, const char *name, const char *state, const char *property, int def )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_BOOLEAN, property );
if ( p ){
return p->value.b;
@@ -308,7 +324,7 @@ int rofi_theme_get_boolean ( const char *wclass, const char *name, const char *
char *rofi_theme_get_string ( const char *wclass, const char *name, const char *state, const char *property, char *def )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_STRING, property );
if ( p ){
return p->value.s;
@@ -317,7 +333,7 @@ char *rofi_theme_get_string ( const char *wclass, const char *name, const char
}
double rofi_theme_get_double ( const char *wclass, const char *name, const char *state, const char *property, double def )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_DOUBLE, property );
if ( p ){
return p->value.b;
@@ -326,7 +342,7 @@ double rofi_theme_get_double ( const char *wclass, const char *name, const char
}
void rofi_theme_get_color ( const char *wclass, const char *name, const char *state, const char *property, cairo_t *d)
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_COLOR, property );
if ( p ){
cairo_set_source_rgba ( d,
@@ -340,7 +356,7 @@ void rofi_theme_get_color ( const char *wclass, const char *name, const char *s
}
Padding rofi_theme_get_padding ( const char *wclass, const char *name, const char *state, const char *property, Padding pad )
{
- Widget *widget = rofi_theme_find_widget ( wclass, name, state );
+ ThemeWidget *widget = rofi_theme_find_widget ( wclass, name, state );
Property *p = rofi_theme_find_property ( widget, P_PADDING, property );
if ( p ){
pad = p->value.padding;
@@ -385,12 +401,12 @@ void rofi_theme_convert_old_theme ( void )
if ( rofi_theme != NULL ){
return;
}
- rofi_theme = (Widget*)g_malloc0 ( sizeof ( Widget ) );
+ rofi_theme = (ThemeWidget*)g_malloc0 ( sizeof ( ThemeWidget ) );
rofi_theme->name = g_strdup ( "Root" );
rofi_theme->properties = rofi_theme_convert_create_property_ht ( );
{
// Spacing
- Widget *box_widget = rofi_theme_find_or_create_class ( rofi_theme , "@box" );
+ ThemeWidget *box_widget = rofi_theme_find_or_create_class ( rofi_theme , "@box" );
box_widget->properties = rofi_theme_convert_create_property_ht ( );
Property *p = rofi_theme_property_create ( P_INTEGER );
p->name = g_strdup("spacing");
@@ -399,7 +415,7 @@ void rofi_theme_convert_old_theme ( void )
}
{
// Spacing
- Widget *listview_widget = rofi_theme_find_or_create_class ( rofi_theme , "@listview" );
+ ThemeWidget *listview_widget = rofi_theme_find_or_create_class ( rofi_theme , "@listview" );
listview_widget->properties = rofi_theme_convert_create_property_ht ( );
Property *p = rofi_theme_property_create ( P_INTEGER );
p->name = g_strdup("spacing");
@@ -408,7 +424,7 @@ void rofi_theme_convert_old_theme ( void )
}
{
// Border width.
- Widget *window_widget = rofi_theme_find_or_create_class ( rofi_theme , "@window" );
+ ThemeWidget *window_widget = rofi_theme_find_or_create_class ( rofi_theme , "@window" );
window_widget->properties = rofi_theme_convert_create_property_ht ( );
Property *p = rofi_theme_property_create ( P_INTEGER );
p->name = g_strdup("border-width");
@@ -432,7 +448,7 @@ void rofi_theme_convert_old_theme ( void )
g_hash_table_replace ( rofi_theme->properties, p->name, p );
if ( vals[2] != NULL ) {
- Widget *widget = rofi_theme_find_or_create_class ( rofi_theme , "@separator" );
+ ThemeWidget *widget = rofi_theme_find_or_create_class ( rofi_theme , "@separator" );
widget->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[1], "foreground" );
g_hash_table_replace ( widget->properties, p->name, p );
@@ -444,30 +460,30 @@ void rofi_theme_convert_old_theme ( void )
g_strfreev ( vals );
{
Property *p = NULL;
- Widget *widget = rofi_theme_find_or_create_class ( rofi_theme , "@textbox" );
+ ThemeWidget *widget = rofi_theme_find_or_create_class ( rofi_theme , "@textbox" );
- Widget *wnormal = rofi_theme_find_or_create_class ( widget, "normal" );
- Widget *wselected = rofi_theme_find_or_create_class ( widget, "selected" );
- Widget *walternate = rofi_theme_find_or_create_class ( widget, "alternate" );
+ ThemeWidget *wnormal = rofi_theme_find_or_create_class ( widget, "normal" );
+ ThemeWidget *wselected = rofi_theme_find_or_create_class ( widget, "selected" );
+ ThemeWidget *walternate = rofi_theme_find_or_create_class ( widget, "alternate" );
gchar **vals = g_strsplit ( config.color_normal, ",", 5 );
if ( g_strv_length (vals) == 5 ) {
- Widget *wnn = rofi_theme_find_or_create_class ( wnormal, "normal" );
+ ThemeWidget *wnn = rofi_theme_find_or_create_class ( wnormal, "normal" );
wnn->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[0], "background" );
g_hash_table_replace ( wnn->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[1], "foreground" );
g_hash_table_replace ( wnn->properties, p->name, p );
- Widget *wsl = rofi_theme_find_or_create_class ( wselected, "normal" );
+ ThemeWidget *wsl = rofi_theme_find_or_create_class ( wselected, "normal" );
wsl->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[3], "background" );
g_hash_table_replace ( wsl->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[4], "foreground" );
g_hash_table_replace ( wsl->properties, p->name, p );
- Widget *wal = rofi_theme_find_or_create_class ( walternate, "normal" );
+ ThemeWidget *wal = rofi_theme_find_or_create_class ( walternate, "normal" );
wal->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[2], "background" );
g_hash_table_replace ( wal->properties, p->name, p );
@@ -478,21 +494,21 @@ void rofi_theme_convert_old_theme ( void )
vals = g_strsplit ( config.color_urgent, ",", 5 );
if ( g_strv_length (vals) == 5 ) {
- Widget *wnn = rofi_theme_find_or_create_class ( wnormal, "urgent" );
+ ThemeWidget *wnn = rofi_theme_find_or_create_class ( wnormal, "urgent" );
wnn->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[0], "background" );
g_hash_table_replace ( wnn->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[1], "foreground" );
g_hash_table_replace ( wnn->properties, p->name, p );
- Widget *wsl = rofi_theme_find_or_create_class ( wselected, "urgent" );
+ ThemeWidget *wsl = rofi_theme_find_or_create_class ( wselected, "urgent" );
wsl->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[3], "background" );
g_hash_table_replace ( wsl->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[4], "foreground" );
g_hash_table_replace ( wsl->properties, p->name, p );
- Widget *wal = rofi_theme_find_or_create_class ( walternate, "urgent" );
+ ThemeWidget *wal = rofi_theme_find_or_create_class ( walternate, "urgent" );
wal->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[2], "background" );
g_hash_table_replace ( wal->properties, p->name, p );
@@ -503,21 +519,21 @@ void rofi_theme_convert_old_theme ( void )
vals = g_strsplit ( config.color_active, ",", 5 );
if ( g_strv_length (vals) == 5 ) {
- Widget *wnn = rofi_theme_find_or_create_class ( wnormal, "active" );
+ ThemeWidget *wnn = rofi_theme_find_or_create_class ( wnormal, "active" );
wnn->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[0], "background" );
g_hash_table_replace ( wnn->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[1], "foreground" );
g_hash_table_replace ( wnn->properties, p->name, p );
- Widget *wsl = rofi_theme_find_or_create_class ( wselected, "active" );
+ ThemeWidget *wsl = rofi_theme_find_or_create_class ( wselected, "active" );
wsl->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[3], "background" );
g_hash_table_replace ( wsl->properties, p->name, p );
p = rofi_theme_convert_get_color ( vals[4], "foreground" );
g_hash_table_replace ( wsl->properties, p->name, p );
- Widget *wal = rofi_theme_find_or_create_class ( walternate, "active" );
+ ThemeWidget *wal = rofi_theme_find_or_create_class ( walternate, "active" );
wal->properties = rofi_theme_convert_create_property_ht ();
p = rofi_theme_convert_get_color ( vals[2], "background" );
g_hash_table_replace ( wal->properties, p->name, p );
diff --git a/source/widgets/box.c b/source/widgets/box.c
index 8a33984f..d113c2e0 100644
--- a/source/widgets/box.c
+++ b/source/widgets/box.c
@@ -32,8 +32,11 @@
#include "theme.h"
#define LOG_DOMAIN "Widgets.Box"
+
+/** Class name of box widget */
const char *BOX_CLASS_NAME = "@box";
+/** Default spacing used in the box*/
#define DEFAULT_SPACING 2
/**
diff --git a/source/widgets/textbox.c b/source/widgets/textbox.c
index 69b73473..e29ec051 100644
--- a/source/widgets/textbox.c
+++ b/source/widgets/textbox.c
@@ -