public async static void ShowBacktestLocal() { var dlg = new OpenFileDialog { Filter = "JSON file|*.json|All files|*.*", Title = "Open Backtest results from file" }; if (DialogResult.OK == dlg.ShowDialog()) { var control = QCPluginUtilities.GetPaneWindow(); await QCStudioPluginActions.Authenticate(); control.Logger = (msg) => { QCPluginUtilities.OutputCommandString(msg, QCPluginUtilities.Severity.Error); }; control.Initialize(Path.GetFileNameWithoutExtension(dlg.FileName), QCStudioPluginActions.UserID, QCStudioPluginActions.AuthToken); var _results = await QCStudioPluginActions.LoadLocalBacktest(dlg.FileName); QCPluginUtilities.OutputCommandString("GetBacktestResults succeded: " + _results.Success, QCPluginUtilities.Severity.Info); foreach (var err in _results.Errors) { QCPluginUtilities.OutputCommandString(err, QCPluginUtilities.Severity.Error); } control.Run(_results.rawData); } }
public async static void ShowBacktestRemote(string backtestId) { var control = QCPluginUtilities.GetPaneWindow(); await QCStudioPluginActions.Authenticate(); control.Logger = (msg) => { QCPluginUtilities.OutputCommandString(msg, QCPluginUtilities.Severity.Error); }; control.Initialize(backtestId, QCStudioPluginActions.UserID, QCStudioPluginActions.AuthToken); var _results = await QCStudioPluginActions.GetBacktestResults(backtestId); if (_results.Errors == null) { _results.Errors = new List <string>(); } QCPluginUtilities.OutputCommandString("GetBacktestResults succeded: " + _results.Success, QCPluginUtilities.Severity.Info); foreach (var err in _results.Errors) { QCPluginUtilities.OutputCommandString(err, QCPluginUtilities.Severity.Error); } control.Run(_results.rawData); }
///////////////////////////////////////////////////////////////////////////// // Overridden Package Implementation #region Package Members protected override void Initialize() { Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString())); base.Initialize(); // Add our command handlers for menu (commands must exist in the .vsct file) OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (null != mcs) { // Create the command for the tool window var toolwndCommandID = new CommandID(GuidList.guidQCStudioPluginCmdSet, (int)PkgCmdIDList.cmdidQCLocal); var menuToolWin = new OleMenuCommand((sender, e) => { QCPluginUtilities.ShowBacktestLocal(); }, toolwndCommandID); mcs.AddCommand(menuToolWin); toolwndCommandID = new CommandID(GuidList.guidQCStudioPluginCmdSet, (int)PkgCmdIDList.cmdidQCSaveLocal); menuToolWin = new OleMenuCommand(async(sender, e) => { OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid)); await QCStudioPluginActions.SaveLocalBacktest(page.PathBinaries2, page.PathData2); }, toolwndCommandID); mcs.AddCommand(menuToolWin); toolwndCommandID = new CommandID(GuidList.guidQCStudioPluginCmdSet, (int)PkgCmdIDList.cmdidQCRemote); menuToolWin = new OleMenuCommand((sender, e) => { var windowFrame = GetToolWindowFrame <AdminPane>(); ErrorHandler.ThrowOnFailure(windowFrame.Show()); }, toolwndCommandID); mcs.AddCommand(menuToolWin); } CustomInitialize(); }
private async void BacktestMenu_Click(object sender, ToolStripItemClickedEventArgs e) { if (dgrProjects.SelectedRows.Count == 0) { return; } var selproj = dgrProjects.SelectedRows[0].DataBoundItem as CombinedProject; if (selproj.Id == 0) { return; } var sourceControl = e.ClickedItem; if (sourceControl.Name == "RefreshBacktestsMenu") { dgrBacktests.DataSource = null; dgrBacktests.DataSource = await QCStudioPluginActions.GetBacktestList(selproj.Id); } else { if (dgrBacktests.SelectedRows.Count == 0) { return; } var selbacktest = dgrBacktests.SelectedRows[0].DataBoundItem as BacktestSummary; if (string.IsNullOrEmpty(selbacktest.BacktestId) || selbacktest.BacktestId == "0") { return; } switch (sourceControl.Name) { case "LoadBacktestMenu": QCPluginUtilities.ShowBacktestRemote(selbacktest.BacktestId); break; case "DeleteBacktestMenu": await QCStudioPluginActions.DeleteBacktest(selbacktest.BacktestId); RefreshBacktestsMenu.PerformClick(); break; case "SaveLocallyMenu": await QCStudioPluginActions.SaveRemoteBacktest(selbacktest.BacktestId); break; } } }
private async void ProjectsMenu_Click(object sender, ToolStripItemClickedEventArgs e) { var sourceControl = e.ClickedItem; switch (sourceControl.Name) { case "CreateProjectMenu": string projectName = QCPluginUtilities.GetStartupProjectName(); projectName = Microsoft.VisualBasic.Interaction.InputBox("Enter new project name", QCPluginUtilities.AppTitle, projectName); projectName = CleanInput(projectName); if (string.IsNullOrEmpty(projectName)) { QCPluginUtilities.OutputCommandString("Project name cannot be empty.", QCPluginUtilities.Severity.Error); return; } await QCStudioPluginActions.CreateProject(projectName); RefreshProjectsMenu.PerformClick(); break; case "LoginMenu": QCStudioPluginActions.Login(); break; case "LogoutMenu": QCStudioPluginActions.Logout(); break; case "RefreshProjectsMenu": dgrProjects.DataSource = await QCStudioPluginActions.GetProjectList(); var firstrow = dgrProjects.Rows.Cast <DataGridViewRow>().FirstOrDefault(x => (x.DataBoundItem as CombinedProject).Id > 0); if (firstrow != null) { firstrow.Selected = true; } RefreshBacktestsMenu.PerformClick(); break; case "ConnectProjectIDMenu": var projects = dgrProjects.DataSource as List <CombinedProject>; var cloudproj = projects.Where(x => string.IsNullOrEmpty(x.LocalProjectName)).ToArray(); var localproj = projects.Where(x => x.Id == 0).ToArray(); if (localproj.Length == 0 || cloudproj.Length == 0) { QCPluginUtilities.OutputCommandString("No orphaned projects found on both cloud and local side.", QCPluginUtilities.Severity.Error); return; } var win = new ConnectQCID(); win.cmbCloud.Items.AddRange(cloudproj); win.cmbLocal.Items.AddRange(localproj); if (dgrProjects.SelectedRows.Count > 0) { var selproj2 = dgrProjects.SelectedRows[0].DataBoundItem as CombinedProject; win.cmbCloud.SelectedItem = selproj2; win.cmbLocal.SelectedItem = selproj2; } var dlgres = win.ShowDialog(); if (dlgres == DialogResult.OK) { var selID = win.cmbCloud.SelectedItem as CombinedProject; var selName = win.cmbLocal.SelectedItem as CombinedProject; QCPluginUtilities.SetProjectID(selID.Id, selName.uniqueName); RefreshProjectsMenu.PerformClick(); } break; default: if (dgrProjects.SelectedRows.Count == 0) { return; } var selproj = dgrProjects.SelectedRows[0].DataBoundItem as CombinedProject; if (selproj.Id == 0) { return; } switch (sourceControl.Name) { case "DeleteProjectMenu": await QCStudioPluginActions.DeleteProject(selproj.Id); QCPluginUtilities.SetProjectID(0, selproj.uniqueName); RefreshProjectsMenu.PerformClick(); break; case "UploadProjectMenu": if (string.IsNullOrEmpty(selproj.LocalProjectPath)) { return; } await QCStudioPluginActions.UploadProject(selproj.Id, selproj.CloudProjectName, selproj.LocalProjectPath); break; case "DownloadProjectMenu": await QCStudioPluginActions.DownloadProject(selproj.Id, selproj.CloudProjectName, selproj.LocalProjectName, selproj.LocalProjectPath); break; case "DisconnectProjectIDMenu": QCPluginUtilities.SetProjectID(0, selproj.uniqueName); RefreshProjectsMenu.PerformClick(); break; case "CompileProjectMenu": string backtestName = QCPluginUtilities.GetStartupProjectName(); backtestName = Microsoft.VisualBasic.Interaction.InputBox("Enter new backtest name", QCPluginUtilities.AppTitle, backtestName); backtestName = CleanInput(backtestName); if (string.IsNullOrWhiteSpace(backtestName)) { QCPluginUtilities.OutputCommandString("Backtest name cannot be empty.", QCPluginUtilities.Severity.Error); return; } var isfinished = false; var cnt = 0; while (!isfinished && cnt++ < 5) { isfinished = await QCStudioPluginActions.CreateBacktest(selproj.Id, backtestName); } break; } break; } }