using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.ComponentModel; using System.Windows.Forms.Integration; namespace IE_WPF { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged( string thePropertyName ) { if ( PropertyChanged != null ) { PropertyChanged( this, new PropertyChangedEventArgs( thePropertyName ) ); } } public MainWindow() { InitializeComponent(); StatusBarText = String.Empty; IsHlrOffPushed = false; IsHlrOnPushed = true; IsZoomWinEnabled = true; #region menu operations CommandBinding aBind_New = new CommandBinding( IECommands.New ); aBind_New.Executed += NewCommand_Executed; CommandBindings.Add( aBind_New ); CommandBinding aBind_Close = new CommandBinding( IECommands.Close ); aBind_Close.Executed += CloseCommand_Executed; aBind_Close.CanExecute += CloseCommand_CanExecute; CommandBindings.Add( aBind_Close ); CommandBinding aBind_Quit = new CommandBinding( IECommands.Quit ); aBind_Quit.Executed += QuitCommand_Executed; CommandBindings.Add( aBind_Quit ); CommandBinding aBind_About = new CommandBinding( IECommands.About ); aBind_About.Executed += AboutCommand_Executed; CommandBindings.Add( aBind_About ); # endregion PreviewKeyDown += new KeyEventHandler( OnPreviewKeyDown ); PreviewKeyUp += new KeyEventHandler( OnPreviewKeyUp ); } private String myStatusBarText; public String StatusBarText { get { return myStatusBarText; } private set { myStatusBarText = value; RaisePropertyChanged( "StatusBarText" ); } } private bool isHlrOffPushed; public Boolean IsHlrOffPushed { get { return isHlrOffPushed; } set { isHlrOffPushed = value; RaisePropertyChanged("isHlrOffPushed"); } } private bool isHlrOnPushed; public Boolean IsHlrOnPushed { get { return isHlrOnPushed; } set { isHlrOnPushed = value; RaisePropertyChanged("IsHlrOnPushed"); } } private bool isZoomWinEnabled; public Boolean IsZoomWinEnabled { get { return isZoomWinEnabled; } set { isZoomWinEnabled = value; RaisePropertyChanged("IsZoomWinEnabled"); } } private OCCViewer ActiveViewer { get { if ( !IsDocumentOpen ) { return null; } WindowsFormsHost aHost = ( ViewPanel.SelectedContent ) as WindowsFormsHost; if( aHost == null ) { return null; } return aHost.Child as OCCViewer; } } public Boolean IsDocumentOpen { get { return ViewPanel.Items.Count > 0; } } private int myDocumentCounter = 1; private void NewCommand_Executed( object sender, ExecutedRoutedEventArgs e ) { WindowsFormsHost aHost = new WindowsFormsHost(); OCCViewer aForm = new OCCViewer(); aForm.Show(); aHost.Child = aForm; TabItem aNewTab = new TabItem(); aNewTab.Content = aHost; aNewTab.IsSelected = true; aNewTab.Header = "Document " + myDocumentCounter.ToString(); myDocumentCounter++; ViewPanel.Items.Add( aNewTab ); // update XAML property RaisePropertyChanged("IsDocumentOpen"); } private void CloseCommand_Executed(object sender, ExecutedRoutedEventArgs e) { if ( ViewPanel.Items.Count > 0 ) { ViewPanel.Items.Remove( ViewPanel.SelectedItem ); } // update XAML property RaisePropertyChanged( "IsDocumentOpen" ); } private void CloseCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = IsDocumentOpen; } private void QuitCommand_Executed( object sender, ExecutedRoutedEventArgs e ) { this.Close(); } private void ImportBRep_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ImportModel( ModelFormat.BREP ); } } private void ImportIges_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ImportModel( ModelFormat.IGES ); } } private void ImportStep_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ImportModel( ModelFormat.STEP ); } } private void ExportBRep_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.BREP ); } } private void ExportStep_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.STEP ); } } private void ExportIges_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.IGES ); } } private void ExportStl_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.STL ); } } private void ExportVrml_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.VRML ); } } private void ExportImage_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.ExportModel( ModelFormat.IMAGE ); } } private void FitAllBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.FitAll(); } } private void ZoomWindowBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { IsZoomWinEnabled = false; ActiveViewer.ZoomWindow(); } } private void DynamicZoomingBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.DynamicZooming(); } } private void DynamicPanningBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.DynamicPanning(); } } private void GlobalPanningBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.GlobalPanning(); } } private void FrontBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.FrontView(); } } private void BackBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.BackView(); } } private void TopBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.TopView(); } } private void BottomBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.BottomView(); } } private void LeftBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.LeftView(); } } private void RightBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.RightView(); } } private void AxoBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.AxoView(); } } private void ResetBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Reset(); } } private void DynamicRotationBtn_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.DynamicRotation(); } } private void HiddenOffBtn_Click( object sender, RoutedEventArgs e ) { IsHlrOffPushed = true; IsHlrOnPushed = false; if ( ActiveViewer != null ) { ActiveViewer.HiddenOff(); } } private void HiddenOnBtn_Click( object sender, RoutedEventArgs e ) { IsHlrOffPushed = false; IsHlrOnPushed = true; if (ActiveViewer != null) { ActiveViewer.HiddenOn(); } } private void AboutCommand_Executed( object sender, ExecutedRoutedEventArgs e ) { AboutDialog aDlg = new AboutDialog(); aDlg.ShowDialog(); } private void ToolBar_MouseEnter( object sender, MouseEventArgs e ) { StatusBarText = "Toolbar"; } private void DocumentToolBar_MouseEnter(object sender, MouseEventArgs e) { StatusBarText = "Document toolbar"; } private void ViewToolBar_MouseEnter(object sender, MouseEventArgs e) { StatusBarText = "View toolbar"; } private void ToolBar_MouseLeave( object sender, MouseEventArgs e ) { StatusBarText = ""; } public void OnZoomingFinished( object sender, EventArgs e ) { IsZoomWinEnabled = true; } public bool IsWireframeEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsWireframeEnabled; } return false; } } private void Wireframe_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Wireframe(); } } private void Shading_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Shading(); } } public bool IsShadingEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsShadingEnabled; } return false; } } private void Color_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Color(); } } public bool IsColorEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsColorEnabled; } return false; } } private void Material_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Material(); } } public bool IsMaterialEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsMaterialEnabled; } return false; } } private void Transparency_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Transparency(); } } public bool IsTransparencyEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsTransparencyEnabled; } return false; } } private void Delete_Click( object sender, RoutedEventArgs e ) { if ( ActiveViewer != null ) { ActiveViewer.Delete(); } } public bool IsDeleteEnabled { get { if ( ActiveViewer != null ) { return ActiveViewer.IsDeleteEnabled; } return false; } } private void AvaliabiltyOfOperationToolbarChanged() { RaisePropertyChanged( "IsWireframeEnabled" ); RaisePropertyChanged( "IsShadingEnabled" ); RaisePropertyChanged( "IsTransparencyEnabled" ); RaisePropertyChanged( "IsColorEnabled" ); RaisePropertyChanged( "IsMaterialEnabled" ); RaisePropertyChanged( "IsDeleteEnabled" ); } public void OnAvaliabiltyOfOperationsChanged( object sender, EventArgs e ) { AvaliabiltyOfOperationToolbarChanged(); } private void OnViewerChanged( object sender, SelectionChangedEventArgs e ) { if ( e.RemovedItems.Count > 0 ) { WindowsFormsHost aHost = ( ( e.RemovedItems[0] as TabItem).Content ) as WindowsFormsHost; if( aHost == null ) { return; } OCCViewer aViewer = aHost.Child as OCCViewer; if( aViewer != null ) { aViewer.ZoomingFinished -= new EventHandler( OnZoomingFinished ); aViewer.AvaliabiltyOfOperationsChanged -= new EventHandler( OnAvaliabiltyOfOperationsChanged ); } } if ( e.AddedItems.Count > 0 ) { WindowsFormsHost aHost = ( (e.AddedItems[0] as TabItem).Content ) as WindowsFormsHost; if ( aHost == null ) { return; } OCCViewer aViewer = aHost.Child as OCCViewer; if ( aViewer != null ) { aViewer.ZoomingFinished += new EventHandler( OnZoomingFinished ); aViewer.AvaliabiltyOfOperationsChanged += new EventHandler( OnAvaliabiltyOfOperationsChanged ); } } AvaliabiltyOfOperationToolbarChanged(); } private void OnPreviewKeyDown( object sender, KeyEventArgs args ) { if ( ActiveViewer != null ) { ActiveViewer.OnKeyDown( args.Key ); } } private void OnPreviewKeyUp( object sender, KeyEventArgs args ) { if ( ActiveViewer != null ) { ActiveViewer.OnKeyUp(); } } } }