00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _WX_DOCCOMIMPLH__
00017 #define _WX_DOCCOMIMPLH__
00018
00019 #include "wx/docview/doccom.h"
00020
00021 #define CMPROC ((a2dDocumentCommandProcessor*) m_cmp)
00022
00023
00024
00025
00026
00027
00028
00029 class A2DDOCVIEWDLLEXP a2dCommand_Exit: public a2dCommand
00030 {
00031 public:
00032
00033
00034
00035
00036 static const a2dCommandId Id;
00037
00038 class A2DDOCVIEWDLLEXP Args
00039 {
00040 public:
00041 Args()
00042 {
00043 argSet.force = false;
00044 }
00045
00046 A2D_ARGUMENT_SETTER( bool, force )
00047
00048 struct argValue
00049 {
00050 bool force;
00051 } argValue;
00052
00053 struct argSet
00054 {
00055 bool force;
00056 } argSet;
00057 };
00058
00059 a2dCommand_Exit( const Args& args ): a2dCommand( false, Id )
00060 {
00061 m_args = args;
00062 m_args.argValue.force = args.argSet.force ? args.argValue.force: true;
00063 }
00064
00065 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00066 {
00067 return new a2dCommand_Exit( m_args );
00068 }
00069
00070 private:
00071
00072 Args m_args;
00073
00074 virtual bool Do()
00075 {
00076 return CMPROC->Exit( m_args.argValue.force );
00077 }
00078 virtual bool Undo()
00079 {
00080 return false;
00081 }
00082 };
00083
00084
00085
00086
00087
00088
00089
00090
00091 class A2DDOCVIEWDLLEXP a2dCommand_FileClose: public a2dCommand
00092 {
00093 public:
00094
00095
00096
00097
00098 static const a2dCommandId Id;
00099
00100 class A2DDOCVIEWDLLEXP Args
00101 {
00102 public:
00103 Args()
00104 {
00105 argSet.force = false;
00106 }
00107
00108 A2D_ARGUMENT_SETTER( bool, force )
00109
00110 struct argValue
00111 {
00112 bool force;
00113 } argValue;
00114
00115 struct argSet
00116 {
00117 bool force;
00118 } argSet;
00119 };
00120
00121 a2dCommand_FileClose( const Args& args = Args() ): a2dCommand( false, Id )
00122 {
00123 m_args = args;
00124 m_args.argValue.force = args.argSet.force ? args.argValue.force: true;
00125 }
00126
00127 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00128 {
00129 return new a2dCommand_FileClose( m_args );
00130 }
00131
00132 private:
00133
00134 Args m_args;
00135
00136 virtual bool Do()
00137 {
00138 return CMPROC->FileClose( m_args.argValue.force );
00139 }
00140 virtual bool Undo()
00141 {
00142 return false;
00143 }
00144 };
00145
00146
00147
00148
00149
00150 class A2DDOCVIEWDLLEXP a2dCommand_FileOpen: public a2dCommand
00151 {
00152 public:
00153
00154
00155
00156
00157 static const a2dCommandId Id;
00158
00159 class A2DDOCVIEWDLLEXP Args
00160 {
00161 public:
00162 Args()
00163 {
00164 argSet.file = false;
00165 argSet.templateFlags = false;
00166 argValue.templateFlags = a2dTemplateFlag::LOAD_IMPORT;
00167 }
00168
00169 A2D_ARGUMENT_SETTER( wxFileName, file )
00170
00171 struct argValue
00172 {
00173 wxFileName file;
00174 a2dTemplateFlagMask templateFlags;
00175 } argValue;
00176
00177 struct argSet
00178 {
00179 bool file;
00180 bool templateFlags;
00181 } argSet;
00182
00183 };
00184
00185 a2dCommand_FileOpen( const Args& args = Args() ): a2dCommand( false, Id )
00186 {
00187 m_args = args;
00188 }
00189
00190 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00191 {
00192 return new a2dCommand_FileOpen( m_args );
00193 }
00194
00195 private:
00196
00197 Args m_args;
00198
00199 virtual bool Do()
00200 {
00201 a2dDocumentPtr doc = NULL;
00202 a2dError result = CMPROC->FileOpen( doc, m_args.argValue.file, m_args.argValue.templateFlags );
00203 if ( !doc )
00204 {
00205 if ( result == a2dError_Canceled )
00206 {
00207 a2dDocviewGlobals->SendToLogTarget();
00208 a2dDocviewGlobals->ResetErrors();
00209 return true;
00210 }
00211 return false;
00212 }
00213 a2dDocviewGlobals->RecordF( this, wxT("fileOpen") );
00214 return result == a2dError_NoError;
00215 }
00216
00217 virtual bool Undo()
00218 {
00219 return false;
00220 }
00221 };
00222
00223
00224
00225
00226
00227 class A2DDOCVIEWDLLEXP a2dCommand_FileNew: public a2dCommand
00228 {
00229 public:
00230
00231
00232
00233
00234 static const a2dCommandId Id;
00235
00236 a2dCommand_FileNew(): a2dCommand( false, Id )
00237 {
00238 }
00239
00240 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00241 {
00242 return new a2dCommand_FileNew();
00243 }
00244
00245 private:
00246
00247 virtual bool Do()
00248 {
00249 a2dDocumentPtr doc;
00250 a2dError result = CMPROC->FileNew( doc );
00251 return result == a2dError_NoError;
00252 }
00253 virtual bool Undo()
00254 {
00255 return false;
00256 }
00257 };
00258
00259
00260
00261
00262
00263 class A2DDOCVIEWDLLEXP a2dCommand_FileSave: public a2dCommand
00264 {
00265 public:
00266
00267
00268
00269
00270 static const a2dCommandId Id;
00271
00272 a2dCommand_FileSave(): a2dCommand( false, Id )
00273 {
00274 }
00275
00276 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00277 {
00278 return new a2dCommand_FileSave();
00279 }
00280
00281 private:
00282
00283 virtual bool Do()
00284 {
00285 return CMPROC->FileSave();
00286 }
00287 virtual bool Undo()
00288 {
00289 return false;
00290 }
00291 };
00292
00293
00294
00295
00296
00297 class A2DDOCVIEWDLLEXP a2dCommand_FileSaveAs: public a2dCommand
00298 {
00299 public:
00300
00301
00302
00303
00304 static const a2dCommandId Id;
00305
00306 class A2DDOCVIEWDLLEXP Args
00307 {
00308 public:
00309 Args()
00310 {
00311 argSet.file = false;
00312 argSet.silent = false;
00313 argValue.silent = false;
00314 }
00315
00316 A2D_ARGUMENT_SETTER( wxFileName, file )
00317 A2D_ARGUMENT_SETTER( bool, silent )
00318
00319 struct argValue
00320 {
00321 wxFileName file;
00322 bool silent;
00323 } argValue;
00324
00325 struct argSet
00326 {
00327 bool file;
00328 bool silent;
00329 } argSet;
00330 };
00331
00332 a2dCommand_FileSaveAs( const Args& args = Args() ): a2dCommand( false, Id )
00333 {
00334 m_args = args;
00335 }
00336
00337 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00338 {
00339 return new a2dCommand_FileSaveAs( m_args );
00340 }
00341
00342 private:
00343
00344 Args m_args;
00345
00346 virtual bool Do()
00347 {
00348 if ( !CMPROC->FileSaveAs( m_args.argValue.file, m_args.argValue.silent ? a2dREFDOC_SILENT: a2dREFDOC_NON ) )
00349 return false;
00350
00351 a2dDocviewGlobals->ResetErrors();
00352 return true;
00353 }
00354
00355 virtual bool Undo()
00356 {
00357 return false;
00358 }
00359 };
00360
00361
00362
00363
00364
00365 class A2DDOCVIEWDLLEXP a2dCommand_FileImport: public a2dCommand
00366 {
00367 public:
00368
00369
00370
00371
00372 static const a2dCommandId Id;
00373
00374 class A2DDOCVIEWDLLEXP Args
00375 {
00376 public:
00377 Args()
00378 {
00379 argSet.file = false;
00380 argSet.silent = false;
00381 argSet.description = false;
00382 }
00383
00384 A2D_ARGUMENT_SETTER( wxFileName, file )
00385 A2D_ARGUMENT_SETTER( wxString, description )
00386 A2D_ARGUMENT_SETTER( bool, silent )
00387
00388 struct argValue
00389 {
00390 wxFileName file;
00391 wxString description;
00392 bool silent;
00393 } argValue;
00394
00395 struct argSet
00396 {
00397 bool file;
00398 bool description;
00399 bool silent;
00400 } argSet;
00401 };
00402
00403 a2dCommand_FileImport( const Args& args = Args() ): a2dCommand( false, Id )
00404 {
00405 m_args = args;
00406
00407 }
00408
00409 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00410 {
00411 return new a2dCommand_FileImport( m_args );
00412 }
00413
00414 private:
00415
00416 Args m_args;
00417
00418 virtual bool Do()
00419 {
00420 if ( !CMPROC->FileImport( m_args.argValue.file, m_args.argValue.description, m_args.argValue.silent ? a2dREFDOC_SILENT: a2dREFDOC_NON ) )
00421 return false;
00422
00423 if ( a2dDocviewGlobals->GetLastError() != a2dError_CanceledFileDialog )
00424 a2dDocviewGlobals->SendToLogTarget();
00425 a2dDocviewGlobals->ResetErrors();
00426
00427 return true;
00428 }
00429
00430 virtual bool Undo()
00431 {
00432 return false;
00433 }
00434 };
00435
00436
00437
00438
00439
00440 class A2DDOCVIEWDLLEXP a2dCommand_FileExport: public a2dCommand
00441 {
00442 public:
00443
00444
00445
00446
00447 static const a2dCommandId Id;
00448
00449 class A2DDOCVIEWDLLEXP Args
00450 {
00451 public:
00452 Args()
00453 {
00454 argValue.silent = false;
00455 argSet.file = false;
00456 argSet.silent = false;
00457 argSet.description = false;
00458 }
00459
00460 A2D_ARGUMENT_SETTER( wxFileName, file )
00461 A2D_ARGUMENT_SETTER( wxString, description )
00462 A2D_ARGUMENT_SETTER( bool, silent )
00463
00464 struct argValue
00465 {
00466 wxFileName file;
00467 wxString description;
00468 bool silent;
00469 } argValue;
00470
00471 struct argSet
00472 {
00473 bool file;
00474 bool description;
00475 bool silent;
00476 } argSet;
00477 };
00478
00479 a2dCommand_FileExport( const Args& args = Args() ): a2dCommand( false, Id )
00480 {
00481 m_args = args;
00482 }
00483
00484 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00485 {
00486 return new a2dCommand_FileExport( m_args );
00487 }
00488
00489 private:
00490
00491 Args m_args;
00492
00493 virtual bool Do()
00494 {
00495 if ( !CMPROC->FileExport( m_args.argValue.file, m_args.argValue.description, m_args.argValue.silent ? a2dREFDOC_SILENT: a2dREFDOC_NON ) )
00496 return false;
00497
00498 if ( a2dDocviewGlobals->GetLastError() != a2dError_CanceledFileDialog )
00499 a2dDocviewGlobals->SendToLogTarget();
00500 a2dDocviewGlobals->ResetErrors();
00501
00502 return true;
00503 }
00504
00505 virtual bool Undo()
00506 {
00507 return false;
00508 }
00509 };
00510
00511
00512
00513
00514
00515 class A2DDOCVIEWDLLEXP a2dCommand_FileRevert: public a2dCommand
00516 {
00517 public:
00518
00519
00520
00521
00522 static const a2dCommandId Id;
00523
00524 a2dCommand_FileRevert(): a2dCommand( false, Id )
00525 {
00526 }
00527
00528 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00529 {
00530 return new a2dCommand_FileRevert();
00531 }
00532
00533 private:
00534
00535 virtual bool Do()
00536 {
00537 return CMPROC->FileRevert();
00538 }
00539 virtual bool Undo()
00540 {
00541 return false;
00542 }
00543 };
00544
00545
00546
00547
00548
00549 class A2DDOCVIEWDLLEXP a2dCommand_Print: public a2dCommand
00550 {
00551 public:
00552
00553
00554
00555
00556 static const a2dCommandId Id;
00557
00558
00559
00560
00561 enum a2dPrintWhat
00562 {
00563 Print,
00564 Preview,
00565 PrintView,
00566 PreviewView,
00567 PrintDocument,
00568 PreviewDocument,
00569 PrintSetup
00570 };
00571
00572 class A2DDOCVIEWDLLEXP Args
00573 {
00574 public:
00575 Args()
00576 {
00577 argSet.what = false;
00578 }
00579
00580 A2D_ARGUMENT_SETTER( a2dPrintWhat, what )
00581
00582 struct argValue
00583 {
00584 a2dPrintWhat what;
00585 } argValue;
00586
00587 struct argSet
00588 {
00589 bool what;
00590 } argSet;
00591 };
00592
00593 a2dCommand_Print( const Args& args ): a2dCommand( false, Id )
00594 {
00595 m_args = args;
00596 if ( !args.argSet.what )
00597 throw a2dCommandException( _( "what argument must be set" ) );
00598 }
00599
00600 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00601 {
00602 return new a2dCommand_Print( m_args );
00603 }
00604
00605 a2dPrintWhat What() { return m_args.argValue.what; }
00606
00607 private:
00608
00609 Args m_args;
00610
00611 virtual bool Do()
00612 {
00613 if ( m_args.argValue.what == Print )
00614 return CMPROC->Print( this );
00615 if ( m_args.argValue.what == PrintView )
00616 return CMPROC->Print( this );
00617 if ( m_args.argValue.what == PrintDocument )
00618 return CMPROC->Print( this );
00619 if ( m_args.argValue.what == Preview )
00620 return CMPROC->Preview( this );
00621 if ( m_args.argValue.what == PreviewView )
00622 return CMPROC->Preview( this );
00623 if ( m_args.argValue.what == PreviewDocument )
00624 return CMPROC->Preview( this );
00625 if ( m_args.argValue.what == PrintSetup )
00626 return CMPROC->PrintSetup( this );
00627 return false;
00628 }
00629
00630 virtual bool Undo()
00631 {
00632 return false;
00633 }
00634 };
00635
00636
00637
00638
00639
00640 class A2DDOCVIEWDLLEXP a2dCommand_CreateDocument: public a2dCommand
00641 {
00642 public:
00643
00644
00645
00646
00647 static const a2dCommandId Id;
00648
00649 class A2DDOCVIEWDLLEXP Args
00650 {
00651 public:
00652 Args()
00653 {
00654 argSet.file = false;
00655 argSet.flags = false;
00656 }
00657
00658 A2D_ARGUMENT_SETTER( wxFileName, file )
00659 A2D_ARGUMENT_SETTER( a2dDocumentFlagMask, flags )
00660
00661 struct argValue
00662 {
00663 wxFileName file;
00664 a2dDocumentFlagMask flags;
00665 } argValue;
00666
00667 struct argSet
00668 {
00669 bool file;
00670 bool flags;
00671 } argSet;
00672 };
00673
00674 a2dCommand_CreateDocument( const Args& args ): a2dCommand( false, Id )
00675 {
00676 m_args = args;
00677 if ( !args.argSet.file )
00678 throw a2dCommandException( _( "file argument must be set" ) );
00679 m_args.argValue.flags = args.argSet.flags ? args.argValue.flags : a2dREFDOC_NON;
00680 }
00681
00682 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00683 {
00684 return new a2dCommand_CreateDocument( m_args );
00685 }
00686
00687 private:
00688
00689 Args m_args;
00690
00691 virtual bool Do()
00692 {
00693 a2dError result = CMPROC->CreateDocuments( m_args.argValue.file.GetFullPath(), m_args.argValue.flags );
00694 return result == a2dError_NoError;
00695 }
00696
00697 virtual bool Undo()
00698 {
00699 return false;
00700 }
00701 };
00702
00703
00704
00705
00706
00707
00708
00709
00710 class A2DDOCVIEWDLLEXP a2dCommand_CloseDocuments: public a2dCommand
00711 {
00712 public:
00713
00714
00715
00716
00717 static const a2dCommandId Id;
00718
00719 class A2DDOCVIEWDLLEXP Args
00720 {
00721 public:
00722 Args()
00723 {
00724 argSet.force = false;
00725 }
00726
00727 A2D_ARGUMENT_SETTER( bool, force )
00728
00729 struct argValue
00730 {
00731 bool force;
00732 } argValue;
00733
00734 struct argSet
00735 {
00736 bool force;
00737 } argSet;
00738 };
00739
00740 a2dCommand_CloseDocuments( const Args& args ): a2dCommand( false, Id )
00741 {
00742 m_args = args;
00743 m_args.argValue.force = args.argSet.force ? args.argValue.force: true;
00744 }
00745
00746 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00747 {
00748 return new a2dCommand_CloseDocuments( m_args );
00749 }
00750
00751 private:
00752
00753 Args m_args;
00754
00755 virtual bool Do()
00756 {
00757 return CMPROC->CloseDocuments( m_args.argValue.force );
00758 }
00759 virtual bool Undo()
00760 {
00761 return false;
00762 }
00763 };
00764
00765
00766
00767
00768
00769
00770
00771 class A2DDOCVIEWDLLEXP a2dCommand_Clear: public a2dCommand
00772 {
00773 public:
00774
00775
00776
00777
00778 static const a2dCommandId Id;
00779
00780 class A2DDOCVIEWDLLEXP Args
00781 {
00782 public:
00783 Args()
00784 {
00785 argSet.force = false;
00786 }
00787
00788 A2D_ARGUMENT_SETTER( bool, force )
00789
00790 struct argValue
00791 {
00792 bool force;
00793 } argValue;
00794
00795 struct argSet
00796 {
00797 bool force;
00798 } argSet;
00799 };
00800
00801 a2dCommand_Clear( const Args& args ): a2dCommand( false, Id )
00802 {
00803 m_args = args;
00804 m_args.argValue.force = args.argSet.force ? args.argValue.force: true;
00805 }
00806
00807 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00808 {
00809 return new a2dCommand_Clear( m_args );
00810 }
00811
00812 private:
00813
00814 Args m_args;
00815
00816 virtual bool Do()
00817 {
00818 return CMPROC->Clear( m_args.argValue.force );
00819 }
00820 virtual bool Undo()
00821 {
00822 return false;
00823 }
00824 };
00825
00826
00827
00828
00829
00830
00831
00832
00833 class A2DDOCVIEWDLLEXP a2dCommand_Ask: public a2dCommand
00834 {
00835 public:
00836
00837
00838
00839
00840 static const a2dCommandId Id;
00841
00842 class A2DDOCVIEWDLLEXP Args
00843 {
00844 public:
00845 Args()
00846 {
00847 argSet.message = false;
00848 argSet.result = false;
00849 argSet.storeInVariable = false;
00850 }
00851
00852 A2D_ARGUMENT_SETTER( wxString, message )
00853 A2D_ARGUMENT_SETTER( wxString, storeInVariable );
00854
00855 struct argValue
00856 {
00857 wxString message;
00858 wxString result;
00859 wxString storeInVariable;
00860 } argValue;
00861
00862 struct argSet
00863 {
00864 bool message;
00865 bool result;
00866 bool storeInVariable;
00867 } argSet;
00868 };
00869
00870 a2dCommand_Ask( const Args& args ): a2dCommand( false, Id )
00871 {
00872 m_args = args;
00873 if ( !args.argSet.message )
00874 throw a2dCommandException( _( "message argument must be set" ) );
00875 }
00876
00877 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00878 {
00879 return new a2dCommand_Ask( m_args );
00880 }
00881
00882 private:
00883
00884 Args m_args;
00885
00886 virtual bool Do()
00887 {
00888 m_args.argValue.result = wxGetTextFromUser( m_args.argValue.message );
00889 m_args.argSet.result = true;
00890 if ( m_args.argSet.storeInVariable )
00891 a2dDocviewGlobals->GetVariablesHash().SetVariable( m_args.argValue.storeInVariable, new a2dStringProperty( a2dPropertyIdString::GetDummy(), m_args.argValue.result ) );
00892 return true;
00893 }
00894
00895 virtual bool Undo()
00896 {
00897 return false;
00898 }
00899 };
00900
00901
00902
00903
00904
00905 class A2DDOCVIEWDLLEXP a2dCommand_AskFile: public a2dCommand
00906 {
00907 public:
00908
00909
00910
00911
00912 static const a2dCommandId Id;
00913
00914 class A2DDOCVIEWDLLEXP Args
00915 {
00916 public:
00917 Args()
00918 {
00919 argValue.message = _("");
00920 argValue.defaultfile = _("");
00921 argValue.extension = _("txt");
00922 argValue.fileFilter = _("*.*");
00923 argValue.defaultDir = _("");
00924 argValue.file = _("");
00925 argValue.flags = 0;
00926
00927 argSet.message = false;
00928 argSet.defaultfile = false;
00929 argSet.extension = false;
00930 argSet.fileFilter = false;
00931 argSet.defaultDir = false;
00932 argSet.file = false;
00933 argSet.flags = false;
00934 argSet.storeInVariable = false;
00935 }
00936
00937 A2D_ARGUMENT_SETTER( wxString, message );
00938 A2D_ARGUMENT_SETTER( wxString, defaultfile );
00939 A2D_ARGUMENT_SETTER( wxString, extension );
00940 A2D_ARGUMENT_SETTER( wxString, fileFilter );
00941 A2D_ARGUMENT_SETTER( wxString, defaultDir );
00942 A2D_ARGUMENT_SETTER( int, flags );
00943 A2D_ARGUMENT_SETTER( wxString, storeInVariable );
00944
00945 struct argValue
00946 {
00947 wxString message;
00948 wxString defaultfile;
00949 wxString extension;
00950 wxString fileFilter;
00951 wxString defaultDir;
00952 wxFileName file;
00953 int flags;
00954 wxString storeInVariable;
00955 } argValue;
00956
00957 struct argSet
00958 {
00959 bool message;
00960 bool defaultfile;
00961 bool extension;
00962 bool fileFilter;
00963 bool defaultDir;
00964 bool file;
00965 bool flags;
00966 bool storeInVariable;
00967 } argSet;
00968 };
00969
00970 a2dCommand_AskFile( const Args& args ): a2dCommand( false, Id )
00971 {
00972 m_args = args;
00973 }
00974
00975 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
00976 {
00977 return new a2dCommand_AskFile( m_args );
00978 }
00979
00980 wxFileName& GetFileObject() { return m_args.argValue.file; }
00981
00982 private:
00983
00984 Args m_args;
00985
00986 virtual bool Do()
00987 {
00988 wxWindow* parent = wxFindSuitableParent();
00989
00990 a2dPathList path;
00991 if ( !m_args.argValue.defaultDir.IsEmpty() && !path.ExpandPath( m_args.argValue.defaultDir ) )
00992 {
00993 a2dDocviewGlobals->ReportWarningF( a2dError_CouldNotEvaluatePath, _("Could not expand %s"), m_args.argValue.defaultDir.c_str() );
00994 return false;
00995 }
00996
00997 wxString fullPath = wxFileSelector( m_args.argValue.message,
00998 m_args.argValue.defaultDir ,
00999 m_args.argValue.defaultfile,
01000 m_args.argValue.extension,
01001 m_args.argValue.fileFilter,
01002 m_args.argValue.flags,
01003 parent);
01004
01005 m_args.argValue.file = wxFileName( fullPath );
01006 m_args.argSet.file = true;
01007 if ( m_args.argSet.storeInVariable )
01008 a2dDocviewGlobals->GetVariablesHash().SetVariable( m_args.argValue.storeInVariable, new a2dFileNameProperty( a2dPropertyIdFileName::GetDummy(), m_args.argValue.file ) );
01009
01010 if ( fullPath.IsEmpty() )
01011 return false;
01012 return true;
01013 }
01014
01015 virtual bool Undo()
01016 {
01017 return false;
01018 }
01019 };
01020
01021
01022
01023
01024
01025 class A2DDOCVIEWDLLEXP a2dCommand_ShowVar: public a2dCommand
01026 {
01027 public:
01028
01029
01030
01031
01032 static const a2dCommandId Id;
01033
01034 class A2DDOCVIEWDLLEXP Args
01035 {
01036 public:
01037 Args()
01038 {
01039 argSet.message = false;
01040 argSet.name = false;
01041 argSet.prop = false;
01042 }
01043
01044 A2D_ARGUMENT_SETTER( wxString, message )
01045 A2D_ARGUMENT_SETTER( wxString, name )
01046
01047 struct argValue
01048 {
01049 wxString message;
01050 wxString name;
01051 const a2dNamedProperty* prop;
01052 } argValue;
01053
01054 struct argSet
01055 {
01056 bool name;
01057 bool message;
01058 bool prop;
01059 } argSet;
01060 };
01061
01062 a2dCommand_ShowVar( const Args& args ): a2dCommand( false, Id )
01063 {
01064 m_args = args;
01065 if ( !args.argSet.message )
01066 throw a2dCommandException( _( "message argument must be set" ) );
01067 if ( !args.argSet.name )
01068 throw a2dCommandException( _( "name argument must be set" ) );
01069 }
01070
01071 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
01072 {
01073 return new a2dCommand_ShowVar( m_args );
01074 }
01075
01076 private:
01077
01078 Args m_args;
01079
01080 virtual bool Do()
01081 {
01082 m_args.argValue.prop = a2dDocviewGlobals->GetVariablesHash().GetVariable( m_args.argValue.name );
01083 if ( !m_args.argValue.prop )
01084 return false;
01085 m_args.argSet.prop = true;
01086
01087 wxString mes = m_args.argValue.message + m_args.argValue.prop->StringValueRepresentation();
01088 wxMessageBox( mes , _("ShowVariable"), wxOK , NULL );
01089 return true;
01090 }
01091
01092 virtual bool Undo()
01093 {
01094 return false;
01095 }
01096 };
01097
01098
01099
01100
01101
01102
01103 class A2DDOCVIEWDLLEXP a2dCommand_SetActivateView: public a2dCommand
01104 {
01105 public:
01106
01107
01108
01109
01110 static const a2dCommandId Id;
01111
01112 class A2DDOCVIEWDLLEXP Args
01113 {
01114 public:
01115 Args()
01116 {
01117 argSet.viewId = false;
01118 }
01119
01120 A2D_ARGUMENT_SETTER( wxUint32, viewId )
01121
01122 struct argValue
01123 {
01124 wxUint32 viewId;
01125 } argValue;
01126
01127 struct argSet
01128 {
01129 bool viewId;
01130 } argSet;
01131 };
01132
01133 a2dCommand_SetActivateView( const Args& args ): a2dCommand( false, Id )
01134 {
01135 m_args = args;
01136 m_args.argValue.viewId = args.argSet.viewId ? args.argValue.viewId: 0;
01137 }
01138
01139 virtual a2dObject* Clone( CloneOptions options = clone_deep ) const
01140 {
01141 return new a2dCommand_SetActivateView( m_args );
01142 }
01143
01144 private:
01145
01146 Args m_args;
01147
01148 virtual bool Do()
01149 {
01150
01151 a2dViewList allviewsOnDoc;
01152 CMPROC->GetCurrentDocument()->ReportViews( &allviewsOnDoc );
01153
01154 forEachIn( a2dViewList, &allviewsOnDoc )
01155 {
01156 a2dView* view = *iter;
01157 if ( view->GetId() == m_args.argValue.viewId )
01158 {
01159 view->Activate( true );
01160 return true;
01161 }
01162 }
01163 return false;
01164 }
01165
01166 virtual bool Undo()
01167 {
01168 return false;
01169 }
01170 };
01171
01172 #endif // _WX_DOCCOMIMPLH__
01173
01174
01175