viewscript.h

Go to the documentation of this file.
00001 /**
00002  * \file gre/viewscript.h
00003  * \brief GRE::VIEWSCRIPT and related class definitions
00004  *
00005  * \if NODOC
00006  * $Id: viewscript.h_v 1.10 2005/03/31 16:57:07 fileserver!dwilliss Exp $
00007  *
00008  * $Log: viewscript.h_v $
00009  * Revision 1.10  2005/03/31 16:57:07  fileserver!dwilliss
00010  * Rename one of our types to MIUNICODE because it conflicted with a Microsoft #define
00011  *
00012  * Revision 1.9  2003/11/10 18:44:03  mju
00013  * Obtain filepath from viewable after edit script if is from viewable.
00014  *
00015  * Revision 1.8  2003/10/02 16:18:21  linux32build!build
00016  * Doxygen
00017  *
00018  * Revision 1.7  2003/09/23 13:05:34  mju
00019  * Fix compiler warnings.
00020  *
00021  * Revision 1.6  2003/09/15 13:48:59  fileserver!dwilliss
00022  * Doxygen
00023  *
00024  * Revision 1.5  2003/09/09 16:22:24  mju
00025  * Add SetFilePath method.
00026  *
00027  * Revision 1.4  2003/07/30 15:50:04  mju
00028  * Ignore forward decls.
00029  *
00030  * Revision 1.3  2003/06/30 20:08:39  mju
00031  * Now keeps script with macroscript context.
00032  *
00033  * Revision 1.2  2003/06/24 16:25:24  mju
00034  * Support saving scripts with viewable.
00035  *
00036  * Revision 1.1  2003/06/16 19:40:49  mju
00037  * Initial revision
00038  * \endif
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       //! Default Constructor.
00088       VIEWSCRIPT ();
00089 
00090       //! Copy constructor.
00091       VIEWSCRIPT (
00092          const VIEWSCRIPT& rhs
00093          ): SERIALIZABLE(rhs) { Copy(rhs); }
00094 
00095       //! Destructor.
00096       virtual ~VIEWSCRIPT ();
00097 
00098       //! Assignment operator.
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       //! @return TRUE if changed, FALSE if not, < 0 if error
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       //! Get serialization item definition table.
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       //! Default constructor.
00256       MACROSCRIPT (
00257          ): m_ButtonType(BUTTONTYPE_Simple) { }
00258 
00259       //! Copy constructor.
00260       MACROSCRIPT (
00261          const MACROSCRIPT& rhs
00262          );
00263 
00264       //! Destructor.
00265       virtual ~MACROSCRIPT (
00266          );
00267 
00268       //! Assignment.
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 //! Dialog to edit list of MacroScripts for specified viewable and optional view.
00327 //! @return true if changed, false if not.
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       //! Constructor.
00342       CONTEXT (
00343          GRE_VIEWABLE *viewable,
00344          GRE_VIEW *view,
00345          bool AddAllSymbols = false
00346          );
00347 
00348       //! Destructor.
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 //! Dialog to edit list of ToolScripts for specified viewable and optional view.
00433 //! @return true if changed, false if not.
00434 bool DlgEditToolScriptList (
00435    MDLGPARENT dlgparent,
00436    TOOLSCRIPTLIST& ScriptList,
00437    GRE_VIEWABLE *viewable,
00438    GRE_VIEW *view = 0
00439    );
00440 
00441 
00442 }  // End namespace GRE
00443 #endif
00444 
00445 //===================================================================================================================
00446 
00447 #endif   // INC_GRE_VIEWSCRIPT_H

Generated on Wed May 31 15:26:43 2006 for TNTsdk by  doxygen 1.3.8-20040913