void gkrellm_panel_show(GkrellmPanel *p) { if (!p || p->shown) return; gtk_widget_show(p->hbox); p->shown = TRUE; gkrellm_monitor_height_adjust(p->h); gkrellm_pack_side_frames(); }
void gkrellm_panel_hide(GkrellmPanel *p) { if (!p || !p->shown) return; gtk_widget_hide(p->hbox); p->shown = FALSE; gkrellm_monitor_height_adjust(- p->h); gkrellm_pack_side_frames(); }
static void destroy_reader(Reader *reader) { if (!reader) return; reader->session->callback_magic = 0; /* detach the callback */ g_free(reader->label); g_free(reader->peer); g_free(reader->community); g_free(reader->oid_str); g_free(reader->unit); g_free(reader->sample); g_free(reader->old_sample); /* can't free snmp session. may be there are pending snmp_reads! */ /* if (reader->session) snmp_close(reader->session); g_free(reader->session); */ if (reader->panel) { gkrellm_monitor_height_adjust( - reader->panel->h); gkrellm_panel_destroy(reader->panel); } if (reader->chart) { gkrellm_monitor_height_adjust( - reader->chart->h); gkrellm_chartconfig_destroy(&reader->chart_config); gkrellm_chart_destroy(reader->chart); } // gtk_widget_destroy(reader->vbox); g_free(reader); }
static void create_panel(GtkWidget *vbox, Reader *reader, gint first_create) { // GkrellmKrell *k; GkrellmStyle *style; // GkrellmPiximage *krell_piximage; gchar *text; if (first_create) reader->panel = gkrellm_panel_new0(); else gkrellm_destroy_krell_list(reader->panel); /* Create a krell. A Krell structure is allocated and linked into | the list of krells pointed to by panel->krell. */ style = gkrellm_meter_style(DEFAULT_STYLE_ID); //GTK2 style->label_position = LABEL_CENTER; // krell_piximage = gkrellm_krell_meter_piximage(DEFAULT_STYLE_ID); // k = gkrellm_create_krell(panel, krell_piximage, style); // k->full_scale = 30; /* Configure panel calculates the panel height needed for the "Plugin" label. | and the krell. */ reader->panel->textstyle = gkrellm_meter_textstyle(DEFAULT_STYLE_ID); gkrellm_panel_configure(reader->panel, "SNMP", style); // reader->panel->textstyle = gkrellm_panel_alt_textstyle(DEFAULT_STYLE_ID); /* Build the configured panel with a background image and pack it into | the vbox assigned to this monitor. */ //dep: gkrellm_create_panel(vbox, reader->panel, gkrellm_bg_meter_piximage(DEFAULT_STYLE_ID)); gkrellm_panel_create(vbox, mon, reader->panel); gkrellm_monitor_height_adjust(reader->panel->h); if (first_create) { gtk_signal_connect(GTK_OBJECT (reader->panel->drawing_area), "expose_event", (GtkSignalFunc) panel_expose_event, NULL); reader->tooltip=gtk_tooltips_new(); } /* refresh the display */ text = render_label(reader); gkrellm_dup_string(&reader->panel->label->string, text); g_free(text); }
void gkrellm_panel_destroy(GkrellmPanel *p) { if (!p) return; gkrellm_reset_panel_alerts(p); gkrellm_destroy_krell_list(p); gkrellm_destroy_decal_list(p); /* Also destroys buttons */ if (p->button_list || p->button_signals_connected) fprintf(stderr, "gkrellm_destroy_panel: button_list=%p connected=%d\n", p->button_list, p->button_signals_connected); if (p->label) { if (p->label->string) g_free(p->label->string); g_free(p->label); } if (p->layout) g_object_unref(G_OBJECT(p->layout)); if (p->textstyle && p->textstyle->internal) g_free(p->textstyle); if (p->pixmap) g_object_unref(G_OBJECT(p->pixmap)); if (p->bg_pixmap) g_object_unref(G_OBJECT(p->bg_pixmap)); if (p->bg_text_layer_pixmap) g_object_unref(G_OBJECT(p->bg_text_layer_pixmap)); if (p->bg_clean_pixmap) g_object_unref(G_OBJECT(p->bg_clean_pixmap)); if (p->bg_mask) g_object_unref(G_OBJECT(p->bg_mask)); if (p->hbox) gtk_widget_destroy(p->hbox); panel_list = g_list_remove(panel_list, p); if (p->shown) gkrellm_monitor_height_adjust(- p->h); g_free(p); gkrellm_pack_side_frames(); }
void gkrellm_panel_create(GtkWidget *vbox, GkrellmMonitor *mon, GkrellmPanel *p) { GtkWidget *hbox; GkrellmPiximage piximage; GtkWidget *top_win = gkrellm_get_top_window(); if (!vbox || !mon || !p) return; p->monitor = (gpointer) mon; if (!p->style) /* gkrellm_panel_configure() may not have been called. */ setup_panel_style(p, mon->privat->panel_style); if (!p->bg_piximage_override) { if (mon->privat->style_type == CHART_PANEL_TYPE) p->bg_piximage = gkrellm_bg_panel_piximage(mon->privat->style_id); else p->bg_piximage = gkrellm_bg_meter_piximage(mon->privat->style_id); } p->bg_piximage_override = FALSE; /* If not being called from rebuild or after a panel destroy, then panel | still has a height that must be accounted for. */ if (p->h && p->shown) gkrellm_monitor_height_adjust(- p->h); p->h = p->h_configure; p->w = _GK.chart_width; if (p->hbox == NULL) { hbox = gtk_hbox_new(FALSE, 0); gtk_container_add (GTK_CONTAINER(vbox), hbox); p->hbox = hbox; p->drawing_area = gtk_drawing_area_new(); p->layout = gtk_widget_create_pango_layout(top_win, NULL); gtk_widget_set_events (p->drawing_area, GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK); gtk_box_pack_start(GTK_BOX(p->hbox), p->drawing_area, FALSE, FALSE, 0); gtk_widget_show(p->drawing_area); gtk_widget_show(hbox); p->shown = TRUE; gtk_widget_realize(hbox); gtk_widget_realize(p->drawing_area); panel_list = g_list_append(panel_list, p); p->y_mapped = -1; g_signal_connect(G_OBJECT (p->drawing_area), "size_allocate", G_CALLBACK(cb_panel_size_allocate), p); } gtk_widget_set_size_request(p->drawing_area, p->w, p->h); if (_GK.frame_left_panel_overlap > 0 || _GK.frame_right_panel_overlap > 0) { piximage.pixbuf = gdk_pixbuf_new_subpixbuf(p->bg_piximage->pixbuf, _GK.frame_left_panel_overlap, 0, gdk_pixbuf_get_width(p->bg_piximage->pixbuf) - _GK.frame_left_panel_overlap - _GK.frame_right_panel_overlap, gdk_pixbuf_get_height(p->bg_piximage->pixbuf)); piximage.border = p->bg_piximage->border; gkrellm_border_adjust(&piximage.border, -_GK.frame_left_panel_overlap, -_GK.frame_right_panel_overlap, 0, 0); // gkrellm_scale_piximage_to_pixmap(&piximage, &p->bg_clean_pixmap, // &p->bg_mask, p->w, p->h); gkrellm_scale_theme_background(&piximage, &p->bg_clean_pixmap, &p->bg_mask, p->w, p->h); g_object_unref(G_OBJECT(piximage.pixbuf)); } else gkrellm_scale_theme_background(p->bg_piximage, &p->bg_clean_pixmap, &p->bg_mask, p->w, p->h); // gkrellm_scale_piximage_to_pixmap(p->bg_piximage, &p->bg_clean_pixmap, // &p->bg_mask, p->w, p->h); if (p->bg_text_layer_pixmap) g_object_unref(G_OBJECT(p->bg_text_layer_pixmap)); p->bg_text_layer_pixmap = gdk_pixmap_new(top_win->window, p->w, p->h, -1); if (p->bg_pixmap) g_object_unref(G_OBJECT(p->bg_pixmap)); p->bg_pixmap = gdk_pixmap_new(top_win->window, p->w, p->h, -1); if (p->pixmap) g_object_unref(G_OBJECT(p->pixmap)); p->pixmap = gdk_pixmap_new(top_win->window, p->w, p->h, -1); if (p->shown) { gkrellm_monitor_height_adjust(p->h); gkrellm_pack_side_frames(); } p->need_decal_overlap_check = TRUE; draw_panel(p, FALSE); gkrellm_panel_button_signals_connect(p); }