Example #1
0
        private void ShowAbnormalTerminationMessage()
        {
            IPoderosaMainWindow window = _session.OwnerWindow;

            if (window != null)
            {
                Debug.Assert(window.AsForm().InvokeRequired);
                ITCPParameter tcp = (ITCPParameter)GetConnection().Destination.GetAdapter(typeof(ITCPParameter));
                if (tcp != null)
                {
                    string msg = String.Format(GEnv.Strings.GetString("Message.AbstractTerminal.TCPDisconnected"), tcp.Destination);

                    switch (GEnv.Options.DisconnectNotification)
                    {
                    case WarningOption.StatusBar:
                        window.StatusBar.SetMainText(msg);
                        break;

                    case WarningOption.MessageBox:
                        window.Warning(msg);     //TODO Disableオプションつきのサポート
                        break;
                    }
                }
            }
        }
Example #2
0
        public SSHShortcutLoginDialog(IPoderosaMainWindow parent, ISSHLoginParameter param, ITerminalSettings settings)
            : base(parent)
        {
            this.TerminalSettings = settings;

            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            this._privateKeyLabel.Text         = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._privateKeyLabel");
            this._passphraseLabel.Text         = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._passphraseLabel");
            this._logFileLabel.Text            = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._logFileLabel");
            this._hostLabel.Text               = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._hostLabel");
            this._methodLabel.Text             = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._methodLabel");
            this._accountLabel.Text            = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._accountLabel");
            this._authenticationTypeLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._authenticationTypeLabel");
            this._encodingLabel.Text           = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._encodingLabel");
            this._logTypeLabel.Text            = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._logTypeLabel");
            this.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog.Text");
            this._autoExecMacroPathLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._autoExecMacroPathLabel");
            this._cancelButton.Text           = TEnv.Strings.GetString("Common.Cancel");
            this._loginButton.Text            = TEnv.Strings.GetString("Common.OK");

            this._logTypeBox.Items.AddRange(EnumListItem <LogType> .GetListItems());

            _sshParam = param;
            InitUI();
        }
Example #3
0
        private static CommandResult CmdCloseCurrentDocument(ICommandTarget target)
        {
            IPoderosaDocument document = CommandTargetUtil.AsDocumentOrViewOrLastActivatedDocument(target);

            if (document == null)
            {
                return(CommandResult.Ignored);
            }

            SessionManagerPlugin sm     = SessionManagerPlugin.Instance;
            IPoderosaView        view   = sm.FindDocumentHost(document).LastAttachedView;
            IPoderosaMainWindow  window = view == null ? null : (IPoderosaMainWindow)view.ParentForm.GetAdapter(typeof(IPoderosaMainWindow));
            bool was_active             = window == null ? false : window.DocumentTabFeature.ActiveDocument == document;

            PrepareCloseResult result = sm.CloseDocument(document);

            if (result == PrepareCloseResult.Cancel)
            {
                return(CommandResult.Cancelled);
            }

            //同じビューに別のドキュメントが来ていればそれをアクティブに
            if (was_active)
            {
                IPoderosaDocument newdoc = view.Document;
                if (newdoc != null)
                {
                    sm.ActivateDocument(newdoc, ActivateReason.InternalAction);
                }
            }

            return(CommandResult.Succeeded);
        }
        public SSHShortcutLoginDialog(IPoderosaMainWindow parent, ISSHLoginParameter param, ITerminalSettings settings)
            : base(parent) {
            this.TerminalSettings = settings;

            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            this._privateKeyLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._privateKeyLabel");
            this._passphraseLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._passphraseLabel");
            this._logFileLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._logFileLabel");
            this._hostLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._hostLabel");
            this._methodLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._methodLabel");
            this._accountLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._accountLabel");
            this._authenticationTypeLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._authenticationTypeLabel");
            this._encodingLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._encodingLabel");
            this._logTypeLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._logTypeLabel");
            this.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog.Text");
            this._autoExecMacroPathLabel.Text = TEnv.Strings.GetString("Form.SSHShortcutLoginDialog._autoExecMacroPathLabel");
            this._cancelButton.Text = TEnv.Strings.GetString("Common.Cancel");
            this._loginButton.Text = TEnv.Strings.GetString("Common.OK");

            this._logTypeBox.Items.AddRange(EnumListItem<LogType>.GetListItems());

            _sshParam = param;
            InitUI();
        }
