Beispiel #1
0
 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);
 }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
		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;
		}
Beispiel #5
0
        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;
        }
Beispiel #6
0
        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);
 }