コード例 #1
0
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = Handler as CharacterHandler;

            DoDelete(handler.CursorPosition);
            handler.EnsureVisible(handler.CursorPosition);
        }
コード例 #2
0
 public void ExecuteAsync(CommandBase cmd, object parameter)
 {
     if (cmd != null)
     {
         if (cmd.IsSupportedAndReady())
         {
             if (cmd.HasBusy)
             {
                 cmd.SetBusy();
             }
             if (cmd.UseBackgroundThread)
             {
                 _stopwatch.Reset();
                 _stopwatch.Start();
                 BackgroundWorker bg = new BackgroundWorker();
                 bg.DoWork += bg_DoWork;
                 _arg       = new CommandExecuteArgs {
                     Command = cmd, Parameter = parameter
                 };
                 bg.RunWorkerAsync(_arg);
                 bg.RunWorkerCompleted += bg_RunWorkerCompleted;
             }
             else
             {
                 cmd.Execute(parameter);
                 ProcessInferiorCommands(cmd, parameter);
             }
         }
     }
 }
コード例 #3
0
ファイル: Move.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            CharacterHandler handler = Handler as CharacterHandler;

            if (handler != null)
            {
                Canvas canvas = handler.CurrentPage.Canvas;
                Point  pos    = handler.CursorPosition;
                switch (direction)
                {
                case MoveDirection.Up: MoveTo(pos.X, pos.Y - 1); break;

                case MoveDirection.Down: MoveTo(pos.X, pos.Y + 1); break;

                case MoveDirection.Left: MoveTo(pos.X - 1, pos.Y); break;

                case MoveDirection.Right: MoveTo(pos.X + 1, pos.Y); break;

                case MoveDirection.PageUp: MoveVertical(pos, -1); break;

                case MoveDirection.PageDown: MoveVertical(pos, 1); break;

                case MoveDirection.First: MoveTo(0, pos.Y); break;

                case MoveDirection.Last: MoveTo(canvas.Width - 1, pos.Y); break;

                case MoveDirection.Top: MoveTo(pos.X, 0); break;

                case MoveDirection.Bottom: MoveTo(pos.X, canvas.Height - 1); break;
                }

                handler.EnsureVisible(handler.CursorPosition);
            }
        }
コード例 #4
0
ファイル: Backspace.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            var    handler = Handler as CharacterHandler;
            Canvas canvas  = handler.CurrentPage.Canvas;

            if (handler.CursorPosition.X > 0)
            {
                Point newPoint = handler.CursorPosition;
                newPoint.X--;
                if (handler.InsertMode)
                {
                    canvas.DeleteCharacter(newPoint.X, newPoint.Y, CanvasElement.Default);
                    handler.InvalidateCharacterRegion(new Rectangle(newPoint, new Size(canvas.Width - newPoint.X, 1)), true);
                }
                else
                {
                    canvas [newPoint] = CanvasElement.Default;
                }
                handler.CursorPosition = newPoint;
            }
            else if (handler.InsertMode && handler.CursorPosition.Y > 0)
            {
                // move line up!
                MoveLineUp(handler.CursorPosition, handler.WrapMode);
            }
        }
コード例 #5
0
        protected override void Execute(CommandExecuteArgs args)
        {
            if (DrawBrush == null)
            {
                return;
            }
            var gradient = DrawBrush.GetCharacters(Handler.CurrentPage.Font.Encoding);

            Do(Location, Handler.CursorPosition, Handler.DrawAttribute, gradient, Size, Inverse, ApplyColour);
        }
コード例 #6
0
ファイル: Delete.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = this.Handler;

            var rect = tool.SelectedRegion.Value;

            Do(rect, handler.CursorPosition, handler.DrawElement);

            tool.DrawMode          = DrawMode.Normal;
            tool.SelectedRegion    = null;
            handler.CursorPosition = rect.TopLeft;
        }
コード例 #7
0
        protected override void Execute(CommandExecuteArgs args)
        {
            CharacterHandler handler = base.Handler as CharacterHandler;
            var size   = handler.CurrentPage.Canvas.Size;
            var dialog = new WidthDialog();

            dialog.Width = size.Width;
            var result = dialog.ShowModal(handler.Viewer as Control);

            if (result == DialogResult.Ok)
            {
                DoResize(dialog.Width);
            }
        }
