~ubuntu-branches/ubuntu/lucid/synfigstudio/lucid

« back to all changes in this revision

Viewing changes to src/gtkmm/state_star.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Stefano Zacchiroli
  • Date: 2010-01-26 11:20:50 UTC
  • mfrom: (1.1.5 upstream) (2.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20100126112050-e43u17c5zpc5hse4
Tags: 0.62.00-1
* QA upload
* Properly orphan the package (set Maintainer to QA, empty Uploaders)
* New upstream release
* Bump build-dep on (lib)synfig to most recent version
* Bump standards-version to 3.8.3, no changes needed
* Change section of the "-dbg" package to debug, thanks lintian

Show diffs side-by-side

added added

removed removed

Lines of Context:
119
119
        Gtk::CheckButton checkbutton_layer_curve_gradient;
120
120
        Gtk::CheckButton checkbutton_layer_plant;
121
121
        Gtk::CheckButton checkbutton_layer_link_origins;
 
122
        Gtk::CheckButton checkbutton_layer_origins_at_center;
122
123
 
123
124
public:
124
125
 
125
 
        // this only counts the layers which use blines - they're the only
126
 
        // ones we link the origins for
 
126
        // this only counts the layers which will have their origins linked
127
127
        int layers_to_create()const
128
128
        {
129
129
                return
 
130
                        (get_layer_star_flag() && get_layer_origins_at_center_flag()) +
130
131
                        get_layer_region_flag() +
131
132
                        get_layer_outline_flag() +
132
133
                        get_layer_curve_gradient_flag() +
184
185
        bool get_layer_link_origins_flag()const { return checkbutton_layer_link_origins.get_active(); }
185
186
        void set_layer_link_origins_flag(bool x) { return checkbutton_layer_link_origins.set_active(x); }
186
187
 
 
188
        bool get_layer_origins_at_center_flag()const { return checkbutton_layer_origins_at_center.get_active(); }
 
189
        void set_layer_origins_at_center_flag(bool x) { return checkbutton_layer_origins_at_center.set_active(x); }
 
190
 
187
191
        void refresh_tool_options(); //to refresh the toolbox
188
192
 
189
193
        //events
328
332
                set_layer_link_origins_flag(false);
329
333
        else
330
334
                set_layer_link_origins_flag(true);
 
335
 
 
336
        if(settings.get_value("star.layer_origins_at_center",value) && value=="0")
 
337
                set_layer_origins_at_center_flag(false);
 
338
        else
 
339
                set_layer_origins_at_center_flag(true);
331
340
}
332
341
 
333
342
void
350
359
        settings.set_value("star.layer_curve_gradient",get_layer_curve_gradient_flag()?"1":"0");
351
360
        settings.set_value("star.layer_plant",get_layer_plant_flag()?"1":"0");
352
361
        settings.set_value("star.layer_link_origins",get_layer_link_origins_flag()?"1":"0");
 
362
        settings.set_value("star.layer_origins_at_center",get_layer_origins_at_center_flag()?"1":"0");
353
363
}
354
364
 
355
365
void
433
443
        checkbutton_layer_outline(_("Create Outline BLine")),
434
444
        checkbutton_layer_curve_gradient(_("Create Curve Gradient BLine")),
435
445
        checkbutton_layer_plant(_("Create Plant BLine")),
436
 
        checkbutton_layer_link_origins(_("Link BLine Origins"))
 
446
        checkbutton_layer_link_origins(_("Link Origins")),
 
447
        checkbutton_layer_origins_at_center(_("BLine Origins at Center"))
