00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef INC_GRE_VIEWSCRIPT_H
00042 #define INC_GRE_VIEWSCRIPT_H
00043
00044 #ifndef INC_GRE_BASE_H
00045 #include <gre/base.h>
00046 #endif
00047
00048 #ifndef INC_MI32_FILEPATH_H
00049 #include <mi32/filepath.h>
00050 #endif
00051
00052 #ifndef INC_MI32_FIXEDSTR_H
00053 #include <mi32/fixedstr.h>
00054 #endif
00055
00056 #ifndef INC_MI32_MICON_H
00057 #include <mi32/micon.h>
00058 #endif
00059
00060 #ifndef INC_MI32_SERIALIZ_H
00061 #include <mi32/serializ.h>
00062 #endif
00063
00064 #ifndef INC_MI32_SIMPLEAR_H
00065 #include <mi32/simplear.h>
00066 #endif
00067
00068 #if !defined(INC_MI32_XDEFNS_H) && defined(X_NATIVE)
00069 #include <mi32/xdefns.h>
00070 #endif
00071
00072 #ifndef GENERATING_DOXYGEN_OUTPUT
00073 struct SMLCONTEXT;
00074 class SMLSYMBOL;
00075 #endif // GENERATING_DOXYGEN_OUTPUT
00076
00077 #ifdef X_NATIVE
00078 namespace GRE {
00079
00080
00081
00082 class VIEWSCRIPT : public SERIALIZABLE {
00083 public:
00084
00085 class CONTEXT;
00086
00087
00088 VIEWSCRIPT ();
00089
00090
00091 VIEWSCRIPT (
00092 const VIEWSCRIPT& rhs
00093 ): SERIALIZABLE(rhs) { Copy(rhs); }
00094
00095
00096 virtual ~VIEWSCRIPT ();
00097
00098
00099 VIEWSCRIPT& operator= (
00100 const VIEWSCRIPT& rhs
00101 ) { if (this != &rhs) { MiconDestroy(m_icon); Copy(rhs); } return (*this); }
00102
00103 virtual void IniWrite (
00104 const char* IniGroup,
00105 const char* IniBaseName
00106 ) const;
00107
00108 virtual int Load (
00109 const char* IniGroup = 0,
00110 const char* IniBaseName = 0
00111 );
00112
00113 bool EditProperties (
00114 MDLGPARENT dlgparent,
00115 GRE_VIEWABLE *viewable,
00116 GRE_VIEW *view,
00117 bool CanChangeSet
00118 );
00119
00120
00121 int EditScript (
00122 Widget pwidget,
00123 SMLCONTEXT* smlcontext
00124 );
00125
00126 const FILEPATH& GetFilePath (
00127 ) const { return (m_filepath); }
00128
00129 const MICON GetIcon (
00130 ) const {
00131 if (m_icon == 0) {
00132 MiconCreate(&m_icon,m_IconGroup,m_IconName,0,16,16,MICONFLAG_DefaultBackground);
00133 }
00134 return (m_icon);
00135 }
00136
00137 const char* GetIconGroup (
00138 ) const { return (m_IconGroup); }
00139
00140 const char* GetIconName (
00141 ) const { return (m_IconName); }
00142
00143 const MIUNICODE* GetName (
00144 ) const { return (m_name); }
00145
00146 const MISTRING& GetScriptString (
00147 ) const { return (m_scriptstr); }
00148
00149 bool GetShowIcon (
00150 ) const { return (m_ShowIcon); }
00151
00152 bool IsFromViewable (
00153 ) const { return (m_FromViewable); }
00154
00155 ERRVALUE Load (
00156 const FILEPATH& filepath
00157 ) { m_filepath = filepath; return (Load()); }
00158
00159 bool SelectIcon (
00160 MDLGPARENT dlgparent
00161 );
00162
00163 void SetFilePath (
00164 const FILEPATH& filepath
00165 ) { m_filepath = filepath; }
00166
00167 void SetFromViewable (
00168 bool FromViewable = true
00169 ) { m_FromViewable = FromViewable; }
00170
00171 void SetName (
00172 const MIUNICODE *name
00173 ) { m_name = name; }
00174
00175 void SetShowIcon (
00176 bool ShowIcon
00177 ) { m_ShowIcon = ShowIcon; }
00178
00179 protected:
00180
00181
00182 static const SERIALIZER::ITEMDEF* SerialGetItemDef (
00183 );
00184
00185 private:
00186 #ifndef GENERATING_DOXYGEN_OUTPUT
00187
00188 FILEPATH m_filepath;
00189 INT32 m_inode;
00190 MISTRING m_scriptstr;
00191 FIXEDSTRING<64> m_name;
00192 char m_IconGroup[16];
00193 char m_IconName[16];
00194 mutable MICON m_icon;
00195 bool m_ShowIcon;
00196 bool m_FromViewable;
00197
00198 void Copy (const VIEWSCRIPT& rhs);
00199
00200 virtual bool v_EditProperties (
00201 MDLGPARENT dlgparent,
00202 GRE_VIEWABLE *viewable,
00203 GRE_VIEW *view,
00204 bool CanChangeSet
00205 ) = 0;
00206
00207 #endif // GENERATING_DOXYGEN_OUTPUT
00208 };
00209
00210
00211
00212
00213 class VIEWSCRIPT::CONTEXT {
00214 public:
00215
00216 SMLCONTEXT* GetSMLContext (
00217 ) const { return (m_smlcontext); }
00218
00219 ERRVALUE ParseScript (
00220 const VIEWSCRIPT& script
00221 );
00222
00223 protected:
00224
00225 CONTEXT (
00226 GRE_VIEWABLE *viewable,
00227 GRE_VIEW *view
00228 );
00229
00230 ~CONTEXT ();
00231
00232 private:
00233 #ifndef GENERATING_DOXYGEN_OUTPUT
00234 SMLCONTEXT *m_smlcontext;
00235
00236 CONTEXT (const CONTEXT&);
00237 CONTEXT& operator= (const CONTEXT&);
00238
00239 #endif // GENERATING_DOXYGEN_OUTPUT
00240 };
00241
00242
00243
00244
00245 class MACROSCRIPT : public VIEWSCRIPT {
00246 public:
00247
00248 enum BUTTONTYPE {
00249 BUTTONTYPE_Simple = 0,
00250 BUTTONTYPE_Menu = 1
00251 };
00252
00253 class CONTEXT;
00254
00255
00256 MACROSCRIPT (
00257 ): m_ButtonType(BUTTONTYPE_Simple) { }
00258
00259
00260 MACROSCRIPT (
00261 const MACROSCRIPT& rhs
00262 );
00263
00264
00265 virtual ~MACROSCRIPT (
00266 );
00267
00268
00269 MACROSCRIPT& operator= (
00270 const MACROSCRIPT& rhs
00271 );
00272
00273 BUTTONTYPE GetButtonType (
00274 ) const { return (static_cast<BUTTONTYPE>(m_ButtonType)); }
00275
00276 const MISTRINGLIST& GetMenuChoiceList (
00277 ) const { return (m_MenuChoiceList); }
00278
00279 virtual void IniWrite (
00280 const char* IniGroup,
00281 const char* IniBaseName
00282 ) const;
00283
00284 virtual int Load (
00285 const char* IniGroup = 0,
00286 const char* IniBaseName = 0
00287 );
00288
00289 virtual ERRVALUE SerialRead (
00290 SERIALIZER& serializer
00291 );
00292
00293 virtual ERRVALUE SerialWrite (
00294 SERIALIZER& serializer,
00295 const char *tagname = 0
00296 ) const;
00297
00298 void SetButtonType (
00299 BUTTONTYPE ButtonType
00300 ) { m_ButtonType = static_cast<UINT8>(ButtonType); }
00301
00302 void SetMenuChoices (
00303 const MISTRING& string
00304 );
00305
00306 private:
00307 #ifndef GENERATING_DOXYGEN_OUTPUT
00308
00309 UINT8 m_ButtonType;
00310 MISTRINGLIST m_MenuChoiceList;
00311
00312 static ERRVALUE SerialCB_MenuChoice (SERIALIZER&, const SERIALIZER::ITEMDEF*, MACROSCRIPT *script, SERIALIZER::ITEMDEF::ACTION);
00313 static const SERIALIZER::ITEMDEF* SerialGetItemDef ();
00314
00315 virtual bool v_EditProperties (
00316 MDLGPARENT dlgparent,
00317 GRE_VIEWABLE *viewable,
00318 GRE_VIEW *view,
00319 bool CanChangeSet
00320 );
00321
00322 #endif // GENERATING_DOXYGEN_OUTPUT
00323 };
00324 typedef MILIST<MACROSCRIPT> MACROSCRIPTLIST;
00325
00326
00327
00328 bool DlgEditMacroScriptList (
00329 MDLGPARENT dlgparent,
00330 MACROSCRIPTLIST& ScriptList,
00331 GRE_VIEWABLE *viewable,
00332 GRE_VIEW *view = 0
00333 );
00334
00335
00336
00337
00338 class MACROSCRIPT::CONTEXT : public VIEWSCRIPT::CONTEXT {
00339 public:
00340
00341
00342 CONTEXT (
00343 GRE_VIEWABLE *viewable,
00344 GRE_VIEW *view,
00345 bool AddAllSymbols = false
00346 );
00347
00348
00349 virtual ~CONTEXT ();
00350
00351 bool AddCtrlToMenu (
00352 Widget MenuPane
00353 );
00354
00355 bool AddCtrlToToolBar (
00356 Widget ToolBar
00357 );
00358
00359 ERRVALUE Create (
00360 const MACROSCRIPT& script
00361 );
00362
00363 const MISTRINGLIST& GetMenuChoiceList (
00364 ) const { return (m_script.GetMenuChoiceList()); }
00365
00366 ERRVALUE Run (
00367 );
00368
00369 ERRVALUE Run (
00370 const MIUNICODE* menuchoice
00371 );
00372
00373 private:
00374 #ifndef GENERATING_DOXYGEN_OUTPUT
00375
00376 MACROSCRIPT m_script;
00377 SMLSYMBOL *m_MenuChoiceSym;
00378
00379 void GetMenuItems (SIMPLE_ARRAY<MENUITEM>& MenuItems) const;
00380
00381 CONTEXT (const CONTEXT&);
00382 CONTEXT& operator= (const CONTEXT&);
00383 #endif // GENERATING_DOXYGEN_OUTPUT
00384 };
00385
00386
00387
00388 class TOOLSCRIPT : public VIEWSCRIPT {
00389 public:
00390
00391 TOOLSCRIPT () { }
00392
00393 TOOLSCRIPT (
00394 const TOOLSCRIPT& rhs
00395 ): VIEWSCRIPT(rhs) { }
00396
00397 virtual ~TOOLSCRIPT (
00398 ) { }
00399
00400 TOOLSCRIPT& operator= (
00401 const TOOLSCRIPT& rhs
00402 ) {
00403 if (this != &rhs) {
00404 static_cast<VIEWSCRIPT*>(this)->operator=(rhs);
00405 }
00406 return (*this);
00407 }
00408
00409 virtual ERRVALUE SerialRead (
00410 SERIALIZER& serializer
00411 );
00412
00413 virtual ERRVALUE SerialWrite (
00414 SERIALIZER& serializer,
00415 const char *tagname = 0
00416 ) const;
00417
00418 private:
00419 #ifndef GENERATING_DOXYGEN_OUTPUT
00420
00421 virtual bool v_EditProperties (
00422 MDLGPARENT dlgparent,
00423 GRE_VIEWABLE *viewable,
00424 GRE_VIEW *view,
00425 bool CanChangeSet
00426 );
00427
00428 #endif // GENERATING_DOXYGEN_OUTPUT
00429 };
00430 typedef MILIST<TOOLSCRIPT> TOOLSCRIPTLIST;
00431
00432
00433
00434 bool DlgEditToolScriptList (
00435 MDLGPARENT dlgparent,
00436 TOOLSCRIPTLIST& ScriptList,
00437 GRE_VIEWABLE *viewable,
00438 GRE_VIEW *view = 0
00439 );
00440
00441
00442 }
00443 #endif
00444
00445
00446
00447 #endif // INC_GRE_VIEWSCRIPT_H