コード例 #8
0
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = tool.Handler;

            if (tool.SelectedRegion == null)
            {
                return;
            }
            var rect = tool.SelectedRegion.Value;

            // copy the selected region

            rect.Normalize();
            var location = rect.TopLeft;
            var canvas   = new MemoryCanvas(rect.Size);

            canvas.Set(Point.Empty, rect, handler.CurrentPage.Canvas);


            // save to clipboard
            var cb = new Clipboard();

            cb.Clear();              // clear out contents of clipboard

            // save as text
            var ascii = new Types.Ascii(handler.Info);

            cb.Text = ascii.SaveToText(canvas, handler.CurrentPage.Font.Encoding);


            // save as ansi
            using (var ansistream = new MemoryStream()) {
                var writer = new BinaryWriter(ansistream);
                writer.Write(canvas.Width);
                writer.Write(canvas.Height);
                writer.Flush();
                Types.Pablo.Save(ansistream, canvas, handler.CurrentPage.Palette);
                ansistream.Flush();


                cb.SetDataStream(ansistream, "pablo");
            }

            handler.Undo.Save(handler.CursorPosition, location, rect);
            handler.CurrentPage.Canvas.Fill(rect, handler.DrawElement);
            handler.InvalidateCharacterRegion(rect, true, true);

            tool.DrawMode          = DrawMode.Normal;
            handler.CursorPosition = location;             // go to starting position for the block
        }
コード例 #9
0
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = Handler as CharacterHandler;

            var pasteMode = tool.PasteMode;
            var canvas    = GetCanvasFromClipboard();

            if (canvas != null)
            {
                handler.Undo.Save(handler.CursorPosition, handler.CursorPosition, new Rectangle(handler.CursorPosition, canvas.Size));
                handler.CurrentPage.Canvas.Set(handler.CursorPosition, new Rectangle(canvas.Size), canvas, pasteMode);
                handler.InvalidateCharacterRegion(new Rectangle(handler.CursorPosition, canvas.Size), true);
            }
        }
コード例 #10
0
ファイル: MoveSelect.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            CharacterHandler handler = Handler as CharacterHandler;
            Point            pos     = handler.CursorPosition;

            base.Execute(args);             // move to new position!

            // now we want to select from where we were to the new position
            // if already selecting a region, set new destination point to current position
            if (handler.Info.ShiftSelect && (tool.DrawMode == DrawMode.Normal))
            {
                tool.DrawMode       = DrawMode.Selecting;
                tool.SelectedRegion = new Rectangle(pos, handler.CursorPosition);
            }
        }
コード例 #11
0
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = this.Handler as CharacterHandler;
            var canvas  = handler.CurrentPage.Canvas;

            Point cursor = handler.CursorPosition;

            handler.Undo.Save(new UndoDeleteColumn(handler, cursor.X)
            {
                CursorLocation = cursor
            });

            canvas.DeleteColumn(cursor.X);
            handler.InvalidateCharacterRegion(new Rectangle(cursor.X, 0, canvas.Width - cursor.X, canvas.Height), true);
        }
コード例 #12
0
 protected override void Execute(CommandExecuteArgs args)
 {
     if (main.Document != null)
     {
         EtoFileInfo file = main.FileList.SelectedFile;
         Document    doc  = (main.EditMode) ? main.Document : null;
         if (file != null || doc != null)
         {
             var si = new SauceInfoDialog(file, doc);
             if (si.ShowModal(main) == DialogResult.Ok && !main.EditMode)
             {
                 main.ReloadFile(false, false, false);
             }
         }
     }
 }
コード例 #13
0
 private void bg_DoWork(object sender, DoWorkEventArgs e)
 {
     if (e.Argument != null)
     {
         var argument = e.Argument as CommandExecuteArgs;
         if (argument != null)
         {
             CommandExecuteArgs arg = argument;
             if (arg.Command != null)
             {
                 arg.Command.Execute(arg.Parameter);
                 ProcessInferiorCommands(arg.Command, arg.Parameter);
             }
         }
     }
 }
コード例 #14
0
ファイル: DeleteLine.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            var    handler = Handler as CharacterHandler;
            Canvas canvas  = handler.CurrentPage.Canvas;

            Point cursor = handler.CursorPosition;

            handler.Undo.Save(new UndoDeleteLine(handler, cursor.Y)
            {
                CursorLocation = cursor
            });

            canvas.DeleteRow(cursor.Y);
            Rectangle rect = new Rectangle(0, cursor.Y, canvas.Width, canvas.Height - cursor.Y);

            handler.InvalidateCharacterRegion(rect, true);
        }
