~ubuntu-branches/ubuntu/raring/gnome-system-monitor/raring-proposed

« back to all changes in this revision

Viewing changes to src/interface.cpp

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2011-12-28 14:46:35 UTC
  • mfrom: (1.1.63)
  • Revision ID: package-import@ubuntu.com-20111228144635-3sb1b3a6r2fz8cod
Tags: 3.3.3-0ubuntu1
* New upstream unstable release.
  - Shows whether OS is 32-bit or 64-bit (LP: #531762)
  - Network load default colors improved for the colorblind (LP: #485712)
  - UI streamlined (status bar removed, fewer default columns in
    processes tab, etc.)
* debian/patches/02_lpi.patch: Refreshed
* debian/watch: Watch for unstable releases

Show diffs side-by-side

added added

removed removed

Lines of Context:
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) },
76
76
 
107
107
      N_("Show only user-owned processes"), MY_PROCESSES }
108
108
};
109
109
 
 
110
static const GtkRadioActionEntry priority_menu_entries[] =
 
111
{
 
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 }
 
124
};
 
125
 
110
126
 
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\" />"
123
139
    "      <separator />"
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\" />"
 
146
    "        <separator />"
 
147
    "        <menuitem action=\"Custom\"/>"
 
148
    "      </menu>"
125
149
    "      <separator />"
126
150
    "      <menuitem name=\"EditPreferencesMenu\" action=\"Preferences\" />"
127
151
    "    </menu>"
150
174
    "    <menuitem action=\"EndProcess\" />"
151
175
    "    <menuitem action=\"KillProcess\" />"
152
176
    "    <separator />"
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\" />"
 
183
    "      <separator />"
 
184
    "      <menuitem action=\"Custom\"/>"
 
185
    "    </menu>"
154
186
    "    <separator />"
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;
 
266
 
234
267
    gint i;
 
268
    gchar *title_text;
 
269
    gchar *label_text;
 
270
    gchar *title_template;
235
271
 
 
272
    // Translators: color picker title, %s is CPU, Memory, Swap, Receiving, Sending
 
273
    title_template = g_strdup(_("Pick a Color for '%s'"));
236
274
 
237
275
    vbox = gtk_vbox_new (FALSE, 18);
238
276
 
279
317
 
280
318
    for (i=0;i<procdata->config.num_cpus; i++) {
281
319
        GtkWidget *temp_hbox;
282
 
        gchar *text;
283
320
 
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"));
302
339
        } else {
303
 
            text = g_strdup_printf (_("CPU%d"), i+1);
 
340
            label_text = g_strdup_printf (_("CPU%d"), i+1);
304
341
        }
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);
 
345
        g_free(title_text);
306
346
        gtk_box_pack_start (GTK_BOX (temp_hbox), label, FALSE, FALSE, 6);
307
 
        g_free (text);
 
347
        g_free (label_text);
308
348
 
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,
353
393
                        TRUE, TRUE, 0);
354
394
 
 
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);
 
401
    g_free(title_text);
358
402
    gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
359
403
 
360
 
    label = gtk_label_new (_("Memory"));
 
404
    label = gtk_label_new (label_text);
 
405
    g_free(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);
363
408
 
378
423
    gtk_box_pack_start (GTK_BOX (mem_legend_box), table,
379
424
                        TRUE, TRUE, 0);
380
425
 
 
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);
 
432
    g_free(title_text);
384
433
    gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
385
434
 
386
 
    label = gtk_label_new (_("Swap"));
 
435
    label = gtk_label_new (label_text);
 
436
    g_free(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);
389
439
 
437
487
    gtk_box_pack_start (GTK_BOX (net_legend_box), table,
438
488
                        TRUE, TRUE, 0);
439
489
 
 
490
    label_text = g_strdup(_("Receiving"));
 
491
 
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);
 
498
    g_free(title_text);
444
499
    gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
