private void BtnOK_Click(object sender, EventArgs e) { string _docName = publishDoc.Name; string aPlaceName = comboMyPlaces.Text; string aGuid = publishDoc.Guid; string aLocalPath = ""; string aPath = ""; // full path to published map string aSite = ""; // website to check for Internet connection string aProcess = ""; // cloud app process to check if started string _projectName = ""; string aStorage = ""; // name of cloud app string aProjectPath = ""; bool singleMap = chBoxSingleMap.Checked; if (!singleMap) { _projectName = comboMyProjects.Text; } // Single Maps if (singleMap) { using (PlacesDB _db = new PlacesDB()) { DataTable _dt = _db.ExecuteQuery("select * from PLACES where PLACENAME='" + aPlaceName + "'"); aProjectPath = _dt.Rows[0]["PLACEPATH"].ToString(); aStorage = _dt.Rows[0]["STORAGE"].ToString(); aLocalPath = MMUtils.m_SynergyLocalPath + aPlaceName + "\\"; } } // Projects else { using (ProjectsDB _db = new ProjectsDB()) { DataTable _dt = _db.ExecuteQuery( "select * from PROJECTS where PROJECTNAME='" + _projectName + "' and PLACENAME='" + aPlaceName + "'"); aProjectPath = _dt.Rows[0]["PROJECTPATH"].ToString(); aStorage = _dt.Rows[0]["STORAGE"].ToString(); aLocalPath = MMUtils.m_SynergyLocalPath + aPlaceName + "\\" + _projectName + "\\"; } } if (publishDoc.Path == "") // new map not saved yet { using (NewMapDlg _dlg = new NewMapDlg()) { if (_dlg.ShowDialog(new WindowWrapper((IntPtr)MMUtils.MindManager.hWnd)) == DialogResult.Cancel) { return; } _docName = _dlg.textBox_MapName.Text + ".mmap"; } } aLocalPath = aLocalPath + _docName; using (StoragesDB _db = new StoragesDB()) { DataTable _dt = _db.ExecuteQuery("select * from STORAGES where STORAGENAME='" + aStorage + "'"); aProcess = _dt.Rows[0]["PROCESS"].ToString(); aSite = _dt.Rows[0]["SITE"].ToString(); } // Full path to map in Place aPath = Path.Combine(aProjectPath, _docName); // TODO предложить выбрать сохранение под другим именем if (Directory.Exists(aPath)) // map with this name is stored already in this place { System.Windows.Forms.DialogResult result = System.Windows.Forms.MessageBox.Show( MMUtils.GetString("publishmapdlg.mapexists.message"), MMUtils.GetString("publishmapdlg.mapexists.caption"), System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation); return; } string fail = ""; string messageSite = MMUtils.GetString("internet.sitefailed.message"); string messageProcess = MMUtils.GetString("internet.processfailed.message"); string messagePlace = MMUtils.GetString("internet.placefail.message"); string endMessage = MMUtils.GetString("internet.failed.endpubmessage"); while ((fail = Internet.CheckInternetAndProcess(aGuid, aStorage, aProcess, aSite, "", "publish")) != "") { string _message = "", arg = ""; if (fail == "processfail") { _message = messageProcess; arg = aStorage; } else if (fail == "placefail") { _message = messagePlace; arg = aPath; } else if (fail == "sitefail") { _message = messageSite; arg = aSite; } if (System.Windows.Forms.MessageBox.Show( String.Format(_message, arg) + endMessage, String.Format(MMUtils.GetString("internet.failed.caption"), _docName), System.Windows.Forms.MessageBoxButtons.RetryCancel, System.Windows.Forms.MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.Cancel) { this.DialogResult = DialogResult.Cancel; publishDoc = null; return; } if (fail == "sitefail") { System.Diagnostics.Process.Start(arg); // launch website } } try // Save map to Local { publishDoc.SaveAs(aLocalPath); } catch (Exception _e) // TODO cause!!! read-only, etc... имя файла уже исключено выше { MessageBox.Show("Error: " + _e.Message, "PublishMapDlg", MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; publishDoc = null; return; } //// Publish Map = set attributes to map, topics, relationships and boundaries and process links //// SUtils.singleMap = singleMap; Mindjet.MindManager.Interop.Transaction _tr = publishDoc.NewTransaction(""); _tr.IsUndoable = false; _tr.Execute += new Mindjet.MindManager.Interop.ITransactionEvents_ExecuteEventHandler(SUtils.PublishMap); _tr.Start(); /////////////////////////////////////////////////////////////////////////////////// publishDoc.Save(); if (SUtils.links.Count > 0) { using (LinkedFilesDlg _dlg = new LinkedFilesDlg(SUtils.links, publishDoc)) { DialogResult result = _dlg.ShowDialog(new WindowWrapper((IntPtr)MMUtils.MindManager.hWnd)); SUtils.links.Clear(); if (result == DialogResult.Cancel) { this.DialogResult = DialogResult.Cancel; publishDoc = null; return; } } } aPath = aPath + "\\"; // Map folder string mapFile = SUtils.modtime + ".mmap"; try // save map to Place { Directory.CreateDirectory(aPath + "share"); File.Copy(aLocalPath, aPath + mapFile); // copy as file!!! StreamWriter sw = new StreamWriter(File.Create(aPath + "info.ini")); sw.WriteLine(aStorage); // чтобы если нет Интернета или Процесса, выдать сообщение с именем хранилища sw.WriteLine(_projectName); // чтобы находить карту из Места в локальной папке Synergy sw.WriteLine(aGuid); sw.WriteLine(aProcess); // чтобы проверить Интернет и Процесс sw.WriteLine(aSite); // чтобы проверить Интернет и Процесс sw.Close(); } catch (Exception _e) // TODO cause!!! read-only, etc... { MessageBox.Show(this, "Error " + _e.Message, "title", MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; publishDoc = null; return; } MapsDB.AddMapToDB( aStorage, aPlaceName, _projectName, aGuid, _docName, aPath, // aPath - map directory in Place, with backslash aLocalPath, DateTime.UtcNow.ToString() + ";" + SUtils.currentUserName + ";" + SUtils.currentUserEmail ); MapsGroup.m_UpdateOpenMap = true; // update Open Map submenu SUtils.ProcessMap(publishDoc); // Share map using (ShareMapDlg _dlg = new ShareMapDlg(MMUtils.ActiveDocument.Name, aPath)) { _dlg.ShowDialog(new WindowWrapper((IntPtr)MMUtils.MindManager.hWnd)); } this.DialogResult = DialogResult.OK; publishDoc = null; }
void Reopenmaps_Timer_Tick(object sender, EventArgs e) { reopenmaps_timer.Stop(); string mapPlacePath = ""; for (int i = 0; i < _reopenmaps.Count; i++) { bool mapnotfound = true; string mapLocalPath = _reopenmaps[i].FullName; File.SetAttributes(mapLocalPath, System.IO.FileAttributes.Normal); using (MapsDB _db = new MapsDB()) { DataTable _dt = _db.ExecuteQuery("select * from MAPS where LOCALPATH='" + mapLocalPath + "'"); if (_dt.Rows.Count != 0) { mapnotfound = false; mapPlacePath = _dt.Rows[0]["PATHTOPLACE"].ToString(); } } try { mapPlacePath = Directory.GetFiles(mapPlacePath, "*.mmap").Last().ToString(); } catch { mapPlacePath = ""; } if (i == _reopenmaps.Count - 1) // last document will be opened, it will be active { SUtils.skipActiveMap = false; } else { SUtils.skipActiveMap = true; } // We have to reopen map to get last map copy from its Place if (!mapnotfound && mapPlacePath != "") // map and its placepath found { long localmap_lastwrite = Convert.ToInt64(File.GetLastWriteTimeUtc(mapLocalPath).ToString("yyyyMMddHHmmssfff")); long placemap_time = Convert.ToInt64(Path.GetFileNameWithoutExtension(mapPlacePath)); if (placemap_time <= localmap_lastwrite) { string fail = SUtils.ProcessMap(_reopenmaps[i]); if (fail == "") { SUtils.GetChanges(_reopenmaps[i]); } continue; } } DocumentStorage.closeMap = true; _reopenmaps[i].Close(); // if map or map place not found this will be resolved in the afterOpenMap event if (!mapnotfound && mapPlacePath != "") { File.Copy(mapPlacePath, mapLocalPath, true); // copy (overwrite) map from its Place to local Synergy } DocumentStorage.reopenmap = false; MMUtils.MindManager.AllDocuments.Open(mapLocalPath); } _reopenmaps.Clear(); DestroyTimer(); }