437
448
{
438
449
        egress_on_selection_change=true;
439
450
 
442
453
        // Set up the tool options dialog
443
454
        options_table.attach(*manage(new Gtk::Label(_("Star Tool"))),                   0, 2,  0,  1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
444
455
        options_table.attach(entry_id,                                                                                  0, 2,  1,  2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
445
 
        options_table.attach(*manage(new Gtk::Label(_("Feather:"))),                    0, 1,  2,  3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
446
 
        options_table.attach(spin_feather,                                                                              1, 2,  2,  3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
447
 
        options_table.attach(checkbutton_invert,                                                                0, 2,  5,  6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
448
 
        options_table.attach(checkbutton_regular_polygon,                                               0, 2,  6,  7, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
449
 
        options_table.attach(checkbutton_layer_star,                                                    0, 2,  7,  8, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
450
 
        options_table.attach(checkbutton_layer_outline,                                                 0, 2,  8,  9, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
451
 
        options_table.attach(checkbutton_layer_region,                                                  0, 2,  9, 10, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
452
 
        options_table.attach(checkbutton_layer_plant,                                                   0, 2, 10, 11, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
453
 
        options_table.attach(checkbutton_layer_curve_gradient,                                  0, 2, 11, 12, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
454
 
        options_table.attach(checkbutton_layer_link_origins,                                    0, 2, 12, 13, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
455
 
        options_table.attach(*manage(new Gtk::Label(_("Number of Points:"))),   0, 1, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
456
 
        options_table.attach(spin_number_of_points,                                                             1, 2, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
457
 
        options_table.attach(*manage(new Gtk::Label(_("Inner Tangent:"))),              0, 1, 14, 15, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
458
 
        options_table.attach(spin_inner_tangent,                                                                1, 2, 14, 15, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
459
 
        options_table.attach(*manage(new Gtk::Label(_("Outer Tangent:"))),              0, 1, 15, 16, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
460
 
        options_table.attach(spin_outer_tangent,                                                                1, 2, 15, 16, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
461
 
        options_table.attach(*manage(new Gtk::Label(_("Inner Width:"))),                0, 1, 16, 17, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
462
 
        options_table.attach(spin_inner_width,                                                                  1, 2, 16, 17, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
463
 
        options_table.attach(*manage(new Gtk::Label(_("Outer Width:"))),                0, 1, 17, 18, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
464
 
        options_table.attach(spin_outer_width,                                                                  1, 2, 17, 18, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
465
 
        options_table.attach(*manage(new Gtk::Label(_("Radius Ratio:"))),               0, 1, 18, 19, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
466
 
        options_table.attach(spin_radius_ratio,                                                                 1, 2, 18, 19, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
467
 
        options_table.attach(*manage(new Gtk::Label(_("Angle Offset:"))),               0, 1, 19, 20, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
468
 
        options_table.attach(spin_angle_offset,                                                                 1, 2, 19, 20, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
456
        options_table.attach(checkbutton_layer_star,                                                    0, 2,  2,  3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
457
        options_table.attach(checkbutton_layer_outline,                                                 0, 2,  3,  4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
458
        options_table.attach(checkbutton_layer_region,                                                  0, 2,  4,  5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
459
        options_table.attach(checkbutton_layer_plant,                                                   0, 2,  5,  6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
460
        options_table.attach(checkbutton_layer_curve_gradient,                                  0, 2,  6,  7, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
461
        options_table.attach(checkbutton_layer_link_origins,                                    0, 2,  7,  8, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
462
        options_table.attach(checkbutton_layer_origins_at_center,                               0, 2,  8,  9, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
463
        options_table.attach(checkbutton_invert,                                                                0, 2,  9, 10, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
464
        options_table.attach(checkbutton_regular_polygon,                                               0, 2, 10, 11, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
465
 
 
466
        options_table.attach(*manage(new Gtk::Label(_("Feather:"))),                    0, 1, 11, 12, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
467
        options_table.attach(spin_feather,                                                                              1, 2, 11, 12, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
468
 
 
469
        options_table.attach(*manage(new Gtk::Label(_("Number of Points:"))),   0, 1, 12, 13, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
470
        options_table.attach(spin_number_of_points,                                                             1, 2, 12, 13, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
471
 
 
472
        options_table.attach(*manage(new Gtk::Label(_("Inner Tangent:"))),              0, 1, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
473
        options_table.attach(spin_inner_tangent,                                                                1, 2, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
474
 
 
475
        options_table.attach(*manage(new Gtk::Label(_("Outer Tangent:"))),              0, 1, 14, 15, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
476
        options_table.attach(spin_outer_tangent,                                                                1, 2, 14, 15, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
477
 
 
478
        options_table.attach(*manage(new Gtk::Label(_("Inner Width:"))),                0, 1, 15, 16, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
479
        options_table.attach(spin_inner_width,                                                                  1, 2, 15, 16, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
480
 
 
481
        options_table.attach(*manage(new Gtk::Label(_("Outer Width:"))),                0, 1, 16, 17, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
482
        options_table.attach(spin_outer_width,                                                                  1, 2, 16, 17, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
483
 
 
484
        options_table.attach(*manage(new Gtk::Label(_("Radius Ratio:"))),               0, 1, 17, 18, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
485
        options_table.attach(spin_radius_ratio,                                                                 1, 2, 17, 18, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
486
 
 
487
        options_table.attach(*manage(new Gtk::Label(_("Angle Offset:"))),               0, 1, 18, 19, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
 
488
        options_table.attach(spin_angle_offset,                                                                 1, 2, 18, 19, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
469
489
 
470
490
        options_table.show_all();
471
491
 
586
606
        Angle::deg offset(get_angle_offset());
587
607
        bool regular(get_regular_polygon());
588
608
        Angle::deg angle(360.0/points);
589
 
        Real x(p1[0]), y(p1[1]);
 
609
        Vector origin;
 
610
        Real x, y;
 
611
 
 
612
        if (get_layer_origins_at_center_flag())
 
613
        {
 
614
                x = y = 0;
 
615
                origin = p1;
 
616
        }
 
617
        else
 
618
        {
 
619
                x = p1[0];
 
620
                y = p1[1];
 
621
        }
590
622
 
591
623
        std::vector<BLinePoint> new_list;
592
624
        int point(0);
595
627
                new_list.push_back(*(new BLinePoint));
596
628
                new_list[point].set_width(outer_width);
597
629
                new_list[point].set_vertex(Point(radius1*Angle::cos(angle*i + offset).get() + x,
598
 
                                                                         radius1*Angle::sin(angle*i + offset).get() + y));
 
630
                                                                                 radius1*Angle::sin(angle*i + offset).get() + y));
599
631
                new_list[point++].set_tangent(Point(-Angle::sin(angle*i + offset).get(),
600
632
                                                                                         Angle::cos(angle*i + offset).get()) * outer_tangent);
601
633
 
613
645
        ValueNode_BLine::Handle value_node_bline(ValueNode_BLine::create(new_list));
614
646
        assert(value_node_bline);
615
647
 
616
 
        ValueNode_Const::Handle value_node_origin(ValueNode_Const::create(Vector()));
 
648
        ValueNode_Const::Handle value_node_origin(ValueNode_Const::create(origin));
617
649
        assert(value_node_origin);
618
650
 
619
651
        // Set the looping flag
634
666
        if (get_layer_star_flag())
635
667
        {
636
668
                layer=get_canvas_interface()->add_layer_to("star",canvas,depth);
 
669
                if (!layer)
 
670
                {
 
671
                        get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
 
672
                        group.cancel();
 
673
                        return;
 
674
                }
637
675
                layer_selection.push_back(layer);
638
676
 
639
 
                layer->set_param("origin",p1);
640
 
                get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
641
 
 
642
 
                layer->set_param("radius1",(p2-p1).mag());
 
677
                layer->set_param("radius1",radius1);
643
678
                get_canvas_interface()->signal_layer_param_changed()(layer,"radius1");
644
679
 
645
 
                layer->set_param("radius2",(p2-p1).mag()/2);
 
680
                layer->set_param("radius2",radius2);
646
681
                get_canvas_interface()->signal_layer_param_changed()(layer,"radius2");
647
682
 
648
683
                layer->set_param("angle",offset);
663
698
                layer->set_description(get_id());
664
699
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
665
700
 
666
 
                if(get_layer_outline_flag())
667
 
                {
668
 
                        layer->set_param("color",synfigapp::Main::get_background_color());
669
 
                        get_canvas_interface()->signal_layer_param_changed()(layer,"color");
 
701
                // only link the star's origin parameter if the option is selected, we're putting bline
 
702
                // origins at their centers, and we're creating more than one layer
 
703
                if (get_layer_link_origins_flag() && get_layer_origins_at_center_flag() && layers_to_create > 1)
 
704
                {
 
705
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
 
706
                        assert(action);
 
707
 
 
708
                        action->set_param("canvas",get_canvas());
 
709
                        action->set_param("canvas_interface",get_canvas_interface());
 
710
                        action->set_param("layer",layer);
 
711
                        if(!action->set_param("param",String("origin")))
 
712
                                synfig::error("LayerParamConnect didn't like \"param\"");
 
713
                        if(!action->set_param("value_node",ValueNode::Handle(value_node_origin)))
 
714
                                synfig::error("LayerParamConnect didn't like \"value_node\"");
 
715
 
 
716
                        if(!get_canvas_interface()->get_instance()->perform_action(action))
 
717
                        {
 
718
                                //get_canvas_view()->get_ui_interface()->error(_("Unable to create Star layer"));
 
719
                                group.cancel();
 
720
                                throw String(_("Unable to create Star layer"));
 
721
                                return;
 
722
                        }
 
723
                }
 
724
                else
 
725
                {
 
726
                        layer->set_param("origin",p1);
 
727
                        get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
670
728
                }
671
729
        }
672
730
 
679
737
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
680
738
 
681
739
                Layer::Handle layer(get_canvas_interface()->add_layer_to("curve_gradient",canvas,depth));
682
 
                assert(layer);
 
740
                if (!layer)
 
741
                {
 
742
                        get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
 
743
                        group.cancel();
 
744
                        return;
 
745
                }
683
746
                layer_selection.push_back(layer);
684
747
                layer->set_description(get_id()+_(" Gradient"));
685
748
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
686
749
 
687
750
                {
688
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
751
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
689
752
                        assert(action);
690
753
 
691
754
                        action->set_param("canvas",get_canvas());
708
771
                // only link the curve gradient's origin parameter if the option is selected and we're creating more than one layer
709
772
                if (get_layer_link_origins_flag() && layers_to_create > 1)
710
773
                {
711
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
774
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
712
775
                        assert(action);
713
776
 
714
777
                        action->set_param("canvas",get_canvas());
727
790
                                return;
728
791
                        }
729
792
                }
 
793
                else
 
794
                {
 
795
                        layer->set_param("origin",origin);
 
796
                        get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
 
797
                }
730
798
        }
731
799
 
732
800
        ///////////////////////////////////////////////////////////////////////////
738
806
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
739
807
 
740
808
                Layer::Handle layer(get_canvas_interface()->add_layer_to("plant",canvas,depth));
741
 
                assert(layer);
 
809
                if (!layer)
 
810
                {
 
811
                        get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
 
812
                        group.cancel();
 
813
                        return;
 
814
                }
742
815
                layer_selection.push_back(layer);
743
816
                layer->set_description(get_id()+_(" Plant"));
744
817
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
745
818
 
746
819
                {
747
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
820
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
748
821
                        assert(action);
749
822
 
750
823
                        action->set_param("canvas",get_canvas());
767
840
                // only link the plant's origin parameter if the option is selected and we're creating more than one layer
768
841
                if (get_layer_link_origins_flag() && layers_to_create > 1)
769
842
                {
770
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
843
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
771
844
                        assert(action);
772
845
 
773
846
                        action->set_param("canvas",get_canvas());
786
859
                                return;
787
860
                        }
788
861
                }
 
862
                else
 
863
                {
 
864
                        layer->set_param("origin",origin);
 
865
                        get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
 
866
                }
789
867
        }
790
868
 
791
869
        ///////////////////////////////////////////////////////////////////////////
797
875
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
798
876
 
799
877
                Layer::Handle layer(get_canvas_interface()->add_layer_to("region",canvas,depth));
800
 
                assert(layer);
 
878
                if (!layer)
 
879
                {
 
880
                        get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
 
881
                        group.cancel();
 
882
                        return;
 
883
                }
801
884
                layer_selection.push_back(layer);
802
885
                layer->set_description(get_id()+_(" Region"));
803
886
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
808
891
                layer->set_param("invert",get_invert());
809
892
                get_canvas_interface()->signal_layer_param_changed()(layer,"invert");
810
893
 
811
 
                if(get_layer_outline_flag())
812
 
                        layer->set_param("color",synfigapp::Main::get_background_color());
813
 
 
814
 
                // I don't know if it's safe to reuse the same layer_param_connect action, so I'm
 
894
                // I don't know if it's safe to reuse the same LayerParamConnect action, so I'm
815
895
                // using 2 separate ones.
816
896
                {
817
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
897
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
818
898
                        assert(action);
819
899
 
820
900
                        action->set_param("canvas",get_canvas());
837
917
                // only link the region's origin parameter if the option is selected and we're creating more than one layer
838
918
                if (get_layer_link_origins_flag() && layers_to_create > 1)
839
919
                {
840
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
920
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
841
921
                        assert(action);
842
922
 
843
923
                        action->set_param("canvas",get_canvas());
856
936
                                return;
857
937
                        }
858
938
                }
 
939
                else
 
940
                {
 
941
                        layer->set_param("origin",origin);
 
942
                        get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
 
943
                }
859
944
        }
860
945
 
861
946
        ///////////////////////////////////////////////////////////////////////////
865
950
        if (get_layer_outline_flag())
866
951
        {
867
952
                Layer::Handle layer(get_canvas_interface()->add_layer_to("outline",canvas,depth));
868
 
                assert(layer);
 
953
                if (!layer)
 
954
                {
 
955
                        get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
 
956
                        group.cancel();
 
957
                        return;
 
958
                }
869
959
                layer_selection.push_back(layer);
870
960
                layer->set_description(get_id()+_(" Outline"));
871
961
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
877
967
                get_canvas_interface()->signal_layer_param_changed()(layer,"invert");
878
968
 
879
969
                {
880
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
970
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
881
971
                        assert(action);
882
972
 
883
973
                        action->set_param("canvas",get_canvas());
900
990
                // only link the outline's origin parameter if the option is selected and we're creating more than one layer
901
991
                if (get_layer_link_origins_flag() && layers_to_create > 1)
902
992
                {
903
 
                        synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect"));
 
993
                        synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect"));
904
994
                        assert(action);
905
995
 
906
996
                        action->set_param("canvas",get_canvas());
919
1009
                                return;
920
1010
                        }
921
1011
                }
 
1012
                else
 
1013
                {
 
1014
                        layer->set_param("origin",origin);
 
1015
                        get_canvas_interface()->signal_layer_param_changed()(layer,"origin");
 
1016
                }
922
1017
        }
923
1018
 
924
1019
        egress_on_selection_change=false;