コード例 #1
0
ファイル: FusenManager.cs プロジェクト: rajeshwarn/MochaNote
        public void ShowAll(bool useDummy)
        {
            /// NotifyIconクリック時は一旦dummyをアクティブ化しないと
            /// 非アクティブ時にShowWindow()でfusenが前に出てこない
            var dummy = default(Form);

            if (useDummy)
            {
                dummy = new Form();
                dummy.ShowInTaskbar = false;
                dummy.StartPosition = FormStartPosition.Manual;
                dummy.Location      = new Point(-2000, -2000);
                dummy.Size          = new Size();
                dummy.WindowState   = FormWindowState.Minimized;
                dummy.Show();
                dummy.Activate();
            }

            foreach (var fusen in _infoToForms.Values)
            {
                //User32PI.SetForegroundWindow(fusen.Handle);
                User32PI.ShowWindow(fusen.Handle, WindowShowStyle.ShowNoActivate);
            }

            if (dummy != null)
            {
                dummy.Dispose();
            }
        }
コード例 #2
0
 private void UpdateCaretPosition()
 {
     if (_isCaretCreated)
     {
         var pos = _positionTranslator == null? _position: _positionTranslator(_position);
         User32PI.SetCaretPos(pos.X, pos.Y);
         //User32PI.SetCaretPos(_position.X, _position.Y);
     }
 }
コード例 #3
0
        protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);

            if (_isShown && _toolStripForm != null)
            {
                RelocateToolStripForm();
                User32PI.ShowWindow(_toolStripForm.Handle, WindowShowStyle.ShowNoActivate);
            }
        }
コード例 #4
0
        protected override void RefreshEditor(RefreshContext context, MemoFileFigure figure, MemoFile model)
        {
            var path = model.Path;

            if (model.IsEmbedded)
            {
                path = Path.Combine(MemopadConsts.EmbeddedFileRoot, path);
            }

            var icon  = default(Icon);
            var hIcon = IntPtr.Zero;

            if (File.Exists(path) || Directory.Exists(path))
            {
                /// アイコン取得
                var shinfo = new SHFILEINFO();
                var flags  = model.IsEmbedded?
                             ShellGetFileInfoFlags.Icon:
                             ShellGetFileInfoFlags.Icon | ShellGetFileInfoFlags.LinkOverlay;
                var hSuccess = Shell32PI.SHGetFileInfo(
                    path,
                    0,
                    ref shinfo,
                    (int)Marshal.SizeOf(shinfo),
                    flags
                    );
                if (hSuccess != IntPtr.Zero)
                {
                    hIcon = shinfo.hIcon;
                    icon  = Icon.FromHandle(hIcon);
                }
                else
                {
                    icon = SystemIcons.Error;
                }
            }
            else
            {
                icon = SystemIcons.Error;
            }

            var desc = new IconImageDescription(icon);

            if (hIcon != IntPtr.Zero)
            {
                User32PI.DestroyIcon(hIcon);
            }

            figure.Text      = string.IsNullOrEmpty(model.Name)? model.Path: model.Name;
            figure.ImageDesc = desc;
            figure.AdjustSize();

            UpdateMemoMarkHandles(model);
        }
コード例 #5
0
 private void UpdateCaretSize()
 {
     if (_isCaretCreated)
     {
         User32PI.DestroyCaret();
         User32PI.CreateCaret(_control.Handle, IntPtr.Zero, _size.Width, _size.Height);
         if (_isCaretShown)
         {
             User32PI.ShowCaret(_control.Handle);
         }
     }
 }
コード例 #6
0
        public void OpenMemo(MemoInfo info, bool background, bool enabled)
        {
            if (_content != null && info == _content.MemoInfo)
            {
                return;
            }

            _content = CreateMemoPageContent(info);
            _content.SetCompact(true);

            var canvas = _content.EditorCanvas;

            MemoSerializeUtil.LoadEditor(canvas, info.MementoId);
            _content.Memo.AccessedDate = DateTime.Now;

            _content.Enabled = enabled;
            Controls.Add(_content);

            var caret = canvas.Caret;

            caret.Position = MemopadConsts.DefaultCaretPosition;
            caret.Show();
            canvas.RootEditor.Content.RequestSelect(SelectKind.True, true);

            canvas.Select();

            var app    = MemopadApplication.Instance;
            var memo   = app.Container.Find <Memo>(_MemoInfo.MemoId);
            var bytes  = app.Container.LoadExtendedBinaryData(memo, "FusenBounds");
            var bounds = Rectangle.Empty;

            if (bytes != null)
            {
                StartPosition = FormStartPosition.Manual;
                bounds        = (Rectangle)BinaryFormatterUtil.FromBytes(bytes);
                Bounds        = bounds;
            }

            Text = _content.Title;
            Show();
            if (bytes != null)
            {
                /// なぜかShow()でHeightが+2されてしまうのでもう一度設定
                Bounds = bounds;
            }

            if (background)
            {
                User32PI.SetActiveWindow(MemopadApplication.Instance.MainForm.Handle);
            }
            InitToolStripForm(!background);
        }
