infopipe_bar done
[monky] / src / conky.c
index 66bc1ed..0f5560c 100644 (file)
@@ -226,6 +226,7 @@ static int gap_x, gap_y;
 
 /* border */
 static int draw_borders;
+static int draw_graph_borders;
 static int stippled_borders;
 
 static int draw_shades, draw_outline;
@@ -914,6 +915,7 @@ enum text_object_type {
        OBJ_infopipe_channels,
        OBJ_infopipe_title,
        OBJ_infopipe_file,
+       OBJ_infopipe_bar,
 #endif
 #ifdef TCP_PORT_MONITOR
        OBJ_tcp_portmon,
@@ -1838,6 +1840,9 @@ int a = stippled_borders, b = 1;
        OBJ(infopipe_channels, INFO_INFOPIPE) END
        OBJ(infopipe_title, INFO_INFOPIPE) END
        OBJ(infopipe_file, INFO_INFOPIPE) END
+       OBJ(infopipe_bar, INFO_INFOPIPE) 
+           (void) scan_bar(arg, &obj->a, &obj->b);
+       END
 #endif
 #ifdef TCP_PORT_MONITOR
        OBJ(tcp_portmon, INFO_TCP_PORT_MONITOR) 
@@ -3116,46 +3121,52 @@ static void generate_text_internal(char *p, int p_max_size, struct text_object *
 #endif
 #ifdef INFOPIPE
                         OBJ(infopipe_protocol) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_PROTOCOL]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_PROTOCOL]);
                        }
                         OBJ(infopipe_version) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_VERSION]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_VERSION]);
                        }
                         OBJ(infopipe_status) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_STATUS]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_STATUS]);
                        }
                         OBJ(infopipe_playlist_tunes) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_PLAYLIST_TUNES]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_PLAYLIST_TUNES]);
                        }
                         OBJ(infopipe_playlist_currtune) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_PLAYLIST_CURRTUNE]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_PLAYLIST_CURRTUNE]);
                        }
                         OBJ(infopipe_usec_position) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_USEC_POSITION]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_USEC_POSITION]);
                        }
                         OBJ(infopipe_position) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_POSITION]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_POSITION]);
                        }
                         OBJ(infopipe_usec_time) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_USEC_TIME]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_USEC_TIME]);
                        }
                         OBJ(infopipe_time) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_TIME]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_TIME]);
                        }
                         OBJ(infopipe_bitrate) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_BITRATE]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_BITRATE]);
                        }
                         OBJ(infopipe_frequency) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_FREQUENCY]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_FREQUENCY]);
                        }
                         OBJ(infopipe_channels) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_CHANNELS]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_CHANNELS]);
                        }
                         OBJ(infopipe_title) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_TITLE]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_TITLE]);
                        }
                         OBJ(infopipe_file) {
-                               snprintf(p, p_max_size, "%s", cur->infopipe.item[INFOPIPE_FILE]);
+                               snprintf(p, p_max_size, "%s", cur->infopipe.items[INFOPIPE_FILE]);
+                       }
+                       OBJ(infopipe_bar) {
+                               double progress;
+                               progress= atof(cur->infopipe.items[INFOPIPE_USEC_POSITION]) /
+                                         atof(cur->infopipe.items[INFOPIPE_USEC_TIME]);
+                               new_bar(p,obj->a,obj->b,(int)(progress*255.0f));
                        }
 #endif
                        OBJ(top) {
@@ -3983,15 +3994,10 @@ static void draw_line(char *s)
                                                w = text_start_x + text_width - cur_x - 1;
                                        if (w < 0)
                                                w = 0;
-                                       XSetLineAttributes(display,
-                                                          window.gc, 1,
-                                                          LineSolid,
-                                                          CapButt,
-                                                          JoinMiter);
-                                       XDrawRectangle(display,
-                                                      window.drawable,
-                                                      window.gc, cur_x,
-                                                      by, w, h);
+                                       if (draw_graph_borders) {
+                                               XSetLineAttributes(display, window.gc, 1, LineSolid, CapButt, JoinMiter);
+                                               XDrawRectangle(display,window.drawable, window.gc, cur_x, by, w, h);
+                                       }
                                        XSetLineAttributes(display,
                                                           window.gc, 1,
                                                           LineSolid,
@@ -4672,8 +4678,9 @@ static void set_default_configurations(void)
        default_fg_color = WhitePixel(display, screen);
        default_bg_color = BlackPixel(display, screen);
        default_out_color = BlackPixel(display, screen);
-       draw_borders = 0;
        draw_shades = 1;
+       draw_borders = 0;
+       draw_graph_borders = 1;
        draw_outline = 0;
        set_first_font("6x10");
        gap_x = 5;
@@ -4897,6 +4904,9 @@ else if (strcasecmp(name, a) == 0 || strcasecmp(name, b) == 0)
                CONF("draw_borders") {
                        draw_borders = string_to_bool(value);
                }
+               CONF("draw_graph_borders") {
+                       draw_graph_borders = string_to_bool(value);
+               }
                CONF("draw_shades") {
                        draw_shades = string_to_bool(value);
                }
@@ -5480,7 +5490,7 @@ int main(int argc, char **argv)
        pthread_mutex_lock(&info.infopipe.runnable_mutex);
        info.infopipe.runnable=1;
        pthread_mutex_unlock(&info.infopipe.runnable_mutex);
-       if (pthread_create(&info.infopipe.thread, &info.infopipe.thread_attr, infopipe_service, NULL))
+       if (pthread_create(&info.infopipe.thread, &info.infopipe.thread_attr, infopipe_thread_func, NULL))
        {
            CRIT_ERR("unable to create infopipe thread!");
        }