~doctormo/inkscape/notification-widget

« back to all changes in this revision

Viewing changes to src/widgets/desktop-widget.cpp

  • Committer: Martin Owens
  • Date: 2016-04-16 12:42:46 UTC
  • Revision ID: doctormo@gmail.com-20160416124246-i3dmxhqqtggcb39y
The notifier widget so far

Show diffs side-by-side

added added

removed removed

Lines of Context:
327
327
                                     gpointer      data)
328
328
{
329
329
    SPDesktopWidget *dtw = SP_DESKTOP_WIDGET(data); 
 
330
    sp_desktop_widget_update_notifiers(dtw);
330
331
    sp_desktop_widget_update_rulers(dtw);
331
332
}
332
333
 
408
409
    context->add_provider(guides_lock_style_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
409
410
#endif
410
411
 
 
412
#if GTK_CHECK_VERSION(3,0,0)
 
413
    GtkWidget *tbl = gtk_grid_new();
 
414
    dtw->canvas_tbl = gtk_grid_new();
 
415
 
 
416
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->guides_lock, 0, 0, 1, 1);
 
417
#else
 
418
    GtkWidget *tbl = gtk_table_new(2, 3, FALSE);
 
419
    dtw->canvas_tbl = gtk_table_new(4, 3, FALSE);
 
420
 
 
421
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), dtw->guides_lock, 0, 1, 1, 2, 
 
422
                     GTK_FILL, GTK_FILL, 0, 0);
 
423
#endif
 
424
    g_signal_connect (G_OBJECT (dtw->guides_lock), "toggled", G_CALLBACK (sp_update_guides_lock), dtw);
 
425
    gtk_box_pack_start( GTK_BOX(dtw->hbox), tbl, TRUE, TRUE, 1 );
 
426
 
 
427
    Inkscape::Util::Unit const *pt = unit_table.getUnit("pt");
 
428
 
 
429
    /* Notifier */
 
430
    #if GTK_CHECK_VERSION(3,0,0)
 
431
      dtw->notifier = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
 
432
    #else
 
433
      dtw->notifier = gtk_hbox_new (FALSE, 0);
 
434
    #endif
 
435
 
 
436
    dtw->notifier_box = gtk_event_box_new();
 
437
    gtk_widget_set_tooltip_text (dtw->notifier_box, _("Inkscape Notifications provide a way to introduce you to inkscape and keep you up to date with community events and new releases. If you wish to turn this feature off, please go to Inkscape's preferences."));
 
438
 
 
439
    gtk_container_add (GTK_CONTAINER (dtw->notifier_box), dtw->notifier);
 
440
 
 
441
    // XXX This needs to be an icon (from a set of possible alert icons)
 
442
    GtkWidget *note_icon = gtk_image_new_from_file ("/home/doctormo/Projects/inkscape/inkscape/share/icons/alert_welcome.svg");
 
443
    gtk_misc_set_alignment (GTK_MISC (note_icon), 0.5, 0.5);
 
444
    gtk_misc_set_padding (GTK_MISC (note_icon), 10, 10);
 
445
    gtk_box_pack_start( GTK_BOX(dtw->notifier), note_icon, FALSE, FALSE, 2);
 
446
 
 
447
    GtkWidget *note_label = gtk_label_new (NULL);
 
448
    gtk_label_set_ellipsize (GTK_LABEL(note_label), PANGO_ELLIPSIZE_END);
 
449
    gtk_misc_set_alignment (GTK_MISC (note_label), 0.0, 0.5);
 
450
    gtk_misc_set_padding (GTK_MISC (note_label), 15, 15);
 
451
    gtk_label_set_markup (GTK_LABEL (note_label), "NO_NOTIFICATION_ERROR");
 
452
    gtk_box_pack_start( GTK_BOX(dtw->notifier), note_label, TRUE, TRUE, 2);
 
453
 
 
454
#if GTK_CHECK_VERSION(3,10,0)
 
455
    GtkWidget *note_buttons = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
 
456
    GtkWidget *note_close = gtk_button_new_from_icon_name(INKSCAPE_ICON("gtk-close"), GTK_ICON_SIZE_BUTTON);
 
457
#else
 
458
    GtkWidget *note_buttons = gtk_vbox_new (FALSE, 0);
 
459
    GtkWidget *note_close = gtk_button_new();
 
460
    GtkWidget *note_close_img = gtk_image_new_from_icon_name(INKSCAPE_ICON("gtk-close"), GTK_ICON_SIZE_BUTTON);
 
461
    gtk_button_set_image(GTK_BUTTON(note_close), note_close_img);
 
