コード例 #1
0
ファイル: ImageToolsControl.cs プロジェクト: moscrif/ide
        public ImageToolsControl(ImageCanvas ic)
            : base(1,6,false)
        {
            this.NRows = 1;
            this.NColumns = 10;
            this.ic = ic;
            tblButton = new Table(1,5,false);

            toolbutton = new HButtonBox();
            toolbutton.LayoutStyle = ButtonBoxStyle.Start;

            btnShowHideBarier = new ToggleButton();
            btnShowHideBarier.Add(MainClass.Tools.CreatePicLabelWidget("barier-show.png",MainClass.Languages.Translate("show_barier_layer")));
            btnShowHideBarier.Name = "btnShowHideBarier";
            btnShowHideBarier.Relief = ReliefStyle.None;
            btnShowHideBarier.CanFocus = false;
            btnShowHideBarier.BorderWidth = 1;
            //btnShowHideBarier.WidthRequest = 75;
            btnShowHideBarier.TooltipText = MainClass.Languages.Translate("show_barier_layer_tt");
            btnShowHideBarier.Toggled+= delegate(object sender, EventArgs e) {

                this.ic.ShowBarierLayer =  btnShowHideBarier.Active;
                SetSensitive(btnShowHideBarier.Active);

            };

            btnEditBarierPoint = new ToggleButton();
            btnEditBarierPoint.Name = "btnEditBarierPoint";
            btnEditBarierPoint.Add(MainClass.Tools.CreatePicLabelWidget("barier-add.png",MainClass.Languages.Translate("edit_barier_point")));
            btnEditBarierPoint.Relief = ReliefStyle.None;
            btnEditBarierPoint.CanFocus = false;
            btnEditBarierPoint.BorderWidth = 1;
            btnEditBarierPoint.TooltipText = MainClass.Languages.Translate("edit_barier_point_tt");
            btnEditBarierPoint.Toggled+= delegate(object sender, EventArgs e) {
                if(btnEditBarierPoint.Active){
                    btnDeleteBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarierPoint = new ToggleButton();
            btnDeleteBarierPoint.Name = "btnDeleteBarierPoint";
            btnDeleteBarierPoint.Add(MainClass.Tools.CreatePicLabelWidget("barier-delete.png",MainClass.Languages.Translate("delete_barier_point")));
            btnDeleteBarierPoint.Relief = ReliefStyle.None;
            btnDeleteBarierPoint.CanFocus = false;
            btnDeleteBarierPoint.BorderWidth = 1;
            btnDeleteBarierPoint.TooltipText = MainClass.Languages.Translate("delete_barier_point_tt");
            btnDeleteBarierPoint.Toggled+= delegate(object sender, EventArgs e) {
                if(btnDeleteBarierPoint.Active){
                    btnEditBarierPoint.Active = false;
                    //btnAddBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarier = new Button();
            btnDeleteBarier.Name = "btnDeleteBarier";
            btnDeleteBarier.Add(MainClass.Tools.CreatePicLabelWidget("barier-delete-all.png",MainClass.Languages.Translate("delete_barier")));
            btnDeleteBarier.Relief = ReliefStyle.None;
            btnDeleteBarier.CanFocus = false;
            btnDeleteBarier.BorderWidth = 1;
            btnDeleteBarier.TooltipText = MainClass.Languages.Translate("delete_barier_tt");
            btnDeleteBarier.Clicked += delegate(object sender, EventArgs e) {
                MessageDialogs md = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, "", MainClass.Languages.Translate("delete_barier_question"), Gtk.MessageType.Question);
                int result = md.ShowDialog();

                if (result != (int)Gtk.ResponseType.Yes){
                    return;
                }

                if(DeleteBarierLayerEvent!= null)
                    DeleteBarierLayerEvent(null,null);

            };

            btnShowHideBarier.Active = false;
            //btnAddBarierPoint.Active = false;
            //btnMovieBarierPoint.Active = false;
            btnDeleteBarierPoint.Active = false;
            btnEditBarierPoint.Active = false;
            SetSensitive(false);

            tblButton.Attach(btnShowHideBarier,0,1,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            //tblButton.Attach(btnAddBarierPoint,1,2,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            //tblButton.Attach(btnMovieBarierPoint,2,3,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            tblButton.Attach(btnEditBarierPoint,1,2,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            tblButton.Attach(btnDeleteBarierPoint,2,3,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            tblButton.Attach(btnDeleteBarier,3,4,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            tblButton.ShowAll();

            this.Attach(tblButton,0,1,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            this.Attach(new HSeparator(),1,2,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);

            Gtk.Button btnZoomIn = new Gtk.Button(new Image("zoom-in.png",IconSize.Button));
            btnZoomIn.TooltipText = MainClass.Languages.Translate("zoom_in");
            btnZoomIn.Relief = Gtk.ReliefStyle.None;
            btnZoomIn.CanFocus = false;
            btnZoomIn.Clicked+= delegate {
                ZoomIn();

            };
            //btnZoomIn.WidthRequest = btnZoomIn.HeightRequest = 19;

            Gtk.Button btnZoomOriginal = new Gtk.Button(new Image("zoom-original.png",IconSize.Button));
            btnZoomOriginal.TooltipText = MainClass.Languages.Translate("zoom_original");
            btnZoomOriginal.Relief = Gtk.ReliefStyle.None;
            btnZoomOriginal.CanFocus = false;
            btnZoomOriginal.Clicked+= delegate {
                cbeZoom.Active = 11;
            };
            //btnZoomOriginal.WidthRequest = btnZoomOriginal.HeightRequest = 19;

            Gtk.Button btnZoomOut = new Gtk.Button(new Image("zoom-out.png",IconSize.Button));
            btnZoomOut.TooltipText = MainClass.Languages.Translate("zoom_out");
            btnZoomOut.Relief = Gtk.ReliefStyle.None;
            btnZoomOut.CanFocus = false;
            btnZoomOut.Clicked+= delegate {
                ZoomOut();

            };
            //btnZoomOut.WidthRequest = btnZoomOut.HeightRequest = 19;

            string[] zoomCollection = new string[] { "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%" };
            cbeZoom = new ComboBoxEntry(zoomCollection);
            cbeZoom.Active = 11;
            cbeZoom.WidthRequest = 70;
            cbeZoom.Changed+= delegate(object sender, EventArgs e) {
                UpdateScale();
            };

            cbeZoom.Entry.FocusOutEvent+= delegate(object o, FocusOutEventArgs args) {
                //Console.WriteLine("FocusOutEvent");
                UpdateScale();
            };

            cbeZoom.Entry.FocusInEvent+= delegate(object o, FocusInEventArgs args) {

            };
            cbeZoom.Entry.Changed+= delegate(object sender, EventArgs e) {

                //UpdateScale();
            };

            this.Attach(btnZoomOut,2,3,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            this.Attach(cbeZoom,3,4,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            this.Attach(btnZoomIn,4,5,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            this.Attach(btnZoomOriginal,5,6,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            //this.PackEnd(cbeZoom,false,false,1);
        }
コード例 #2
0
ファイル: ImageToolBarControl.cs プロジェクト: moscrif/ide
        public ImageToolBarControl(ImageCanvas ic)
        {
            this.ic = ic;
            btnShowHideBarier = new ToggleToolButton("barier-show.png");//RadioToolButton(group1);//,"barier-show.png");
            btnShowHideBarier.Label = MainClass.Languages.Translate("show_barier_layer");
            btnShowHideBarier.Name = "btnShowHideBarier";
            //btnShowHideBarier.Relief = ReliefStyle.None;
            btnShowHideBarier.CanFocus = false;
            btnShowHideBarier.BorderWidth = 1;
            //btnShowHideBarier.WidthRequest = 75;
            btnShowHideBarier.TooltipText = MainClass.Languages.Translate("show_barier_layer_tt");

            btnShowHideBarier.Events = Gdk.EventMask.AllEventsMask;// | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask
            btnShowHideBarier.Toggled+= delegate(object sender, EventArgs e) {

                this.ic.ShowBarierLayer =  btnShowHideBarier.Active;
                SetSensitive(btnShowHideBarier.Active);
                //Console.WriteLine("btnShowHideBarier.Toggled");

            };

            btnEditBarierPoint =  new ToggleToolButton("barier-add.png");//new RadioToolButton(group2,"barier-add.png");
            btnEditBarierPoint.Name = "btnEditBarierPoint";
            btnEditBarierPoint.Label = MainClass.Languages.Translate("edit_barier_point");
            //btnEditBarierPoint.Relief = ReliefStyle.None;
            btnEditBarierPoint.CanFocus = false;
            btnEditBarierPoint.BorderWidth = 1;
            btnEditBarierPoint.TooltipText = MainClass.Languages.Translate("edit_barier_point_tt");
            btnEditBarierPoint.Toggled+= delegate(object sender, EventArgs e) {
                if(btnEditBarierPoint.Active){
                    btnDeleteBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarierPoint = new ToggleToolButton("barier-delete.png");//new RadioToolButton(group2,"barier-delete.png");
            btnDeleteBarierPoint.Name = "btnDeleteBarierPoint";
            btnDeleteBarierPoint.Label = MainClass.Languages.Translate("delete_barier_point");
            //btnDeleteBarierPoint.Relief = ReliefStyle.None;
            btnDeleteBarierPoint.CanFocus = false;
            btnDeleteBarierPoint.BorderWidth = 1;
            btnDeleteBarierPoint.TooltipText = MainClass.Languages.Translate("delete_barier_point_tt");
            btnDeleteBarierPoint.Toggled+= delegate(object sender, EventArgs e) {
                if(btnDeleteBarierPoint.Active){
                    btnEditBarierPoint.Active = false;
                    //btnAddBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarier = new ToolButton("barier-delete-all.png");
            btnDeleteBarier.Name = "btnDeleteBarier";

            btnDeleteBarier.Label =MainClass.Languages.Translate("delete_barier");
            btnDeleteBarier.CanFocus = false;
            btnDeleteBarier.BorderWidth = 1;
            btnDeleteBarier.TooltipText = MainClass.Languages.Translate("delete_barier_tt");
            btnDeleteBarier.Clicked += delegate(object sender, EventArgs e) {
                MessageDialogs md = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, "", MainClass.Languages.Translate("delete_barier_question"), Gtk.MessageType.Question);
                int result = md.ShowDialog();

                if (result != (int)Gtk.ResponseType.Yes){
                    return;
                }

                if(DeleteBarierLayerEvent!= null)
                    DeleteBarierLayerEvent(null,null);

            };

            SetSensitive(false);

            this.Insert (btnShowHideBarier, 0);

            this.Insert (btnEditBarierPoint, 1);
            this.Insert (btnDeleteBarierPoint, 2);
            this.Insert (btnDeleteBarier, 3);

            Gtk.ToolButton btnZoomIn = new Gtk.ToolButton("zoom-in.png");
            btnZoomIn.Label = MainClass.Languages.Translate("zoom_in");
            btnZoomIn.TooltipText = MainClass.Languages.Translate("zoom_in");
            //btnZoomIn.Relief = Gtk.ReliefStyle.None;
            btnZoomIn.CanFocus = false;
            btnZoomIn.Clicked+= delegate {
                ZoomIn();
            };

            Gtk.ToolButton btnZoomOriginal = new Gtk.ToolButton("zoom-original.png");
            btnZoomOriginal.Label = MainClass.Languages.Translate("zoom_original");
            btnZoomOriginal.TooltipText = MainClass.Languages.Translate("zoom_original");
            //btnZoomOriginal.Relief = Gtk.ReliefStyle.None;
            btnZoomOriginal.CanFocus = false;
            btnZoomOriginal.Clicked+= delegate {
                cbeZoom.Active = 11;
            };
            //btnZoomOriginal.WidthRequest = btnZoomOriginal.HeightRequest = 19;

            Gtk.ToolButton btnZoomOut = new Gtk.ToolButton("zoom-out.png");
            btnZoomOut.TooltipText = MainClass.Languages.Translate("zoom_out");
            btnZoomOut.Label = MainClass.Languages.Translate("zoom_out");
            //btnZoomOut.Relief = Gtk.ReliefStyle.None;
            btnZoomOut.CanFocus = false;
            btnZoomOut.Clicked+= delegate {
                ZoomOut();

            };

            string[] zoomCollection = new string[] { "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%" };
            cbeZoom = new ComboBoxEntry(zoomCollection);
            cbeZoom.Active = 11;
            cbeZoom.WidthRequest = 70;
            cbeZoom.Changed+= delegate(object sender, EventArgs e) {
                UpdateScale();
            };

            cbeZoom.Entry.FocusOutEvent+= delegate(object o, FocusOutEventArgs args) {
                //Console.WriteLine("FocusOutEvent");
                UpdateScale();
            };

            cbeZoom.Entry.FocusInEvent+= delegate(object o, FocusInEventArgs args) {

            };
            cbeZoom.Entry.Changed+= delegate(object sender, EventArgs e) {

                //UpdateScale();
            };

            ToolItem tic = new ToolItem();
            tic.Add(cbeZoom);

            this.Insert(new SeparatorToolItem(),4);
            this.Insert(btnZoomIn,5);
            this.Insert(btnZoomOut,6);
            this.Insert(tic,7);
            this.Insert(btnZoomOriginal,8);
        }
コード例 #3
0
ファイル: ImageEditor.cs プロジェクト: moscrif/ide
        public ImageEditor(string filePath)
        {
            fileName =filePath;

            fileBarierName = fileName+".mso";
            if(System.IO.File.Exists(fileBarierName)){
                string barierFile;
                try {
                    using (StreamReader file = new StreamReader(fileBarierName)) {
                            barierFile = file.ReadToEnd();
                            file.Close();
                            file.Dispose();
                    }
                    if(!string.IsNullOrEmpty(barierFile)){
                        //listPoint =  JsonConvert.DeserializeObject<List<BarierPoint>>(barierFile);
                        System.Web.Script.Serialization.JavaScriptSerializer jss= new System.Web.Script.Serialization.JavaScriptSerializer();
                        jss.RegisterConverters(new[]{new BarierPointJavaScriptConverter()} );
                        listPoint = jss.Deserialize<List<BarierPoint>>(barierFile);
                    }

                } catch (Exception ex) {
                    MessageDialogs ms = new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("file_cannot_open", fileBarierName), ex.Message, Gtk.MessageType.Error,null);
                    ms.ShowDialog();
                }
            }

            editorAction = new Gtk.ActionGroup("imageeditor");

            //ic = new ImageCanvas(filePath,listPoint);
            ic = new ImageCanvas(filePath,listPoint) {
                Name = "canvas",
                CanDefault = true,
                CanFocus = true,
                Events = (Gdk.EventMask)16134
            };

            vbox = new Gtk.VBox();

            /*Gdk.Color col = new Gdk.Color(255,255,0);
            vbox.ModifyBg(StateType.Normal, col);*/

            itc = new ImageToolBarControl (ic);//new ImageToolBarControl(ic);
            itc.DeleteBarierLayerEvent+= delegate(object sender, EventArgs e) {

                if(System.IO.File.Exists(fileBarierName) ){
                    try{
                        System.IO.File.Delete(fileBarierName);
                        OnModifiedChanged(false);
                        ic.DeleteBarier();
                    }catch (Exception ex){
                        MessageDialogs mdd =
                            new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("cannot_delete_file",fileBarierName),ex.Message, Gtk.MessageType.Error);
                        mdd.ShowDialog();
                    }
                } else {
                    ic.DeleteBarier();
                }
            };

            vbox.PackStart(itc,false,false,0);

            ScrolledWindow sw = new Gtk.ScrolledWindow();
            sw.ShadowType = Gtk.ShadowType.Out;

            sw.Hadjustment.ValueChanged += delegate(object sender, EventArgs e) {
                //Console.WriteLine("sw.Hadjustment -> {0}",sw.Hadjustment.Value);
            };

            sw.Vadjustment.ValueChanged += delegate(object sender, EventArgs e) {
                //Console.WriteLine("sw.Vadjustment -> {0}",sw.Vadjustment.Value);
            };

            Viewport vp = new Viewport () {
                ShadowType = ShadowType.None
            };

            vp.ScrollEvent+= delegate(object o, ScrollEventArgs args) {
                if (args.Event.State  == ModifierType.ControlMask) {
                    switch (args.Event.Direction) {
                        case ScrollDirection.Down:
                        case ScrollDirection.Right:
                             itc.ZoomOut();
                            return ;
                        case ScrollDirection.Left:
                        case ScrollDirection.Up:
                            itc.ZoomIn();
                            return ;
                    }
                }
            };

            vp.MotionNotifyEvent+= delegate(object o, MotionNotifyEventArgs args) {

                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value,sw.Vadjustment.Value);
                int x =(int)args.Event.X;
                int y =(int)args.Event.Y;
                if(ic.ConvertPointToCanvasPoint(offset, ref x, ref y)){
                    OnWriteToStatusbar(String.Format(statusFormat,x,y,ic.WidthImage,ic.HeightImage));
                }

                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing ) return;

                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint){

                    ic.StepMovingPoint((int)args.Event.X,(int)args.Event.Y,offset);
                    //OnModifiedChanged(true);
                }
            };

            vp.ButtonReleaseEvent+= delegate(object o, ButtonReleaseEventArgs args) {
                //Console.WriteLine("1_ButtonReleaseEvent");
                if (args.Event.Button != 1) return;

                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing ) return;
                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value,sw.Vadjustment.Value);

                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint){

                    ic.EndMovingPoint((int)args.Event.X,(int)args.Event.Y,offset);
                    OnModifiedChanged(true);
                }
            };

            vp.ButtonPressEvent+= delegate(object o, ButtonPressEventArgs args) {
                if (args.Event.Button != 1) return;

                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing ) return;

                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value,sw.Vadjustment.Value);
                if(itc.ToolState == ImageToolBarControl.ToolStateEnum.addpoint){
                    ic.AddPoint((int)args.Event.X,(int)args.Event.Y,offset);
                    OnModifiedChanged(true);

                } else if(itc.ToolState == ImageToolBarControl.ToolStateEnum.deletepoint){
                    ic.DeletePoint((int)args.Event.X,(int)args.Event.Y,offset);
                    OnModifiedChanged(true);

                } else if(itc.ToolState == ImageToolBarControl.ToolStateEnum.moviepoint){

                    ic.StartMovingPoint((int)args.Event.X,(int)args.Event.Y,offset);
                    OnModifiedChanged(true);

                } else if(itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint){
                    if (args.Event.State  == ModifierType.ShiftMask){
                        ic.DeletePoint((int)args.Event.X,(int)args.Event.Y,offset);
                        OnModifiedChanged(true);
                        return;
                    }
                        ic.EditPoint((int)args.Event.X,(int)args.Event.Y,offset);
                        OnModifiedChanged(true);
                }
            };

            sw.Add(vp);
            vp.Add (ic);

            vbox.PackEnd(sw,true,true,0);
            ic.Show ();
            vp.Show ();

            vbox.ShowAll();
        }