Example #5
0
        /// <exclude/>
        public static IContentReplaceableView AsContentReplaceableViewOrLastActivatedView(ICommandTarget target)
        {
            if (target == null)
            {
                return(null);
            }
            IContentReplaceableViewSite view = (IContentReplaceableViewSite)target.GetAdapter(typeof(IContentReplaceableViewSite));

            if (view != null)
            {
                return(view.CurrentContentReplaceableView); //成功
            }
            else
            {
                IContentReplaceableView view2 = (IContentReplaceableView)target.GetAdapter(typeof(IContentReplaceableView));
                if (view2 != null)
                {
                    return(view2);
                }
                else
                {
                    IPoderosaMainWindow window = AsWindow(target);
                    if (window != null)
                    {
                        return(window.LastActivatedView);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
        }
            public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter destination, ITerminalSettings settings)
            {
                ISSHLoginParameter ssh = (ISSHLoginParameter)destination.GetAdapter(typeof(ISSHLoginParameter));

                if (ssh.LetUserInputPassword && ssh.AuthenticationType != Granados.AuthenticationType.KeyboardInteractive) //ダイアログで入力を促して接続
                {
                    SSHShortcutLoginDialog dlg = new SSHShortcutLoginDialog(window, ssh, settings);
                    if (dlg.ShowDialog(window.AsForm()) == DialogResult.OK)
                    {
                        ITerminalConnection con = dlg.Result;
                        AdjustCaptionAndText(settings, ((ITCPParameter)con.Destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection);
                        return(con);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else   //主にReproduceやマクロ。設定済みのパスワードで接続
                {
                    IProtocolService       protocolservice = TerminalSessionsPlugin.Instance.ProtocolService;
                    ISynchronizedConnector conn            = protocolservice.CreateFormBasedSynchronozedConnector(window);
                    IInterruptable         r = protocolservice.AsyncSSHConnect(conn.InterruptableConnectorClient, ssh);
                    AdjustCaptionAndText(settings, ((ITCPParameter)destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection);
                    return(conn.WaitConnection(r, TerminalSessionsPlugin.Instance.TerminalSessionOptions.TerminalEstablishTimeout)); //時間?
                }
            }
 public void OnFirstMainWindowLoaded(IPoderosaMainWindow window) {
     IPoderosaApplication app = (IPoderosaApplication)_poderosaWorld.GetAdapter(typeof(IPoderosaApplication));
     if (app.InitialOpenFile != null)
         OpenFile(window, app.InitialOpenFile);
     else
         DoAction(window, _originalOptions.StartupAction);
 }
Example #8
0
 public void OnDocumentActivated(IPoderosaMainWindow window, IPoderosaDocument document)
 {
     if (window != null && window.ToolBar != null)
     {
         window.ToolBar.RefreshComponent(this);
     }
 }
        public LocalShellLoginDialog(IPoderosaMainWindow parentWindow) : base(parentWindow)
        {
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            //
            // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
            //
            this._loginButton.Text            = TEnv.Strings.GetString("Common.OK");
            this._cancelButton.Text           = TEnv.Strings.GetString("Common.Cancel");
            this._homeDirectoryLabel.Text     = TEnv.Strings.GetString("Form.CygwinLoginDialog._homeDirectoryLabel");
            this._lMessage.Text               = TEnv.Strings.GetString("Form.CygwinLoginDialog._lMessage");
            this._advancedOptionCheck.Text    = TEnv.Strings.GetString("Form.CygwinLoginDialog._advancedOptionCheck");
            this._shellLabel.Text             = TEnv.Strings.GetString("Form.CygwinLoginDialog._shellLabel");
            this._logFileLabel.Text           = TEnv.Strings.GetString("Form.CygwinLoginDialog._logFileLabel");
            this._logTypeLabel.Text           = TEnv.Strings.GetString("Form.CygwinLoginDialog._logTypeLabel");
            this._encodingLabel.Text          = TEnv.Strings.GetString("Form.CygwinLoginDialog._encodingLabel");
            this._terminalTypeLabel.Text      = TEnv.Strings.GetString("Form.CygwinLoginDialog._terminalTypeLabel");
            this._cygwinDirLabel.Text         = TEnv.Strings.GetString("Form.CygwinLoginDialog._cygwinDirLabel");
            this._autoExecMacroPathLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._autoExecMacroPathLabel");

            this._logTypeBox.Items.AddRange(EnumDescAttribute.For(typeof(LogType)).DescriptionCollection());
            this._encodingBox.Items.AddRange(EnumDescAttribute.For(typeof(EncodingType)).DescriptionCollection());
            this._terminalTypeBox.Items.AddRange(EnumDescAttribute.For(typeof(TerminalType)).DescriptionCollection());

            //作っておく
            AdjustLoginDialogUISupport("org.poderosa.terminalsessions.loginDialogUISupport", "cygwinLoginDialogUISupport");
        }
Example #10
0
        /// <summary>
        /// Command execution
        /// </summary>
        public override CommandResult InternalExecute(ICommandTarget target, params IAdaptable[] args)
        {
            PipeTerminalParameter paramInit    = null;
            PipeTerminalSettings  settingsInit = null;

            IExtensionPoint ext = PipePlugin.Instance.PoderosaWorld.PluginManager.FindExtensionPoint("org.poderosa.terminalsessions.loginDialogUISupport");

            if (ext != null && ext.ExtensionInterface == typeof(ILoginDialogUISupport))
            {
                foreach (ILoginDialogUISupport sup in ext.GetExtensions())
                {
                    ITerminalParameter terminalParam;
                    ITerminalSettings  terminalSettings;
                    sup.FillTopDestination(typeof(PipeTerminalParameter), out terminalParam, out terminalSettings);
                    PipeTerminalParameter paramTemp    = terminalParam as PipeTerminalParameter;
                    PipeTerminalSettings  settingsTemp = terminalSettings as PipeTerminalSettings;
                    if (paramInit == null)
                    {
                        paramInit = paramTemp;
                    }
                    if (settingsInit == null)
                    {
                        settingsInit = settingsTemp;
                    }
                }
            }
            if (paramInit == null)
            {
                paramInit = new PipeTerminalParameter();
            }
            if (settingsInit == null)
            {
                settingsInit = new PipeTerminalSettings();
            }

            IPoderosaMainWindow window = (IPoderosaMainWindow)target.GetAdapter(typeof(IPoderosaMainWindow));

            CommandResult commandResult = CommandResult.Failed;

            using (OpenPipeDialog dialog = new OpenPipeDialog()) {
                dialog.OpenPipe =
                    delegate(PipeTerminalParameter param, PipeTerminalSettings settings) {
                    PipeTerminalConnection connection = PipeCreator.CreateNewPipeTerminalConnection(param, settings);
                    commandResult = PipePlugin.Instance.CommandManager.Execute(
                        PipePlugin.Instance.TerminalSessionsService.TerminalSessionStartCommand,
                        window, connection, settings);
                    return(commandResult == CommandResult.Succeeded);
                };

                dialog.ApplyParams(paramInit, settingsInit);

                DialogResult dialogResult = dialog.ShowDialog(window != null ? window.AsForm() : null);
                if (dialogResult == DialogResult.Cancel)
                {
                    commandResult = CommandResult.Cancelled;
                }
            }

            return(commandResult);
        }
Example #11
0
            public CommandResult InternalExecute(ICommandTarget target, params IAdaptable[] args)
            {
                IPoderosaMainWindow window = (IPoderosaMainWindow)target.GetAdapter(typeof(IPoderosaMainWindow));

                if (window == null)
                {
                    return(CommandResult.Ignored);
                }

                using (OpenSessionDialog dlg = new OpenSessionDialog(window)) {
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        IContentReplaceableView view       = (IContentReplaceableView)window.ViewManager.GetCandidateViewForNewDocument().GetAdapter(typeof(IContentReplaceableView));
                        IPoderosaView           targetView = view.AssureViewClass(typeof(TerminalView));

                        ISessionManager sm = (ISessionManager)TelnetSSHPlugin.Instance.PoderosaWorld.PluginManager.FindPlugin("org.poderosa.core.sessions", typeof(ISessionManager));
                        TerminalSession ts = new TerminalSession(dlg.TerminalConnection, dlg.TerminalSettings);
                        sm.StartNewSession(ts, targetView);
                        sm.ActivateDocument(ts.Terminal.IDocument, ActivateReason.InternalAction);

                        IAutoExecMacroParameter autoExecParam = dlg.TerminalConnection.Destination.GetAdapter(typeof(IAutoExecMacroParameter)) as IAutoExecMacroParameter;
                        if (autoExecParam != null && autoExecParam.AutoExecMacroPath != null && TelnetSSHPlugin.Instance.MacroEngine != null)
                        {
                            TelnetSSHPlugin.Instance.MacroEngine.RunMacro(autoExecParam.AutoExecMacroPath, ts);
                        }
                        return(CommandResult.Succeeded);
                    }
                    return(CommandResult.Cancelled);
                }
            }
Example #12
0
        public LocalShellLoginDialog(IPoderosaMainWindow parentWindow)
            : base(parentWindow) {
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            //
            // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
            //
            this._loginButton.Text = TEnv.Strings.GetString("Common.OK");
            this._cancelButton.Text = TEnv.Strings.GetString("Common.Cancel");
            this._homeDirectoryLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._homeDirectoryLabel");
            this._lMessage.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._lMessage");
            this._advancedOptionCheck.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._advancedOptionCheck");
            this._shellLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._shellLabel");
            this._logFileLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._logFileLabel");
            this._logTypeLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._logTypeLabel");
            this._encodingLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._encodingLabel");
            this._terminalTypeLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._terminalTypeLabel");
            this._cygwinDirLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._cygwinDirLabel");
            this._autoExecMacroPathLabel.Text = TEnv.Strings.GetString("Form.CygwinLoginDialog._autoExecMacroPathLabel");

            this._logTypeBox.Items.AddRange(EnumListItem<LogType>.GetListItems());
            this._encodingBox.Items.AddRange(EnumListItem<EncodingType>.GetListItems());
            this._terminalTypeBox.Items.AddRange(EnumListItem<TerminalType>.GetListItems());

            //作っておく
            AdjustLoginDialogUISupport("org.poderosa.terminalsessions.loginDialogUISupport", "cygwinLoginDialogUISupport");
        }
Example #13
0
 //IMainWindowContentFactory
 public IViewManager Create(IPoderosaMainWindow parent)
 {
     Debug.Assert(parent != null);
     Debug.Assert(_defaultViewFactory != null); //�{����Assert�ł͂܂���
     SplittableViewManager pm = new SplittableViewManager(parent, _defaultViewFactory);
     return pm;
 }
Example #14
0
        public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter param, ITerminalSettings settings)
        {
            SerialTerminalParam sp = param as SerialTerminalParam;
            SerialTerminalSettings ts = settings as SerialTerminalSettings;
            Debug.Assert(sp != null && ts != null);

            return SerialPortUtil.CreateNewSerialConnection(window, sp, ts);
        }
        public override CommandResult InternalExecute(ICommandTarget target, params IAdaptable[] args)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);
            MacroList           dlg    = new MacroList();

            dlg.ShowDialog(window.AsForm());
            return(CommandResult.Succeeded);
        }
Example #16
0
 public IPoderosaDocument[] GetDocuments(IPoderosaMainWindow window) {
     List<IPoderosaDocument> r = new List<IPoderosaDocument>();
     foreach (DocumentHost dh in _documentMap.Values) {
         if (dh.LastAttachedView != null && dh.LastAttachedView.ParentForm == window)
             r.Add(dh.Document);
     }
     return r.ToArray();
 }
Example #17
0
        //IMainWindowContentFactory
        public IViewManager Create(IPoderosaMainWindow parent)
        {
            Debug.Assert(parent != null);
            Debug.Assert(_defaultViewFactory != null); //本当はAssertではまずい
            SplittableViewManager pm = new SplittableViewManager(parent, _defaultViewFactory);

            return(pm);
        }
Example #18
0
            public static CommandResult Test(ICommandTarget target)
            {
                IPoderosaMainWindow    window = CommandTargetUtil.AsWindow(target);
                ISplittableViewManager sp     = (ISplittableViewManager)window.ViewManager.GetAdapter(typeof(ISplittableViewManager));

                sp.ApplySplitInfo("V(33:Lterminal,33:Lterminal,L:Lterminal)");
                return(CommandResult.Succeeded);
            }
Example #19
0
 private void HostCauseClose(string msg) {
     if (TerminalSessionsPlugin.Instance.TerminalEmulatorService.TerminalEmulatorOptions.CloseOnDisconnect)
         _sessionHost.TerminateSession();
     else {
         IPoderosaMainWindow window = this.OwnerWindow;
         window.DocumentTabFeature.Update(_terminal.IDocument);
     }
 }
Example #20
0
        public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter param, ITerminalSettings settings)
        {
            PipeTerminalParameter tp = param as PipeTerminalParameter;
            PipeTerminalSettings  ts = settings as PipeTerminalSettings;

            Debug.Assert(tp != null && ts != null);

            return(PipeCreator.CreateNewPipeTerminalConnection(tp, ts));
        }
Example #21
0
        public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter param, ITerminalSettings settings)
        {
            SerialTerminalParam    sp = param as SerialTerminalParam;
            SerialTerminalSettings ts = settings as SerialTerminalSettings;

            Debug.Assert(sp != null && ts != null);

            return(SerialPortUtil.CreateNewSerialConnection(window, sp, ts));
        }