コード例 #7
0
        // ------------------------------
        // private
        // ------------------------------
        private void InitToolStripForm(bool show)
        {
            _toolStripForm            = new ToolStripForm();
            _toolStripForm.TargetForm = this;
            InitDropDowns();
            InitMemoMarkToolStripSplitButton();

            InitToolStripHandlers();
            if (_toolStripForm._fontNameToolStripComboBox.Items.Count == 0)
            {
                _UILogic.InitFontNameToolStripComboBox(_toolStripForm._fontNameToolStripComboBox.ComboBox);
                _UILogic.InitFontSizeToolStripComboBox(_toolStripForm._fontSizeToolStripComboBox.ComboBox);
            }
            RelocateToolStripForm();
            UpdateToolStrip();
            if (show)
            {
                User32PI.ShowWindow(_toolStripForm.Handle, WindowShowStyle.ShowNoActivate);
            }
        }
コード例 #8
0
        // ========================================
        // constructor
        // ========================================
        public MarkSelectTextBox() {
            ReadOnly = true;

            var bspec = new ButtonSpecAny();
            bspec.Image = Resources.chevron_expand;
            bspec.Click += HandleSelectButtonSpecClick;
            ButtonSpecs.Add(bspec);

            bspec = new ButtonSpecAny();
            bspec.Type = PaletteButtonSpecStyle.Close;
            bspec.Click += HandleCloseButtonSpecClick;
            ButtonSpecs.Add(bspec);

            TextBox.MouseClick += (se, ev) => {
                ShowMarkSelectForm();
            };
            TextBox.GotFocus += (se, ev) => {
                User32PI.HideCaret(TextBox.Handle);
            };

            UpdateText();
        }
コード例 #9
0
        // ========================================
        // constructor
        // ========================================
        public PageContent(MemoInfo info)
        {
            InitializeComponent();
            DoubleBuffered = true;
            ResizeRedraw   = true;

            _facade            = MemopadApplication.Instance;
            _info              = info;
            _titleTextBox.Text = _info.Title;

            Memo = _facade.Container.Find <Memo>(info.MemoId);
            _tagSelectorToolStripItem            = new TagSelectorToolStripItem(_memo);
            _selectTagContextMenuStrip.AutoClose = false;

            _dateLabelWidth = _modifiedDateLabel.Width;

            _isInMemoSearcherShown = false;

            _keyMap = new KeyMap <PageContent>();
            if (!DesignMode)
            {
                DefineAdditionalKeyMap(_keyMap);
            }

            _titleTextBoxKeyMap  = new KeyMap <TextBox>();
            _sourceTextBoxKeyMap = new KeyMap <TextBox>();
            if (!DesignMode)
            {
                _facade.KeySchema.PageContentTitleTextBoxKeyBinder.Bind(_titleTextBoxKeyMap);
                _facade.KeySchema.PageContentTitleTextBoxKeyBinder.Bind(_sourceTextBoxKeyMap);
            }

            _tagTextBox.GotFocus += (se, ev) => {
                User32PI.HideCaret(_tagTextBox.Handle);
            };
        }
コード例 #10
0
        public static IEnumerable <IEditor> PasteMetafile(IEditor editor, Point location, string description)
        {
            var meta = default(Metafile);
            var hWnd = MemopadApplication.Instance.MainForm.Handle;

            if (User32PI.OpenClipboard(hWnd))
            {
                try {
                    if (User32PI.IsClipboardFormatAvailable(ClipboardFormat.CF_ENHMETAFILE) != 0)
                    {
                        var hMeta = User32PI.GetClipboardData(ClipboardFormat.CF_ENHMETAFILE);
                        meta = new Metafile(hMeta, false);
                    }
                } finally {
                    User32PI.CloseClipboard();
                }
            }

            if (meta == null)
            {
                return(EmptyEditors);
            }
            return(AddMetafile(editor, location, meta, false, false));
        }
コード例 #11
0
 private void HideCaret()
 {
     User32PI.HideCaret(_control.Handle);
     _isCaretShown = false;
 }
