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

📄 main.c

📁 系统任务管理器
💻 C
📖 第 1 页 / 共 5 页
字号:
	{	return gtree.monitor_vbox;	}voidgkrellm_build()	{	GkrellmMonitor		*mon;	GList		*list;	static gint	first_create	= TRUE;	_GK.initialized = FALSE;	monitor_previous_height = 0;	_GK.total_frame_height = 0;	_GK.any_transparency = FALSE;	gkrellm_winop_reset();	gkrellm_start_timer(0);	if (!first_create)		edge_record();	gkrellm_alert_reset_all();	gkrellm_panel_cleanup();	gkrellm_theme_config();	if (first_create)		gkrellm_load_user_config(TRUE);	setup_colors();	setup_fonts();	gkrellm_load_theme_piximages();	gkrellm_chart_setup();	gkrellm_freeze_side_frame_packing();	create_frame_top(gtree.top0_vbox);	_GK.monitor_height = 0;	for (list = gkrellm_monitor_list; list; list = list->next)		{		mon = (GkrellmMonitor *) list->data;		if (mon->privat->main_vbox)			{			if (first_create)				{				if (mon == gkrellm_mon_host())					gtk_box_pack_start(GTK_BOX(gtree.top1_vbox),								mon->privat->main_vbox, FALSE, FALSE, 0);				else					gtk_box_pack_start(GTK_BOX(gtree.monitor_vbox),								mon->privat->main_vbox, FALSE, FALSE, 0);				gtk_box_pack_start(GTK_BOX(mon->privat->main_vbox),							mon->privat->top_spacer.vbox, FALSE, FALSE, 0);				gtk_box_pack_start(GTK_BOX(mon->privat->main_vbox),							mon->privat->vbox, FALSE, FALSE, 0);				gtk_box_pack_start(GTK_BOX(mon->privat->main_vbox),							mon->privat->bottom_spacer.vbox, FALSE, FALSE, 0);				}			if (mon->create_monitor && mon->privat->enabled)				{				gkrellm_record_state(CREATE_MONITOR, mon);				gtk_widget_show(mon->privat->vbox);				gtk_widget_show(mon->privat->main_vbox);				render_monitor_spacers(mon);				(*(mon->create_monitor))(mon->privat->vbox,							mon->privat->created ? FALSE : TRUE);				mon->privat->created = TRUE;				}			gkrellm_record_state(INTERNAL, NULL);			}		}	create_frame_bottom(gtree.bottom_vbox);	_GK.initialized = TRUE;	gkrellm_thaw_side_frame_packing();	gkrellm_start_timer(_GK.update_HZ);	if (!first_create)		{		fix_edges();		if (!no_transparency)			gkrellm_winop_apply_rootpixmap_transparency();		}	first_create = FALSE;	}static voidadd_builtin(GkrellmMonitor *mon)	{	if (!mon)		return;	gkrellm_monitor_list = g_list_append(gkrellm_monitor_list, mon);	if (!mon->privat)				/* Won't be null if style was added */		mon->privat = g_new0(GkrellmMonprivate, 1);	if (mon->create_monitor)		{		mon->privat->main_vbox = gtk_vbox_new(FALSE, 0);		mon->privat->top_spacer.vbox = gtk_vbox_new(FALSE, 0);		mon->privat->vbox = gtk_vbox_new(FALSE, 0);		mon->privat->bottom_spacer.vbox = gtk_vbox_new(FALSE, 0);		}	mon->privat->enabled = TRUE;	}static voidload_builtin_monitors()	{	gkrellm_add_chart_style(NULL, "*");	gkrellm_add_meter_style(NULL, "*");	/* The sensors config does not have a create or update, but it does	|  have an apply which needs to be called before the cpu or proc apply.	|  So just put sensors config first.	*/	add_builtin(gkrellm_init_sensors_config_monitor());	add_builtin(gkrellm_init_host_monitor());	add_builtin(gkrellm_init_cal_monitor());	add_builtin(gkrellm_init_clock_monitor());	add_builtin(gkrellm_init_cpu_monitor());	add_builtin(gkrellm_init_proc_monitor());	add_builtin(gkrellm_init_sensor_monitor());	add_builtin(gkrellm_init_disk_monitor());	add_builtin(gkrellm_init_inet_monitor());	add_builtin(gkrellm_init_net_monitor());	add_builtin(gkrellm_init_timer_monitor());	add_builtin(gkrellm_init_mem_monitor());	add_builtin(gkrellm_init_swap_monitor());	add_builtin(gkrellm_init_fs_monitor());	add_builtin(gkrellm_init_mail_monitor());	add_builtin(gkrellm_init_battery_monitor());	add_builtin(gkrellm_init_uptime_monitor());	}voidgkrellm_print(const gchar *string)	{	gchar	*s;	s = g_locale_from_utf8(string, -1, NULL, NULL, NULL);	if (s)		{		fputs(s, stdout);		g_free(s);		}	else		fputs(string, stdout);	}static voidgkrellm_exit(gint exit_code)	{	gkrellm_sys_main_cleanup();	exit(exit_code);	}static void_signal_quit(gint sig)	{	gkrellm_save_all();	gkrellm_exit(1);	}voidgkrellm_record_state(enum GkrellmState state, GkrellmMonitor *mon)	{	_GK.gkrellm_state = state;	_GK.active_monitor = mon;	}static voidgkrellm_abort(gint sig)	{	gchar			*fault,					*state,					buf[512];	gboolean		do_xmessage = TRUE;	GkrellmMonitor	*mon 	= _GK.active_monitor;	if (sig == SIGSEGV)		fault = _("segmentation fault");	else if (sig == SIGFPE)		fault = _("floating point exception");	else		fault = _("aborted");	if (_GK.gkrellm_state == INITIALIZING)		state = _("initializing");	else if (_GK.gkrellm_state == INIT_MONITOR)		state = "init_monitor";	else if (_GK.gkrellm_state == CREATE_MONITOR)		state = "create_monitor";	else if (_GK.gkrellm_state == UPDATE_MONITOR)		state = "update_monitor";	else if (_GK.gkrellm_state == CREATE_CONFIG)		state = "create_config";	else if (_GK.gkrellm_state == LOAD_CONFIG)		state = "load_user_config";	else if (_GK.gkrellm_state == SAVE_CONFIG)		state = "save_user_config";	else if (_GK.gkrellm_state == APPLY_CONFIG)		state = "apply_config";	else		{		state = "?";		do_xmessage = FALSE;		}	snprintf(buf, sizeof(buf), "xmessage gkrellm %s:  %s  (%s)", fault,				(mon && mon->name) ? mon->name : "", state);	printf("%s\n", buf + 9);	if (do_xmessage)		g_spawn_command_line_async(buf, NULL);	signal(SIGABRT, SIG_DFL);	abort();	}static voidsetup_signal_handler(void)	{	signal(SIGPIPE, SIG_IGN);	signal(SIGINT, _signal_quit);	signal(SIGQUIT, _signal_quit);	signal(SIGTERM, _signal_quit);	}#if defined(WIN32) && defined(_WINDOWS)int APIENTRY WinMain(HINSTANCE	hInstance,					HINSTANCE	hPrevInstance,					LPSTR		lpCmdLine,					int			nCmdShow)	{	int		argc;	gint	i;	gchar	*s, *sm;	gchar	**argv;	gchar	*cmd;	// need to get exe too	cmd = GetCommandLine();	g_shell_parse_argv(cmd, &argc, &argv, NULL);#elsegintmain(gint argc, gchar **argv)	{	gint		i;	gchar		*s;#endif	gkrellm_sys_main_init();#ifdef ENABLE_NLS	gtk_set_locale();#endif	g_thread_init(NULL);	gtk_init(&argc, &argv);		/* Will call gdk_init() */	gtk_widget_push_colormap(gdk_rgb_get_colormap());#ifdef ENABLE_NLS#ifdef LOCALEDIR	bindtextdomain(PACKAGE, LOCALEDIR);#endif	textdomain(PACKAGE);	bind_textdomain_codeset(PACKAGE, "UTF-8");#endif	/* ENABLE_NLS */	_GK.start_time = time(0);	gkrellm_current_tm = *(localtime(&_GK.start_time));	_GK.initialized = FALSE;	gkrellm_record_state(INITIALIZING, NULL);	signal(SIGFPE, gkrellm_abort);	signal(SIGSEGV, gkrellm_abort);	signal(SIGABRT, gkrellm_abort);	g_set_print_handler(gkrellm_print);	for (i = 1; i < argc; ++i)		{		s = argv[i];		if (*s == '-')			{			++s;			if (*s == '-')				++s;			}		if ((!strcmp(s, "t") || !strcmp(s, "theme")) && i < argc - 1)			{			_GK.theme_path = g_strdup(argv[++i]);			_GK.command_line_theme = g_strdup(_GK.theme_path);			}		else if (!strcmp(s, "sm-client-id") && i < argc - 1)			_GK.session_id = g_strdup(argv[++i]);		else if ((!strcmp(s, "s") || !strcmp(s, "server")) && i < argc - 1)			{			_GK.server = g_strdup(argv[++i]);			_GK.client_mode = TRUE;			}		else if ((!strcmp(s, "P") || !strcmp(s, "port")) && i < argc-1)			_GK.server_port = (gint) strtoul(argv[++i], NULL, 0);		else if ((!strcmp(s, "p") || !strcmp(s, "plugin")) && i < argc - 1)			_GK.command_line_plugin = g_strdup(argv[++i]);		else if ((!strcmp(s, "config") || !strcmp(s, "c")) && i < argc - 1)			_GK.config_suffix = g_strdup(argv[++i]);		else if ((!strcmp(s, "geometry") || !strcmp(s, "g")) && i < argc - 1)			geometry = argv[++i];		else if (!strcmp(s, "wm"))			_GK.command_line_decorated = TRUE;		else if (!strcmp(s, "m2"))			_GK.m2 = TRUE;		else if ( (! strcmp(s, "withdrawn")) || (! strcmp(s, "w")))			_GK.withdrawn = TRUE;		else if (!strcmp(s, "force-host-config") || !strcmp(s, "f"))			{			_GK.force_host_config = TRUE;			gkrellm_config_modified();			}		else if (!strcmp(s, "nt"))			no_transparency = TRUE;		else if (!strcmp(s, "nc"))			_GK.no_config = TRUE;		else if ((!strcmp(s, "debug-level") || !strcmp(s, "d")) && i < argc-1)			_GK.debug_level = (gint) strtoul(argv[++i], NULL, 0);		else if (!strncmp(s, "debug", 5))			{			if (s[5] != '\0')				_GK.debug = atoi(s + 5);			else				_GK.debug = 1;			}		else if (!strcmp(s, "nolock"))			_GK.nolock = TRUE;		else if (!strcmp(s, "demo"))			++_GK.demo;		else if (!strcmp(s, "test"))			_GK.test += 1;		else if (!strcmp(s, "version") || !strcmp(s, "v"))			{			printf("%s %d.%d.%d%s\n", PACKAGE, GKRELLM_VERSION_MAJOR,					GKRELLM_VERSION_MINOR, GKRELLM_VERSION_REV,					GKRELLM_EXTRAVERSION);			exit(0);			}		else if (strcmp(s, "help") == 0 || strcmp(s, "h") == 0)			{			usage();			exit(0);			}		else			{			g_print(_("Bad arg: %s\n"), argv[i]);			usage();			exit(0);			}		}	gdk_window_get_geometry(NULL /*gdk_root_parent*/, &i, &i, &_GK.w_display,				&_GK.h_display, &i);	if (_GK.debug_level)		printf("--- GKrellM %d.%d.%d ---\n", GKRELLM_VERSION_MAJOR,				GKRELLM_VERSION_MINOR, GKRELLM_VERSION_REV);	if (_GK.server && !gkrellm_client_mode_connect())		exit(0);	check_gkrellm_directories();	gkrellm_load_user_config(FALSE);			decorated = (_GK.command_line_decorated || _GK.decorated);	if (   _GK.command_line_plugin || _GK.command_line_theme		|| _GK.debug_level > 0 || _GK.debug > 0 || _GK.nolock	   )		_GK.allow_multiple_instances_real = TRUE;	_GK.allow_multiple_instances_real |= _GK.allow_multiple_instances;	create_widget_tree();	top_window = gtree.window;	load_builtin_monitors();	gkrellm_plugins_load();	gkrellm_build();	gkrellm_make_themes_list();	if ((_GK.gtk_settings = gtk_settings_get_default()) != NULL)		{		g_object_get(_GK.gtk_settings,					"gtk-theme-name", &_GK.gtk_theme_name, NULL);		g_signal_connect(_GK.gtk_settings, "notify::gtk-theme-name",					G_CALLBACK(gkrellm_read_theme_event), NULL);		}	g_signal_connect(G_OBJECT(gtree.window), "delete_event",				G_CALLBACK(cb_delete_event), NULL);	g_signal_connect(G_OBJECT(gtree.window), "destroy",				G_CALLBACK(cb_destroy_event), NULL);	g_signal_connect(G_OBJECT(gtree.window), "configure_event",				G_CALLBACK(cb_configure_notify), NULL);	g_signal_connect(G_OBJECT(gtree.window), "map_event",				G_CALLBACK(cb_map_event), NULL);	g_signal_connect(G_OBJECT(gtree.window), "size_allocate",				G_CALLBACK(cb_size_allocate), NULL);	g_signal_connect(G_OBJECT(gtree.window), "client_event",				G_CALLBACK(cb_client_event), NULL);	g_signal_connect(G_OBJECT(gtree.top0_event_box), "button_press_event",				G_CALLBACK(top_frame_button_press), NULL );	g_signal_connect(G_OBJECT(gtree.top1_event_box), "button_press_event",				G_CALLBACK(top_frame_button_press), NULL );	g_signal_connect(G_OBJECT(gtree.top0_event_box), "motion_notify_event",				G_CALLBACK(gkrellm_motion), NULL);	g_signal_connect(G_OBJECT(gtree.top1_event_box), "motion_notify_event",				G_CALLBACK(gkrellm_motion), NULL);	g_signal_connect(G_OBJECT(gtree.top0_event_box), "button_release_event",				G_CALLBACK(top_frame_button_release), NULL );	g_signal_connect(G_OBJECT(gtree.top1_event_box), "button_release_event",				G_CALLBACK(top_frame_button_release), NULL );	g_signal_connect(G_OBJECT(gtree.left_event_box), "button_press_event",				G_CALLBACK(side_frame_button_press), NULL );	g_signal_connect(G_OBJECT(gtree.right_event_box), "button_press_event",				G_CALLBACK(side_frame_button_press), NULL );	item_factory = gkrellm_create_item_factory_popup();	if (_GK.sticky_state)		gtk_window_stick(GTK_WINDOW(top_window));	gkrellm_winop_options(argc, argv);	gtk_widget_show(gtree.window);	gkrellm_winop_withdrawn();	if (geometry || _GK.save_position)		configure_position_lock = TRUE;		/* see cb_configure_notify */	if (geometry)		/* Command line placement overrides */		gkrellm_winop_place_gkrellm(geometry);	else if (_GK.save_position)		set_or_save_position(0);	gkrellm_start_timer(_GK.update_HZ);	setup_signal_handler();	gtk_main ();	gkrellm_save_all();	gkrellm_exit(0);#if defined(_WINDOWS)    g_strfreev(argv);#endif	return 0;	}

⌨️ 快捷键说明

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