Implement mapping from string to layout as extra function
This commit is contained in:
parent
367811be2d
commit
3410cb256d
|
@ -69,6 +69,14 @@ Rect rect_sub(Rect a, Rect b);
|
||||||
*/
|
*/
|
||||||
__attribute__((pure)) bool name_is_digits(const char *name);
|
__attribute__((pure)) bool name_is_digits(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set 'out' to the layout_t value for the given layout. The function
|
||||||
|
* returns true on success or false if the passed string is not a valid
|
||||||
|
* layout name.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
bool layout_from_name(const char *layout_str, layout_t *out);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
||||||
* interpreted as a "named workspace".
|
* interpreted as a "named workspace".
|
||||||
|
|
|
@ -1489,21 +1489,8 @@ void cmd_move_direction(I3_CMD, const char *direction, long move_px) {
|
||||||
void cmd_layout(I3_CMD, const char *layout_str) {
|
void cmd_layout(I3_CMD, const char *layout_str) {
|
||||||
HANDLE_EMPTY_MATCH;
|
HANDLE_EMPTY_MATCH;
|
||||||
|
|
||||||
if (strcmp(layout_str, "stacking") == 0)
|
|
||||||
layout_str = "stacked";
|
|
||||||
layout_t layout;
|
layout_t layout;
|
||||||
/* default is a special case which will be handled in con_set_layout(). */
|
if (!layout_from_name(layout_str, &layout)) {
|
||||||
if (strcmp(layout_str, "default") == 0)
|
|
||||||
layout = L_DEFAULT;
|
|
||||||
else if (strcmp(layout_str, "stacked") == 0)
|
|
||||||
layout = L_STACKED;
|
|
||||||
else if (strcmp(layout_str, "tabbed") == 0)
|
|
||||||
layout = L_TABBED;
|
|
||||||
else if (strcmp(layout_str, "splitv") == 0)
|
|
||||||
layout = L_SPLITV;
|
|
||||||
else if (strcmp(layout_str, "splith") == 0)
|
|
||||||
layout = L_SPLITH;
|
|
||||||
else {
|
|
||||||
ELOG("Unknown layout \"%s\", this is a mismatch between code and parser spec.\n", layout_str);
|
ELOG("Unknown layout \"%s\", this is a mismatch between code and parser spec.\n", layout_str);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
25
src/util.c
25
src/util.c
|
@ -66,6 +66,31 @@ __attribute__((pure)) bool name_is_digits(const char *name) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set 'out' to the layout_t value for the given layout. The function
|
||||||
|
* returns true on success or false if the passed string is not a valid
|
||||||
|
* layout name.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
bool layout_from_name(const char *layout_str, layout_t *out) {
|
||||||
|
if (strcmp(layout_str, "default") == 0) {
|
||||||
|
*out = L_DEFAULT;
|
||||||
|
} else if (strcasecmp(layout_str, "stacked") == 0 ||
|
||||||
|
strcasecmp(layout_str, "stacking") == 0) {
|
||||||
|
*out = L_STACKED;
|
||||||
|
} else if (strcasecmp(layout_str, "tabbed") == 0) {
|
||||||
|
*out = L_TABBED;
|
||||||
|
} else if (strcasecmp(layout_str, "splitv") == 0) {
|
||||||
|
*out = L_SPLITV;
|
||||||
|
} else if (strcasecmp(layout_str, "splith") == 0) {
|
||||||
|
*out = L_SPLITH;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
* Parses the workspace name as a number. Returns -1 if the workspace should be
|
||||||
* interpreted as a "named workspace".
|
* interpreted as a "named workspace".
|
||||||
|
|
Loading…
Reference in New Issue