public ICSharpCode.SharpDevelop.Gui.IViewContent CreateContentForFile(OpenedFile file)
        {
            ProfilingDataSQLiteProvider provider;

            try {
                provider = ProfilingDataSQLiteProvider.FromFile(file.FileName);
            } catch (IncompatibleDatabaseException e) {
                if (e.ActualVersion == new Version(1, 0))
                {
                    if (MessageService.AskQuestion("Upgrade DB?"))
                    {
                        using (AsynchronousWaitDialog.ShowWaitDialog("Upgrading database...")) {
                            provider = ProfilingDataSQLiteProvider.UpgradeFromOldVersion(file.FileName);
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    MessageService.ShowErrorFormatted("${res:AddIns.Profiler.DatabaseTooNewError}", e.ActualVersion.ToString(), e.ExpectedVersion.ToString());
                    return(null);
                }
            }
            return(new WpfViewer(file, provider));
        }
        private void btnLoadSession_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter     = "SharpDevelop Profiling Session|*.sdps|All files|*.*";
            dlg.DefaultExt = ".sdps";
            if (!(dlg.ShowDialog() ?? false))
            {
                return;
            }
            if (this.provider != null)
            {
                this.provider.Close();
            }
            this.provider              = ProfilingDataSQLiteProvider.FromFile(dlg.FileName);
            this.treeView.Provider     = this.provider;
            this.treeView.CurrentQuery = "from t in Threads select t";
            treeView.SetRange(0, this.provider.DataSets.Count);
            this.timeLine.IsEnabled = true;
            //this.timeLine.ValuesList.Clear();
            //this.timeLine.ValuesList.AddRange(provider.DataSets.Select(i => i.CpuUsage));
        }
Beispiel #3
0
        /// <summary>
        /// Creates a new WpfViewer object
        /// </summary>
        public WpfViewer(OpenedFile file)
        {
            // HACK : OpenedFile architecture does not allow to keep files open
            //        but it is necessary for the ProfilerView to keep the session file open.
            //        We don't want to load all session data into memory.
            // this.Files.Add(file);

            // HACK : The file is not recognised by the FileService for closing if it is deleted while open.
            //        (reason see above comment)
            FileService.FileRemoving += FileServiceFileRemoving;

            this.file        = file;
            this.provider    = ProfilingDataSQLiteProvider.FromFile(file.FileName);
            this.TabPageText = Path.GetFileName(file.FileName);
            this.TitleName   = this.TabPageText;
            this.host        = new SharpDevelopElementHost(dataView = new ProfilerView(this.provider));
            // HACK : Make host.Child visible
            WorkbenchSingleton.SafeThreadAsyncCall(
                () => {
                this.host.Dock = DockStyle.None;
                this.host.Dock = DockStyle.Fill;
            }
                );
        }