コード例 #15
0
ファイル: DrawCharacter.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = Handler as CharacterHandler;
            var pos     = Location ?? handler.CursorPosition;
            var ce      = new CanvasElement(this.Character, handler.DrawAttribute);
            var insmode = handler.InsertMode;

            var nextPos = pos;

            if (nextPos.X < handler.CurrentPage.Canvas.Width - 1)
            {
                nextPos.X++;
            }

            Do(handler, pos, ce, insmode, false, true, pos, nextPos);
            MoveCursor();
        }
コード例 #16
0
ファイル: Stamp.cs プロジェクト: themnotyou/pablodraw
        protected override void Execute(CommandExecuteArgs args)
        {
            CharacterHandler handler = this.Handler as CharacterHandler;
            // Stamp the selected region

            Canvas canvas = tool.PasteCanvas;

            Rectangle?clearRect = null;

            if (tool.ClearSelected)
            {
                clearRect          = tool.SelectedRegion.Value;
                tool.ClearSelected = false;
            }

            Do(handler.CursorPosition, tool.PasteMode, canvas, clearRect, handler.CursorPosition);

            tool.SelectedRegion = null;
        }
コード例 #17
0
        protected override void Execute(CommandExecuteArgs args)
        {
            NewFileDialog nfd = new NewFileDialog(main.Settings);
            DialogResult  dr  = nfd.ShowModal(main);

            if (dr == DialogResult.Ok)
            {
                if (FileModifiedDialog.Show(main) == DialogResult.Ok)
                {
                    // create a new document then edit it
                    main.FileList.SelectedIndex = -1;

                    var doc = nfd.SelectedDocumentType.Create(main.Platform);
                    doc.IsNew    = true;
                    doc.EditMode = true;

                    main.SetDocument(doc, true);
                }
            }
        }
コード例 #18
0
        protected override void Execute(CommandExecuteArgs args)
        {
            CharacterHandler handler = this.Handler as CharacterHandler;
            Canvas           canvas  = handler.CurrentPage.Canvas;

            Point cursor = handler.CursorPosition;

            if (cursor.Y < canvas.Height - 1)
            {
                var pos = cursor;
                pos.Y++;
                pos.X = 0;
                if (handler.InsertMode)
                {
                    InsertLine(pos, cursor);
                }

                handler.CursorPosition = pos;
                handler.EnsureVisible(handler.CursorPosition);
            }
        }
コード例 #19
0
        protected override void Execute(CommandExecuteArgs args)
        {
            var handler = this.Handler as CharacterHandler;
            var attribs = GetAttribs();

            if (attribs != null)
            {
                Do(handler.CursorPosition, attribs);
                if (tool != null)
                {
                    handler.InvalidateCharacterRegion(attribs.Rectangle, true, true);
                    tool.ClearSelected     = false;
                    tool.DrawMode          = DrawMode.Normal;
                    handler.CursorPosition = attribs.Rectangle.TopLeft;
                }
                else
                {
                    handler.InvalidateCharacterRegion(attribs.Rectangle, true, false);
                }
            }
        }
コード例 #20
0
 protected override void Execute(CommandExecuteArgs args)
 {
     Do(Handler.CursorPosition, Rectangle, Element, ApplyColour, ApplyCharacter, Filled);
 }
コード例 #21
0
ファイル: DrawLine.cs プロジェクト: themnotyou/pablodraw
 protected override void Execute(CommandExecuteArgs args)
 {
     Do(Handler.CursorPosition, Start, End, Element, ApplyColour, ApplyCharacter);
 }
コード例 #22
0
 // Function called when the DaysToKeep setting is changed
 private void daysChanged_Execute(object sender, CommandExecuteArgs args)
 {
     SingletonComicsUpdater.Instance.UpdateNow();
 }
コード例 #23
0
 protected override void Execute(CommandExecuteArgs args)
 {
     Do();
 }
コード例 #24
0
ファイル: Undo.cs プロジェクト: themnotyou/pablodraw
 protected override void Execute(CommandExecuteArgs args)
 {
     Handler.Undo.Undo();
 }
コード例 #25
0
ファイル: PabloCommand.cs プロジェクト: themnotyou/pablodraw
 protected abstract void Execute(CommandExecuteArgs args);
コード例 #26
0
 // Function called when the DaysToKeep setting is changed
 private void daysChanged_Execute(object sender, CommandExecuteArgs args)
 {
     SingletonComicsUpdater.Instance.UpdateNow();
 }