]> Dogcows Code - chaz/tint2/blobdiff - src/config.c
cleanup code
[chaz/tint2] / src / config.c
index 6f7d42a64bb538506cfaba1ca9c465bbacf96322..757eff6e73b915ee34ddb89e840ea5402a43082c 100644 (file)
@@ -38,6 +38,7 @@
 #include "server.h"
 #include "task.h"
 #include "taskbar.h"
+#include "systraybar.h"
 #include "clock.h"
 #include "panel.h"
 #include "config.h"
@@ -310,6 +311,7 @@ void add_entry (char *key, char *value)
       if (time1_format) g_free(time1_format);
       if (strlen(value) > 0) time1_format = strdup (value);
       else time1_format = 0;
+      panel_config->clock.area.visible = 1;
    }
    else if (strcmp (key, "time2_format") == 0) {
       if (time2_format) g_free(time2_format);
@@ -409,6 +411,21 @@ void add_entry (char *key, char *value)
       memcpy(&panel_config->g_task.area.pix_active.border, &a->pix.border, sizeof(Border));
    }
 
+   /* Systray */
+   else if (strcmp (key, "systray_padding") == 0) {
+      extract_values(value, &value1, &value2, &value3);
+      panel_config->systray.area.paddingxlr = panel_config->systray.area.paddingx = atoi (value1);
+      if (value2) panel_config->systray.area.paddingy = atoi (value2);
+      if (value3) panel_config->systray.area.paddingx = atoi (value3);
+      panel_config->systray.area.visible = 1;
+   }
+   else if (strcmp (key, "systray_background_id") == 0) {
+      int id = atoi (value);
+      Area *a = g_slist_nth_data(list_back, id);
+      memcpy(&panel_config->systray.area.pix.back, &a->pix.back, sizeof(Color));
+      memcpy(&panel_config->systray.area.pix.border, &a->pix.border, sizeof(Border));
+   }
+
    /* Mouse actions */
    else if (strcmp (key, "mouse_middle") == 0)
       get_action (value, &mouse_middle);
@@ -539,20 +556,18 @@ void config_finish ()
       fprintf(stderr, "tint2 exit : monitor %d not found.\n", panel_config->monitor+1);
       exit(0);
    }
-   else {
-      if (!server.monitor[panel_config->monitor].width || !server.monitor[panel_config->monitor].height)
-         fprintf(stderr, "tint2 error : invalid monitor size.\n");
-   }
 
        // alloc panels
    int i;
    if (panel_config->monitor >= 0) {
+       // just one monitor
           nb_panel = 1;
           panel1 = calloc(nb_panel, sizeof(Panel));
           memcpy(panel1, panel_config, sizeof(Panel));
+          panel1->monitor = panel_config->monitor;
        }
        else {
-       // multi monitor
+       // all monitors
           nb_panel = server.nb_monitor;
           panel1 = calloc(nb_panel, sizeof(Panel));
 
@@ -562,14 +577,24 @@ void config_finish ()
                }
        }
 
+       // TODO: user can configure layout => ordered objects in panel.area.list
+       // clock and systray before taskbar because resize(clock) can resize others object
    init_panel();
+       init_clock();
+   // force the resize
+       for (i=0 ; i < nb_panel ; i++) {
+          panel1[i].area.resize = 1;
+          if (panel1[i].clock.area.visible)
+                  resize_clock(&panel1[i].clock);
+       }
+
+       init_systray();
    init_taskbar();
    visible_object();
 
-       task_refresh_tasklist();
-       panel_refresh = 1;
-
        cleanup_config();
+
+       task_refresh_tasklist();
 }
 
 
This page took 0.021721 seconds and 4 git commands to generate.