Example #22
0
        private void NotifyAdd(IPoderosaForm form, IPoderosaDocument document)
        {
            IPoderosaMainWindow window = (IPoderosaMainWindow)form.GetAdapter(typeof(IPoderosaMainWindow));

            if (window != null)
            {
                window.DocumentTabFeature.Add(document);
            }
        }
Example #23
0
        private static CommandResult CmdShellSchemeEditor(ICommandTarget target)
        {
            IPoderosaMainWindow  window  = CommandTargetUtil.AsWindow(target);
            ITerminalControlHost session = TerminalCommandTarget.AsTerminal(target);
            ShellSchemeEditor    dlg     = new ShellSchemeEditor(session == null ? null : session.TerminalSettings.ShellScheme);

            dlg.ShowDialog(window.AsForm());
            return(CommandResult.Succeeded);
        }
Example #24
0
        private void CharDecodeErrorDialog(IPoderosaMainWindow window, string msg)
        {
            WarningWithDisableOption dlg = new WarningWithDisableOption(msg);

            dlg.ShowDialog(window.AsForm());
            if (dlg.CheckedDisableOption)
            {
                GEnv.Options.CharDecodeErrorBehavior = WarningOption.Ignore;
            }
        }
Example #25
0
 //正常・異常とも呼ばれる
 public void CloseByReceptionThread(string msg) {
     if (_terminated)
         return;
     IPoderosaMainWindow window = this.OwnerWindow;
     if (window != null) {
         Debug.Assert(window.AsControl().InvokeRequired);
         //TerminalSessionはコントロールを保有しないので、ウィンドウで代用する
         window.AsControl().Invoke(new HostCauseCloseDelagate(HostCauseClose), msg);
     }
 }
 /// <summary>
 /// Initialize the page
 /// </summary>
 /// <remarks>
 /// This method will be called in the constructor of the container dialog.
 /// </remarks>
 /// <param name="mainWindow">main window</param>
 public void Initialize(IPoderosaMainWindow mainWindow)
 {
     _mainWindow = mainWindow;
     _preventUpdateControlStatus = true;
     Localize();
     SetDefaultValues();
     LoadHistory();
     _preventUpdateControlStatus = false;
     UpdateControlStatus();
 }
