405
406
gtk_box_pack_start(GTK_BOX(glade_xml_get_widget(_gladeXML,"hbox_vte")), _term, TRUE, TRUE, 0);
406
407
g_signal_connect(G_OBJECT(_term), "key-press-event", G_CALLBACK(key_press_event), this);
408
g_signal_connect(G_OBJECT(_term), "button-press-event",
409
(GCallback) cbTerminalClicked, this);
409
411
gtk_widget_show(_term);
413
// Terminal contextual menu
414
GtkWidget *img, *menuitem;
415
_popupMenu = gtk_menu_new();
416
menuitem = gtk_image_menu_item_new_with_label(_("Copy"));
417
img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
418
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), img);
419
g_object_set_data(G_OBJECT(menuitem), "me", this);
420
g_signal_connect(menuitem, "activate",
421
(GCallback) cbMenuitemClicked, (void *)EDIT_COPY);
422
gtk_menu_shell_append(GTK_MENU_SHELL(_popupMenu), menuitem);
423
gtk_widget_show(menuitem);
425
menuitem = gtk_image_menu_item_new_with_label(_("Select All"));
426
img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
427
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), img);
428
g_object_set_data(G_OBJECT(menuitem), "me", this);
429
g_signal_connect(menuitem, "activate",
430
(GCallback) cbMenuitemClicked, (void *)EDIT_SELECT_ALL);
431
gtk_menu_shell_append(GTK_MENU_SHELL(_popupMenu), menuitem);
432
gtk_widget_show(menuitem);
410
434
gtk_box_pack_end(GTK_BOX(glade_xml_get_widget(_gladeXML,"hbox_vte")), scrollbar, FALSE, FALSE, 0);
411
435
gtk_widget_show(scrollbar);
451
475
RGDebInstallProgress *me = (RGDebInstallProgress *)user_data;
453
477
// user pressed ctrl-c
454
if (strlen(event->string) == 1 && event->string[0] == 3) {
478
if (event->keyval == GDK_c && event->state & GDK_CONTROL_MASK) {
455
479
gchar *summary = _("Ctrl-c pressed");
456
480
char *msg = _("This will abort the operation and may leave the system "
457
481
"in a broken state. Are you sure you want to do that?");
469
493
case GTK_RESPONSE_NO:
496
} else if (event->keyval == GDK_C &&
497
event->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
498
// ctrl+shift+C copy to clipboard to mimic gnome-terminal behavior
499
me->terminalAction(me->_term, EDIT_COPY);
501
} else if (event->keyval == GDK_a && event->state & GDK_CONTROL_MASK) {
502
me->terminalAction(me->_term, EDIT_SELECT_ALL);
504
} else if (event->keyval == GDK_A &&
505
event->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
506
me->terminalAction(me->_term, EDIT_SELECT_NONE);
512
gboolean RGDebInstallProgress::cbTerminalClicked(GtkWidget *widget,
513
GdkEventButton *event, gpointer user_data)
515
if (event->button == 3) {
516
RGDebInstallProgress *me = (RGDebInstallProgress *)user_data;
517
gtk_menu_popup(GTK_MENU(me->_popupMenu), NULL, NULL, NULL, NULL,
519
gdk_event_get_time((GdkEvent *) event));
525
void RGDebInstallProgress::cbMenuitemClicked(GtkMenuItem *menuitem,
526
gpointer user_data) {
527
RGDebInstallProgress *me =
528
(RGDebInstallProgress *)g_object_get_data(G_OBJECT(menuitem), "me");
529
me->terminalAction(me->_term, (TermAction)GPOINTER_TO_INT(user_data));
532
void RGDebInstallProgress::terminalAction(GtkWidget *terminal,
536
vte_terminal_copy_clipboard(VTE_TERMINAL(terminal));
538
case EDIT_SELECT_ALL:
539
vte_terminal_select_all(VTE_TERMINAL(terminal));
541
case EDIT_SELECT_NONE:
542
vte_terminal_select_none(VTE_TERMINAL(terminal));
476
547
void RGDebInstallProgress::updateInterface()
494
565
if( buf[0] == '\n') {
495
566
//cout << "got line: " << line << endl;
497
gchar **split = g_strsplit(line, ":",5);
568
gchar **split = g_strsplit(line, ":",4);
498
569
gchar *status = g_strstrip(split[0]);
499
570
gchar *pkg = g_strstrip(split[1]);
500
571
gchar *percent = g_strstrip(split[2]);