462
 
 
463
#endif
 
464
    gtk_button_set_relief(GTK_BUTTON(note_close), GTK_RELIEF_NONE);
 
465
    gtk_widget_set_can_focus(note_close, false);
 
466
    gtk_widget_set_tooltip_text (note_close, gettext("Close this notification"));
 
467
 
 
468
    gtk_box_pack_start(GTK_BOX(note_buttons), note_close, FALSE, FALSE, 5);
 
469
 
 
470
    gtk_box_pack_end(GTK_BOX(dtw->notifier), note_buttons, FALSE, FALSE, 5);
 
471
 
 
472
#if GTK_CHECK_VERSION(3,0,0)
 
473
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->notifier_box, 2, 0, 1, 1);
 
474
#else
 
475
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), dtw->notifier_box, 0, 2, 0, 1, 
 
476
                     GTK_FILL, GTK_FILL, 0, 0);
 
477
#endif
 
478
 
411
479
    /* Horizontal ruler */
412
480
    GtkWidget *eventbox = gtk_event_box_new ();
413
481
    dtw->hruler = sp_ruler_new(GTK_ORIENTATION_HORIZONTAL);
414
482
    dtw->hruler_box = eventbox;
415
 
    Inkscape::Util::Unit const *pt = unit_table.getUnit("pt");
416
483
    sp_ruler_set_unit(SP_RULER(dtw->hruler), pt);
417
484
    gtk_widget_set_tooltip_text (dtw->hruler_box, gettext(pt->name_plural.c_str()));
418
485
    gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler);
421
488
    g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_hruler_event), dtw);
422
489
 
423
490
#if GTK_CHECK_VERSION(3,0,0)
424
 
    GtkWidget *tbl = gtk_grid_new();
425
 
    dtw->canvas_tbl = gtk_grid_new();
426
 
    
427
 
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->guides_lock, 0, 0, 1, 1);
428
491
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 1, 0, 1, 1);
429
492
#else
430
 
    GtkWidget *tbl = gtk_table_new(2, 3, FALSE);
431
 
    dtw->canvas_tbl = gtk_table_new(3, 3, FALSE);
432
 
   
433
 
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl),
434
 
                     dtw->guides_lock,
435
 
                     0, 1,     0, 1, 
436
 
                     GTK_FILL, GTK_FILL, 
437
 
                     0,        0);
438
 
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl),
439
 
                 eventbox,
440
 
                 1, 2,     0, 1, 
441
 
             GTK_FILL, GTK_FILL, 
442
 
             0,        0);
 
493
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), eventbox, 1, 2, 1, 2,
 
494
                     GTK_FILL, GTK_FILL, 0, 0);
443
495
#endif
444
 
    g_signal_connect (G_OBJECT (dtw->guides_lock), "toggled", G_CALLBACK (sp_update_guides_lock), dtw);
445
 
    gtk_box_pack_start( GTK_BOX(dtw->hbox), tbl, TRUE, TRUE, 1 );
446
496
 
447
497
    /* Vertical ruler */
448
498
    eventbox = gtk_event_box_new ();
455
505
    gtk_container_add (GTK_CONTAINER (eventbox), GTK_WIDGET (dtw->vruler));
456
506
 
457
507
#if GTK_CHECK_VERSION(3,0,0)
458
 
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 0, 1, 1, 1);
 
508
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 0, 1, 2, 2);
459
509
#else
460
 
    gtk_table_attach(GTK_TABLE (dtw->canvas_tbl),
461
 
                     eventbox,
462
 
                     0, 1,     1, 2,
463
 
                     GTK_FILL, GTK_FILL,
464
 
                     0,        0);
 
510
    gtk_table_attach(GTK_TABLE (dtw->canvas_tbl), eventbox, 0, 1, 2, 3,
 
511
                     GTK_FILL, GTK_FILL, 0, 0);
465
512
#endif
466
513
 
467
514
    g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_vruler_event), dtw);
471
518
    // Horizontal scrollbar
472
519
    dtw->hadj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0));
473
520
 
474
 
 
475
 
 
476
 
 
477
521
#if GTK_CHECK_VERSION(3,0,0)
478
522
    dtw->hscrollbar = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (dtw->hadj));
479
 
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->hscrollbar, 1, 2, 1, 1);
 
523
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->hscrollbar, 1, 2, 2, 2);
480
524
    dtw->vscrollbar_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
481
525
#else
482
526
    dtw->hscrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (dtw->hadj));