Example #27
0
        public void OnDocumentDeactivated(IPoderosaMainWindow window)
        {
            //Debug.WriteLine("OnDocumentDeactivated");
            TerminalToolBarInstance tb = FindToolbarInstance(window);

            if (tb != null)
            {
                tb.Detach();
            }
        }
Example #28
0
        /// <summary>
        /// <ja>
        /// ウィンドウへと変換します。
        /// </ja>
        /// <en>
        /// Convert to the window.
        /// </en>
        /// </summary>
        /// <param name="target">
        /// <ja>対象となるターゲットです。</ja>
        /// <en>It is a target that becomes an object. </en>
        /// </param>
        /// <returns>
        /// <ja>変換したインターフェイスです。変換できないときにはnullが戻ります。</ja>
        /// <en>It is a converted interface. Null returns when it is not possible to convert it. </en>
        /// </returns>
        /// <remarks>
        /// <ja>
        /// メニューやツールバーのボタンから呼び出されたコマンドに引き渡された<paramref name="target">target</paramref>の場合、この呼び出しは成功します。
        /// </ja>
        /// <en>
        /// This call succeeds for <paramref name="target">target</paramref> handed over to the command called from the button of the menu and the toolbar.
        /// </en>
        /// </remarks>
        public static IPoderosaMainWindow AsWindow(ICommandTarget target)
        {
            if (target == null)
            {
                return(null);
            }
            IPoderosaMainWindow window = (IPoderosaMainWindow)target.GetAdapter(typeof(IPoderosaMainWindow));

            return(window);
        }