445
500
 
446
 
    label = gtk_label_new (_("Receiving"));
 
501
    label = gtk_label_new (label_text);
 
502
    g_free(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);
449
505
 
492
548
    gtk_box_pack_start (GTK_BOX (net_legend_box), table,
493
549
                        TRUE, TRUE, 0);
494
550
 
 
551
    label_text = g_strdup(_("Sending"));
 
552
 
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);
 
559
    g_free(title_text);
499
560
    gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
500
561
 
501
 
    label = gtk_label_new (_("Sending"));
 
562
    label = gtk_label_new (label_text);
 
563
    g_free(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);
504
566
 
543
605
    gtk_table_attach (GTK_TABLE (table), spacer, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
544
606
 
545
607
    procdata->net_graph = net_graph;
 
608
    g_free(title_template);
546
609
 
547
610
    return vbox;
548
611
}
549
612
 
550
 
static void
551
 
menu_item_select_cb (GtkMenuItem *proxy,
552
 
                     ProcData *procdata)
553
 
{
554
 
    GtkAction *action;
555
 
    char *message;
556
 
 
557
 
    action = gtk_activatable_get_related_action (GTK_ACTIVATABLE(proxy));
558
 
    g_assert(action);
559
 
 
560
 
    g_object_get (G_OBJECT (action), "tooltip", &message, NULL);
561
 
    if (message)
562
 
    {
563
 
        gtk_statusbar_push (GTK_STATUSBAR (procdata->statusbar),
564
 
                            procdata->tip_message_cid, message);
565
 
        g_free (message);
566
 
    }
567
 
}
568
 
 
569
 
static void
570
 
menu_item_deselect_cb (GtkMenuItem *proxy,
571
 
                       ProcData *procdata)
572
 
{
573
 
    gtk_statusbar_pop (GTK_STATUSBAR (procdata->statusbar),
574
 
                       procdata->tip_message_cid);
575
 
}
576
 
 
577
 
static void
578
 
connect_proxy_cb (GtkUIManager *manager,
579
 
                  GtkAction *action,
580
 
                  GtkWidget *proxy,
581
 
                  ProcData *procdata)
582
 
{
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);
588
 
    }
589
 
}
590
 
 
591
 
static void
592
 
disconnect_proxy_cb (GtkUIManager *manager,
593
 
                     GtkAction *action,
594
 
                     GtkWidget *proxy,
595
 
                     ProcData *procdata)
596
 
{
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);
602
 
    }
603
 
}
604
 
 
605
613
void
606
614
create_main_window (ProcData *procdata)
607
615
{
608
616
    gint i;
609
 
    gint width, height;
 
617
    gint width, height, xpos, ypos;
610
618
    GtkWidget *app;
611
619
    GtkAction *action;
612
620
    GtkWidget *menubar;
632
640
 
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);
637
648
 
638
649
    /* create the menubar */
639
650
    procdata->uimanager = gtk_ui_manager_new ();
640
651
 
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);
646
 
 
647
652
    gtk_window_add_accel_group (GTK_WINDOW (app),
648
653
                                gtk_ui_manager_get_accel_group (procdata->uimanager));
649
654
 
675
680
                                        G_CALLBACK(cb_radio_processes),
676
681
                                        procdata);
677
682
 
 
683
    gtk_action_group_add_radio_actions (procdata->action_group,
 
684
                                        priority_menu_entries,
 
685
                                        G_N_ELEMENTS (priority_menu_entries),
 
686
                                        NORMAL_PRIORITY,
 
687
                                        G_CALLBACK(cb_renice),
 
688
                                        procdata);
 
689
 
678
690
    gtk_ui_manager_insert_action_group (procdata->uimanager,
679
691
                                        procdata->action_group,
680
692
                                        0);
731
743
                                 goto_tab_closure[i]);
732
744
    }
733
745
 
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");
739
 
 
740
 
 
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);