483
 
    gtk_table_attach(GTK_TABLE (dtw->canvas_tbl), dtw->hscrollbar, 1, 2, 2, 3,
 
527
    gtk_table_attach(GTK_TABLE (dtw->canvas_tbl), dtw->hscrollbar, 1, 2, 3, 4,
484
528
            GTK_FILL, GTK_SHRINK,
485
529
            0, 0);
486
530
    dtw->vscrollbar_box = gtk_vbox_new (FALSE, 0);
510
554
#if GTK_CHECK_VERSION(3,0,0)
511
555
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->vscrollbar_box, 2, 0, 1, 2);
512
556
#else
513
 
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), dtw->vscrollbar_box, 2, 3, 0, 2,
 
557
    gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), dtw->vscrollbar_box, 2, 3, 1, 3,
514
558
            GTK_SHRINK, GTK_FILL,
515
559
            0, 0);
516
560
#endif
546
590
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
547
591
 
548
592
#if GTK_CHECK_VERSION(3,0,0)
549
 
    gtk_grid_attach( GTK_GRID(dtw->canvas_tbl), dtw->cms_adjust, 2, 2, 1, 1);
 
593
    gtk_grid_attach( GTK_GRID(dtw->canvas_tbl), dtw->cms_adjust, 2, 2, 2, 2);
550
594
#else
551
 
    gtk_table_attach( GTK_TABLE(dtw->canvas_tbl), dtw->cms_adjust, 2, 3, 2, 3,
 
595
    gtk_table_attach( GTK_TABLE(dtw->canvas_tbl), dtw->cms_adjust, 2, 3, 3, 4,
552
596
            (GtkAttachOptions)(GTK_SHRINK),
553
597
            (GtkAttachOptions)(GTK_SHRINK),
554
598
            0, 0);
595
639
#if GTK_CHECK_VERSION(3,0,0)
596
640
    gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas), TRUE);
597
641
    gtk_widget_set_vexpand(GTK_WIDGET(dtw->canvas), TRUE);
598
 
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 1, 1, 1);
 
642
    gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 1, 2, 2);
599
643
#else
600
 
    gtk_table_attach (GTK_TABLE (dtw->canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 2, 1, 2, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 0, 0);
 
644
    gtk_table_attach (GTK_TABLE (dtw->canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 2, 2, 3, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 0, 0);
601
645
#endif
602
646
 
603
647
    /* Dock */
626
670
#if GTK_CHECK_VERSION(3,0,0)
627
671
        gtk_widget_set_hexpand(GTK_WIDGET(paned->gobj()), TRUE);
628
672
        gtk_widget_set_vexpand(GTK_WIDGET(paned->gobj()), TRUE);
629
 
        gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (paned->gobj()), 1, 1, 1, 1);
 
673
        gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (paned->gobj()), 1, 1, 2, 2);
630
674
#else
631
 
        gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (paned->gobj()), 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
 
675
        gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (paned->gobj()), 1, 2, 2, 3,
 
676
                          (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
632
677
                          (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
633
678
#endif
634
679
 
636
681
#if GTK_CHECK_VERSION(3,0,0)
637
682
        gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas_tbl), TRUE);
638
683
        gtk_widget_set_vexpand(GTK_WIDGET(dtw->canvas_tbl), TRUE);
639
 
        gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (dtw->canvas_tbl), 1, 1, 1, 1);
 
684
        gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (dtw->canvas_tbl), 1, 1, 2, 2);
640
685
#else
641
 
        gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (dtw->canvas_tbl), 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
 
686
        gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (dtw->canvas_tbl), 1, 2, 2, 3,
 
687
                          (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
642
688
                          (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
643
689
#endif
644
690
    }
806
852
                      "size-allocate",
807
853
                      G_CALLBACK (canvas_tbl_size_allocate),
808
854
                      dtw);
 
855
 
 
856
    // Notifier is hidden by default
 
857
    gtk_widget_hide(dtw->notifier);
809
858
}
810
859
 
811
860
/**
1753
1802
    dtw->selected_style->setDesktop(dtw->desktop);
1754
1803
 
1755
1804
    /* Once desktop is set, we can update rulers */
 
1805
    sp_desktop_widget_update_notifiers (dtw);
1756
1806
    sp_desktop_widget_update_rulers (dtw);
1757
1807
    sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), namedview->lockguides );
1758
1808
 
1783
1833
    return dtw;
1784
1834
}
1785
1835
 
 
1836
void
 
1837
sp_desktop_widget_update_notifiers (SPDesktopWidget *dtw)
 
1838
{
 
1839
    // Do something here XXX
 
1840
}
1786
1841
 
1787
1842
void
1788
1843
sp_desktop_widget_update_rulers (SPDesktopWidget *dtw)