⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alerts.c

📁 系统任务管理器
💻 C
📖 第 1 页 / 共 3 页
字号:
	if (alarm < warn)		gtk_spin_button_set_value(spin, alarm);	alert->config_modified = TRUE;	gtk_widget_set_sensitive(alert->icon_box, TRUE);	}static voidcb_high_warn_spin_changed(GtkWidget *adjustment, GkrellmAlert *alert)	{	GtkSpinButton	*spin;	gfloat			alarm, warn, low_warn;	spin = GTK_SPIN_BUTTON(alert->high.warn_limit_spin_button);	warn = gtk_spin_button_get_value(spin);	spin = GTK_SPIN_BUTTON(alert->high.alarm_limit_spin_button);	alarm = gtk_spin_button_get_value(spin);	if (alarm < warn)		gtk_spin_button_set_value(spin, warn);	if (alert->check_low)		{		spin = GTK_SPIN_BUTTON(alert->low.warn_limit_spin_button);		low_warn = gtk_spin_button_get_value(spin);		if (low_warn > warn)			gtk_spin_button_set_value(spin, warn);		}	alert->config_modified = TRUE;	gtk_widget_set_sensitive(alert->icon_box, TRUE);	}static voidcb_low_warn_spin_changed(GtkWidget *adjustment, GkrellmAlert *alert)	{	GtkSpinButton	*spin;	gfloat			alarm, warn, high_warn;	spin = GTK_SPIN_BUTTON(alert->low.warn_limit_spin_button);	warn = gtk_spin_button_get_value(spin);	spin = GTK_SPIN_BUTTON(alert->low.alarm_limit_spin_button);	alarm = gtk_spin_button_get_value(spin);	if (alarm > warn)		gtk_spin_button_set_value(spin, warn);	if (alert->check_high)		{		spin = GTK_SPIN_BUTTON(alert->high.warn_limit_spin_button);		high_warn = gtk_spin_button_get_value(spin);		if (high_warn < warn)			gtk_spin_button_set_value(spin, warn);		}	alert->config_modified = TRUE;	gtk_widget_set_sensitive(alert->icon_box, TRUE);	}static voidcb_low_alarm_spin_changed(GtkWidget *adjustment, GkrellmAlert *alert)	{	GtkSpinButton	*spin;	gfloat			alarm, warn;	spin = GTK_SPIN_BUTTON(alert->low.alarm_limit_spin_button);	alarm = gtk_spin_button_get_value(spin);	spin = GTK_SPIN_BUTTON(alert->low.warn_limit_spin_button);	warn = gtk_spin_button_get_value(spin);	if (alarm > warn)		gtk_spin_button_set_value(spin, alarm);	alert->config_modified = TRUE;	gtk_widget_set_sensitive(alert->icon_box, TRUE);	}voidgkrellm_alert_config_window(GkrellmAlert **ap)	{	GtkWidget				*tabs;	GtkWidget				*main_vbox, *tab_vbox, *vbox, *vbox1 = NULL;	GtkWidget				*hbox, *hbox1, *image;	GtkWidget				*table = NULL;	GtkWidget				*button;	GtkWidget				*label;	GtkWidget				*separator;	GList					*plist, *list;	GkrellmAlert			*alert;	GkrellmAlertPlugin		*gap;	GkrellmAlertPluginLink	*apl;	gpointer				data;	gchar					*title;	gint					w, n_tabs = 1;	if (!ap || !*ap)		return;	alert = *ap;	if (!alert->config_window)		{		alert->config_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);		g_signal_connect(G_OBJECT(alert->config_window), "delete_event",				G_CALLBACK(alert_config_window_delete_event), ap);		gtk_window_set_title(GTK_WINDOW(alert->config_window),				_("GKrellM Set Alerts"));		gtk_window_set_wmclass(GTK_WINDOW(alert->config_window),				"Gkrellm_conf", "Gkrellm");		gtk_container_set_border_width(GTK_CONTAINER(alert->config_window), 4);		main_vbox = gtk_vbox_new(FALSE, 0);		gtk_container_add(GTK_CONTAINER(alert->config_window), main_vbox);		tabs = gtk_notebook_new();		gtk_box_pack_start(GTK_BOX(main_vbox), tabs, TRUE, TRUE, 0);		gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabs), GTK_POS_TOP);		tab_vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Alerts"));		if (alert->name && alert->unit_string)			title = g_strdup_printf("%s - %s",						alert->name, alert->unit_string);		else if (alert->name)			title = g_strdup_printf("%s", alert->name);		else			title = g_strdup_printf("%s", alert->unit_string);		vbox = gkrellm_gtk_framed_vbox(tab_vbox, title, 4, FALSE, 4, 3);		g_free(title);		hbox = gtk_hbox_new(FALSE, 0);		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);		w = 70;		if (alert->max_high > 100000)			w += log(alert->max_high / 100000) * 5;		alert->high.alarm_limit_spin_button = NULL;		alert->high.warn_limit_spin_button = NULL;		if (alert->check_high  && !alert->check_hardwired)			{			vbox1 = gkrellm_gtk_framed_vbox(hbox, _("High Limits"),						2, FALSE, 2,2);			gkrellm_gtk_spin_button(vbox1,					&alert->high.alarm_limit_spin_button,					alert->high.alarm_limit, alert->min_low, alert->max_high,					alert->step0, alert->step1,					alert->digits, w, cb_high_alarm_spin_changed, alert, FALSE,					_("High alarm limit"));					gkrellm_gtk_spin_button(vbox1, &alert->high.warn_limit_spin_button,					alert->high.warn_limit, alert->min_low, alert->max_high,					alert->step0, alert->step1,					alert->digits, w, cb_high_warn_spin_changed, alert, FALSE,					_("High warn limit"));			}		alert->low.alarm_limit_spin_button = NULL;		alert->low.warn_limit_spin_button = NULL;		if (alert->check_low && !alert->check_hardwired)			{			vbox1 = gkrellm_gtk_framed_vbox_end(hbox, _("Low Limits"),					2, FALSE, 2, 2);			gkrellm_gtk_spin_button(vbox1, &alert->low.warn_limit_spin_button,					alert->low.warn_limit, alert->min_low, alert->max_high,					alert->step0, alert->step1,					alert->digits, w, cb_low_warn_spin_changed, alert, FALSE,					_("Low warn limit"));			gkrellm_gtk_spin_button(vbox1, &alert->low.alarm_limit_spin_button,					alert->low.alarm_limit, alert->min_low, alert->max_high,					alert->step0, alert->step1,					alert->digits, w, cb_low_alarm_spin_changed, alert, FALSE,					_("Low alarm limit"));			}		if (alert->delay_step > 0)			{			vbox1 = gkrellm_gtk_framed_vbox(vbox, NULL, 2, FALSE, 2, 2);			gkrellm_gtk_spin_button(vbox1, &alert->delay_spin_button,					alert->delay * alert->delay_step,					alert->delay_low, alert->delay_high,					alert->delay_step, alert->delay_step,					0, 70, cb_delay_spin_changed, alert, FALSE,					_("Seconds limit conditions must exist to have an alert"));			}		if (alert->cb_config_create)			{			vbox1 = gkrellm_gtk_framed_vbox(vbox, NULL, 2, FALSE, 2, 2);			(*alert->cb_config_create)(alert, vbox1,						alert->cb_config_create_data);			}		if (alert->do_alarm_command || alert->do_warn_command)			{			vbox1 = gkrellm_gtk_framed_vbox(vbox,					_("Commands - with repeat intervals in seconds"),					2, FALSE, 2, 2);			table = gtk_table_new(3 /* across */, 3 /* down */, FALSE);			gtk_table_set_col_spacings(GTK_TABLE(table), 4);			gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);			}		alert->alarm_command_entry = alert->alarm_repeat_spin_button = NULL;		if (alert->do_alarm_command)			{			label = gtk_label_new(_("Alarm command:"));			gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);			gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);			alert->alarm_command_entry = gtk_entry_new();			gtk_entry_set_max_length(GTK_ENTRY(alert->alarm_command_entry),					255);			gtk_table_attach_defaults(GTK_TABLE(table),					alert->alarm_command_entry, 1, 2, 0, 1);			gtk_entry_set_text(GTK_ENTRY(alert->alarm_command_entry),					alert->alarm_command);			gkrellm_gtk_spin_button(NULL, &alert->alarm_repeat_spin_button,					alert->alarm_repeat_set, 0, 1000,					1, 10, 0, 60, NULL, NULL, FALSE, NULL);			gtk_table_attach_defaults(GTK_TABLE(table),					alert->alarm_repeat_spin_button, 2, 3, 0, 1);			}		alert->warn_command_entry = alert->warn_repeat_spin_button = NULL;		if (alert->do_warn_command)			{			label = gtk_label_new(_("Warn command:"));			gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);			gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);			alert->warn_command_entry = gtk_entry_new();			gtk_entry_set_max_length(GTK_ENTRY(alert->warn_command_entry),					255);			gtk_table_attach_defaults(GTK_TABLE(table),					alert->warn_command_entry, 1, 2, 1, 2);			gtk_entry_set_text(GTK_ENTRY(alert->warn_command_entry),					alert->warn_command);			gtk_widget_set_size_request(alert->warn_command_entry, 300, -1);			gkrellm_gtk_spin_button(NULL, &alert->warn_repeat_spin_button,					alert->warn_repeat_set, 0, 1000,					1, 10, 0, 60, NULL, NULL, FALSE, NULL);			gtk_table_attach_defaults(GTK_TABLE(table),					alert->warn_repeat_spin_button, 2, 3, 1, 2);			}		if (alert->do_alarm_command || alert->do_warn_command)			{			separator = gtk_hseparator_new();			gtk_box_pack_start(GTK_BOX(vbox1), separator, FALSE, FALSE, 4);			label = gtk_label_new(		   _("A repeat of zero seconds executes the command once per alert."));			gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);			gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);			gtk_box_pack_start(GTK_BOX(vbox1), label, FALSE, FALSE, 0);			}		for (plist = alert_plugin_list; plist; plist = plist->next)			{			data = NULL;			gap = (GkrellmAlertPlugin *) plist->data;			for (list = alert->plugin_list; list; list = list->next)				{				apl = (GkrellmAlertPluginLink *) list->data;				if (apl->alert_plugin == gap)					{					data = apl->data;					break;					}				}			if (MONITOR_ENABLED(gap->mon) && gap->config_create_func)				{				tab_vbox = gkrellm_gtk_framed_notebook_page(tabs,							gap->tab_name);				(*gap->config_create_func)(tab_vbox, alert, data);				++n_tabs;				}			}		if (n_tabs == 1)			gtk_notebook_set_show_tabs(GTK_NOTEBOOK(tabs), FALSE);		alert->icon_box = gtk_event_box_new();		hbox1 = gtk_hbox_new(FALSE, 0);		gtk_box_pack_start(GTK_BOX(main_vbox), hbox1, FALSE, FALSE, 0);		gtk_box_pack_start(GTK_BOX(hbox1), alert->icon_box, TRUE, FALSE, 0);		image = gtk_image_new_from_pixbuf(gkrellm_alert_pixbuf());		gtk_container_add(GTK_CONTAINER(alert->icon_box), image);		gtk_widget_set_sensitive(alert->icon_box, alert->activated);		hbox = gtk_hbutton_box_new();		gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END);		gtk_box_set_spacing(GTK_BOX(hbox), 5);		gtk_box_pack_end(GTK_BOX(hbox1), hbox, FALSE, FALSE, 0);		alert->delete_button = gtk_button_new_from_stock(GTK_STOCK_DELETE);		GTK_WIDGET_SET_FLAGS(alert->delete_button, GTK_CAN_DEFAULT);		g_signal_connect(G_OBJECT(alert->delete_button), "clicked",				G_CALLBACK(alert_delete), ap);		gtk_box_pack_start(GTK_BOX(hbox), alert->delete_button, TRUE, TRUE, 0);		gtk_widget_set_sensitive(alert->delete_button, alert->activated);		button = gtk_button_new_from_stock(GTK_STOCK_APPLY);		GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);		g_signal_connect(G_OBJECT(button), "clicked",				G_CALLBACK(alert_apply), ap);		gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);		button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);		GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);		g_signal_connect(G_OBJECT(button), "clicked",				G_CALLBACK(alert_close), ap);		gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);		button = gtk_button_new_from_stock(GTK_STOCK_OK);		GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);		g_signal_connect(G_OBJECT(button), "clicked",				G_CALLBACK(alert_ok), ap);		gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);		gtk_widget_grab_default(button);		gtk_widget_show_all(alert->config_window);		}	else		gtk_window_present(GTK_WINDOW(alert->config_window));	alert->config_closing = FALSE;	}voidgkrellm_save_alertconfig(FILE *f, GkrellmAlert *alert,			gchar *mon_keyword, gchar *name)	{	GList					*list;	GkrellmAlertPlugin		*gap;	GkrellmAlertPluginLink	*apl;	gchar					*s, *p;	if (!f || !alert || !mon_keyword)		return;	if (name)		s = g_strdup_printf("%s %s %s ", mon_keyword,				GKRELLM_ALERTCONFIG_KEYWORD, name);	else		s = g_strdup_printf("%s %s ", mon_keyword,GKRELLM_ALERTCONFIG_KEYWORD);	if (alert->alarm_command && *alert->alarm_command)		fprintf(f, "%s alarm_command %s\n", s, alert->alarm_command);	if (alert->warn_command && *alert->warn_command)		fprintf(f, "%s warn_command %s\n", s, alert->warn_command);	fprintf(f, "%s values %d %d %d %d\n", s, alert->do_panel_updates,			alert->check_high, alert->check_low, alert->check_hardwired);	fprintf(f, "%s repeat %d %d\n", s, alert->alarm_repeat_set,			alert->warn_repeat_set);	/* 2.1.15: scale saved float values to avoid decimal points in the config	|  because of locale breakage if decimal point changes '.' <-> ',"	*/	fprintf(f, "%s limits %.0f %.0f %.0f %.0f\n", s,				alert->high.alarm_limit * GKRELLM_FLOAT_FACTOR,				alert->high.warn_limit  * GKRELLM_FLOAT_FACTOR,				alert->low.warn_limit   * GKRELLM_FLOAT_FACTOR,				alert->low.alarm_limit  * GKRELLM_FLOAT_FACTOR);	if (alert->delay_step > 0)		fprintf(f, "%s delay %d %d %d %d\n", s, alert->delay,					alert->delay_high, alert->delay_low, alert->delay_step);	/* name can be quoted, but the id_string should not have embedded quotes.	|  id_string is so a plugin can get a unique config name for an alert	*/	g_free(alert->id_string);	p = name;	if (p && *p == '"')		++p;	alert->id_string = g_strconcat(mon_keyword, p ? "-" : NULL, p, NULL);	if ((p = strrchr(alert->id_string, '"')) != NULL)		*p = '\0';	for (p = alert->id_string; *p; ++p)		if (*p == '/' || *p == ' ')			*p = '-';	fprintf(f, "%s id_string %s\n", s, alert->id_string);	for (list = alert->plugin_list; list; list = list->next)		{		apl = (GkrellmAlertPluginLink *) list->data;		gap = apl->alert_plugin;		if (MONITOR_ENABLED(gap->mon) && gap->config_save_func)			{			p = g_strconcat(s, "plugin ", gap->name, NULL);			(*gap->config_save_func)(alert, apl->data, f, p, alert->id_string);			g_free(p);			}		}	g_free(s);	}voidgkrellm_load_alertconfig(GkrellmAlert **ap, gchar *config_line)	{	GList					*list;	GkrellmAlert 			*alert;	GkrellmAlertPlugin		*gap;	gchar					config[32], item[CFG_BUFSIZE];	gchar					name[64], item1[CFG_BUFSIZE];	gint					n;	if (!ap || !config_line)		return;	if (!*ap)		*ap = g_new0(GkrellmAlert, 1);	alert = *ap;	n = sscanf(config_line, "%31s %[^\n]", config, item);	if (n != 2)		return;	if (!strcmp(config, "alarm_command"))		gkrellm_dup_string(&alert->alarm_command, item);	else if (!strcmp(config, "warn_command"))		gkrellm_dup_string(&alert->warn_command, item);	else if (!strcmp(config, "values"))		sscanf(item, "%d %d %d %d", &alert->do_panel_updates,			&alert->check_high, &alert->check_low, &alert->check_hardwired);	else if (!strcmp(config, "delay"))		{		sscanf(item, "%d %d %d %d", &n,				&alert->delay_high, &alert->delay_low, &alert->delay_step);		gkrellm_alert_set_delay(alert, n);		}	else if (!strcmp(config, "repeat"))		sscanf(item, "%d %d", &alert->alarm_repeat_set,				&alert->warn_repeat_set);	else if (!strcmp(config, "limits"))		{		sscanf(item, "%f %f %f %f",				&alert->high.alarm_limit, &alert->high.warn_limit,				&alert->low.warn_limit, &alert->low.alarm_limit);				alert->high.alarm_limit /= _GK.float_factor;		alert->high.warn_limit  /= _GK.float_factor;		alert->low.warn_limit   /= _GK.float_factor;		alert->low.alarm_limit  /= _GK.float_factor;		}	else if (!strcmp(config, "id_string"))		{		gkrellm_dup_string(&alert->id_string, item);		for (list = alert_plugin_list; list; list = list->next)			{			gap = (GkrellmAlertPlugin *) list->data;			if (MONITOR_ENABLED(gap->mon) && gap->config_load_func)				(*gap->config_load_func)(alert, "id_string", alert->id_string);			}		}	else if (!strcmp(config, "plugin"))		{		if (sscanf(item, "%63s %[^\n]", name, item1) == 2)			{			for (list = alert_plugin_list; list; list = list->next)				{				gap = (GkrellmAlertPlugin *) list->data;				if (!strcmp(name, gap->name))					{					if (MONITOR_ENABLED(gap->mon) && gap->config_load_func)						(*gap->config_load_func)(alert,									item1, alert->id_string);					break;					}				}			}		}	alert->activated = TRUE;	}/* ------------------------------------------------------------------- *//* gdk-pixbuf-csource --static alert_inline.png *//* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */static const guint8 alert_inline[] = { ""  /* Pixbuf magic (0x47646b50) */  "GdkP"  /* length: header (24) + pixel_data (925) */  "\0\0\3\265"  /* pixdata_type (0x2010002) */  "\2\1\0\2"  /* rowstride (72) */  "\0\0\0H"  /* width (18) */  "\0\0\0\22"  /* height (18) */  "\0\0\0\22"  /* pixel_data: */  "\227\0\0\0\0\10\204}{\377B89\377\20\24\20\377\10\2\10\377\0\2\0\377\30"  "\24\20\3779<9\377\214\212\204\377\211\0\0\0\0\12e`T\37732*\377\202]@"  "\377\251eF\377\267g?\377\265cF\377\243eG\377\202VG\37773$\377io`\377"  "\207\0\0\0\0\14PVG\377a<*\377\257^?\377\310\211q\377\333\262\241\377"  "\222\202t\377\311\254\234\377\333\262\233\377\310\211q\377\257^?\377"  "Z=+\377\\bM\377\205\0\0\0\0\16cfS\377Z=+\377\257^?\377\320\234\203\377"  "\333\270\241\377\252\217}\377\31\25\23\3772*%\377\342\274\251\377\333"  "\270\241\377\320\234\203\377\257^?\377Z=+\377|~k\377\203\0\0\0\0\17\204"  "\206{\37773$\377\251_?\377\301\202b\377\325\253\222\377\341\255\233\377"  "aNE\377\222tb\377\0\0\0\377\310\232\211\377\333\257\233\377\325\253\222"  "\377\302{h\377\251Z?\37773$\377\203\0\0\0\0\12JAB\377xQ1\377\257[?\377"  "\320\234\203\377\325\234\203\377\333\236\205\3770#\35\377\333\236\205"  "\377\30\21\17\377aF;\377\202\325\234\203\377\4\310\222u\377\257[?\377"  "tJ1\377kik\377\202\0\0\0\0\5\20\24\20\377\235[G\377\257[?\377\317\212"  "p\377\325\215u\377\202vOA\377\11\325\215u\377vM>\377\0\0\0\377\325\213"  "q\377\317\212p\377\317\213v\377\260T8\377\235[G\377)$)\377\202\0\0\0"  "\0\20\0\2\0\377\251Z?\377\267X?\377\310q\\\377\310{c\377.\32\25\377\270"  "lW\377\316z\\\377sA6\377\0\0\0\377sA6\377\317vb\377\301mV\377\257Q?\377"  "\245R8\377\10\2\10\377\202\0\0\0\0\6\0\2\0\377\251S?\377\260T8\377\277"  "N9\377\226M9\377,\25\21\377\202\205@4\377\10\200B4\377,\25\21\377+\26"  "\20\377\277N9\377\270K9\377\252M8\377\237N8\377\10\2\10\377\202\0\0\0"  "\0\20\30\24\30\377\230Y@\377\252S8\377\267R?\377T)\34\377\200>.\377\300"  "]F\377\307[F\377\300]F\377\200<.\377\0\0\0\377\221J<\377\260L8\377\245"  "J8\377\230VG\377!(!\377\202\0\0\0\0\7""9<1\377xO@\377\245J8\377\227D"  "1\377\0\0\0\377\266S8\377\302Q?\377\203\274S?\377\6\0\0\0\377N\37\31"  "\377\252F8\377\236F2\377~N@\377cic\377\202\0\0\0\0\12\234\216\224\377"  "73$\377\237G8\377\22\10\6\377\0\0\0\377N\40\26\377\242?1\377\257I2\377"  "\266G8\377N\40\26\377\202\0\0\0\377\3F\37\26\377\231D9\37773$\377\204"  "\0\0\0\0\5ii`\377T3#\377\231E2\377\237G8\377\252F8\377\203\251B2\377"  "\6\252F8\377\236@2\377\231@2\377\231E2\377N6#\377{\204q\377\205\0\0\0"  "\0\4baY\377T3#\377\223D2\377\231E2\377\202\236@2\377\6\237<6\377\231"  "E2\377\231@2\377\223@2\377T3#\377ii`\377\207\0\0\0\0\4t}j\377-4#\377"  "~N@\377\216K9\377\202\223@2\377\4\222K@\377xO@\37773$\377{\204q\377\212"  "\0\0\0\0\6kik\377!(!\377\10\2\10\377\0\2\0\377)$)\377kik\377\230\0\0"  "\0\0"};static GdkPixbuf	*alert_pixbuf;GdkPixbuf *gkrellm_alert_pixbuf(void)	{	if (!alert_pixbuf)		alert_pixbuf = gdk_pixbuf_new_from_inline(-1, alert_inline,						FALSE, NULL);	return alert_pixbuf;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -