69
69
N_("Force process to finish normally"), G_CALLBACK (cb_end_process) },
70
70
{ "KillProcess", NULL, N_("_Kill Process"), "<control>K",
71
71
N_("Force process to finish immediately"), G_CALLBACK (cb_kill_process) },
72
{ "ChangePriority", NULL, N_("_Change Priority..."), "<control>N",
73
N_("Change the order of priority of process"), G_CALLBACK (cb_renice) },
72
{ "ChangePriority", NULL, N_("_Change Priority"), NULL,
73
N_("Change the order of priority of process"), NULL },
74
74
{ "Preferences", GTK_STOCK_PREFERENCES, NULL, NULL,
75
75
N_("Configure the application"), G_CALLBACK (cb_edit_preferences) },
107
107
N_("Show only user-owned processes"), MY_PROCESSES }
110
static const GtkRadioActionEntry priority_menu_entries[] =
112
{ "VeryHigh", NULL, N_("Very High"), NULL,
113
N_("Set process priority to very high"), VERY_HIGH_PRIORITY },
114
{ "High", NULL, N_("High"), NULL,
115
N_("Set process priority to high"), HIGH_PRIORITY },
116
{ "Normal", NULL, N_("Normal"), NULL,
117
N_("Set process priority to normal"), NORMAL_PRIORITY },
118
{ "Low", NULL, N_("Low"), NULL,
119
N_("Set process priority to low"), LOW_PRIORITY },
120
{ "VeryLow", NULL, N_("Very Low"), NULL,
121
N_("Set process priority to very low"), VERY_LOW_PRIORITY },
122
{ "Custom", NULL, N_("Custom"), NULL,
123
N_("Set process priority manually"), CUSTOM_PRIORITY }
111
127
static const char ui_info[] =
112
128
" <menubar name=\"MenuBar\">"
121
137
" <menuitem name=\"EditEndProcessMenu\" action=\"EndProcess\" />"
122
138
" <menuitem name=\"EditKillProcessMenu\" action=\"KillProcess\" />"
124
" <menuitem name=\"EditChangePriorityMenu\" action=\"ChangePriority\" />"
140
" <menu name=\"EditChangePriorityMenu\" action=\"ChangePriority\" >"
141
" <menuitem action=\"VeryHigh\" />"
142
" <menuitem action=\"High\" />"
143
" <menuitem action=\"Normal\" />"
144
" <menuitem action=\"Low\" />"
145
" <menuitem action=\"VeryLow\" />"
147
" <menuitem action=\"Custom\"/>"
126
150
" <menuitem name=\"EditPreferencesMenu\" action=\"Preferences\" />"
150
174
" <menuitem action=\"EndProcess\" />"
151
175
" <menuitem action=\"KillProcess\" />"
153
" <menuitem action=\"ChangePriority\" />"
177
" <menu name=\"ChangePriorityMenu\" action=\"ChangePriority\" >"
178
" <menuitem action=\"VeryHigh\" />"
179
" <menuitem action=\"High\" />"
180
" <menuitem action=\"Normal\" />"
181
" <menuitem action=\"Low\" />"
182
" <menuitem action=\"VeryLow\" />"
184
" <menuitem action=\"Custom\"/>"
155
187
" <menuitem action=\"MemoryMaps\" />"
156
188
" <menuitem action=\"OpenFiles\" />"
231
263
GtkWidget *color_picker;
232
264
GtkWidget *mem_legend_box, *net_legend_box;
233
265
LoadGraph *cpu_graph, *mem_graph, *net_graph;
270
gchar *title_template;
272
// Translators: color picker title, %s is CPU, Memory, Swap, Receiving, Sending
273
title_template = g_strdup(_("Pick a Color for '%s'"));
237
275
vbox = gtk_vbox_new (FALSE, 18);
280
318
for (i=0;i<procdata->config.num_cpus; i++) {
281
319
GtkWidget *temp_hbox;
284
321
temp_hbox = gtk_hbox_new (FALSE, 0);
285
322
gtk_table_attach(GTK_TABLE(cpu_table), temp_hbox,
298
335
gtk_box_pack_start (GTK_BOX (temp_hbox), color_picker, FALSE, TRUE, 0);
299
336
gtk_widget_set_size_request(GTK_WIDGET(color_picker), 32, -1);
300
337
if(procdata->config.num_cpus == 1) {
301
text = g_strdup (_("CPU"));
338
label_text = g_strdup (_("CPU"));
303
text = g_strdup_printf (_("CPU%d"), i+1);
340
label_text = g_strdup_printf (_("CPU%d"), i+1);
305
label = gtk_label_new (text);
342
title_text = g_strdup_printf(title_template, label_text);
343
label = gtk_label_new (label_text);
344
gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
306
346
gtk_box_pack_start (GTK_BOX (temp_hbox), label, FALSE, FALSE, 6);
309
349
cpu_label = gtk_label_new (NULL);
310
350
gtk_misc_set_alignment (GTK_MISC (cpu_label), 0.0, 0.5);
352
392
gtk_box_pack_start (GTK_BOX (mem_legend_box), table,
395
label_text = g_strdup(_("Memory"));
355
396
color_picker = load_graph_get_mem_color_picker(mem_graph);
356
397
g_signal_connect (G_OBJECT (color_picker), "color_set",
357
398
G_CALLBACK (cb_mem_color_changed), procdata);
399
title_text = g_strdup_printf(title_template, label_text);
400
gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
358
402
gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
360
label = gtk_label_new (_("Memory"));
404
label = gtk_label_new (label_text);
361
406
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
362
407
gtk_table_attach (GTK_TABLE (table), label, 1, 7, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
378
423
gtk_box_pack_start (GTK_BOX (mem_legend_box), table,
426
label_text = g_strdup(_("Swap"));
381
427
color_picker = load_graph_get_swap_color_picker(mem_graph);
382
428
g_signal_connect (G_OBJECT (color_picker), "color_set",
383
429
G_CALLBACK (cb_swap_color_changed), procdata);
430
title_text = g_strdup_printf(title_template, label_text);
431
gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
384
433
gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
386
label = gtk_label_new (_("Swap"));
435
label = gtk_label_new (label_text);
387
437
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
388
438
gtk_table_attach (GTK_TABLE (table), label, 1, 7, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
437
487
gtk_box_pack_start (GTK_BOX (net_legend_box), table,
490
label_text = g_strdup(_("Receiving"));
440
492
color_picker = gsm_color_button_new (
441
493
&net_graph->colors.at(0), GSMCP_TYPE_NETWORK_IN);
442
494
g_signal_connect (G_OBJECT (color_picker), "color_set",
443
495
G_CALLBACK (cb_net_in_color_changed), procdata);
496
title_text = g_strdup_printf(title_template, label_text);
497
gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
444
499
gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
446
label = gtk_label_new (_("Receiving"));
501
label = gtk_label_new (label_text);
447
503
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
448
504
gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
492
548
gtk_box_pack_start (GTK_BOX (net_legend_box), table,
551
label_text = g_strdup(_("Sending"));
495
553
color_picker = gsm_color_button_new (
496
554
&net_graph->colors.at(1), GSMCP_TYPE_NETWORK_OUT);
497
555
g_signal_connect (G_OBJECT (color_picker), "color_set",
498
556
G_CALLBACK (cb_net_out_color_changed), procdata);
557
title_text = g_strdup_printf(title_template, label_text);
558
gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
499
560
gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
501
label = gtk_label_new (_("Sending"));
562
label = gtk_label_new (label_text);
502
564
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
503
565
gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
543
605
gtk_table_attach (GTK_TABLE (table), spacer, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
545
607
procdata->net_graph = net_graph;
608
g_free(title_template);
551
menu_item_select_cb (GtkMenuItem *proxy,
557
action = gtk_activatable_get_related_action (GTK_ACTIVATABLE(proxy));
560
g_object_get (G_OBJECT (action), "tooltip", &message, NULL);
563
gtk_statusbar_push (GTK_STATUSBAR (procdata->statusbar),
564
procdata->tip_message_cid, message);
570
menu_item_deselect_cb (GtkMenuItem *proxy,
573
gtk_statusbar_pop (GTK_STATUSBAR (procdata->statusbar),
574
procdata->tip_message_cid);
578
connect_proxy_cb (GtkUIManager *manager,
583
if (GTK_IS_MENU_ITEM (proxy)) {
584
g_signal_connect (proxy, "select",
585
G_CALLBACK (menu_item_select_cb), procdata);
586
g_signal_connect (proxy, "deselect",
587
G_CALLBACK (menu_item_deselect_cb), procdata);
592
disconnect_proxy_cb (GtkUIManager *manager,
597
if (GTK_IS_MENU_ITEM (proxy)) {
598
g_signal_handlers_disconnect_by_func
599
(proxy, (void*)(G_CALLBACK(menu_item_select_cb)), procdata);
600
g_signal_handlers_disconnect_by_func
601
(proxy, (void*)(G_CALLBACK(menu_item_deselect_cb)), procdata);
606
614
create_main_window (ProcData *procdata)
617
gint width, height, xpos, ypos;
611
619
GtkAction *action;
612
620
GtkWidget *menubar;
633
641
width = procdata->config.width;
634
642
height = procdata->config.height;
643
xpos = procdata->config.xpos;
644
ypos = procdata->config.ypos;
635
645
gtk_window_set_default_size (GTK_WINDOW (app), width, height);
646
gtk_window_move(GTK_WINDOW (app), xpos, ypos);
636
647
gtk_window_set_resizable (GTK_WINDOW (app), TRUE);
638
649
/* create the menubar */
639
650
procdata->uimanager = gtk_ui_manager_new ();
641
/* show tooltips in the statusbar */
642
g_signal_connect (procdata->uimanager, "connect_proxy",
643
G_CALLBACK (connect_proxy_cb), procdata);
644
g_signal_connect (procdata->uimanager, "disconnect_proxy",
645
G_CALLBACK (disconnect_proxy_cb), procdata);
647
652
gtk_window_add_accel_group (GTK_WINDOW (app),
648
653
gtk_ui_manager_get_accel_group (procdata->uimanager));
675
680
G_CALLBACK(cb_radio_processes),
683
gtk_action_group_add_radio_actions (procdata->action_group,
684
priority_menu_entries,
685
G_N_ELEMENTS (priority_menu_entries),
687
G_CALLBACK(cb_renice),
678
690
gtk_ui_manager_insert_action_group (procdata->uimanager,
679
691
procdata->action_group,
731
743
goto_tab_closure[i]);
734
/* create the statusbar */
735
procdata->statusbar = gtk_statusbar_new();
736
gtk_box_pack_end(GTK_BOX(main_box), procdata->statusbar, FALSE, FALSE, 0);
737
procdata->tip_message_cid = gtk_statusbar_get_context_id
738
(GTK_STATUSBAR (procdata->statusbar), "tip_message");
741
746
action = gtk_action_group_get_action (procdata->action_group, "ShowDependencies");
742
747
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
743
748
procdata->config.show_tree);