public bool Drop(object sender, string filename, int X, int Y) { if ((filename.IndexOf(".wav", StringComparison.CurrentCultureIgnoreCase) == filename.Length - 4) ) { if (local.current_mouse_page == null) { return(false); } Rectangle r = new Rectangle( local.partX - ((local.current_mouse_page.partsX / 10) - 1) / 2 , local.partY - ((local.current_mouse_page.partsY / 10) - 1) / 2 , local.current_mouse_page.partsX / 10 , local.current_mouse_page.partsY / 10); ControlTracker tracker = local.current_mouse_page.MakeControl(typeof(WavePlayer) , typeof(IReflectorButton) , r); WavePlayer player = tracker.o as WavePlayer; player.SoundFile = filename; PSI_Button button = tracker.c as PSI_Button; button.Text = filename; //IReflectorCanvas c = sender as IReflectorCanvas; //c.MakeControl( typeof( Task ) ); return(true); } return(false); }
void CreateAClone(Object s, EventArgs e) { if (local.clone_control != null) { Rectangle r = local.clone_control.grid_rect; r.X = local.partX; r.Y = local.partY; ControlTracker ct = current_page.MakeControl(local.clone_control.Type, local.clone_control.i, r); IReflectorCopyPaste copy = ct.o as IReflectorCopyPaste; if (copy != null) { copy.OnPaste(local.clone_control.o); } copy = ct.c as IReflectorCopyPaste; if (copy != null) { copy.OnPaste(local.clone_control.c); } } }
bool IReflectorPluginDropFileTarget.Drop(object sender , string filename, int x, int y) { if ((filename.IndexOf(".exe") == filename.Length - 4) || (filename.IndexOf(".bat") == filename.Length - 4) || (filename.IndexOf(".cmd") == filename.Length - 4) ) { if (core_common.current_mouse_page == null) { return(false); } Rectangle r = new Rectangle( core_common.partX - ((core_common.current_mouse_page.partsX / 10) - 1) / 2 , core_common.partY - ((core_common.current_mouse_page.partsY / 10) - 1) / 2 , core_common.current_mouse_page.partsX / 10 , core_common.current_mouse_page.partsY / 10); ControlTracker tracker = core_common.current_mouse_page.MakeControl(typeof(Task) , typeof(IReflectorButton) , r); Task task = tracker.o as Task; int last_slash = filename.LastIndexOfAny(new char[] { '/', '\\' }); if (last_slash == -1) { last_slash = 0; } task.task.ProgramName = filename.Substring(last_slash + 1); task.task.WorkingPath = filename.Substring(0, last_slash); PSI_Button button = tracker.c as PSI_Button; button.Text = filename; //IReflectorCanvas c = sender as IReflectorCanvas; //c.MakeControl( typeof( Task ) ); return(true); } return(false); }
public bool Drop( object sender, string filename, int X, int Y ) { try { if( core_common.current_mouse_page == null ) { // not in edit mode? return false; } Image image; try { image = Image.FromFile( filename ); } catch { return false; } int image_width_parts = ( image.Size.Width * core_common.current_mouse_page.partsX ) / core_common.current_mouse_page.rect.Width; int image_height_parts = ( image.Size.Height * core_common.current_mouse_page.partsY) / core_common.current_mouse_page.rect.Height; Rectangle r = new Rectangle( core_common.partX - image_width_parts / 2 , core_common.partY - image_height_parts / 2 , image_width_parts , image_height_parts ); // in grid coordinates, please. ControlTracker tracker = core_common.current_mouse_page.MakeControl( typeof( ImageControl ), null, r ); ImageControl ic = tracker.c as ImageControl; ic.FileName = filename; return true; } catch( Exception ) { } return false; }
void Canvas_MouseMove(Object sender, MouseEventArgs e) { buttons.Location = e.Location; if (!flags.editing) { //this.Parent.Capture = true; return; } if (current_page == null) { return; } int px = current_page.PARTOFX(e.Location.X); int py = current_page.PARTOFY(e.Location.Y); int dx = px - local.partX; int dy = py - local.partY; local.partX = px; local.partY = py; if (!flags.dragging && !flags.selecting && (flags.sizing_corner == corners.None)) { if ((current_control = current_page.ControlAt(local.partX, local.partY)) != null) { ContextMenuStrip = control_context_menu; } else { ContextMenuStrip = my_context_menu; } local.current_mouse_control = current_control; local.current_mouse_page = current_page; } if (buttons.l) { flags.moved = false; //return; if (flags.selecting) { // e.Button int nx, ny, nw, nh; // kinda hard to explain why the subtract is -2... // but the cell which we start in is always selected, // and is one of the corners of the resulting rectangle. nx = _selection.X; if ((nw = (local.partX - _selection.X + 1)) <= 0) { nx = _selection.X + (nw - 1); nw = -(nw - 2); } ny = _selection.Y; if ((nh = (local.partY - _selection.Y + 1)) <= 0) { ny = _selection.Y + (nh - 1); nh = -(nh - 2); } //if( IsSelectionValidEx( nx, ny, NULL, NULL, nw, nh ) ) { selection.X = nx; selection.Y = ny; selection.Width = nw; selection.Height = nh; } //lprintf( WIDE("And now our selection is %d,%d %d,%d") ); Refresh(); } else if (flags.dragging) { if (dx == 0 && dy == 0) { return; } current_control.grid_rect.X += dx; current_control.grid_rect.Y += dy; flags.moved = true; } else if (flags.sizing_corner != corners.None) { if (dx == 0 && dy == 0) { return; } retry: switch (flags.sizing_corner) { case corners.UpperLeft: if ((current_control.grid_rect.Width - dx) <= 0) { flags.sizing_corner = corners.UpperRight; goto retry; } if ((current_control.grid_rect.Height - dy) <= 0) { flags.sizing_corner = corners.LowerLeft; goto retry; } current_control.grid_rect.X += dx; current_control.grid_rect.Y += dy; current_control.grid_rect.Width -= dx; current_control.grid_rect.Height -= dy; flags.moved = true; break; case corners.UpperRight: if ((current_control.grid_rect.Width + dx) <= 0) { flags.sizing_corner = corners.UpperLeft; goto retry; } if ((current_control.grid_rect.Height - dy) <= 0) { flags.sizing_corner = corners.LowerRight; goto retry; } current_control.grid_rect.Y += dy; current_control.grid_rect.Width += dx; current_control.grid_rect.Height -= dy; flags.moved = true; break; case corners.LowerLeft: if ((current_control.grid_rect.Width - dx) <= 0) { flags.sizing_corner = corners.LowerRight; goto retry; } if ((current_control.grid_rect.Height + dy) <= 0) { flags.sizing_corner = corners.UpperLeft; goto retry; } current_control.grid_rect.X += dx; //current_control.grid_rect.Y += dy; current_control.grid_rect.Width -= dx; current_control.grid_rect.Height += dy; flags.moved = true; break; case corners.LowerRight: if ((current_control.grid_rect.Width + dx) <= 0) { flags.sizing_corner = corners.LowerLeft; goto retry; } if ((current_control.grid_rect.Height + dy) <= 0) { flags.sizing_corner = corners.UpperRight; goto retry; } current_control.grid_rect.Width += dx; current_control.grid_rect.Height += dy; flags.moved = true; break; } } else { if (current_control == null) { _selection.X = selection.X = local.partX; _selection.Y = selection.Y = local.partY; selection.Width = 1; selection.Height = 1; flags.selecting = true; Refresh(); } else { int cx = local.partX - current_control.grid_rect.X; int cy = local.partY - current_control.grid_rect.Y; flags.sizing_corner = corners.None; if (cx == 0 && cy == 0) { flags.sizing_corner = corners.UpperLeft; } else if (cx == 0 && cy == (current_control.grid_rect.Height - 1)) { flags.sizing_corner = corners.LowerLeft; } else if (cy == 0 && cx == (current_control.grid_rect.Width - 1)) { flags.sizing_corner = corners.UpperRight; } else if (cx == (current_control.grid_rect.Width - 1) && cy == (current_control.grid_rect.Height - 1)) { flags.sizing_corner = corners.LowerRight; } else { flags.dragging = true; } } } if (flags.moved) { flags.moved = false; current_control.c.Location = new Point(current_page.PARTX(current_control.grid_rect.X) , current_page.PARTY(current_control.grid_rect.Y)); current_control.c.Size = new Size(current_page.PARTW(current_control.grid_rect.X, current_control.grid_rect.Width) , current_page.PARTH(current_control.grid_rect.Y, current_control.grid_rect.Height)); Refresh(); } } else { flags.sizing_corner = corners.None; flags.dragging = false; flags.selecting = false; } //e.Location.X, e.Location.Y; }
private void Canvas_DragDrop(object sender, DragEventArgs e) { //e.Effect string[] s = e.Data.GetData("FileDrop") as string[]; foreach (String file in s) { bool success = false; local.partX = current_page.PARTOFX(e.X - this.Location.X - this.Parent.Location.X); local.partY = current_page.PARTOFY(e.Y - this.Location.Y - this.Parent.Location.Y); if ((current_control = current_page.ControlAt(local.partX, local.partY)) != null) { IReflectorDropFileTarget dt = current_control.o as IReflectorDropFileTarget; if (dt != null) { success = dt.Drop(this, file, this.buttons.Location.X, this.buttons.Location.Y); } if (!success && !current_control.real) { dt = current_control.c as IReflectorDropFileTarget; if (dt != null) { success = dt.Drop(this, file, this.buttons.Location.X, this.buttons.Location.Y); } } } #if what_do_with_default_images if (!success) { try { Image image = Image.FromFile(file); success = true; } catch (Exception ex) { Log.log(ex.Message); } } #endif if (!success) { foreach (IReflectorPluginDropFileTarget target in local.drop_acceptors) { try { if (target.Drop(sender, file, this.buttons.Location.X, this.buttons.Location.Y)) { success = true; break; } } catch (Exception ex) { } } } //Log.log( file ); } #if asdfasdf MemoryStream ms = e.Data.GetData("InShellDragLoop") as MemoryStream; byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, buffer.Length); String[] formats = e.Data.GetFormats(); foreach (string s2 in formats) { object o = e.Data.GetData(s2); } #endif //e.Data }
public override void _Ready() { collider = GetNode <CollisionShape>("CollisionShape"); tracker = new ControlTracker(this, ControlPath, depth); }