Refactor perl code to write file header
[emu8051.git] / src / app-config.c
index 58f76e5..90022f2 100644 (file)
@@ -51,12 +51,18 @@ app_config_init(void)
        cfg->clear_ram_on_file_load = false;
 
        /* UI settings */
-       cfg->layout = UI_LAYOUT1;
        cfg->win_width = 640;
        cfg->win_height = 480;
        cfg->hpane_pos = 100;
        cfg->vpane_pos = 200;
        cfg->main_pane_pos = 200;
+
+       /* View menu options */
+       cfg->layout = UI_LAYOUT1;
+       cfg->view_int_memory = 1;
+       cfg->view_sfr_memory = 1;
+       cfg->view_ext_memory = 1;
+       cfg->bits_per_row = 16; /* 8 or 16 */
 }
 
 static int
@@ -83,19 +89,27 @@ app_config_load_from_key_file(GKeyFile *kf)
                                    &cfg->clear_ram_on_file_load);
 
        /* ui */
-       app_config_key_file_get_int(kf, "ui", "layout",  &cfg->layout);
-
-       if ((cfg->layout != UI_LAYOUT1) && (cfg->layout != UI_LAYOUT2)) {
-               log_fail_no_exit("Invalid layout, defaulting to layout 1");
-               cfg->layout = UI_LAYOUT1;
-       }
-
        app_config_key_file_get_int(kf, "ui", "win_width",  &cfg->win_width);
        app_config_key_file_get_int(kf, "ui", "win_height", &cfg->win_height);
        app_config_key_file_get_int(kf, "ui", "hpane_pos",  &cfg->hpane_pos);
        app_config_key_file_get_int(kf, "ui", "vpane_pos",  &cfg->vpane_pos);
        app_config_key_file_get_int(kf, "ui", "main_pane_pos",
                                    &cfg->main_pane_pos);
+
+       /* View */
+       app_config_key_file_get_int(kf, "view", "layout",  &cfg->layout);
+       if ((cfg->layout != UI_LAYOUT1) && (cfg->layout != UI_LAYOUT2)) {
+               log_err("Invalid layout, defaulting to layout 1");
+               cfg->layout = UI_LAYOUT1;
+       }
+       app_config_key_file_get_int(kf, "view", "int_memory",
+                                   &cfg->view_int_memory);
+       app_config_key_file_get_int(kf, "view", "sfr_memory",
+                                   &cfg->view_sfr_memory);
+       app_config_key_file_get_int(kf, "view", "ext_memory",
+                                   &cfg->view_ext_memory);
+       app_config_key_file_get_int(kf, "view", "bits_per_row",
+                                   &cfg->bits_per_row);
 }
 
 static char *
@@ -172,7 +186,6 @@ app_config_save(void)
 
                g_string_append(buf, "\n[ui]\n");
 
-               g_string_append_printf(buf, "layout=%d\n", cfg->layout);
                g_string_append_printf(buf, "win_width=%d\n", cfg->win_width);
                g_string_append_printf(buf, "win_height=%d\n", cfg->win_height);
                g_string_append_printf(buf, "hpane_pos=%d\n", cfg->hpane_pos);
@@ -180,6 +193,17 @@ app_config_save(void)
                g_string_append_printf(buf, "main_pane_pos=%d\n",
                                       cfg->main_pane_pos);
 
+               g_string_append(buf, "\n[view]\n");
+               g_string_append_printf(buf, "layout=%d\n", cfg->layout);
+               g_string_append_printf(buf, "int_memory=%d\n",
+                                      cfg->view_int_memory);
+               g_string_append_printf(buf, "sfr_memory=%d\n",
+                                      cfg->view_sfr_memory);
+               g_string_append_printf(buf, "ext_memory=%d\n",
+                                      cfg->view_ext_memory);
+               g_string_append_printf(buf, "bits_per_row=%d\n",
+                                      cfg->bits_per_row);
+
                file_path = app_config_get_file_path();
 
                g_file_set_contents(file_path, buf->str, buf->len, NULL);