Example #29
0
        public static SerialTerminalConnection CreateNewSerialConnection(IPoderosaMainWindow window, SerialTerminalParam param, SerialTerminalSettings settings)
        {
            bool successful = false;
            FileStream strm = null;
            try {
                StringResource sr = SerialPortPlugin.Instance.Strings;
                //Debug.WriteLine("OPENING COM"+param.Port);
                string portstr = String.Format("\\\\.\\{0}", param.PortName);
                IntPtr ptr = Win32Serial.CreateFile(portstr, Win32.GENERIC_READ | Win32.GENERIC_WRITE, 0, IntPtr.Zero, Win32.OPEN_EXISTING, Win32.FILE_ATTRIBUTE_NORMAL | Win32.FILE_FLAG_OVERLAPPED, IntPtr.Zero);
                if (ptr == Win32.INVALID_HANDLE_VALUE) {
                    string msg = sr.GetString("Message.FailedToOpenSerial");
                    int err = Marshal.GetLastWin32Error();
                    if (err == 2)
                        msg += sr.GetString("Message.NoSuchDevice");
                    else if (err == 5)
                        msg += sr.GetString("Message.DeviceIsBusy");
                    else
                        msg += "\nGetLastError=" + Marshal.GetLastWin32Error();
                    throw new Exception(msg);
                }
                //strm = new FileStream(ptr, FileAccess.Write, true, 8, true);
                Win32Serial.DCB dcb = new Win32Serial.DCB();
                FillDCB(ptr, ref dcb);
                UpdateDCB(ref dcb, settings);

                if (!Win32Serial.SetCommState(ptr, ref dcb)) {
                    Win32.CloseHandle(ptr);
                    throw new Exception(sr.GetString("Message.FailedToConfigSerial"));
                }
                Win32Serial.COMMTIMEOUTS timeouts = new Win32Serial.COMMTIMEOUTS();
                Win32Serial.GetCommTimeouts(ptr, ref timeouts);
                timeouts.ReadIntervalTimeout = 0xFFFFFFFF;
                timeouts.ReadTotalTimeoutConstant = 0;
                timeouts.ReadTotalTimeoutMultiplier = 0;
                timeouts.WriteTotalTimeoutConstant = 100;
                timeouts.WriteTotalTimeoutMultiplier = 100;
                Win32Serial.SetCommTimeouts(ptr, ref timeouts);
                successful = true;
                SerialTerminalConnection r = new SerialTerminalConnection(param, settings, ptr);
                return r;
            }
            catch (Exception ex) {
                RuntimeUtil.SilentReportException(ex);
                if (window != null)
                    window.Warning(ex.Message);
                else
                    GUtil.Warning(Form.ActiveForm, ex.Message); //TODO 苦しい逃げ。IPoderosaFormを実装したベースクラスをCoreにでも持っていたほうがいいのか
                return null;
            }
            finally {
                if (!successful && strm != null)
                    strm.Close();
            }
        }
Example #30
0
        private static CommandResult CmdAgentKeyListDialog(ICommandTarget target)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);

            Debug.Assert(window != null);

            AgentKeyListDialog dlg = new AgentKeyListDialog();
            DialogResult       r   = dlg.ShowDialog(window.AsForm());

            return(r == DialogResult.OK ? CommandResult.Succeeded : CommandResult.Cancelled);
        }
