📄 gui.c
字号:
{ gkrellm_configure_tooltip(p, launch); if (*(launch->command)) launch->button = gkrellm_put_decal_in_meter_button(p, d, gkrellm_launch_button_cb, launch, &launch->margin); else launch->button = NULL; /* In case dangling pointer, see above */ } }voidgkrellm_gtk_check_button(GtkWidget *box, GtkWidget **button, gboolean active, gboolean expand, gint pad, gchar *string) { GtkWidget *b; if (!string) return; b = gtk_check_button_new_with_label(string); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), active); if (box) gtk_box_pack_start(GTK_BOX(box), b, expand, FALSE, pad); if (button) *button = b; }voidgkrellm_gtk_check_button_connected(GtkWidget *box, GtkWidget **button, gboolean active, gboolean expand, gboolean fill, gint pad, void (*cb_func)(), gpointer data, gchar *string) { GtkWidget *b; if (!string) return; b = gtk_check_button_new_with_label(string); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), active); if (box) { if (pad < 0) gtk_box_pack_end(GTK_BOX(box), b, expand, fill, -(pad + 1)); else gtk_box_pack_start(GTK_BOX(box), b, expand, fill, pad); } if (cb_func) g_signal_connect(G_OBJECT(b), "toggled", G_CALLBACK(cb_func), data); if (button) *button = b; }voidgkrellm_gtk_button_connected(GtkWidget *box, GtkWidget **button, gboolean expand, gboolean fill, gint pad, void (*cb_func)(), gpointer data, gchar *string) { GtkWidget *b; if (!string) return; if (!strncmp(string, "gtk-", 4)) b = gtk_button_new_from_stock(string); else b = gtk_button_new_with_label(string); if (box) { if (pad < 0) gtk_box_pack_end(GTK_BOX(box), b, expand, fill, -(pad + 1)); else gtk_box_pack_start(GTK_BOX(box), b, expand, fill, pad); } if (cb_func) g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(cb_func), data); if (button) *button = b; }voidgkrellm_gtk_alert_button(GtkWidget *box, GtkWidget **button, gboolean expand, gboolean fill, gint pad, gboolean pack_start, void (*cb_func)(), gpointer data) { GtkWidget *b, *hbox; GtkWidget *image, *label; hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 2); image = gtk_image_new_from_pixbuf(gkrellm_alert_pixbuf()); label = gtk_label_new(_("Alerts")); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 3); b = gtk_button_new(); if (button) *button = b; if (cb_func) g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(cb_func), data); gtk_widget_show_all(hbox); gtk_container_add(GTK_CONTAINER(b), hbox); if (box) { if (pack_start) gtk_box_pack_start(GTK_BOX(box), b, expand, fill, pad); else gtk_box_pack_end(GTK_BOX(box), b, expand, fill, pad); } }voidgkrellm_gtk_spin_button(GtkWidget *box, GtkWidget **spin_button, gfloat value, gfloat low, gfloat high, gfloat step0, gfloat step1, gint digits, gint width, void (*cb_func)(), gpointer data, gboolean right_align, gchar *string) { GtkWidget *hbox = NULL, *label, *button; GtkSpinButton *spin; GtkAdjustment *adj; if (string && box) { hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 2); box = hbox; } adj = (GtkAdjustment *) gtk_adjustment_new (value, low, high, step0, step1, 0.0); button = gtk_spin_button_new(adj, 0.5, digits); if (spin_button) *spin_button = button; if (width > 0) gtk_widget_set_size_request(button, width, -1); spin = GTK_SPIN_BUTTON(button); gtk_spin_button_set_numeric(spin, TRUE); if (!data) data = (gpointer) spin; if (cb_func) g_signal_connect(G_OBJECT(adj), "value_changed", G_CALLBACK(cb_func), data); if (box) { if (right_align && string) { label = gtk_label_new(string); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 2); } gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 2); if (!right_align && string) { label = gtk_label_new(string); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 2); } } }GtkWidget *gkrellm_gtk_scrolled_vbox(GtkWidget *box, GtkWidget **scr, GtkPolicyType h_policy, GtkPolicyType v_policy) { GtkWidget *scrolled, *vbox; scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), h_policy, v_policy); gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0); vbox = gtk_vbox_new(FALSE, 2); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), vbox); if (scr) *scr = scrolled; return vbox; } /* frame_border_width - border around outside of frame. | vbox_pad - pad between widgets to be packed in returned vbox. | vbox_border_width - border between returned vbox and frame. */GtkWidget *gkrellm_gtk_framed_vbox(GtkWidget *box, gchar *label, gint frame_border_width, gboolean frame_expand, gint vbox_pad, gint vbox_border_width) { GtkWidget *frame; GtkWidget *vbox; frame = gtk_frame_new(label); gtk_container_set_border_width(GTK_CONTAINER(frame), frame_border_width); gtk_box_pack_start(GTK_BOX(box), frame, frame_expand, frame_expand, 0); vbox = gtk_vbox_new(FALSE, vbox_pad); gtk_container_set_border_width(GTK_CONTAINER(vbox), vbox_border_width); gtk_container_add(GTK_CONTAINER(frame), vbox); return vbox; }GtkWidget *gkrellm_gtk_framed_vbox_end(GtkWidget *box, gchar *label, gint frame_border_width, gboolean frame_expand, gint vbox_pad, gint vbox_border_width) { GtkWidget *frame; GtkWidget *vbox; frame = gtk_frame_new(label); gtk_container_set_border_width(GTK_CONTAINER(frame), frame_border_width); gtk_box_pack_end(GTK_BOX(box), frame, frame_expand, frame_expand, 0); vbox = gtk_vbox_new(FALSE, vbox_pad); gtk_container_set_border_width(GTK_CONTAINER(vbox), vbox_border_width); gtk_container_add(GTK_CONTAINER(frame), vbox); return vbox; }GtkWidget *gkrellm_gtk_category_vbox(GtkWidget *box, gchar *category_header, gint header_pad, gint box_pad, gboolean pack_start) { GtkWidget *vbox, *vbox1, *hbox, *label; gchar *s; vbox = gtk_vbox_new(FALSE, 0); if (pack_start) gtk_box_pack_start(GTK_BOX(box), vbox, FALSE, FALSE, 0); else gtk_box_pack_end(GTK_BOX(box), vbox, FALSE, FALSE, 0); if (category_header) { label = gtk_label_new(NULL); s = g_strconcat("<span weight=\"bold\">", category_header, "</span>",NULL); gtk_label_set_markup(GTK_LABEL(label), s); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, header_pad); g_free(s); } hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(" "); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); vbox1 = gtk_vbox_new(FALSE, box_pad); gtk_box_pack_start(GTK_BOX(hbox), vbox1, FALSE, FALSE, 0); /* Add some bottom pad */ label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); return vbox1; }GtkWidget *gkrellm_gtk_notebook_page(GtkWidget *tabs, char *name) { GtkWidget *label; GtkWidget *vbox; vbox = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 0); label = gtk_label_new(name); gtk_notebook_append_page(GTK_NOTEBOOK(tabs), vbox, label); return vbox; }GtkWidget *gkrellm_gtk_framed_notebook_page(GtkWidget *tabs, char *name) { GtkWidget *vbox; vbox = gkrellm_gtk_notebook_page(tabs, name); vbox = gkrellm_gtk_framed_vbox(vbox, NULL, 2, TRUE, 4, 4); return vbox; }static voidcreate_about_tab(GtkWidget *vbox) { GtkWidget *label; gchar *buf; vbox = gkrellm_gtk_framed_vbox(vbox, NULL, 2, TRUE, 0, 0); label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); buf = g_strdup_printf(_("GKrellM %d.%d.%d%s\nGNU Krell Monitors\n\n" "Copyright (c) 1999-2006 by Bill Wilson\n" "billw@gkrellm.net\n" "http://gkrellm.net\n\n" "Released under the GNU General Public License"), GKRELLM_VERSION_MAJOR, GKRELLM_VERSION_MINOR, GKRELLM_VERSION_REV, GKRELLM_EXTRAVERSION); label = gtk_label_new(buf); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#if defined(__APPLE__) buf = g_strdup_printf(_("Mac OS X code was contributed by:\n" "Ben Hines <bhines@alumni.ucsd.edu>\n" "and\n" "Hajimu UMEMOTO <ume@mahoroba.org>")); label = gtk_label_new(buf); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#endif#if defined(__FreeBSD__) buf = g_strdup_printf( _("FreeBSD system dependent code was contributed by:\n" "Hajimu UMEMOTO <ume@mahoroba.org>")); label = gtk_label_new(buf); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#endif#if defined(__NetBSD__) buf = g_strdup_printf( _("NetBSD system dependent code was contributed by:\n" "Anthony Mallet <anthony.mallet@useless-ficus.net>")); label = gtk_label_new(buf); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#endif#if defined(__solaris__) buf = g_strdup_printf( _("Solaris system dependent code was contributed by:\n" "Daisuke Yabuki <dxy@acm.org>")); label = gtk_label_new(buf); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#endif#if defined(WIN32) buf = g_strdup_printf( _("Windows system dependent code was contributed by:\n" "Bill Nalen <bill@nalens.com>")); label = gtk_label_new(buf); g_free(buf); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);#endif gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER); }/* ------------------General Settings---------------------------------*/static GtkWidget *enable_hst_button, *hostname_short_button, *enable_sysname_button, *save_position_button, *sticky_state_button, *dock_type_button, *decorated_button, *skip_taskbar_button, *skip_pager_button, *above_button, *below_button;GtkWidget *track_gtk_button, *allow_multiple_button;GtkWidget *on_top_button;static voidcb_width_spin(GtkWidget *widget, GtkSpinButton *spin) { _GK.chart_width = gtk_spin_button_get_value_as_int(spin); gkrellm_build(); }static voidcb_HZ_spin(GtkWidget *widget, GtkSpinButton *spin) { gint n; n = _GK.update_HZ; _GK.update_HZ = gtk_spin_button_get_value_as_int(spin); if (n != _GK.update_HZ) gkrellm_start_timer(_GK.update_HZ); }static voidcb_hostname_sysname(GtkWidget *widget, gpointer data) { _GK.enable_hostname = GTK_TOGGLE_BUTTON(enable_hst_button)->active; if (hostname_short_button) _GK.hostname_short = GTK_TOGGLE_BUTTON(hostname_short_button)->active; _GK.enable_system_name = GTK_TOGGLE_BUTTON(enable_sysname_button)->active; gkrellm_apply_hostname_config(); }static voidcb_general(void) { GtkWidget *top_window = gkrellm_get_top_window(); gint n; gboolean new_state; if (allow_multiple_button) _GK.allow_multiple_instances = GTK_TOGGLE_BUTTON(allow_multiple_button)->active; if (on_top_button) _GK.on_top = GTK_TOGGLE_BUTTON(on_top_button)->active; _GK.save_position = GTK_TOGGLE_BUTTON(save_position_button)->active; if (sticky_state_button) { n = GTK_TOGGLE_BUTTON(sticky_state_button)->active; new_state = (n != _GK.sticky_state); _GK.sticky_state = n; if (new_state) { if (_GK.sticky_state) gtk_window_stick(GTK_WINDOW(top_window)); else gtk_window_unstick(GTK_WINDOW(top_window)); } } if (decorated_button) /* restart for change to take effect */ _GK.decorated = GTK_TOGGLE_BUTTON(decorated_button)->active;#if !defined(WIN32) if (skip_taskbar_button) { n = GTK_TOGGLE_BUTTON(skip_taskbar_button)->active; new_state = (n != _GK.state_skip_taskbar); _GK.state_skip_taskbar = n; if (new_state) gkrellm_winop_state_skip_taskbar(n); } if (skip_pager_button) { n = GTK_TOGGLE_BUTTON(skip_pager_button)->active; new_state = (n != _GK.state_skip_pager); _GK.state_skip_pager = n; if (new_state) gkrellm_winop_state_skip_pager(n); } if (above_button) { n = GTK_TOGGLE_BUTTON(above_button)->active; new_state = (n != _GK.state_above); _GK.state_above = n; if (new_state) { if (n && _GK.state_below) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(below_button), FALSE); gkrellm_winop_state_above(n); } } if (below_button) { n = GTK_TOGGLE_BUTTON(below_button)->active; new_state = (n != _GK.state_below); _GK.state_below = n; if (new_state) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -