Refactor perl code to write file header
[emu8051.git] / src / app-config.c
index 15bed2b..90022f2 100644 (file)
@@ -55,6 +55,14 @@ app_config_init(void)
        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
@@ -62,17 +70,11 @@ app_config_key_file_get_int(GKeyFile *kf, const char *grp, const char *key, int
 {
     char *str = g_key_file_get_value(kf, grp, key, NULL);
 
-#ifdef EMU8051_DEBUG
-    printf("key: %s\n", key);
-#endif
+    log_debug("key: %s", key);
 
     if (G_LIKELY(str)) {
            *value = atoi(str);
-
-#ifdef EMU8051_DEBUG
-           printf("  value = %d\n", *value);
-#endif
-
+           log_debug("  value = %d", *value);
            g_free(str);
     }
 
@@ -91,6 +93,23 @@ app_config_load_from_key_file(GKeyFile *kf)
        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 *
@@ -117,9 +136,7 @@ app_config_get_file_path(void)
 
        file_path = g_build_filename(dir_path, file, NULL);
 
-#ifdef EMU8051_DEBUG
-       printf("app. config file = %s\n", file_path);
-#endif
+       log_info("app. config file = %s", file_path);
 
        g_free(dir_path);
 
@@ -173,6 +190,19 @@ app_config_save(void)
                g_string_append_printf(buf, "win_height=%d\n", cfg->win_height);
                g_string_append_printf(buf, "hpane_pos=%d\n", cfg->hpane_pos);
                g_string_append_printf(buf, "vpane_pos=%d\n", cfg->vpane_pos);
+               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();