Example #31
0
        private static CommandResult CmdChangePassphrase(ICommandTarget target)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);

            Debug.Assert(window != null);

            ChangePassphrase dlg = new ChangePassphrase();
            DialogResult     r   = dlg.ShowDialog(window.AsForm());

            return(r == DialogResult.OK ? CommandResult.Succeeded : CommandResult.Cancelled);
        }
            public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter destination, ITerminalSettings settings)
            {
                ITCPParameter          tcp = (ITCPParameter)destination.GetAdapter(typeof(ITCPParameter));
                IProtocolService       ps  = TerminalSessionsPlugin.Instance.ProtocolService;
                ISynchronizedConnector sc  = ps.CreateFormBasedSynchronozedConnector(window);
                IInterruptable         t   = ps.AsyncTelnetConnect(sc.InterruptableConnectorClient, tcp);
                ITerminalConnection    con = sc.WaitConnection(t, TerminalSessionsPlugin.Instance.TerminalSessionOptions.TerminalEstablishTimeout);

                AdjustCaptionAndText(settings, tcp.Destination, StartCommandIcon.NewConnection);
                return(con);
            }
Example #33
0
        public static CommandResult OpenShortcutFile(ICommandTarget target, string filename)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);

            if (window == null)
            {
                window = (IPoderosaMainWindow)CommandTargetUtil.AsViewOrLastActivatedView(target).ParentForm.GetAdapter(typeof(IPoderosaMainWindow));
            }
            if (window == null)
            {
                return(CommandResult.Ignored);
            }

            if (!File.Exists(filename))
            {
                window.Warning(String.Format("{0} is not a file", filename));
                return(CommandResult.Failed);
            }

            ShortcutFileContent f = null;

            try {
                f = ShortcutFileContent.LoadFromXML(filename);
            }
            catch (Exception ex) {
                //変なファイルをドロップしたなどで例外は簡単に起こりうる
                window.Warning(String.Format("Failed to read {0}\n{1}", filename, ex.Message));
                return(CommandResult.Failed);
            }

            try {
                //独立ウィンドウにポップアップさせるようなことは考えていない
                IContentReplaceableView rv = (IContentReplaceableView)target.GetAdapter(typeof(IContentReplaceableView));
                if (rv == null)
                {
                    rv = (IContentReplaceableView)window.ViewManager.GetCandidateViewForNewDocument().GetAdapter(typeof(IContentReplaceableView));
                }

                TerminalControl tc = (TerminalControl)rv.GetCurrentContent().GetAdapter(typeof(TerminalControl));
                if (tc != null)   //ターミナルコントロールがないときは無理に設定しにいかない
                {
                    RenderProfile rp = f.TerminalSettings.UsingDefaultRenderProfile ? TerminalSessionsPlugin.Instance.TerminalEmulatorService.TerminalEmulatorOptions.CreateRenderProfile() : f.TerminalSettings.RenderProfile;
                    Size          sz = tc.CalcTerminalSize(rp);
                    f.TerminalParameter.SetTerminalSize(sz.Width, sz.Height);
                }

                ITerminalSession s = TerminalSessionsPlugin.Instance.TerminalSessionStartCommand.StartTerminalSession(target, f.TerminalParameter, f.TerminalSettings);
                return(s != null ? CommandResult.Succeeded : CommandResult.Failed);
            }
            catch (Exception ex) {
                RuntimeUtil.ReportException(ex);
                return(CommandResult.Failed);
            }
        }
Example #34
0
        private static CommandResult CmdGenerateKeyPair(ICommandTarget target)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);

            Debug.Assert(window != null);

            KeyGenWizard dlg = new KeyGenWizard();
            DialogResult r   = dlg.ShowDialog(window.AsForm());

            return(r == DialogResult.OK ? CommandResult.Succeeded : CommandResult.Cancelled);
        }
Example #35
0
 public void ChangeLastAttachedViewForWindow(IPoderosaMainWindow window, IPoderosaView alternative)
 {
     alternative = AdjustToOuterView(alternative);
     foreach (DocumentHost dh in _documentMap.Values)
     {
         if (dh.LastAttachedView.ParentForm == window)
         {
             dh.AlternateView(alternative);
             FireDocViewRelationChange();
         }
     }
 }
Example #36
0
        public SplittableViewManager(IPoderosaMainWindow parent, IViewFactory defaultviewfactory)
        {
            _parent             = parent;
            _defaultViewFactory = defaultviewfactory;

            Debug.Assert(_paneDivision == null);
            _singlePane = CreateNewPane(_defaultViewFactory, DockStyle.Fill); //先頭のFactoryで作ってしまうというのはどうかな

            _paneDivision                 = new PaneDivision();
            _paneDivision.CountLimit      = WindowManagerPlugin.Instance.WindowPreference.OriginalPreference.SplitLimitCount;
            _paneDivision.UIActionHandler = this;
        }
