Move PropertyType into rofi-types header and add check for names pairs.

This commit is contained in:
Dave Davenport 2017-08-17 19:04:01 +02:00
parent fb8f56dab3
commit 686be5856c
6 changed files with 62 additions and 35 deletions

View File

@ -1,6 +1,41 @@
#ifndef INCLUDE_ROFI_TYPES_H
#define INCLUDE_ROFI_TYPES_H
extern const char *PropertyTypeName[];
/**
* Type of property
*/
typedef enum
{
/** Integer */
P_INTEGER,
/** Double */
P_DOUBLE,
/** String */
P_STRING,
/** Boolean */
P_BOOLEAN,
/** Color */
P_COLOR,
/** RofiPadding */
P_PADDING,
/** Link to global setting */
P_LINK,
/** Position */
P_POSITION,
/** Highlight */
P_HIGHLIGHT,
/** List */
P_LIST,
/** Orientation */
P_ORIENTATION,
/** Number of types. */
P_NUM_TYPES,
} PropertyType;
/**
* This array maps PropertyType to a user-readable name.
* It is important this is kept in sync.
*/
extern const char * const PropertyTypeName[P_NUM_TYPES];
#endif // INCLUDE_ROFI_TYPES_H

View File

@ -31,7 +31,8 @@
#include <cairo.h>
#include <widgets/widget.h>
#include <settings.h>
#include "theme.h"
#include "rofi-types.h"
/** Style of text highlight */
typedef enum
@ -95,34 +96,6 @@ typedef enum
ROFI_ORIENTATION_VERTICAL,
ROFI_ORIENTATION_HORIZONTAL
} RofiOrientation;
/**
* Type of property
*/
typedef enum
{
/** Integer */
P_INTEGER,
/** Double */
P_DOUBLE,
/** String */
P_STRING,
/** Boolean */
P_BOOLEAN,
/** Color */
P_COLOR,
/** RofiPadding */
P_PADDING,
/** Link to global setting */
P_LINK,
/** Position */
P_POSITION,
/** Highlight */
P_HIGHLIGHT,
/** List */
P_LIST,
/** Orientation */
P_ORIENTATION,
} PropertyType;
/**
* Represent the color in theme.

View File

@ -3,7 +3,7 @@
/**
* Name of the property type
*/
const char *PropertyTypeName[] = {
const char * const PropertyTypeName[P_NUM_TYPES] = {
/** Integer */
"Integer",
/** Double */
@ -14,8 +14,8 @@ const char *PropertyTypeName[] = {
"Boolean",
/** Color */
"Color",
/** RofiPadding */
"RofiPadding",
/** Padding */
"Padding",
/** Link to global setting */
"Reference",
/** Position */

View File

@ -391,7 +391,6 @@ void config_parse_cmd_options ( void )
static gboolean __config_parser_set_property ( XrmOption *option, const Property *p, char **error )
{
extern const char *PropertyTypeName[];
if ( option->type == xrm_String ) {
if ( p->type != P_STRING && p->type != P_LIST ) {
*error = g_strdup_printf ( "Option: %s needs to be set with a string not a %s.", option->name, PropertyTypeName[p->type] );

@ -1 +1 @@
Subproject commit 2c5f1b2654a9b4480b857cd8395af127a6c55199
Subproject commit 3467c6a4ee3b7a2f53dfd0e15cd72f00d782a0dd

View File

@ -1233,6 +1233,25 @@ START_TEST ( test_prepare_path )
g_free ( current_dir );
}
END_TEST
START_TEST(test_properties_types_names)
{
ck_assert_str_eq ( PropertyTypeName[P_INTEGER], "Integer");
ck_assert_str_eq ( PropertyTypeName[P_DOUBLE], "Double");
ck_assert_str_eq ( PropertyTypeName[P_STRING], "String");
ck_assert_str_eq ( PropertyTypeName[P_BOOLEAN], "Boolean");
ck_assert_str_eq ( PropertyTypeName[P_COLOR], "Color");
ck_assert_str_eq ( PropertyTypeName[P_PADDING], "Padding");
ck_assert_str_eq ( PropertyTypeName[P_LINK], "Reference");
ck_assert_str_eq ( PropertyTypeName[P_POSITION], "Position");
ck_assert_str_eq ( PropertyTypeName[P_HIGHLIGHT], "Highlight");
ck_assert_str_eq ( PropertyTypeName[P_LIST], "List");
ck_assert_str_eq ( PropertyTypeName[P_ORIENTATION], "Orientation");
}
END_TEST
static Suite * theme_parser_suite (void)
{
Suite *s;
@ -1244,6 +1263,7 @@ static Suite * theme_parser_suite (void)
{
tc_core = tcase_create("Core");
tcase_add_checked_fixture(tc_core, theme_parser_setup, theme_parser_teardown);
tcase_add_test(tc_core, test_properties_types_names);
tcase_add_test(tc_core, test_core_empty_string);
tcase_add_test(tc_core, test_core_empty_global_section);
tcase_add_test(tc_core, test_core_empty_section);