public async Task snippets(params string[] args) { if (!HasExecutePermission) return; if (args.Length == 0) { EmbedBuilder b = new EmbedBuilder() { Title = "Ticket Snippets", Color = Color.DarkPurple, Description = "To add a snippet:\n`!snippets add <SnippetName> <SnippetValue>`\nTo Remove a snippet:\n`!snippets remove <SnippetName>`" }; foreach(var snip in Snippets) b.AddField(snip.Key, snip.Value); await Context.Channel.SendMessageAsync("", false, b.Build()); } else { if(args.Length >= 2) { switch (args[0].ToLower()) { case "add": { string snip = args[1]; string snipval = string.Join(' ', args.Skip(2)); if (!Snippets.ContainsKey(snip)) { if(snipval.Length > 1024) { await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = $"wOaH bUddY", Description = $"Your snippet is tooooooo long! try adding one that less than 1000 characters" }.Build()); return; } Snippets.Add(snip, snipval); Global.SaveSnippets(); await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = $"Added **{snip}**", Description = $"Succesfully added **{snip}** to the snippets" }.Build()); } else { await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = $"That snippet exists!", Description = $"someone already added that snippet!" }.Build()); } } break; case "remove": { string snip = args[1]; if (Snippets.ContainsKey(snip)) { //remove snippet Snippets.Remove(snip); Global.SaveSnippets(); await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = $"Removed **{snip}**", Description = $"Successfully removed the snippet {snip}", Color = Color.Green }.Build()); } else { await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = "uhm.. wat?", Description = "That snippet doesnt exist, please do `!snippets` to view the current snippets!", Color = Color.Red }.Build()); return; } } break; default: { await Context.Channel.SendMessageAsync("", false, new EmbedBuilder() { Title = "uhm.. wat?", Description = "that command is unreconized :/", Color = Color.Red }.Build()); } break; } } } }
protected IRichEditDocumentServer AddSpreadTable(ArgumentCollection arguments) { if (arguments.Count <= 0) { throw new Exception("'DOCVARIABLE SPREADTABLE' requires filename as first argument."); } if (arguments.Count <= 1) { throw new Exception("'DOCVARIABLE SPREADTABLE' requires table or range as second argument."); } var fileName = arguments[0].Value; if (string.IsNullOrWhiteSpace(fileName)) { throw new Exception("DOCVARIABLE SPREADTABLE does not contain valid filename."); } object snippet = null; if (Snippets?.ContainsKey(fileName) ?? false) { snippet = Snippets[fileName]; if (snippet is SCSpreadsheetContext) { } else { throw new Exception($"Specified snippet '{fileName}' is not supported. Snippet shall be Spreadsheet."); } } else if (string.Compare(fileName, "$SPREAD", true) == 0) { //Do nothing } else { fileName = Project.Current.MapPath(fileName); } if (snippet == null && string.Compare(fileName, "$SPREAD", true) != 0 && !File.Exists(fileName)) { throw new Exception($"File '{fileName}' does not exist."); } var tableName = arguments[1].Value; bool rebuild = false; if (arguments.Count > 2) { var properties = Utils.SplitNameValueString(arguments[2].Value, ';'); foreach (var prop in properties) { if (string.IsNullOrWhiteSpace(prop.Key)) { continue; } switch (prop.Key.ToLower()) { case "rebuild": case "recalculate": case "recalc": var valueRebuild = prop.Value; if (string.IsNullOrWhiteSpace(valueRebuild)) { valueRebuild = bool.TrueString; } rebuild = bool.Parse(valueRebuild); break; } } } bool needDispose = true; IWorkbook workbook = null; try { //using var workbook = SpreadsheetUtils.CreateWorkbook(); if (snippet is SCSpreadsheetContext spreadsheetContext) { workbook = SpreadsheetUtils.CreateWorkbook(); workbook.Append(spreadsheetContext.Workbook); } else if (string.Compare(fileName, "$SPREAD", true) == 0) { needDispose = false; workbook = this.DefaultSpreadsheet; if (workbook == null) { throw new Exception("Current script does not support default (Host) spreadsheet."); } } else { workbook = SpreadsheetUtils.CreateWorkbook(); workbook.LoadDocument(fileName); } IRichEditDocumentServer result = null; if (workbook == this.DefaultSpreadsheet && NeedSynchronizeDefaultSpreadsheet) { SCDispatcherService.UIDispatcherServer.Invoke(() => ProcessWorkbook(workbook, tableName, rebuild, out result)); } else { ProcessWorkbook(workbook, tableName, rebuild, out result); } return(result); } finally { if (needDispose && workbook != null) { workbook.Dispose(); } }
protected IRichEditDocumentServer AddImage(ArgumentCollection arguments) { if (arguments.Count <= 0) { throw new Exception("'DOCVARIABLE IMAGE' requires filename as first argument."); } var fileName = arguments[0].Value; if (string.IsNullOrWhiteSpace(fileName)) { throw new Exception("DOCVARIABLE IMAGE does not contain valid filename."); } object snippet = null; if (Snippets?.ContainsKey(fileName) ?? false) { snippet = Snippets[fileName]; if (snippet is Image) { } else { throw new Exception($"Specified snippet '{fileName}' is not supported. Snippet shall be either Book or System.Drawing.Image."); } } else { fileName = Project.Current.MapPath(fileName); } if (snippet == null && !File.Exists(fileName)) { throw new Exception($"File '{fileName}' does not exist."); } using (new UsingProcessor(() => CheckNestedFile(fileName), () => RemoveNestedFile(fileName))) { var image = snippet as Image ?? Bitmap.FromFile(fileName); float?scale = null, scaleX = null, scaleY = null; if (arguments.Count > 1) { var properties = Utils.SplitNameValueString(arguments[1].Value, ';'); foreach (var prop in properties) { if (string.IsNullOrWhiteSpace(prop.Key)) { continue; } switch (prop.Key.ToLower()) { #pragma warning disable CRRSP06 // A misspelled word has been found case "dpi": var dpi = float.Parse(prop.Value, CultureInfo.InvariantCulture); if (image is Bitmap bmp) { bmp.SetResolution(dpi, dpi); } break; case "scale": scale = float.Parse(prop.Value, CultureInfo.InvariantCulture); break; case "scalex": scaleX = float.Parse(prop.Value, CultureInfo.InvariantCulture); break; case "scaley": scaleY = float.Parse(prop.Value, CultureInfo.InvariantCulture); break; #pragma warning restore CRRSP06 // A misspelled word has been found } } } var server = new RichEditDocumentServer(); var document = server.Document; var docImage = document.Images.Append(image); if (scale.HasValue) { docImage.ScaleX = docImage.ScaleY = scale.Value; } else { if (scaleX.HasValue) { docImage.ScaleX = scaleX.Value; } if (scaleY.HasValue) { docImage.ScaleY = scaleY.Value; } } return(server); } }
protected IRichEditDocumentServer AddDocument(ArgumentCollection arguments) { if (arguments.Count <= 0) { throw new Exception("'DOCVARIABLE FILE' requires filename as first argument."); } var fileName = arguments[0].Value; if (string.IsNullOrWhiteSpace(fileName)) { throw new Exception("DOCVARIABLE FILE does not contain valid filename."); } object snippet = null; if (Snippets?.ContainsKey(fileName) ?? false) { snippet = Snippets[fileName]; if (snippet is InternalBook) { } else if (snippet is SCBookContext) { } else if (snippet is Image) { } else { throw new Exception($"Specified snippet '{fileName}' is not supported. Snippet shall be either Book or System.Drawing.Image."); } } else { fileName = Project.Current.MapPath(fileName); } if (snippet == null && !File.Exists(fileName)) { throw new Exception($"File '{fileName}' does not exist."); } bool rebuild = false; if (arguments.Count > 1) { var properties = Utils.SplitNameValueString(arguments[1].Value, ';'); foreach (var prop in properties) { if (string.IsNullOrWhiteSpace(prop.Key)) { continue; } switch (prop.Key.ToLower()) { case "rebuild": case "recalculate": case "recalc": var valueRecalc = prop.Value; if (string.IsNullOrWhiteSpace(valueRecalc)) { valueRecalc = bool.TrueString; } rebuild = bool.Parse(valueRecalc); break; } } } using (new UsingProcessor(() => CheckNestedFile(fileName), () => RemoveNestedFile(fileName))) { var server = new RichEditDocumentServer(); if (snippet != null) { InternalBook book = null; if (snippet is InternalBook scBook) { book = scBook; } else if (snippet is SCBookContext bookContext) { book = bookContext.SCBook; } if (book != null) { server.Document.AppendDocumentContent(book.Document.Range); } else if (snippet is Image image) { server.Document.Images.Append(image); } else { throw new Exception($"Specified snippet '{fileName}' is not supported. Snippet shall be either Book or System.Drawing.Image."); } } else { var ext = Path.GetExtension(fileName)?.ToLower(); switch (ext) { case "markdown": #pragma warning disable CRRSP06 // A misspelled word has been found case "mdown": #pragma warning restore CRRSP06 // A misspelled word has been found case "md": var content = File.ReadAllText(fileName); var htmlContent = Markdown.ToHtml(content); server.Document.AppendHtmlText(htmlContent, DevExpress.XtraRichEdit.API.Native.InsertOptions.KeepSourceFormatting); break; default: server.LoadDocument(fileName); break; } } if (rebuild) { server.CalculateDocumentVariable += CalculateDocumentVariable; using (new UsingProcessor(() => server.CalculateDocumentVariable += CalculateDocumentVariable, () => server.CalculateDocumentVariable -= CalculateDocumentVariable)) { server.Document.UpdateAllFields(); } } return(server); } }