Example #37
0
        private static CommandResult CmdNewWindow(ICommandTarget target)
        {
            IPoderosaMainWindow window = CommandTargetUtil.AsWindow(target);
            Form      f        = window.AsForm();
            Rectangle location = f.WindowState == FormWindowState.Normal? f.DesktopBounds : f.RestoreBounds;

            location.X += 20; location.Y += 20; //少し右下に表示
            MainWindowArgument arg = new MainWindowArgument(location, FormWindowState.Normal, "", "", 1);

            WindowManagerPlugin.Instance.CreateNewWindow(arg);
            return(CommandResult.Succeeded);
        }
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public BroadcastCommandForm(IPoderosaMainWindow window)
        {
            _window = window;
            InitializeComponent();
            InitializeComponentValue();

            RefreshSessionList();
            if (_sessionListView.Items.Count > 0) {
                _sessionListView.Items[0].Selected = true;
            }

            _Initialized = true;
        }
Example #39
0
        public PoderosaToolStripContainer(IPoderosaMainWindow parent, string location_info) {
            _parent = parent;
            _initialLocationInfo = location_info;

            //this.Height = 25; //適切なサイズを決める方法がわからない
            this.Dock = DockStyle.Fill;
            //左右に入れるのは見苦しい。やめる。
            this.LeftToolStripPanelVisible = false;
            this.RightToolStripPanelVisible = false;
            this.BottomToolStripPanelVisible = false;
            this.TopToolStripPanelVisible = WindowManagerPlugin.Instance.WindowPreference.OriginalPreference.ShowsToolBar;
            this.AllowDrop = true;
            CreateInternal();
        }
        public TelnetSSHLoginDialog(IPoderosaMainWindow parentWindow)
            : base(parentWindow) {
            _firstFlag = true;
            _initializing = true;
            //_history = GApp.ConnectionHistory;
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();
            InitializeText();

            InitializeLoginParams();
            _initializing = false;
        }
Example #41
0
        public PoderosaToolStripContainer(IPoderosaMainWindow parent, string location_info)
        {
            _parent = parent;
            _initialLocationInfo = location_info;

            //this.Height = 25; //�K�؂ȃT�C�Y����߂���@���킩��Ȃ�
            this.Dock = DockStyle.Fill;
            //���E�ɓ����̂͌��ꂵ���B��߂�B
            this.LeftToolStripPanelVisible = false;
            this.RightToolStripPanelVisible = false;
            this.BottomToolStripPanelVisible = false;
            this.TopToolStripPanelVisible = WindowManagerPlugin.Instance.WindowPreference.OriginalPreference.ShowsToolBar;
            this.AllowDrop = true;
            CreateInternal();
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="mainWindow">main window</param>
        public OpenSessionDialog(IPoderosaMainWindow mainWindow)
        {
            _mainWindow = mainWindow;

            LastStatus lastStatus;
            if (_lastStatusStorage.Get(_mainWindow, out lastStatus)) {
                _lastStatus = lastStatus;
            }
            else {
                _lastStatus = new LastStatus();
            }

            SuspendLayout();
            InitializeComponent();
            Localize();
            SetupOpenSessionTabs();
            ResumeLayout();
        }
Example #43
0
            public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter destination, ITerminalSettings settings) {
                ITCPParameter tcp = (ITCPParameter)destination.GetAdapter(typeof(ITCPParameter));
                IProtocolService ps = TerminalSessionsPlugin.Instance.ProtocolService;
                ISynchronizedConnector sc = ps.CreateFormBasedSynchronozedConnector(window);
                IInterruptable t = ps.AsyncTelnetConnect(sc.InterruptableConnectorClient, tcp);
                ITerminalConnection con = sc.WaitConnection(t, TerminalSessionsPlugin.Instance.TerminalSessionOptions.TerminalEstablishTimeout);

                AdjustCaptionAndText(settings, tcp.Destination, StartCommandIcon.NewConnection);
                return con;
            }
