Implement most code to actually set the configuration settings

next
Michael Stapelberg 2009-09-13 22:13:28 +02:00
parent 7fda4a2c32
commit 207ad0a7df
1 changed files with 49 additions and 15 deletions

View File

@ -11,8 +11,10 @@
#include "data.h" #include "data.h"
#include "config.h" #include "config.h"
#include "i3.h"
#include "util.h" #include "util.h"
#include "queue.h" #include "queue.h"
#include "table.h"
extern int yylex(void); extern int yylex(void);
extern FILE *yyin; extern FILE *yyin;
@ -210,6 +212,13 @@ bind:
TOKBIND WHITESPACE binding_modifiers NUMBER WHITESPACE command TOKBIND WHITESPACE binding_modifiers NUMBER WHITESPACE command
{ {
printf("\tFound binding mod%d with key %d and command %s\n", $<number>3, $4, $<string>6); printf("\tFound binding mod%d with key %d and command %s\n", $<number>3, $4, $<string>6);
Binding *new = scalloc(sizeof(Binding));
new->keycode = $<number>4;
new->mods = $<number>3;
new->command = sstrdup($<string>6);
TAILQ_INSERT_TAIL(&bindings, new, bindings);
} }
; ;
@ -217,30 +226,42 @@ bindsym:
TOKBINDSYM WHITESPACE binding_modifiers WORD WHITESPACE command TOKBINDSYM WHITESPACE binding_modifiers WORD WHITESPACE command
{ {
printf("\tFound symbolic mod%d with key %s and command %s\n", $<number>3, $4, $<string>6); printf("\tFound symbolic mod%d with key %s and command %s\n", $<number>3, $4, $<string>6);
Binding *new = scalloc(sizeof(Binding));
new->symbol = sstrdup($4);
new->mods = $<number>3;
new->command = sstrdup($<string>6);
TAILQ_INSERT_TAIL(&bindings, new, bindings);
} }
; ;
floating_modifier: floating_modifier:
TOKFLOATING_MODIFIER WHITESPACE binding_modifiers TOKFLOATING_MODIFIER WHITESPACE binding_modifiers
{ {
printf("\tfloating modifier %d\n", $<number>3); LOG("floating modifier = %d\n", $<number>3);
config.floating_modifier = $<number>3;
} }
; ;
workspace: workspace:
TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen workspace_name
{ {
printf("\t workspace %d to screen %s\n", $<number>3, $<string>7); int ws_num = $<number>3;
} if (ws_num < 1 || ws_num > 10) {
| TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen WHITESPACE workspace_name LOG("Invalid workspace assignment, workspace number %d out of range\n", ws_num);
{ } else {
printf("\t quoted: %s\n", $<string>9); workspaces[ws_num - 1].preferred_screen = sstrdup($<string>7);
if ($<string>8 != NULL)
workspace_set_name(&(workspaces[ws_num - 1]), $<string>8);
}
} }
; ;
workspace_name: workspace_name:
QUOTEDSTRING /* NULL */ { $<string>$ = NULL; }
| STR | WHITESPACE QUOTEDSTRING { $<string>$ = $<string>2; }
| WHITESPACE STR { $<string>$ = $<string>2; }
; ;
screen: screen:
@ -253,6 +274,7 @@ screen:
assign: assign:
TOKASSIGN WHITESPACE window_class WHITESPACE optional_arrow NUMBER TOKASSIGN WHITESPACE window_class WHITESPACE optional_arrow NUMBER
{ {
/* TODO */
printf("assignment of %s to %d\n", $<string>3, $<number>6); printf("assignment of %s to %d\n", $<string>3, $<number>6);
} }
; ;
@ -270,39 +292,51 @@ optional_arrow:
ipcsocket: ipcsocket:
TOKIPCSOCKET WHITESPACE STR TOKIPCSOCKET WHITESPACE STR
{ {
printf("ipc %s\n", $<string>3); config.ipc_socket_path = sstrdup($<string>3);
} }
; ;
exec: exec:
TOKEXEC WHITESPACE STR TOKEXEC WHITESPACE STR
{ {
printf("exec %s\n", $<string>3); struct Autostart *new = smalloc(sizeof(struct Autostart));
new->command = sstrdup($<string>3);
TAILQ_INSERT_TAIL(&autostarts, new, autostarts);
} }
; ;
terminal: terminal:
TOKTERMINAL WHITESPACE STR TOKTERMINAL WHITESPACE STR
{ {
printf("terminal %s\n", $<string>3); config.terminal = sstrdup($<string>3);
printf("terminal %s\n", config.terminal);
} }
; ;
font: font:
TOKFONT WHITESPACE STR TOKFONT WHITESPACE STR
{ {
printf("font %s\n", $<string>3); config.font = sstrdup($<string>3);
printf("font %s\n", config.font);
} }
; ;
color: color:
TOKCOLOR WHITESPACE '#' HEX WHITESPACE '#' HEX WHITESPACE '#' HEX TOKCOLOR WHITESPACE colorpixel WHITESPACE colorpixel WHITESPACE colorpixel
{ {
printf("color %p, %s and %s and %s\n", $<color>1, $<string>4, $<string>7, $<string>10); struct Colortriple *dest = $<color>1;
dest->border = $<number>3;
dest->background = $<number>5;
dest->text = $<number>7;
} }
; ;
colorpixel:
'#' HEX { $<number>$ = get_colorpixel(global_conn, $<string>2); }
;
binding_modifiers: binding_modifiers:
/* NULL */ { $<number>$ = 0; } /* NULL */ { $<number>$ = 0; }