static void _TransactionRecord(string UserName, string DataBase, string SQL, string Type, string Reason) { if (DB_Info.ContainsKey(DataBase)) //Prevents Out of bound errors { string URI = _DBInfo[DataBase].Path; string _SQL = "INSERT INTO Transactions (USER,DB,SQL,TYPE,Reason,\"UTC DATE\",\"UTC TIME\",PATH,SNAME) VALUES('" + UserName + "','" + DataBase + "','" + SQL.Replace("'", "''") + "','" + Type + "','" + Reason.Replace("'", "''") + "',Date(),TIME(),'" + URI + "','" + Path.GetDirectoryName(URI) + "');"; LDDataBase.Command(GlobalStatic.TransactionDB, _SQL); } }
public static int LatestUpdate() { int StackReference = Stack.Add("Updater.LatestUpdate()"); if (string.IsNullOrWhiteSpace(UpdaterDB)) { UpdaterDB = LDDataBase.ConnectSQLite(GlobalStatic.UpdaterDBpath); } Primitive QueryItems = LDDataBase.Query(UpdaterDB, $"SELECT * FROM updates WHERE PRODUCTID = '{ GlobalStatic.ProductID }';", null, true); int.TryParse(QueryItems[1]["VERSION"], out int LatestVersion); Stack.Exit(StackReference); return(LatestVersion); }
static string[] FetchLinks() { int StackPointer = Stack.Add("Updater.DownloadLinks"); if (string.IsNullOrWhiteSpace(UpdaterDB)) { UpdaterDB = LDDataBase.ConnectSQLite(GlobalStatic.UpdaterDBpath); } Primitive QueryItems = LDDataBase.Query(UpdaterDB, $"SELECT * FROM updates WHERE PRODUCTID = '{ GlobalStatic.ProductID }';", null, true); string[] Locations = new string[2]; Locations[0] = QueryItems[1]["URL"]; Locations[1] = QueryItems[1]["URL2"]; Stack.Exit(StackPointer); return(Locations); }
public static void MemoryDB(EnginesMode Mode) { int StackPointer = Stack.Add($"Engines.Load.MemoryDB({Mode})"); switch (Mode) { case EnginesMode.SQLITE: LDDataBase.Connection = "Data Source=:memory:;Version=3;New=True;"; AddToList("", LDDataBase.ConnectSQLite(""), "SQLITE MEM DB", EnginesMode.SQLITE, "URI=;"); LDDataBase.Connection = string.Empty; break; default: throw new NotImplementedException(); } Stack.Exit(StackPointer); }
/// <summary> /// Executes a Command against a database. /// </summary> /// <param name="Database">Database. Use the Database name you recieve from LoadDB</param> /// <param name="SQL"></param> /// <param name="User">UserName of the requested username</param> /// <param name="Explanation">Any notes for transactions</param> /// <param name="RunParser">Run Custom Parser... Yet to be implemented</param> /// <returns></returns> static int Command(string Database, string SQL, string User, string Explanation) { int StackPointer = Stack.Add($"Engines.Command({Database})"); _UTC_Start.Add(DateTime.UtcNow.ToString("hh:mm:ss tt")); Stopwatch CommandTime = Stopwatch.StartNew(); if (GlobalStatic.Transaction_Commands == true) { TransactionRecord(User, Database, SQL, Type.Command, Explanation); } int Updated = LDDataBase.Command(Database, SQL); _Type_Referer.Add(Type.Command); _Timer.Add(CommandTime.ElapsedMilliseconds); _Explanation.Add(Explanation); _User.Add(User); Stack.Exit(StackPointer); return(Updated); }
static Primitive Query(string DataBase, string SQL, string ListView, bool FetchRecords, string UserName, string Explanation) //Expand { int StackPointer = Stack.Add("Engines.Query()"); _UTC_Start.Add(DateTime.UtcNow.ToString("hh:mm:ss tt")); Stopwatch QueryTime = Stopwatch.StartNew(); if (SQL.StartsWith(".")) { Emulator(DB_Info[DataBase].Engine, DataBase, SQL, UserName, ListView); Stack.Exit(StackPointer); return(null); } if (GlobalStatic.Transaction_Query == true) { TransactionRecord(UserName, DataBase, SQL, Type.Query, Explanation); } if (UseCache == false) { _CacheStatus.Add("Disabled"); } else if (FetchRecords == false) { //The Cache can never be hit :( _CacheStatus.Add("NA"); } Primitive QueryResults; if (UseCache == false && FetchRecords == true && string.IsNullOrWhiteSpace(ListView) == true && _Cache.ContainsKey(SQL) == true) { //Read data back from Cache _CacheStatus.Add("Hit!"); QueryResults = _Cache[SQL].Results; _Cache[SQL].LifeTime -= 1; if (_Cache[SQL].LifeTime <= 0) { _Cache.Remove(SQL); } } else { //Data is not in Cache :( QueryResults = LDDataBase.Query(DataBase, SQL, ListView, FetchRecords); if (UseCache == true && FetchRecords == true && _Cache.ContainsKey(SQL) == false) { CacheEntry cache = new CacheEntry { LifeTime = 10, Results = QueryResults }; _Cache.Add(SQL, cache); _CacheStatus.Add("Results added to cache"); } else if (UseCache == true && _Cache.ContainsKey(SQL)) { _CacheStatus.Add("Error"); } } _Type_Referer.Add(Type.Query); switch (Explanation) { case "SCHEMA-PRIVATE": case "SCHEMA": break; default: _Last_NonSchema_Query.Add(SQL); break; } _Last_Query.Add(SQL); _Timer.Add(QueryTime.ElapsedMilliseconds); _Explanation.Add(Explanation); _User.Add(UserName); Stack.Exit(StackPointer); return(QueryResults); }
public static string DB(EnginesMode Mode, Dictionary <string, string> Data, string ShortName) { //MAKE SURE The CurrentMode is always currently changed. int StackPointer = Stack.Add($"Engines.Load.DB({Mode},{ShortName})"); string HashCode = Data.ToPrimitiveArray(); //If DB is already in the list... if (_DB_Hash.ContainsKey(HashCode)) { CurrentDatabase = _DB_Hash[HashCode]; DatabaseShortname = ShortName; Stack.Exit(StackPointer); return(CurrentDatabase); } //New Database creation code switch (Mode) { case EnginesMode.MySQL: CurrentDatabase = LDDataBase.ConnectMySQL(Data["Server"], Data["User"], Data["Password"], Data["Database"]); _DB_Hash.Add(HashCode, CurrentDatabase); Stack.Exit(StackPointer); return(CurrentDatabase); case EnginesMode.ODBC: CurrentDatabase = LDDataBase.ConnectOdbc(Data["Driver"], Data["Server"], Data["Port"], Data["User"], Data["Password"], Data["Option"], Data["Database"]); _DB_Hash.Add(HashCode, CurrentDatabase); Stack.Exit(StackPointer); return(CurrentDatabase); case EnginesMode.OLEDB: CurrentDatabase = LDDataBase.ConnectOleDb(Data["Provider"], Data["Server"], Data["Database"]); _DB_Hash.Add(HashCode, CurrentDatabase); Stack.Exit(StackPointer); return(CurrentDatabase); case EnginesMode.SQLITE: //Add Custom Password handling code here if (Data.ContainsKey("Password")) { LDDataBase.Connection = $"Data Source{Data["URI"]};Password={Data["Password"]}"; } if (Directory.Exists(Path.GetDirectoryName(Data["URI"]))) { string Database = LDDataBase.ConnectSQLite(Data["URI"]); AddToList(Data["URI"], Database, ShortName, EnginesMode.SQLITE); Settings.Save(); CurrentDatabase = Database; _DB_Hash.Add(HashCode, CurrentDatabase); DB_Info[Database].Connections.SQLITE.Bind(); Stack.Exit(StackPointer); return(Database); } Stack.Exit(StackPointer); return(null); case EnginesMode.SQLSERVER: CurrentDatabase = LDDataBase.ConnectSqlServer(Data["Server"], Data["Database"]); _DB_Hash.Add(HashCode, CurrentDatabase); Stack.Exit(StackPointer); return(CurrentDatabase); default: Stack.Exit(StackPointer); return("Incorrect Paramters"); } }
public static void EditTable(string Table, string Control) { LDDataBase.EditTable(CurrentDatabase, Table, Control); }
/// <summary> /// Handles Main Menu /// </summary> /// <param name="Item">Localized Menu Item</param> public static void Menu(string Item) { int StackPointer = Stack.Add($"Handlers.Menu({Item})"); //Switch and Enum cannot be used because values can change //File Menu Items if (Item == Language.Localization["New"]) { string Path = LDDialogs.SaveFile(GlobalStatic.Extensions, GlobalStatic.LastFolder); if (!string.IsNullOrWhiteSpace(Path)) { GlobalStatic.ListView = null; GlobalStatic.Dataview = null; GlobalStatic.LastFolder = System.IO.Path.GetDirectoryName(Path); Settings.Load(GlobalStatic.RestoreSettings, GlobalStatic.SettingsPath); Settings.Save(); LDDataBase.ConnectSQLite(Path); Engines.Load.Sqlite(Path); Events.LogMessage("Created DB :" + Path, Language.Localization["Application"]); UI.PreMainMenu(); UI.MainMenu(); LDDataBase.Connection = null; } Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Open"]) { GlobalStatic.ListView = null; GlobalStatic.Dataview = null; Settings.Load(GlobalStatic.RestoreSettings, GlobalStatic.SettingsPath); //Reloads Settings string Path = UI.GetPath(Engines.EnginesMode.SQLITE); if (!string.IsNullOrWhiteSpace(Path)) { Engines.Load.Sqlite(Path); GlobalStatic.Settings["LastFolder"] = System.IO.Path.GetDirectoryName(Path); Settings.Save(); UI.PreMainMenu(); UI.MainMenu(); int Index = Engines.DB_Name.IndexOf(Engines.CurrentDatabase) + 1; Handlers.ComboBox.CB(GlobalStatic.ComboBox["Database"], Index); LDControls.ComboBoxSelect(GlobalStatic.ComboBox["Database"], Index); } Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Define New Table"]) { Engines.Cache.Clear(); UI.CreateTableUI(); } else if (Item == Language.Localization["New in Memory Db"]) { Engines.Load.MemoryDB(Engines.EnginesMode.SQLITE); UI.PreMainMenu(); UI.MainMenu(); } else if (Item == Language.Localization["Create Statistics Page"]) { string Name = string.Format("\"Statistics of {0}\"", Engines.CurrentTable.SanitizeFieldName()); Engines.Transform.CreateStatisticsTable(Engines.CurrentDatabase, Engines.CurrentTable, Name, Export.GenerateSchemaFromLastQuery()); Engines.QuerySettings QS = new Engines.QuerySettings { Database = Engines.CurrentDatabase, SQL = $"SELECT * FROM {Name};", ListView = GlobalStatic.ListView, User = GlobalStatic.UserName, Explanation = Language.Localization["Statistics Page"] }; Engines.Query(QS); Engines.GetSchema(Engines.CurrentDatabase); Engines.SetDefaultTable(Name.SanitizeFieldName()); Engines.GetColumnsofTable(Engines.CurrentDatabase, Name); ComboBox.Bind(); } //Main else if (Item == Language.Localization["View"] || Item == Language.Localization["View"] + " ") { Controls.HideControl(GlobalStatic.Dataview); GlobalStatic.Dataview = null; if (GlobalStatic.ListView == null) { bool Bold = GraphicsWindow.FontBold; GraphicsWindow.FontBold = false; GlobalStatic.ListView = LDControls.AddListView(GlobalStatic.Listview_Width, GlobalStatic.Listview_Height, null); LDControls.AddContextMenu(GlobalStatic.ListView, "1=Ascend;2=Descend;3=Random();", null); Controls.Move(GlobalStatic.ListView, 10, 35); UI.DisplayResults(); GraphicsWindow.FontBold = Bold; } else { UI.ShowDisplayResults(); Controls.ShowControl(GlobalStatic.ListView); } if (!string.IsNullOrEmpty(Engines.CurrentTable)) { Engines.QuerySettings QS = new Engines.QuerySettings { Database = Engines.CurrentDatabase, SQL = $"SELECT * FROM {Engines.CurrentTable};", ListView = GlobalStatic.ListView, User = Language.Localization["App"], Explanation = Language.Localization["View Function"] }; Engines.Query(QS); } Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Save"]) { if (!string.IsNullOrEmpty(Engines.CurrentDatabase) && !string.IsNullOrEmpty(GlobalStatic.Dataview)) { string SaveStatus = LDDataBase.SaveTable(Engines.CurrentDatabase, GlobalStatic.Dataview); Events.LogMessagePopUp("The save was : " + SaveStatus, Language.Localization["UI"], "Save Status"); } else { Events.LogMessagePopUp(Language.Localization["Dataview Error"], Language.Localization["UI"], "Save Error"); } Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Edit"]) { if (!string.IsNullOrEmpty(Engines.CurrentDatabase)) { switch (GlobalStatic.SortBy) { case 2: Events.LogMessagePopUp(Language.Localization["Views Read Only"], Language.Localization["UI"], Language.Localization["Access Denied"]); break; case 4: Events.LogMessagePopUp(Language.Localization["Master Table Protected"], Language.Localization["UI"], Language.Localization["Access Denied"]); break; default: Controls.HideControl(GlobalStatic.ListView); if (String.IsNullOrEmpty(GlobalStatic.Dataview)) { GlobalStatic.Dataview = LDControls.AddDataView(GlobalStatic.Listview_Width, GlobalStatic.Listview_Height, null); Controls.Move(GlobalStatic.Dataview, 10, 35); } else { Controls.ShowControl(GlobalStatic.Dataview); } UI.HideDisplayResults(); Engines.EditTable(Engines.CurrentTable, GlobalStatic.Dataview); break; } } else { Events.LogMessagePopUp(Language.Localization["Error No DB"], Language.Localization["UI"], Language.Localization["Edit"]); } Stack.Exit(StackPointer); return; } //Import else if (Item == Language.Localization["CSV"]) { string Path = LDDialogs.OpenFile("csv", null); if (!string.IsNullOrWhiteSpace(Path)) { //Outputted to a temporary path in the event the import doesn't work... string TempPath = System.IO.Path.GetTempFileName().Replace(".tmp", ".sql"); Stopwatch CSV = new Stopwatch(); CSV.Start(); Import.CSV(Path, TempPath); CSV.Stop(); Stopwatch SQL = new Stopwatch(); SQL.Start(); Import.SQL(Engines.CurrentDatabase, TempPath); SQL.Stop(); string ToolTip = string.Format("CSV Import Completed!\n CSV:{0}(ms)\nSQL:{1}(ms)", CSV.ElapsedMilliseconds, SQL.ElapsedMilliseconds); Events.LogMessagePopUp(ToolTip, Language.Localization["UI"], Language.Localization["Importer"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Import.CSV");//TODO Localize Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["SQL"]) { string Path = LDDialogs.OpenFile("sql", null); if (!string.IsNullOrWhiteSpace(Path)) { Stopwatch SQL = new Stopwatch(); SQL.Start(); Import.SQL(Engines.CurrentDatabase, Path); SQL.Stop(); Events.LogMessagePopUp("SQL Import Completed in " + SQL.ElapsedMilliseconds + "(ms)", Language.Localization["UI"], Language.Localization["Importer"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Import.SQL");//TODO Localize Stack.Exit(StackPointer); return; } //Export else if (Item == Language.Localization["PXML"] + " ") { string Path = LDDialogs.SaveFile("xml", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.XML(Data, Export.GenerateSchemaFromQueryData(Data), Engines.CurrentTable, Path); Events.LogMessagePopUp("XML export of " + Engines.CurrentTable + " completed!", "Export", "Success"); Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.XML");//TODO Localize Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["HTML"] + " ") { string Path = LDDialogs.SaveFile("html", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.HTML(Data, Export.GenerateSchemaFromQueryData(Data), Engines.CurrentTable.SanitizeFieldName(), Path, GlobalStatic.ProductID + " V" + GlobalStatic.VersionID); Events.LogMessagePopUp("HTML export of " + Engines.CurrentTable + " completed!", Language.Localization["Export"], Language.Localization["Success"]); Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.HTML");//TODO Localize Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["SQL"] + " ") { string Path = LDDialogs.SaveFile("sql", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Primitive Schema = Export.GenerateSchemaFromQueryData(Data); Primitive SchemaQuery; switch (Engines.CurrentEngine) { case Engines.EnginesMode.SQLITE: Engines.SQLite SQLite = new Engines.SQLite(); Engines.QuerySettings QS = new Engines.QuerySettings { Database = Engines.CurrentDatabase, SQL = SQLite.GetColumnsOfTable(Engines.CurrentTable), FetchRecords = true, User = GlobalStatic.UserName, Explanation = "SCHEMA" }; SchemaQuery = Engines.Query(QS); break; default: throw new PlatformNotSupportedException("Currently database is not supported"); } Dictionary <string, bool> PK = Export.SQL_Fetch_PK(SchemaQuery, Schema, Engines.CurrentEngine); Dictionary <string, string> Types = Export.SQL_Fetch_Type(SchemaQuery, Schema, Engines.CurrentEngine); Export.SQL(Data, Schema, PK, Types, Engines.CurrentTable, Path); LDProcess.Start(Path, null); Events.LogMessagePopUp("SQL export of " + Engines.CurrentTable + " completed!", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.SQL");//TODO Localize Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["CSV"] + " ") { string Path = LDDialogs.SaveFile("csv", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.CSV(Data, Export.GenerateSchemaFromQueryData(Data), Path, GlobalStatic.Deliminator); Events.LogMessagePopUp("CSV export of " + Engines.CurrentTable + " completed!", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.CSV");//TODO Localize Stack.Exit(StackPointer); } else if (Item == "JSON") //TODO Localize { string Path = LDDialogs.SaveFile("json", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.JSON(Data, Export.GenerateSchemaFromQueryData(Data), Engines.CurrentTable.SanitizeFieldName(), Path); Events.LogMessagePopUp("JSON export of " + Engines.CurrentTable + " completed!", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.JSON");//TODO Localize Stack.Exit(StackPointer); } else if (Item == "MarkDown") //TODO Localize { string Path = LDDialogs.SaveFile("md", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.MarkDown(Data, Export.GenerateSchemaFromQueryData(Data), Path); Events.LogMessagePopUp("MarkDown export is now complete", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.MarkDown");//TODO Localize Stack.Exit(StackPointer); } else if (Item == "Wiki MarkUp") //TODO Localize { string Path = LDDialogs.SaveFile("markup", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); Export.MarkUp(Data, Export.GenerateSchemaFromQueryData(Data), Path); Events.LogMessagePopUp("Wiki Markup export is now complete", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.Wiki Markup");//TODO Localize Stack.Exit(StackPointer); } else if (Item == "Excel") //TODO Localize { string Path = LDDialogs.SaveFile("xlsx", null); if (!string.IsNullOrWhiteSpace(Path)) { Primitive Data = Export.Generate2DArrayFromLastQuery(); //Export.Excel(Data, Export.GenerateSchemaFromQueryData(Data), Engines.CurrentTable, Path); Events.LogMessagePopUp("Excel export is now complete", Language.Localization["Export"], Language.Localization["Success"]); //TODO Localize Stack.Exit(StackPointer); return; } Events.LogMessagePopUp(Language.Localization["Error Generic"], Language.Localization["UI"], "Export.Excel Markup");//TODO Localize Stack.Exit(StackPointer); } //Settings else if (Item == Language.Localization["About"]) { Engines.QuerySettings QS = new Engines.QuerySettings { Database = Engines.CurrentDatabase, SQL = "SELECT SQLITE_VERSION(),sqlite_source_id();", FetchRecords = true, User = GlobalStatic.UserName, Explanation = Language.Localization["User Requested"] + ":" + Language.Localization["App"] }; Primitive About_Data = Engines.Query(QS); string About_Msg = string.Format("DBM C# is a Database Mangement Program developed by Abhishek Sathiabalan. (C){0}. All rights reserved.\n\nYou are running : {1} v{2}\n\n", GlobalStatic.Copyright, GlobalStatic.ProductID, GlobalStatic.VersionID); About_Msg += string.Format("SQLite Version : {0}\nSQLITE Source ID : {1}", About_Data[1]["SQLITE_VERSION()"], About_Data[1]["sqlite_source_id()"]); Events.LogMessagePopUp(About_Msg, "Debug", "About");//DO NOT LOCALIZE Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Show Help"]) { string Path = System.IO.Path.Combine(GlobalStatic.AssetPath, "HELP Table.html"); LDProcess.Start(Path, null); Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Settings Editor"]) { UI.Settings.Display(); Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Refresh Schema"]) { Engines.GetSchema(Engines.CurrentDatabase); Engines.GetColumnsofTable(Engines.CurrentDatabase, Engines.CurrentTable); Stack.Exit(StackPointer); return; } else if (Item == Language.Localization["Check for Updates"]) { Updater.CheckForUpdates(GlobalStatic.UpdaterDBpath); Stack.Exit(StackPointer); return; } //Charts else if (Item == "Bar") //TODO Localize { Google_Charts.Chart.Bar Bar = new Google_Charts.Chart.Bar(); UI.Charts.Display(Bar); Stack.Exit(StackPointer); return; } else if (Item == "Column") //TODO Localize { Google_Charts.Chart.Column Column = new Google_Charts.Chart.Column(); UI.Charts.Display(Column); Stack.Exit(StackPointer); return; } else if (Item == "Geo") //TODO Localize { Google_Charts.Chart.GeoCharts Geo = new Google_Charts.Chart.GeoCharts(); UI.Charts.Display(Geo); Stack.Exit(StackPointer); return; } else if (Item == "Histogram") //TODO Localize { Google_Charts.Chart.Histograms Histo = new Google_Charts.Chart.Histograms(); UI.Charts.Display(Histo); Stack.Exit(StackPointer); return; } else if (Item == "Line") //TODO Localize { Google_Charts.Chart.Line Line = new Google_Charts.Chart.Line(); UI.Charts.Display(Line); Stack.Exit(StackPointer); return; } else if (Item == "Org") //TODO Localize { Google_Charts.Chart.OrgChart Org = new Google_Charts.Chart.OrgChart(); UI.Charts.Display(Org); Stack.Exit(StackPointer); return; } else if (Item == "Pie") //TODO: Localize { Google_Charts.Chart.Pie Pie = new Google_Charts.Chart.Pie(); UI.Charts.Display(Pie); Stack.Exit(StackPointer); return; } else if (Item == "Sankey") //TODO Localize { Google_Charts.Chart.SanKey SanKey = new Google_Charts.Chart.SanKey(); UI.Charts.Display(SanKey); Stack.Exit(StackPointer); return; } else if (Item == "Scatter Plot") //TODO Localize { Google_Charts.Chart.Scatter Scatter = new Google_Charts.Chart.Scatter(); UI.Charts.Display(Scatter); Stack.Exit(StackPointer); return; } else if (Item == "Sortable Table") //TODO Localize { Google_Charts.Chart.Table Table = new Google_Charts.Chart.Table(); UI.Charts.Display(Table); Stack.Exit(StackPointer); return; } else if (Item == "TimeLine") //TODO Localize { Google_Charts.Chart.TimeLine TL = new Google_Charts.Chart.TimeLine(); UI.Charts.Display(TL); Stack.Exit(StackPointer); return; } else if (Item != null) { Events.LogMessage(Item + " does not exist in context or is not yet implemented", Language.Localization["UI"]); } Stack.Exit(StackPointer); }