private void OnKPDBClose(object sender, FileClosedEventArgs e) { SignalAllManagedRPCClients(KeePassRPC.DataExchangeModel.Signal.DATABASE_CLOSED); }
internal void CloseDocument(PwDocument dsToClose, bool bLocking, bool bExiting, bool bUpdateUI) { PwDocument ds = (dsToClose ?? m_docMgr.ActiveDocument); PwDatabase pd = ds.Database; bool bIsActive = (ds == m_docMgr.ActiveDocument); Program.TriggerSystem.RaiseEvent(EcasEventIDs.ClosingDatabaseFilePre, EcasProperty.Database, pd); if(this.FileClosingPre != null) { FileClosingEventArgs fcea = new FileClosingEventArgs(pd); this.FileClosingPre(null, fcea); if(fcea.Cancel) return; } if(pd.Modified) // Implies pd.IsOpen { bool bInvokeSave = false; // https://sourceforge.net/p/keepass/discussion/329220/thread/c3c823c6/ bool bCanAutoSave = AppPolicy.Current.SaveFile; if(Program.Config.Application.FileClosing.AutoSave && bCanAutoSave) bInvokeSave = true; else { FileSaveOrigin fso = FileSaveOrigin.Closing; if(bLocking) fso = FileSaveOrigin.Locking; if(bExiting) fso = FileSaveOrigin.Exiting; DialogResult dr = FileDialogsEx.ShowFileSaveQuestion( pd.IOConnectionInfo.GetDisplayName(), fso); if(dr == DialogResult.Cancel) return; else if(dr == DialogResult.Yes) bInvokeSave = true; else if(dr == DialogResult.No) { } // Changes are lost } if(bInvokeSave) { SaveDatabase(pd, null); if(pd.Modified) return; } } Program.TriggerSystem.RaiseEvent(EcasEventIDs.ClosingDatabaseFilePost, EcasProperty.Database, pd); if(this.FileClosingPost != null) { FileClosingEventArgs fcea = new FileClosingEventArgs(pd); this.FileClosingPost(null, fcea); if(fcea.Cancel) return; } IOConnectionInfo ioClosing = pd.IOConnectionInfo.CloneDeep(); pd.Close(); if(!bLocking) m_docMgr.CloseDatabase(pd); if(bIsActive) { m_tbQuickFind.Items.Clear(); m_tbQuickFind.Text = string.Empty; if(!bLocking) { m_docMgr.ActiveDatabase.UINeedsIconUpdate = true; ResetDefaultFocus(null); } } if(bUpdateUI) UpdateUI(true, null, true, null, true, null, false); // NativeMethods.ClearIconicBitmaps(this.Handle); if(this.FileClosed != null) { FileClosedEventArgs fcea = new FileClosedEventArgs(ioClosing); this.FileClosed(null, fcea); } }
/// <summary> /// Triggered when a KeePass database has been closed /// </summary> private static void OnKeePassDatabaseClosed(object sender, FileClosedEventArgs fileClosedEventArgs) { // Remove the KeePass database instance from the already available configuration var config = Configuration.GetPasswordDatabaseConfiguration(fileClosedEventArgs.IOConnectionInfo.Path); config.KeePassDatabase = null; }
private void CloseDocument(PwDocument ds, bool bLocking, bool bExiting) { if(ds == null) ds = m_docMgr.ActiveDocument; PwDatabase pd = ds.Database; IOConnectionInfo ioClosing = pd.IOConnectionInfo.CloneDeep(); if(pd.Modified) // Implies pd.IsOpen { if(Program.Config.Application.FileClosing.AutoSave) { OnFileSave(null, EventArgs.Empty); if(pd.Modified) return; } else { FileSaveOrigin fso = FileSaveOrigin.Closing; if(bLocking) fso = FileSaveOrigin.Locking; if(bExiting) fso = FileSaveOrigin.Exiting; DialogResult dr = FileDialogsEx.ShowFileSaveQuestion( pd.IOConnectionInfo.GetDisplayName(), fso, this.Handle); if(dr == DialogResult.Cancel) return; else if(dr == DialogResult.Yes) { OnFileSave(null, EventArgs.Empty); if(pd.Modified) return; } else if(dr == DialogResult.No) { } // Changes are lost } } pd.Close(); if(!bLocking) m_docMgr.CloseDatabase(pd); m_tbQuickFind.Items.Clear(); m_tbQuickFind.Text = string.Empty; if(!bLocking) { m_docMgr.ActiveDatabase.UINeedsIconUpdate = true; UpdateUI(true, null, true, null, true, null, false); } // NativeMethods.ClearIconicBitmaps(this.Handle); if(FileClosed != null) { FileClosedEventArgs fcea = new FileClosedEventArgs(ioClosing); FileClosed(null, fcea); } }
private void OnKPDBClose(object sender, FileClosedEventArgs e) { //KeePassRPCService.ensureDBisOpenEWH.Set(); // signal that DB is now open so any waiting JSONRPC thread can go ahead SignalAllManagedRPCClients(KeePassRPC.DataExchangeModel.Signal.DATABASE_CLOSED); }
private void CloseDocument(bool bLocking, bool bExiting) { PwDocument ds = m_docMgr.ActiveDocument; PwDatabase pd = ds.Database; Program.TriggerSystem.RaiseEvent(EcasEventIDs.ClosingDatabaseFilePre, pd.IOConnectionInfo.Path); if(this.FileClosingPre != null) { FileClosingEventArgs fcea = new FileClosingEventArgs(pd); this.FileClosingPre(null, fcea); if(fcea.Cancel) return; } if(pd.Modified) // Implies pd.IsOpen { bool bInvokeSave = false; if(Program.Config.Application.FileClosing.AutoSave) bInvokeSave = true; else { FileSaveOrigin fso = FileSaveOrigin.Closing; if(bLocking) fso = FileSaveOrigin.Locking; if(bExiting) fso = FileSaveOrigin.Exiting; DialogResult dr = FileDialogsEx.ShowFileSaveQuestion( pd.IOConnectionInfo.GetDisplayName(), fso, this.Handle); if(dr == DialogResult.Cancel) return; else if(dr == DialogResult.Yes) bInvokeSave = true; else if(dr == DialogResult.No) { } // Changes are lost } if(bInvokeSave) { OnFileSave(null, EventArgs.Empty); if(pd.Modified) return; } } Program.TriggerSystem.RaiseEvent(EcasEventIDs.ClosingDatabaseFilePost, pd.IOConnectionInfo.Path); if(this.FileClosingPost != null) { FileClosingEventArgs fcea = new FileClosingEventArgs(pd); this.FileClosingPost(null, fcea); if(fcea.Cancel) return; } IOConnectionInfo ioClosing = pd.IOConnectionInfo.CloneDeep(); pd.Close(); if(!bLocking) m_docMgr.CloseDatabase(pd); m_tbQuickFind.Items.Clear(); m_tbQuickFind.Text = string.Empty; if(!bLocking) { m_docMgr.ActiveDatabase.UINeedsIconUpdate = true; UpdateUI(true, null, true, null, true, null, false); ResetDefaultFocus(null); } // NativeMethods.ClearIconicBitmaps(this.Handle); if(this.FileClosed != null) { FileClosedEventArgs fcea = new FileClosedEventArgs(ioClosing); this.FileClosed(null, fcea); } }
private void MainForm_FileClosed(object aSender, FileClosedEventArgs aEventArgs) { try { foreach (var key in removeKeyList) { agent.RemoveKey(key); } removeKeyList.Clear(); } catch (Exception ex) { // can't be crashing KeePass Debug.Fail(ex.ToString()); } }