Example #44
0
 public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter destination, ITerminalSettings settings) {
     ISSHLoginParameter ssh = (ISSHLoginParameter)destination.GetAdapter(typeof(ISSHLoginParameter));
     if (ssh.LetUserInputPassword && ssh.AuthenticationType != Granados.AuthenticationType.KeyboardInteractive) { //ダイアログで入力を促して接続
         SSHShortcutLoginDialog dlg = new SSHShortcutLoginDialog(window, ssh, settings);
         if (dlg.ShowDialog(window.AsForm()) == DialogResult.OK) {
             ITerminalConnection con = dlg.Result;
             AdjustCaptionAndText(settings, ((ITCPParameter)con.Destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection);
             return con;
         }
         else
             return null;
     }
     else { //主にReproduceやマクロ。設定済みのパスワードで接続
         IProtocolService protocolservice = TerminalSessionsPlugin.Instance.ProtocolService;
         ISynchronizedConnector conn = protocolservice.CreateFormBasedSynchronozedConnector(window);
         IInterruptable r = protocolservice.AsyncSSHConnect(conn.InterruptableConnectorClient, ssh);
         AdjustCaptionAndText(settings, ((ITCPParameter)destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection);
         return conn.WaitConnection(r, TerminalSessionsPlugin.Instance.TerminalSessionOptions.TerminalEstablishTimeout); //時間?
     }
 }
 public void OnMainWindowLoaded(IPoderosaMainWindow window) {
 }
 public void OnLastMainWindowUnloaded(IPoderosaMainWindow window) {
 }
Example #47
0
 public void OnDocumentDeactivated(IPoderosaMainWindow window)
 {
     if (window != null && window.ToolBar != null)
         window.ToolBar.RefreshComponent(this);
 }
Example #48
0
        public CommandResult InternalExecute(ICommandTarget target, params IAdaptable[] args)
        {
            _window = CommandTargetUtil.AsWindow(target);
            Debug.Assert(_window != null);

            if (_actions.Count == 0)
                return CommandResult.Ignored;
            else {
                //�����ɏI����̂łȂ�
                ProcessNextAction();
                return CommandResult.Succeeded;
            }
        }
Example #49
0
 public void OnDocumentDeactivated(IPoderosaMainWindow window) {
     //Debug.WriteLine("OnDocumentDeactivated");
     TerminalToolBarInstance tb = FindToolbarInstance(window);
     if (tb != null)
         tb.Detach();
 }
Example #50
0
 public ClosingContext(IPoderosaMainWindow window) {
     _type = CloseType.OneWindow;
     _window = window;
     _closingSessions = new List<SessionHost>();
 }
Example #51
0
        private PaneDivision.IPane _singlePane; //�������Ă��Ȃ��Ƃ��ɂ̂ݔ�null

        #endregion Fields

        #region Constructors

        public SplittableViewManager(IPoderosaMainWindow parent, IViewFactory defaultviewfactory)
        {
            _parent = parent;
            _defaultViewFactory = defaultviewfactory;

            Debug.Assert(_paneDivision == null);
            _singlePane = CreateNewPane(_defaultViewFactory, DockStyle.Fill); //�擪��Factory�ō���Ă��܂��Ƃ����̂͂ǂ�����

            _paneDivision = new PaneDivision();
            _paneDivision.CountLimit = WindowManagerPlugin.Instance.WindowPreference.OriginalPreference.SplitLimitCount;
            _paneDivision.UIActionHandler = this;
        }
Example #52
0
 public SetTabRowMenuItem(IPoderosaMainWindow w, int count)
 {
     _window = w;
     _count = count;
 }
 public DocActivationMenuItem(int index, IPoderosaMainWindow window, IPoderosaDocument document)
 {
     _mainWindow = window;
     _index = index;
     _document = document;
 }
Example #54
0
 private TerminalToolBarInstance FindToolbarInstance(IPoderosaMainWindow window) {
     return _toolbarInstances[window];
 }
Example #55
0
        public ITerminalConnection OpenConnection(IPoderosaMainWindow owner, ITerminalParameter destination, ITerminalSettings settings) {
            //NOTE 同時接続数チェックあたりあってもいい

            ITerminalConnectionFactory[] fs = (ITerminalConnectionFactory[])TerminalSessionsPlugin.Instance.PoderosaWorld.PluginManager.FindExtensionPoint(TerminalSessionsPlugin.TERMINAL_CONNECTION_FACTORY_ID).GetExtensions();
            //後に登録されたやつを優先するため、逆順に舐める
            for (int i = fs.Length - 1; i >= 0; i--) {
                ITerminalConnectionFactory f = fs[i];
                if (f.IsSupporting(destination, settings)) {
                    return f.EstablishConnection(owner, destination, settings);
                }
            }
            throw new ArgumentException("Failed to make an ITerminalConnection using extension point."); //ましなエラーメッセージ
        }
 public void OnDocumentActivated(IPoderosaMainWindow window, IPoderosaDocument document)
 {
     window.AsForm().Text = String.Format("{0} - Poderosa", document.Caption);
 }
Example #57
0
 private void CharDecodeErrorDialog(IPoderosaMainWindow window, string msg)
 {
     WarningWithDisableOption dlg = new WarningWithDisableOption(msg);
     dlg.ShowDialog(window.AsForm());
     if (dlg.CheckedDisableOption) {
         GEnv.Options.CharDecodeErrorBehavior = WarningOption.Ignore;
     }
 }
Example #58
0
        public void OnDocumentActivated(IPoderosaMainWindow window, IPoderosaDocument document) {
            //Debug.WriteLine("OnDocumentActivated");
            TerminalToolBarInstance tb = FindToolbarInstance(window);
            if (tb == null) {
                tb = new TerminalToolBarInstance(this, window.ToolBar);
                _toolbarInstances[window] = tb;
                //TODO コレクションの削除がない!
            }
            IAbstractTerminalHost session = (IAbstractTerminalHost)document.OwnerSession.GetAdapter(typeof(IAbstractTerminalHost));
            if (session != null)
                tb.Attach(session.TerminalSettings);

        }
Example #59
0
 public void ChangeLastAttachedViewForWindow(IPoderosaMainWindow window, IPoderosaView alternative) {
     alternative = AdjustToOuterView(alternative);
     foreach (DocumentHost dh in _documentMap.Values) {
         if (dh.LastAttachedView.ParentForm == window) {
             dh.AlternateView(alternative);
             FireDocViewRelationChange();
         }
     }
 }
 public void OnDocumentDeactivated(IPoderosaMainWindow window)
 {
     window.AsForm().Text = "Poderosa";
 }