2 using System.Collections.Generic;
6 using System.Windows.Controls;
7 using System.Windows.Data;
8 using System.Windows.Documents;
9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
14 using System.ComponentModel;
15 using System.Windows.Forms.Integration;
20 /// Interaction logic for MainWindow.xaml
22 public partial class MainWindow : Window, INotifyPropertyChanged
24 public event PropertyChangedEventHandler PropertyChanged;
25 protected void RaisePropertyChanged( string thePropertyName )
27 if ( PropertyChanged != null )
29 PropertyChanged( this, new PropertyChangedEventArgs( thePropertyName ) );
35 InitializeComponent();
37 StatusBarText = String.Empty;
38 IsHlrOffPushed = false;
40 IsZoomWinEnabled = true;
42 #region menu operations
44 CommandBinding aBind_New = new CommandBinding( IECommands.New );
45 aBind_New.Executed += NewCommand_Executed;
46 CommandBindings.Add( aBind_New );
48 CommandBinding aBind_Close = new CommandBinding( IECommands.Close );
49 aBind_Close.Executed += CloseCommand_Executed;
50 aBind_Close.CanExecute += CloseCommand_CanExecute;
51 CommandBindings.Add( aBind_Close );
53 CommandBinding aBind_Quit = new CommandBinding( IECommands.Quit );
54 aBind_Quit.Executed += QuitCommand_Executed;
55 CommandBindings.Add( aBind_Quit );
57 CommandBinding aBind_About = new CommandBinding( IECommands.About );
58 aBind_About.Executed += AboutCommand_Executed;
59 CommandBindings.Add( aBind_About );
63 PreviewKeyDown += new KeyEventHandler( OnPreviewKeyDown );
64 PreviewKeyUp += new KeyEventHandler( OnPreviewKeyUp );
67 private String myStatusBarText;
68 public String StatusBarText
72 return myStatusBarText;
76 myStatusBarText = value;
77 RaisePropertyChanged( "StatusBarText" );
81 private bool isHlrOffPushed;
82 public Boolean IsHlrOffPushed
86 return isHlrOffPushed;
90 isHlrOffPushed = value;
91 RaisePropertyChanged("isHlrOffPushed");
95 private bool isHlrOnPushed;
96 public Boolean IsHlrOnPushed
100 return isHlrOnPushed;
104 isHlrOnPushed = value;
105 RaisePropertyChanged("IsHlrOnPushed");
109 private bool isZoomWinEnabled;
110 public Boolean IsZoomWinEnabled
114 return isZoomWinEnabled;
118 isZoomWinEnabled = value;
119 RaisePropertyChanged("IsZoomWinEnabled");
123 private OCCViewer ActiveViewer
127 if ( !IsDocumentOpen )
132 WindowsFormsHost aHost = ( ViewPanel.SelectedContent ) as WindowsFormsHost;
138 return aHost.Child as OCCViewer;
142 public Boolean IsDocumentOpen
146 return ViewPanel.Items.Count > 0;
150 private int myDocumentCounter = 1;
152 private void NewCommand_Executed( object sender, ExecutedRoutedEventArgs e )
154 WindowsFormsHost aHost = new WindowsFormsHost();
155 OCCViewer aForm = new OCCViewer();
159 TabItem aNewTab = new TabItem();
160 aNewTab.Content = aHost;
161 aNewTab.IsSelected = true;
162 aNewTab.Header = "Document " + myDocumentCounter.ToString();
165 ViewPanel.Items.Add( aNewTab );
167 // update XAML property
168 RaisePropertyChanged("IsDocumentOpen");
171 private void CloseCommand_Executed(object sender, ExecutedRoutedEventArgs e)
173 if ( ViewPanel.Items.Count > 0 )
175 ViewPanel.Items.Remove( ViewPanel.SelectedItem );
178 // update XAML property
179 RaisePropertyChanged( "IsDocumentOpen" );
182 private void CloseCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
184 e.CanExecute = IsDocumentOpen;
187 private void QuitCommand_Executed( object sender, ExecutedRoutedEventArgs e )
192 private void ImportBRep_Click( object sender, RoutedEventArgs e )
194 if ( ActiveViewer != null )
196 ActiveViewer.ImportModel( ModelFormat.BREP );
200 private void ImportIges_Click( object sender, RoutedEventArgs e )
202 if ( ActiveViewer != null )
204 ActiveViewer.ImportModel( ModelFormat.IGES );
208 private void ImportStep_Click( object sender, RoutedEventArgs e )
210 if ( ActiveViewer != null )
212 ActiveViewer.ImportModel( ModelFormat.STEP );
216 private void ExportBRep_Click( object sender, RoutedEventArgs e )
218 if ( ActiveViewer != null )
220 ActiveViewer.ExportModel( ModelFormat.BREP );
224 private void ExportStep_Click( object sender, RoutedEventArgs e )
226 if ( ActiveViewer != null )
228 ActiveViewer.ExportModel( ModelFormat.STEP );
232 private void ExportIges_Click( object sender, RoutedEventArgs e )
234 if ( ActiveViewer != null )
236 ActiveViewer.ExportModel( ModelFormat.IGES );
240 private void ExportStl_Click( object sender, RoutedEventArgs e )
242 if ( ActiveViewer != null )
244 ActiveViewer.ExportModel( ModelFormat.STL );
248 private void ExportVrml_Click( object sender, RoutedEventArgs e )
250 if ( ActiveViewer != null )
252 ActiveViewer.ExportModel( ModelFormat.VRML );
256 private void ExportImage_Click( object sender, RoutedEventArgs e )
258 if ( ActiveViewer != null )
260 ActiveViewer.ExportModel( ModelFormat.IMAGE );
264 private void FitAllBtn_Click( object sender, RoutedEventArgs e )
266 if ( ActiveViewer != null )
268 ActiveViewer.FitAll();
272 private void ZoomWindowBtn_Click( object sender, RoutedEventArgs e )
274 if ( ActiveViewer != null )
276 IsZoomWinEnabled = false;
277 ActiveViewer.ZoomWindow();
281 private void DynamicZoomingBtn_Click( object sender, RoutedEventArgs e )
283 if ( ActiveViewer != null )
285 ActiveViewer.DynamicZooming();
289 private void DynamicPanningBtn_Click( object sender, RoutedEventArgs e )
291 if ( ActiveViewer != null )
293 ActiveViewer.DynamicPanning();
297 private void GlobalPanningBtn_Click( object sender, RoutedEventArgs e )
299 if ( ActiveViewer != null )
301 ActiveViewer.GlobalPanning();
305 private void FrontBtn_Click( object sender, RoutedEventArgs e )
307 if ( ActiveViewer != null )
309 ActiveViewer.FrontView();
313 private void BackBtn_Click( object sender, RoutedEventArgs e )
315 if ( ActiveViewer != null )
317 ActiveViewer.BackView();
321 private void TopBtn_Click( object sender, RoutedEventArgs e )
323 if ( ActiveViewer != null )
325 ActiveViewer.TopView();
329 private void BottomBtn_Click( object sender, RoutedEventArgs e )
331 if ( ActiveViewer != null )
333 ActiveViewer.BottomView();
337 private void LeftBtn_Click( object sender, RoutedEventArgs e )
339 if ( ActiveViewer != null )
341 ActiveViewer.LeftView();
345 private void RightBtn_Click( object sender, RoutedEventArgs e )
347 if ( ActiveViewer != null )
349 ActiveViewer.RightView();
353 private void AxoBtn_Click( object sender, RoutedEventArgs e )
355 if ( ActiveViewer != null )
357 ActiveViewer.AxoView();
361 private void ResetBtn_Click( object sender, RoutedEventArgs e )
363 if ( ActiveViewer != null )
365 ActiveViewer.Reset();
369 private void DynamicRotationBtn_Click( object sender, RoutedEventArgs e )
371 if ( ActiveViewer != null )
373 ActiveViewer.DynamicRotation();
377 private void HiddenOffBtn_Click( object sender, RoutedEventArgs e )
379 IsHlrOffPushed = true;
380 IsHlrOnPushed = false;
381 if ( ActiveViewer != null )
383 ActiveViewer.HiddenOff();
387 private void HiddenOnBtn_Click( object sender, RoutedEventArgs e )
389 IsHlrOffPushed = false;
390 IsHlrOnPushed = true;
391 if (ActiveViewer != null)
393 ActiveViewer.HiddenOn();
397 private void AboutCommand_Executed( object sender, ExecutedRoutedEventArgs e )
399 AboutDialog aDlg = new AboutDialog();
403 private void ToolBar_MouseEnter( object sender, MouseEventArgs e )
405 StatusBarText = "Toolbar";
408 private void DocumentToolBar_MouseEnter(object sender, MouseEventArgs e)
410 StatusBarText = "Document toolbar";
413 private void ViewToolBar_MouseEnter(object sender, MouseEventArgs e)
415 StatusBarText = "View toolbar";
418 private void ToolBar_MouseLeave( object sender, MouseEventArgs e )
423 public void OnZoomingFinished( object sender, EventArgs e )
425 IsZoomWinEnabled = true;
428 public bool IsWireframeEnabled
432 if ( ActiveViewer != null )
434 return ActiveViewer.IsWireframeEnabled;
440 private void Wireframe_Click( object sender, RoutedEventArgs e )
442 if ( ActiveViewer != null )
444 ActiveViewer.Wireframe();
448 private void Shading_Click( object sender, RoutedEventArgs e )
450 if ( ActiveViewer != null )
452 ActiveViewer.Shading();
456 public bool IsShadingEnabled
460 if ( ActiveViewer != null )
462 return ActiveViewer.IsShadingEnabled;
468 private void Color_Click( object sender, RoutedEventArgs e )
470 if ( ActiveViewer != null )
472 ActiveViewer.Color();
476 public bool IsColorEnabled
480 if ( ActiveViewer != null )
482 return ActiveViewer.IsColorEnabled;
488 private void Material_Click( object sender, RoutedEventArgs e )
490 if ( ActiveViewer != null )
492 ActiveViewer.Material();
496 public bool IsMaterialEnabled
500 if ( ActiveViewer != null )
502 return ActiveViewer.IsMaterialEnabled;
508 private void Transparency_Click( object sender, RoutedEventArgs e )
510 if ( ActiveViewer != null )
512 ActiveViewer.Transparency();
516 public bool IsTransparencyEnabled
520 if ( ActiveViewer != null )
522 return ActiveViewer.IsTransparencyEnabled;
528 private void Delete_Click( object sender, RoutedEventArgs e )
530 if ( ActiveViewer != null )
532 ActiveViewer.Delete();
536 public bool IsDeleteEnabled
540 if ( ActiveViewer != null )
542 return ActiveViewer.IsDeleteEnabled;
548 private void AvaliabiltyOfOperationToolbarChanged()
550 RaisePropertyChanged( "IsWireframeEnabled" );
551 RaisePropertyChanged( "IsShadingEnabled" );
552 RaisePropertyChanged( "IsTransparencyEnabled" );
553 RaisePropertyChanged( "IsColorEnabled" );
554 RaisePropertyChanged( "IsMaterialEnabled" );
555 RaisePropertyChanged( "IsDeleteEnabled" );
558 public void OnAvaliabiltyOfOperationsChanged( object sender, EventArgs e )
560 AvaliabiltyOfOperationToolbarChanged();
563 private void OnViewerChanged( object sender, SelectionChangedEventArgs e )
565 if ( e.RemovedItems.Count > 0 )
567 WindowsFormsHost aHost = ( ( e.RemovedItems[0] as TabItem).Content ) as WindowsFormsHost;
572 OCCViewer aViewer = aHost.Child as OCCViewer;
573 if( aViewer != null )
575 aViewer.ZoomingFinished -= new EventHandler( OnZoomingFinished );
576 aViewer.AvaliabiltyOfOperationsChanged -= new EventHandler( OnAvaliabiltyOfOperationsChanged );
580 if ( e.AddedItems.Count > 0 )
582 WindowsFormsHost aHost = ( (e.AddedItems[0] as TabItem).Content ) as WindowsFormsHost;
587 OCCViewer aViewer = aHost.Child as OCCViewer;
588 if ( aViewer != null )
590 aViewer.ZoomingFinished += new EventHandler( OnZoomingFinished );
591 aViewer.AvaliabiltyOfOperationsChanged += new EventHandler( OnAvaliabiltyOfOperationsChanged );
595 AvaliabiltyOfOperationToolbarChanged();
598 private void OnPreviewKeyDown( object sender, KeyEventArgs args )
600 if ( ActiveViewer != null )
602 ActiveViewer.OnKeyDown( args.Key );
606 private void OnPreviewKeyUp( object sender, KeyEventArgs args )
608 if ( ActiveViewer != null )
610 ActiveViewer.OnKeyUp();