public class Commands
{
const string ns = "bx";
static List<string> SavedFils = new List<string>();
static Dictionary<string, bool> dbEvents = new Dictionary<string, bool>();
[Rtm.CommandMethod(ns, "Start1", Rtm.CommandFlags.Session)]
static public void StartAuto()
{
App.DocumentCollection dm = App.Application.DocumentManager;
dm.DocumentCreated += new App.DocumentCollectionEventHandler(DocumentManager_DocumentCreated);
dm.DocumentToBeDestroyed += new App.DocumentCollectionEventHandler(DocumentManager_DocumentToBeDestroyed);
dm.DocumentDestroyed += new App.DocumentDestroyedEventHandler(DocumentManager_DocumentDestroyed);
foreach (App.Document doc in dm)
{
doc.Database.SaveComplete += new Db.DatabaseIOEventHandler(Database_SaveComplete);
dbEvents.Add(doc.Database.OriginalFileName, true);
}
}
[Rtm.CommandMethod(ns, "Stop1", Rtm.CommandFlags.Session)]
static public void StopAuto()
{
App.DocumentCollection dm = App.Application.DocumentManager;
dm.DocumentCreated -= new App.DocumentCollectionEventHandler(DocumentManager_DocumentCreated);
dm.DocumentToBeDestroyed -= new App.DocumentCollectionEventHandler(DocumentManager_DocumentToBeDestroyed);
dm.DocumentDestroyed -= new App.DocumentDestroyedEventHandler(DocumentManager_DocumentDestroyed);
foreach (App.Document doc in dm)
{
if (dbEvents.ContainsKey(doc.Database.OriginalFileName))
{
doc.Database.SaveComplete -= new Db.DatabaseIOEventHandler(Database_SaveComplete);
dbEvents.Remove(doc.Database.OriginalFileName);
}
}
}
internal static void DocumentManager_DocumentCreated(object sender, App.DocumentCollectionEventArgs e)
{
if (!dbEvents.ContainsKey(e.Document.Database.OriginalFileName))
{
e.Document.Database.SaveComplete += new Db.DatabaseIOEventHandler(Database_SaveComplete);
dbEvents.Add(e.Document.Database.OriginalFileName, true);
}
}
internal static void DocumentManager_DocumentToBeDestroyed(object sender, App.DocumentCollectionEventArgs e)
{
//тут отписываемся от реактора на сохранение.
if (dbEvents.ContainsKey(e.Document.Database.OriginalFileName))
{
if (dbEvents[e.Document.Database.OriginalFileName])
{
e.Document.Database.SaveComplete -= new Db.DatabaseIOEventHandler(Database_SaveComplete);
dbEvents.Remove(e.Document.Database.OriginalFileName);
}
}
}
internal static void DocumentManager_DocumentDestroyed(object sender, App.DocumentDestroyedEventArgs e)
{
if (SavedFils.Contains(e.FileName))
{
string path = @"d:\MyTest.txt";
string appendText = e.FileName + Environment.NewLine;
File.AppendAllText(path, appendText);
SavedFils.Remove(e.FileName);
}
}
internal static void Database_SaveComplete(object sender, Db.DatabaseIOEventArgs e)
{
FileInfo fi = new FileInfo(e.FileName);
if (!fi.Extension.Equals(".sv$"))
SavedFils.Add(e.FileName);
}
}