コード例 #12
0
 private void ShowCaret()
 {
     User32PI.ShowCaret(_control.Handle);
     _isCaretShown = true;
 }
コード例 #13
0
 private void DestroyCaret()
 {
     User32PI.DestroyCaret();
     _isCaretCreated = false;
 }
コード例 #14
0
 // ------------------------------
 // private
 // ------------------------------
 private void CreateCaret()
 {
     User32PI.CreateCaret(_control.Handle, IntPtr.Zero, _size.Width, _size.Height);
     _isCaretCreated = true;
 }
コード例 #15
0
        // ========================================
        // method
        // ========================================
        private ContextMenuStrip CreateNotifyIconContextMenu()
        {
            var items = new List <ToolStripItem>(16);

            var newMemo = new ToolStripMenuItem();

            newMemo.Text   = "ノートを作成(&N)";
            newMemo.Click += (sender, e) => {
                CreateMemo();
            };
            items.Add(newMemo);

            var newFusenMemo = new ToolStripMenuItem();

            newFusenMemo.Text   = "付箋ノートを作成(&F)";
            newFusenMemo.Click += (sender, e) => {
                CreateFusenMemo();
            };
            items.Add(newFusenMemo);

            var clipMemo = new ToolStripMenuItem();

            clipMemo.Text   = "ノートにクリップ(&C)";
            clipMemo.Click += (sender, e) => {
                var mainForm = _app.MainForm;
                var hWnd     = User32PI.GetWindow(
                    mainForm.Handle,
                    GetWindowCmd.GW_HWNDFIRST
                    );
                hWnd = User32Util.GetNextWindow(
                    hWnd,
                    handle => {
                    if (User32PI.IsWindowVisible(handle) && !User32Util.IsOwnedWindow(handle))
                    {
                        var cname = User32Util.GetWindowClassName(handle);
                        return
                        (!string.Equals(cname, "Shell_TrayWnd", StringComparison.OrdinalIgnoreCase) &&
                         !string.Equals(cname, "NotifyIconOverflowWindow", StringComparison.OrdinalIgnoreCase));
                    }
                    else
                    {
                        return(false);
                    }
                }
                    );

                var oldTopMost = mainForm.TopMost;
                mainForm.TopMost = false;
                if (hWnd != IntPtr.Zero)
                {
                    User32Util.ActivateWindow(hWnd);
                    Thread.Sleep(1000);
                }
                _app.ClipAndCreateMemo();
                mainForm.TopMost = oldTopMost;
            };
            items.Add(clipMemo);

            var capture = new ToolStripMenuItem();

            capture.Text   = "画面を取り込み(&D)";
            capture.Click += (sender, e) => {
                Thread.Sleep(500);
                _app.CaptureAndCreateMemo();
            };
            items.Add(capture);

            items.Add(new ToolStripSeparator());

            var searchMemo = new ToolStripMenuItem();

            searchMemo.Text   = "ノートを検索(&S)";
            searchMemo.Click += (sender, e) => {
                _app.ShowMainForm();
                _app.ActivateMainForm();
                var form = _app.MainForm;
                if (form != null)
                {
                    form.FocusConditionTextBox();
                }
            };
            items.Add(searchMemo);

            var activate = new ToolStripMenuItem();

            activate.Text   = "アクティブにする(&A)";
            activate.Click += (sender, e) => {
                ShowMainForm();
            };
            items.Add(activate);

            var showAllFusens = new ToolStripMenuItem();

            showAllFusens.Text   = "付箋ノートを表示(&F)";
            showAllFusens.Click += (sender, e) => {
                ShowFusenForms(false);
            };
            items.Add(showAllFusens);

            items.Add(new ToolStripSeparator());

            var action = new ToolStripMenuItem();

            action.Text = "アイコンの動作(&A)";
            items.Add(action);

            {
                var click = new ToolStripMenuItem();
                click.Text = "クリック(&C)";
                action.DropDown.Items.Add(click);
                InitClickSetting(click);
            }
            {
                var dclick = new ToolStripMenuItem();
                dclick.Text = "ダブルクリック(&D)";
                action.DropDown.Items.Add(dclick);

                InitDoubleClickSetting(dclick);
            }

            items.Add(new ToolStripSeparator());

            var exitItem = new ToolStripMenuItem();

            exitItem.Text   = "終了(&X)";
            exitItem.Click += (sender, e) => {
                _app.Exit();
            };
            items.Add(exitItem);

            var ret = new ContextMenuStrip();

            ret.SuspendLayout();
            ret.Items.AddRange(items.ToArray());
            ret.ResumeLayout();
            return(ret);
        }