diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/UI/Plugins/CAPluginRawStackUi/Tabs/CATabStackViewer.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/UI/Plugins/CAPluginRawStackUi/Tabs/CATabStackViewer.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,109 @@ +/* +* Copyright (c) 2004-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using CAPRawStack.Plugin; +using CrashAnalyserEngine.Tabs; +using CrashAnalyserEngine.Engine; +using CrashAnalyserEngine.Interfaces; +using SymbianStackLib.Engine; +using SymbianStackLib.Data.Source; +using SymbianStackLib.Data.Output; +using SymbianStackLib.Data.Output.Entry; +using SymbianStackLibUi.GUI; + +namespace CAPluginRawStackUi.Tabs +{ + internal partial class CATabStackViewer : CATab + { + #region Constructors + public CATabStackViewer( CAPluginRawStack aPlugin ) + { + InitializeComponent(); + // + iPlugin = aPlugin; + base.Title = "Call Stack"; + } + #endregion + + #region Properties + #endregion + + #region Event handlers + private void CATabStackViewer_Load( object sender, EventArgs e ) + { + StackEngine stackEngine = iPlugin.StackEngine; + + try + { + StackEngineProgressDialog.ReconstructStack( stackEngine ); + } + catch( Exception exception ) + { + iLbl_ErrorMessage.Text = exception.Message; + iLbl_ErrorMessage.Visible = true; + } + + iStackViewer.StackData = stackEngine.DataOutput; + + // Work out if we have any ghosts in the data - this dictates whether + // or not we show the "hide ghosts" checkbox. + bool seenGhost = false; + foreach ( StackOutputEntry entry in stackEngine.DataOutput ) + { + if ( entry.IsGhost ) + { + seenGhost = true; + break; + } + } + // + iCB_HideGhosts.Checked = seenGhost; + iCB_HideGhosts.Visible = seenGhost; + iStackViewer.OnlyShowEntriesWithSymbols = iCB_MatchExactSymbols.Checked; + iStackViewer.HideGhosts = iCB_HideGhosts.Checked; + } + + private void iCB_HideGhosts_CheckedChanged( object sender, EventArgs e ) + { + bool hideGhosts = iCB_HideGhosts.Checked; + iStackViewer.HideGhosts = hideGhosts; + iStackViewer.Refresh(); + } + + private void iCB_MatchExactSymbols_CheckedChanged( object sender, EventArgs e ) + { + bool matchExact = iCB_MatchExactSymbols.Checked; + iStackViewer.OnlyShowEntriesWithSymbols = matchExact; + iStackViewer.Refresh(); + } + #endregion + + #region Internal methods + #endregion + + #region Data members + private readonly CAPluginRawStack iPlugin; + #endregion + } +}