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); }
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); }
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(); }