public frmCharacterRoster.CharacterCache GetCharacterCache() { if (this.FilePath != null) { frmCharacterRoster.CharacterCache ret = new frmCharacterRoster.CharacterCache(this.FilePath); return(ret); } return(null); }
private async void bMultiUpload_Click(object sender, EventArgs e) { OpenFileDialog thisDialog = new OpenFileDialog(); thisDialog.Filter = "Chummer files (*.chum5)|*.chum5|All files (*.*)|*.*"; thisDialog.FilterIndex = 1; thisDialog.RestoreDirectory = true; thisDialog.Multiselect = true; thisDialog.Title = "Please Select Chummer File(s) for Batch-Upload"; if (thisDialog.ShowDialog() != DialogResult.OK) { return; } foreach (var file in thisDialog.FileNames) { try { Log.Trace("Loading: " + file); var c = new Character { FileName = file }; using (frmLoading frmLoadingForm = new frmLoading { CharacterFile = file }) { frmLoadingForm.Reset(36); frmLoadingForm.TopMost = true; frmLoadingForm.Show(); if (!(await c.Load(frmLoadingForm, false))) { continue; } Log.Trace("Character loaded: " + c.Name); } frmCharacterRoster.CharacterCache myCharacterCache = new frmCharacterRoster.CharacterCache(file); CharacterExtended ce = new CharacterExtended(c, null, null, myCharacterCache); await ce.Upload(null); } catch (Exception ex) { string msg = "Exception while loading " + file + ":"; msg += Environment.NewLine + ex.ToString(); Log.Warn(msg); /* run your code here */ Program.MainForm.ShowMessageBox(msg); } } Program.MainForm.ShowMessageBox("Upload of " + thisDialog.FileNames.Length + " files finished (successful or not - its over)."); }
public async Task <IEnumerable <TreeNode> > GetCharacterRosterTreeNode(frmCharacterRoster frmCharRoster, bool forceUpdate) { try { using (new CursorWait(true, frmCharRoster)) { Func <Task <HttpOperationResponse <ResultAccountGetSinnersByAuthorization> > > myMethodName = async() => { var client = StaticUtils.GetClient(); var ret = await client.GetSINnersByAuthorizationWithHttpMessagesAsync(); return(ret); }; var res = await ChummerHub.Client.Backend.Utils.GetCharacterRosterTreeNode(forceUpdate, myMethodName); if (res == null) { throw new ArgumentException("Could not load owned SINners from WebService."); } var list = res.ToList(); var myadd = MyTreeNodes2Add.ToList(); var mysortadd = (from a in myadd orderby a.Value.Text select a).ToList(); foreach (var addme in mysortadd) { list.Add(addme.Value); } return(list); } } catch (Microsoft.Rest.SerializationException e) { if (e.Content.Contains("Log in - ChummerHub")) { TreeNode node = new TreeNode("Online, but not logged in!") { ToolTipText = "Please log in (Options -> Plugins -> Sinners (Cloud) -> Login", Tag = e }; return(new List <TreeNode>() { node }); } else { TreeNode node = new TreeNode("Error: " + e.Message) { ToolTipText = e.ToString(), Tag = e }; return(new List <TreeNode>() { node }); } } catch (Exception e) { TreeNode node = new TreeNode("SINners Error: please log in") { ToolTipText = e.ToString(), Tag = e }; var objCache = new frmCharacterRoster.CharacterCache { ErrorText = e.ToString() }; node.Tag = objCache; return(new List <TreeNode>() { node }); } }
public string PrepareModel() { MySINnerFile.UploadDateTime = DateTime.Now; if (MySINnerIds.TryGetValue(MyCharacter.Alias, out var singuid)) { MySINnerFile.Id = singuid; } else { MySINnerFile.Id = Guid.NewGuid(); MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerFile.SiNnerMetaData.Visibility?.UserRights == null) { MySINnerFile.SiNnerMetaData.Visibility = new SINnerVisibility { Id = Guid.NewGuid(), Groupname = SINnersOptions.SINnerVisibility.Groupname, IsGroupVisible = SINnersOptions.SINnerVisibility.IsGroupVisible, IsPublic = SINnersOptions.SINnerVisibility.IsPublic, UserRights = SINnersOptions.SINnerVisibility.UserRights }; } var tempDir = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value.ToString()); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } foreach (var file in Directory.GetFiles(tempDir)) { File.Delete(file); } var summary = new frmCharacterRoster.CharacterCache(MyCharacter.FileName); MySINnerFile.JsonSummary = JsonConvert.SerializeObject(summary); MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; var tempfile = Path.Combine(tempDir, summary.FileName); if (!File.Exists(tempfile)) { File.Copy(MyCharacter.FileName, tempfile); } string zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value + ".chum5z"); if (File.Exists(zipPath)) { File.Delete(zipPath); } ZipFile.CreateFromDirectory(tempDir, zipPath); ZipFilePath = zipPath; return(zipPath); }
public CharacterExtended(Character character, string fileElement = null) { MyCharacter = character; MySINnerFile = new SINner(); if (string.IsNullOrEmpty(fileElement)) { MySINnerFile.SiNnerMetaData = new SINnerMetaData { Id = Guid.NewGuid(), Tags = new List <Tag>(), Visibility = new SINnerVisibility() }; } else { try { MySINnerFile.SiNnerMetaData = JsonConvert.DeserializeObject <SINnerMetaData>(fileElement); } catch (Exception e) { System.Diagnostics.Trace.TraceWarning(e.ToString()); } } if (MySINnerFile.SiNnerMetaData.Visibility != null) { if (MySINnerFile.SiNnerMetaData.Visibility.Id == null) { MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } return; } if (!string.IsNullOrEmpty(Properties.Settings.Default.SINnerVisibility)) { MySINnerFile.SiNnerMetaData.Visibility = JsonConvert.DeserializeObject <SINnerVisibility>(Properties.Settings.Default.SINnerVisibility); } if (MySINnerFile.SiNnerMetaData.Visibility?.Id == null) { MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } var cache = new frmCharacterRoster.CharacterCache(character.FileName); this.MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerIds.TryGetValue(MyCharacter.Alias, out var singuid)) { MySINnerFile.Id = singuid; } else { MySINnerFile.Id = Guid.NewGuid(); MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } this.MySINnerFile.JsonSummary = JsonConvert.SerializeObject(cache); }
public async Task <string> PrepareModel() { string zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id + ".chum5z"); if (PluginHandler.MySINnerLoading != null) { if (MySINnerIds.ContainsKey(MyCharacter.Alias)) { MySINnerIds.Remove(MyCharacter.Alias); } } if (MySINnerIds.TryGetValue(MyCharacter.Alias, out var singuid)) { MySINnerFile.Id = singuid; } else { if (PluginHandler.MySINnerLoading != null) { _MySINnerFile = PluginHandler.MySINnerLoading; MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); return(zipPath); } else { if (String.IsNullOrEmpty(MySINnerFile.Alias)) { MySINnerFile.Alias = MyCharacter.Alias; if (String.IsNullOrEmpty(MySINnerFile.Alias)) { MySINnerFile.Alias = MyCharacter.Name; } } var client = await StaticUtils.GetClient(); var res = await client.GetOwnedSINByAliasWithHttpMessagesAsync(MySINnerFile.Alias); if (res.Response.StatusCode == HttpStatusCode.NotFound) { MySINnerFile.Id = Guid.NewGuid(); } else if (res.Response.StatusCode == HttpStatusCode.OK) { string message = MySINnerFile.Alias + " is already available online, but the current client uses a local version of that file." + Environment.NewLine + Environment.NewLine; message += "Do you want to use only one version and update it through SINner?" + Environment.NewLine + Environment.NewLine; message += "YES:\tuse the same (= only one) version and get" + Environment.NewLine; message += "\tupdates on this client when you save" + Environment.NewLine; message += "\tthe chummer on another client(recommended)" + Environment.NewLine + Environment.NewLine; message += "NO:\tgenerate a new \"Fork\" of this character," + Environment.NewLine; message += "\tthat is not linked to the online one" + Environment.NewLine; message += "\tand use this new version from now on," + Environment.NewLine; message += "but only on this client (NOT recommended)." + Environment.NewLine + Environment.NewLine; var result = MessageBox.Show(message, "SIN already found online", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); if (result == DialogResult.Cancel) { throw new ArgumentException("User aborted perparation for upload!"); } else if (result == DialogResult.No) { MySINnerFile.Id = Guid.NewGuid(); } else { foreach (var sin in res.Body) { if (sin.Id != null) { MySINnerFile.Id = sin.Id; break; } } } } } MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value + ".chum5z"); MySINnerFile.UploadDateTime = DateTime.Now; MySINnerFile.Alias = MyCharacter.CharacterName; MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerFile.SiNnerMetaData.Visibility?.UserRights == null) { MySINnerFile.SiNnerMetaData.Visibility = new SINnerVisibility { Id = Guid.NewGuid(), IsGroupVisible = SINnersOptions.SINnerVisibility.IsGroupVisible, IsPublic = SINnersOptions.SINnerVisibility.IsPublic, UserRights = SINnersOptions.SINnerVisibility.UserRights }; } if (MySINnerFile.SiNnerMetaData.Visibility.Id == SINnersOptions.SINnerVisibility.Id) { //make the visibility your own and dont reuse the id from the general options! MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } foreach (var visnow in SINnersOptions.SINnerVisibility.UserRights) { if (!MySINnerFile.SiNnerMetaData.Visibility.UserRights.Any(a => a.EMail.ToLowerInvariant() == visnow.EMail.ToLowerInvariant())) { MySINnerFile.SiNnerMetaData.Visibility.UserRights.Add(visnow); } } foreach (var ur in MySINnerFile.SiNnerMetaData.Visibility.UserRights) { if (SINnersOptions.SINnerVisibility.UserRights.Any(a => a.Id == ur.Id)) { ur.Id = Guid.NewGuid(); } } if (!File.Exists(MyCharacter.FileName)) { return(null); } var tempDir = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value.ToString()); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } foreach (var file in Directory.GetFiles(tempDir)) { FileInfo fi = new FileInfo(file); if (fi.LastWriteTimeUtc < MyCharacter.FileLastWriteTime) { File.Delete(file); } } var summary = new frmCharacterRoster.CharacterCache(MyCharacter.FileName); MySINnerFile.MyExtendedAttributes.JsonSummary = JsonConvert.SerializeObject(summary); MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; var tempfile = Path.Combine(tempDir, summary.FileName); if (File.Exists(tempfile)) { File.Delete(tempfile); } MyCharacter.OnSaveCompleted -= Chummer.Plugins.PluginHandler.MyOnSaveUpload; MyCharacter.Save(); MyCharacter.OnSaveCompleted += Chummer.Plugins.PluginHandler.MyOnSaveUpload; if (!File.Exists(tempfile)) { File.Copy(MyCharacter.FileName, tempfile); } ; if (File.Exists(zipPath)) { ZipFilePath = zipPath; FileInfo fi = new FileInfo(zipPath); if (fi.LastWriteTimeUtc < MyCharacter.FileLastWriteTime) { File.Delete(zipPath); } } if (!File.Exists(zipPath)) { ZipFile.CreateFromDirectory(tempDir, zipPath); ZipFilePath = zipPath; } return(zipPath); }
public CharacterExtended(Character character, string fileElement = null) { MyCharacter = character; if (PluginHandler.MyCharExtendedDic.ContainsKey(character.FileName)) { throw new ArgumentException( "CharacterExtended already exists for this char - dont create a new instantce!", nameof(character)); } PluginHandler.MyCharExtendedDic.Add(character.FileName, this); _MySINnerFile = new SINner { MyExtendedAttributes = new SINnerExtended(), SiNnerMetaData = new SINnerMetaData(), Language = GlobalOptions.Language }; if (string.IsNullOrEmpty(fileElement)) { MySINnerFile.SiNnerMetaData = new SINnerMetaData { Id = Guid.NewGuid(), Tags = new List <Tag>(), Visibility = new SINnerVisibility() }; } else { try { MySINnerFile.SiNnerMetaData = JsonConvert.DeserializeObject <SINnerMetaData>(fileElement); } catch (Exception e) { System.Diagnostics.Trace.TraceWarning(e.ToString()); } } if (MySINnerFile.SiNnerMetaData.Visibility != null) { if (MySINnerFile.SiNnerMetaData.Visibility.Id == null) { MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } } if (!string.IsNullOrEmpty(Properties.Settings.Default.SINnerVisibility)) { MySINnerFile.SiNnerMetaData.Visibility = JsonConvert.DeserializeObject <SINnerVisibility>(Properties.Settings.Default.SINnerVisibility); } if (MySINnerFile.SiNnerMetaData.Visibility?.Id == null) { MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } var cache = new frmCharacterRoster.CharacterCache(character.FileName); this.MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerIds.TryGetValue(MyCharacter.Alias, out var singuid)) { MySINnerFile.Id = singuid; } else { MySINnerFile.Id = Guid.NewGuid(); MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } this.MySINnerFile.MyExtendedAttributes.JsonSummary = JsonConvert.SerializeObject(cache); }
public string PrepareModel() { string zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id + ".chum5z"); if (PluginHandler.MySINnerLoading != null) { if (MySINnerIds.ContainsKey(MyCharacter.Alias)) { MySINnerIds.Remove(MyCharacter.Alias); } } if (MySINnerIds.TryGetValue(MyCharacter.Alias, out var singuid)) { MySINnerFile.Id = singuid; } else { if (PluginHandler.MySINnerLoading != null) { _MySINnerFile = PluginHandler.MySINnerLoading; MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); return(zipPath); } else { MySINnerFile.Id = Guid.NewGuid(); } MySINnerIds.Add(MyCharacter.Alias, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value + ".chum5z"); MySINnerFile.UploadDateTime = DateTime.Now; MySINnerFile.Alias = MyCharacter.CharacterName; MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerFile.SiNnerMetaData.Visibility?.UserRights == null) { MySINnerFile.SiNnerMetaData.Visibility = new SINnerVisibility { Id = Guid.NewGuid(), IsGroupVisible = SINnersOptions.SINnerVisibility.IsGroupVisible, IsPublic = SINnersOptions.SINnerVisibility.IsPublic, UserRights = SINnersOptions.SINnerVisibility.UserRights }; } if (MySINnerFile.SiNnerMetaData.Visibility.Id == SINnersOptions.SINnerVisibility.Id) { //make the visibility your own and dont reuse the id from the general options! MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } foreach (var ur in MySINnerFile.SiNnerMetaData.Visibility.UserRights) { if (SINnersOptions.SINnerVisibility.UserRights.Any(a => a.Id == ur.Id)) { ur.Id = Guid.NewGuid(); } } if (!File.Exists(MyCharacter.FileName)) { return(null); } var tempDir = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value.ToString()); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } foreach (var file in Directory.GetFiles(tempDir)) { FileInfo fi = new FileInfo(file); if (fi.LastWriteTimeUtc < MyCharacter.FileLastWriteTime) { File.Delete(file); } } var summary = new frmCharacterRoster.CharacterCache(MyCharacter.FileName); MySINnerFile.JsonSummary = JsonConvert.SerializeObject(summary); MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; var tempfile = Path.Combine(tempDir, summary.FileName); if (!File.Exists(tempfile)) { File.Copy(MyCharacter.FileName, tempfile); } ; if (File.Exists(zipPath)) { ZipFilePath = zipPath; FileInfo fi = new FileInfo(zipPath); if (fi.LastWriteTimeUtc < MyCharacter.FileLastWriteTime) { File.Delete(zipPath); } } if (!File.Exists(zipPath)) { ZipFile.CreateFromDirectory(tempDir, zipPath); ZipFilePath = zipPath; } return(zipPath); }
public CharacterExtended(Character character, string fileElement = null, SINner mySINnerLoading = null, frmCharacterRoster.CharacterCache myCharacterCache = null) : this(character, fileElement, myCharacterCache) { if (mySINnerLoading != null) { var backup = MySINnerFile; MySINnerFile = mySINnerLoading; if (MySINnerFile?.SiNnerMetaData != null) { if (MySINnerFile.SiNnerMetaData.Id == null || MySINnerFile.SiNnerMetaData.Id == Guid.Empty) { MySINnerFile.SiNnerMetaData.Id = backup.SiNnerMetaData.Id; } if (MySINnerFile.SiNnerMetaData.Tags?.Count < backup?.SiNnerMetaData?.Tags?.Count) { MySINnerFile.SiNnerMetaData.Tags = new List <Tag>(backup.SiNnerMetaData.Tags); } } } }
public async Task <string> PrepareModel() { string zipPath = Path.Combine(Properties.Settings.Default.TempDownloadPath, "SINner", MySINnerFile.Id + ".chum5z"); if (PluginHandler.MySINnerLoading != null) { if (MySINnerIds.ContainsKey(MyCharacter.FileName)) { MySINnerIds.Remove(MyCharacter.FileName); } } object sinidob = null; if (MyCharacterCache?.MyPluginDataDic?.TryGetValue("SINnerId", out sinidob) == true) { MySINnerFile.Id = (Guid)sinidob; } else if (MySINnerIds.TryGetValue(MyCharacter.FileName, out var singuid)) { MySINnerFile.Id = singuid; } else { if (PluginHandler.MySINnerLoading != null) { MySINnerFile = PluginHandler.MySINnerLoading; MySINnerIds.Add(MyCharacter.FileName, MySINnerFile.Id.Value); if (File.Exists(zipPath)) { return(zipPath); } } else { if (String.IsNullOrEmpty(MySINnerFile.Alias)) { MySINnerFile.Alias = MyCharacter.Alias; if (String.IsNullOrEmpty(MySINnerFile.Alias)) { MySINnerFile.Alias = MyCharacter.Name; } } var client = StaticUtils.GetClient(); HttpOperationResponse <ResultSinnerGetOwnedSINByAlias> res = null; try { res = await client.SinnerGetOwnedSINByAliasWithHttpMessagesAsync(MySINnerFile.Alias); } catch (SerializationException e) { e.Data.Add("Alias", MySINnerFile.Alias); e.Data.Add("MySINnerFile.Id", MySINnerFile.Id); e.Data.Add("User", ChummerHub.Client.Properties.Settings.Default.UserEmail); e.Data.Add("ResponseContent", e.Content); throw; } catch (Exception e) { e.Data.Add("Alias", MySINnerFile.Alias); e.Data.Add("MySINnerFile.Id", MySINnerFile.Id); e.Data.Add("User", ChummerHub.Client.Properties.Settings.Default.UserEmail); throw; } if (res.Response.StatusCode == HttpStatusCode.NotFound) { MySINnerFile.Id = Guid.NewGuid(); } else if (res.Response.StatusCode == HttpStatusCode.OK) { string message = MySINnerFile.Alias + " is already available online, but the current client uses a local version of that file." + Environment.NewLine + Environment.NewLine; message += "Do you want to use only one version and update it through SINner?" + Environment.NewLine + Environment.NewLine; message += "YES:\tuse the same (= only one) version and get" + Environment.NewLine; message += "\tupdates on this client when you save" + Environment.NewLine; message += "\tthe chummer on another client(recommended)" + Environment.NewLine + Environment.NewLine; message += "NO:\tgenerate a new \"Fork\" of this character," + Environment.NewLine; message += "\tthat is not linked to the online one" + Environment.NewLine; message += "\tand use this new version from now on," + Environment.NewLine; message += "but only on this client (NOT recommended)." + Environment.NewLine + Environment.NewLine; var result = PluginHandler.MainForm.ShowMessageBox(message, "SIN already found online", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); if (result == DialogResult.Cancel) { throw new ArgumentException("User aborted perparation for upload!"); } else if (result == DialogResult.No) { MySINnerFile.Id = Guid.NewGuid(); } else { var list = res.Body.MySINners; foreach (var sin in list) { if (sin.Id != null) { MySINnerFile.Id = sin.Id; break; } } } } } if (MySINnerIds.ContainsKey(MyCharacter.FileName)) { MySINnerIds.Remove(MyCharacter.FileName); } MySINnerIds.Add(MyCharacter.FileName, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } zipPath = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value + ".chum5z"); MySINnerFile.UploadDateTime = DateTime.Now; MySINnerFile.Alias = MyCharacter.CharacterName; if (MySINnerFile.SiNnerMetaData.Visibility?.UserRights == null) { MySINnerFile.SiNnerMetaData.Visibility = new SINners.Models.SINnerVisibility { Id = Guid.NewGuid(), IsGroupVisible = ucSINnersOptions.SINnerVisibility.IsGroupVisible, IsPublic = ucSINnersOptions.SINnerVisibility.IsPublic, UserRights = ucSINnersOptions.SINnerVisibility.UserRights }; } if (MySINnerFile.SiNnerMetaData.Visibility.Id == ucSINnersOptions.SINnerVisibility.Id) { //make the visibility your own and dont reuse the id from the general options! MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } foreach (var visnow in ucSINnersOptions.SINnerVisibility.UserRights) { if (!MySINnerFile.SiNnerMetaData.Visibility.UserRights.Any(a => a.EMail?.ToLowerInvariant() == visnow.EMail.ToLowerInvariant())) { MySINnerFile.SiNnerMetaData.Visibility.UserRights.Add(visnow); } } foreach (var ur in MySINnerFile.SiNnerMetaData.Visibility.UserRights) { if (ucSINnersOptions.SINnerVisibility.UserRights.Any(a => a.Id == ur.Id)) { ur.Id = Guid.NewGuid(); } } var tempDir = Path.Combine(Path.GetTempPath(), "SINner", MySINnerFile.Id.Value.ToString()); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } foreach (var file in Directory.GetFiles(tempDir)) { FileInfo fi = new FileInfo(file); if (fi.LastWriteTimeUtc < MyCharacter.FileLastWriteTime) { File.Delete(file); } } var summary = new frmCharacterRoster.CharacterCache(MyCharacter.FileName); if (String.IsNullOrEmpty(summary.FileName)) { return(null); } var tempfile = Path.Combine(tempDir, summary.FileName); if (File.Exists(tempfile)) { File.Delete(tempfile); } bool readCallback = false; if (MyCharacter.OnSaveCompleted != null) { readCallback = true; MyCharacter.OnSaveCompleted = null; } if (!File.Exists(MyCharacter.FileName)) { string path2 = MyCharacter.FileName.Substring(0, MyCharacter.FileName.LastIndexOf('\\')); CreateDirectoryRecursively(path2); MyCharacter.Save(MyCharacter.FileName, false, false); } MyCharacter.Save(tempfile, false, false); MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (readCallback) { MyCharacter.OnSaveCompleted += PluginHandler.MyOnSaveUpload; } if (File.Exists(zipPath)) { try { File.Delete(zipPath); } catch (IOException e) { Log.Warn(e, "Could not delete File " + zipPath + ": " + e.Message); } } if (!File.Exists(zipPath)) { ZipFile.CreateFromDirectory(tempDir, zipPath); ZipFilePath = zipPath; } return(zipPath); }
public CharacterExtended(Character character, string fileElement = null, frmCharacterRoster.CharacterCache myCharacterCache = null) { MyCharacter = character; MyCharacterCache = myCharacterCache; if (!string.IsNullOrEmpty(fileElement)) { try { MySINnerFile = JsonConvert.DeserializeObject <SINner>(fileElement); } catch (Exception e) { Log.Error(e); } } if (MySINnerFile == null) { MySINnerFile = new SINner { Language = GlobalOptions.Language }; //MySINnerFile.MyExtendedAttributes = new SINnerExtended(MySINnerFile); } if (MySINnerFile.SiNnerMetaData == null) { MySINnerFile.SiNnerMetaData = new SINnerMetaData { Id = Guid.NewGuid(), Tags = new List <Tag>(), Visibility = new SINners.Models.SINnerVisibility() { IsGroupVisible = true, IsPublic = true } }; } if (!string.IsNullOrEmpty(Properties.Settings.Default.SINnerVisibility)) { MySINnerFile.SiNnerMetaData.Visibility = JsonConvert.DeserializeObject <SINners.Models.SINnerVisibility>(Properties.Settings.Default.SINnerVisibility); } if (MySINnerFile.SiNnerMetaData.Visibility?.Id == null) { if (MySINnerFile.SiNnerMetaData.Visibility != null) { MySINnerFile.SiNnerMetaData.Visibility.Id = Guid.NewGuid(); } } var cache = new frmCharacterRoster.CharacterCache(character.FileName); MySINnerFile.LastChange = MyCharacter.FileLastWriteTime; if (MySINnerIds.TryGetValue(MyCharacter.FileName, out var singuid)) { MySINnerFile.Id = singuid; } else { MySINnerFile.Id = Guid.NewGuid(); MySINnerIds.Add(MyCharacter.FileName, MySINnerFile.Id.Value); MySINnerIds = MySINnerIds; //Save it! } }
public async Task <IEnumerable <TreeNode> > GetCharacterRosterTreeNode(frmCharacterRoster frmCharRoster, bool forceUpdate) { try { ContextMenuStrip myContextMenuStrip = null; List <TreeNode> list = new List <TreeNode>(); using (new CursorWait(true, frmCharRoster)) { frmCharRoster.DoThreadSafe(() => { myContextMenuStrip = frmCharRoster.CreateContextMenuStrip(); var menulist = myContextMenuStrip.Items.Cast <ToolStripMenuItem>().ToList(); foreach (var item in menulist) { switch (item.Name) { case "tsToggleFav": myContextMenuStrip.Items.Remove(item); break; case "tsCloseOpenCharacter": myContextMenuStrip.Items.Remove(item); break; case "tsSort": myContextMenuStrip.Items.Remove(item); break; case "tsDelete": ToolStripMenuItem newDelete = new ToolStripMenuItem(item.Text, item.Image); newDelete.Click += frmCharRoster.tsDelete_Click; myContextMenuStrip.Items.Add(newDelete); break; default: break; } } ToolStripMenuItem newShare = new ToolStripMenuItem("Share") { Name = "tsShareChummer", Tag = "Menu_ShareChummer", Text = "Share chummer", Size = new System.Drawing.Size(177, 22), Image = global::Chummer.Properties.Resources.link_add }; newShare.Click += NewShareOnClick; myContextMenuStrip.Items.Add(newShare); LanguageManager.TranslateWinForm(GlobalOptions.Language, myContextMenuStrip); }); if (ChummerHub.Client.Properties.Settings.Default.UserModeRegistered == true) { Log.Info("Loading CharacterRoster from SINners..."); Func <Task <HttpOperationResponse <ResultAccountGetSinnersByAuthorization> > > myMethodName = async() => { try { var client = StaticUtils.GetClient(); var ret = await client.GetSINnersByAuthorizationWithHttpMessagesAsync(); return(ret); } catch (Exception e) { Log.Error(e); throw; } }; var res = await ChummerHub.Client.Backend.Utils.GetCharacterRosterTreeNode(forceUpdate, myMethodName); if (res == null) { throw new ArgumentException("Could not load owned SINners from WebService."); } list = res.ToList(); } var myadd = MyTreeNodes2Add.ToList(); var mysortadd = (from a in myadd orderby a.Value.Text select a).ToList(); foreach (var addme in mysortadd) { list.Add(addme.Value); } AddContextMenuStripRecursive(list, myContextMenuStrip); return(list); } } catch (Microsoft.Rest.SerializationException e) { if (e.Content.Contains("Log in - ChummerHub")) { TreeNode node = new TreeNode("Online, but not logged in!") { ToolTipText = "Please log in (Options -> Plugins -> Sinners (Cloud) -> Login", Tag = e }; Log.Warn(e, "Online, but not logged in!"); return(new List <TreeNode>() { node }); } else { Log.Error(e); TreeNode node = new TreeNode("Error: " + e.Message) { ToolTipText = e.ToString(), Tag = e }; return(new List <TreeNode>() { node }); } } catch (Exception e) { Log.Error(e); TreeNode node = new TreeNode("SINners Error: please log in") { ToolTipText = e.ToString(), Tag = e }; var objCache = new frmCharacterRoster.CharacterCache { ErrorText = e.ToString() }; node.Tag = objCache; return(new List <TreeNode>() { node }); } }
private static CharacterExtended GetMyCe(Character input) { CharacterShared found = null; if (MainForm?.OpenCharacterForms != null) { foreach (CharacterShared a in (MainForm?.OpenCharacterForms)) { if (a?.CharacterObject != input) { continue; } found = a; break; } } TabPage sinnertab = null; if (found != null) { TabControl.TabPageCollection myCollection = null; switch (found) { case frmCreate foundcreate: myCollection = foundcreate.TabCharacterTabs.TabPages; break; case frmCareer foundcareer: myCollection = foundcareer.TabCharacterTabs.TabPages; break; } if (myCollection == null) { return(null); } foreach (TabPage tab in myCollection) { if (tab.Name == "SINners") { sinnertab = tab; break; } } } CharacterExtended ce; frmCharacterRoster.CharacterCache myCharacterCache = new frmCharacterRoster.CharacterCache(input?.FileName); if (sinnertab == null) { ce = new CharacterExtended(input, null, null, myCharacterCache); } else { ucSINnersUserControl myUcSIN = null; foreach (ucSINnersUserControl ucSIN in sinnertab.Controls) { myUcSIN = ucSIN; break; } ce = myUcSIN == null ? new CharacterExtended(input, null, null, myCharacterCache) : myUcSIN.MyCE; } return(ce); }
public CharacterExtended(Character character, string fileElement = null, SINner mySINnerLoading = null, frmCharacterRoster.CharacterCache myCharacterCache = null) : this(character, fileElement, myCharacterCache) { if (mySINnerLoading != null) { var backup = this._MySINnerFile; this._MySINnerFile = mySINnerLoading; if ((this._MySINnerFile?.SiNnerMetaData?.Id == null) || (this._MySINnerFile.SiNnerMetaData?.Id == Guid.Empty)) { if (this._MySINnerFile?.SiNnerMetaData != null) { this._MySINnerFile.SiNnerMetaData.Id = backup.SiNnerMetaData.Id; } } if (this._MySINnerFile?.SiNnerMetaData?.Tags?.Count() < backup?.SiNnerMetaData?.Tags?.Count()) { this._MySINnerFile.SiNnerMetaData.Tags = backup.SiNnerMetaData.Tags; } } }