+}
+
+
+
+static void init_win_from_winconf(struct World * world, char id)
+{
+ struct WinConf * winconf = get_winconf_by_id(world, id);
+ char * err = "Trouble in init_win_from_file() with init_win().";
+ exit_err(init_win(world->wmeta, &winconf->win, winconf->title,
+ winconf->height, winconf->width, world, winconf->draw),
+ world, err);
+}
+
+
+
+extern void create_winconfs(struct World * world)
+{
+ char * err = "Trouble with malloc() in init_winconfs().";
+ struct WinConf * winconfs = malloc(4 * sizeof(struct WinConf));
+ exit_err(NULL == winconfs, world, err);
+ winconfs[0].id = 'i';
+ winconfs[0].draw = draw_info_win;
+ winconfs[1].id = 'k';
+ winconfs[1].draw = draw_keys_win;
+ winconfs[2].id = 'l';
+ winconfs[2].draw = draw_log_win;
+ winconfs[3].id = 'm';
+ winconfs[3].draw = draw_map_win;
+ world->winconfs = winconfs;
+}
+
+
+
+extern void init_winconfs(struct World * world)
+{
+ init_winconf_from_file(world, 'i');
+ init_winconf_from_file(world, 'k');
+ init_winconf_from_file(world, 'l');
+ init_winconf_from_file(world, 'm');
+}
+
+
+
+extern void free_winconf(struct World * world, char id)
+{
+ struct WinConf * wc = get_winconf_by_id(world, id);
+ free(wc->title);
+}
+
+
+
+extern void free_winconfs(struct World * world)
+{
+ free_winconf(world, 'i');
+ free_winconf(world, 'k');
+ free_winconf(world, 'l');
+ free_winconf(world, 'm');
+ free(world->winconfs);
+}
+
+
+
+extern void init_wins(struct World * world)
+{
+ init_win_from_winconf(world, 'i');
+ init_win_from_winconf(world, 'k');
+ init_win_from_winconf(world, 'l');
+ init_win_from_winconf(world, 'm');
+}
+
+
+
+extern void free_wins(struct World * world)
+{
+ free_win(get_win_by_id(world, 'i'));
+ free_win(get_win_by_id(world, 'k'));
+ free_win(get_win_by_id(world, 'l'));
+ free_win(get_win_by_id(world, 'm'));
+}
+
+
+
+extern void reload_win_config(struct World * world)
+{
+ while (0 != world->wmeta->active)
+ {
+ suspend_win(world->wmeta, world->wmeta->active);
+ }
+ free_wins(world);
+ free_winconfs(world);
+ create_winconfs(world);
+ init_winconfs(world);
+ init_wins(world);
+ sorted_wintoggle(world);
+}
+
+
+
+extern struct WinConf * get_winconf_by_id(struct World * world, char id)
+{
+ uint8_t i = 0;
+ while (1)
+ {
+ if (id == world->winconfs[i].id)
+ {
+ return &world->winconfs[i];
+ }
+ i++;
+ }
+}
+
+
+
+extern struct Win * get_win_by_id(struct World * world, char id)
+{
+ struct WinConf * wc = get_winconf_by_id(world, id);
+ return wc->win;