VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedTaskMetaData.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/vrfutilDefines.h"
13 
14 #include <boost/serialization/access.hpp>
15 #include <boost/serialization/nvp.hpp>
16 #include <boost/serialization/list.hpp>
17 #include <boost/serialization/map.hpp>
18 #include <boost/serialization/vector.hpp>
19 #include <boost/serialization/string.hpp>
20 #include <boost/serialization/set.hpp>
21 
22 #include <vlutil/vlFilename.h>
23 #include <vlpi/entityType.h>
24 
25 #include <set>
26 #include <map>
27 
34 typedef bool (*DtEncryptDecryptFcn)(const std::string& scriptId, char* input, int inputLen, char** output, int& outputLen, bool encrypt,
35  void* usr);
36 
43 
46 const int DtScriptedTask_UseUiFile = 0x00000004;
47 
49 {
50 public:
51 
54 
56  virtual ~DtScriptedTaskMetaData();
57 
60 
62  DtScriptedTaskMetaData& operator=(const DtScriptedTaskMetaData& orig);
63 
65  virtual bool load(const DtFilename&);
66 
68  virtual bool load(const std::string&);
69 
71  virtual bool load(std::istream&);
72 
74  virtual bool hasUserEntryVariables() const;
75 
78  virtual bool save(const DtFilename&) const;
79 
81  virtual bool save(std::string&) const;
82 
84  virtual bool save(std::ostream&) const;
85 
87  virtual bool save() const;
88 
90  virtual void setFilename(const DtFilename&);
91 
94  virtual const DtFilename& filename() const;
95 
98  virtual const std::string& scriptId() const;
99 
102  virtual void setScriptId(const std::string&, bool makeAliasIfSystemScript = true);
103 
105  virtual void setScriptType(int);
106 
108  virtual int scriptType() const;
109 
112  virtual void setMenuText(const std::string&);
113  virtual const std::string& menuText() const;
115 
118  virtual void setExtendedMenuText(const std::string&);
119  virtual const std::string& extendedMenuText() const;
121 
124  virtual void setToolTip(const std::string&);
125  virtual const std::string& toolTip() const;
127 
130  virtual void setMenuIcon(const std::string&);
131  virtual const std::string& menuIcon() const;
133 
136  virtual void setUseUiFile(bool);
137  virtual bool useUiFile() const;
138 
139  virtual void setUiLayout(const std::string&);
140  virtual const std::string& uiLayout() const;
142 
147  virtual void setVersion(double);
148  virtual double version() const;
150 
154  virtual void setPriority(int);
155  virtual int priority() const;
157 
161  virtual void setEnabled(bool);
162  virtual bool enabled() const;
164 
169  virtual void setShortDescription(const std::string&);
170  virtual const std::string& shortDescription() const;
172 
175  virtual bool variable(const std::string& s, DtScriptedTaskVariable& var) const;
176 
179  virtual void setScriptEngine(const std::string&);
180  virtual const std::string& scriptEngine() const;
181 
185  virtual bool isInterpretedScript() const;
187 
190  static void addInterpretedScriptEngine(const std::string&);
191  static bool isInterpretedScriptEngine(const std::string&);
193 
196  virtual void setComments(const std::string&);
197  virtual const std::string& comments() const;
199 
203  virtual void setDescription(const std::string&);
204  virtual const std::string& description() const;
206 
209  virtual void setShowDescriptionInDialog(bool);
210  virtual bool showDescriptionInDialog() const;
212 
216  virtual void setRespectScriptLocation(bool);
217  virtual bool respectScriptLocation() const;
219 
223  virtual void setScriptLocation(const std::string&);
224  virtual const std::string& scriptLocation() const;
226 
228  virtual std::string uiLayoutLocation() const;
229 
233  virtual void setMenuLocations(const std::vector<std::string>&);
234  virtual void addMenuLocation(const std::string&);
235  virtual void removeMenuLocation(const std::string&);
236  virtual void removeMenuLocation(int);
237  virtual const std::vector<std::string>& menuLocations() const;
238  virtual void setShowInMenu(bool);
239  virtual bool showInMenu() const;
241 
244  virtual void setToolbarLocation(const std::string&);
245  virtual const std::string& toolbarLocation() const;
246  virtual void setShowInToolbar(bool);
247  virtual bool showInToolbar() const;
249 
253  virtual void setEntityTypes(const std::vector<DtEntityType>&);
254  virtual void addEntityType(const DtEntityType&);
255  virtual void removeEntityType(const DtEntityType&);
256  virtual void removeEntityType(int);
257  virtual std::vector<DtEntityType> entityTypes() const;
258  virtual bool supportsEntityType(const DtEntityType&) const;
259 
261  virtual bool hasEntityType(const DtEntityType&) const;
263 
268  virtual void setVariables(const std::vector<DtScriptedTaskVariable>&);
269  virtual void addVariable(const DtScriptedTaskVariable&);
270  virtual void insertVariableBefore(const DtScriptedTaskVariable&, const std::string& variable);
271  virtual void insertVariableBefore(const DtScriptedTaskVariable&, int i);
272  virtual void removeVariable(const std::string&);
273  virtual void removeVariable(int);
274 
277  virtual std::vector<DtScriptedTaskVariable> variables() const;
278 
280  virtual std::vector<DtScriptedTaskVariable> scriptedTaskVariables() const;
281 
285  virtual DtRwVariableBindings* defaultVariableBindings() const;
286 
288  virtual void setupDefaultsFromBindings(const DtRwVariableBindings&);
289 
291 
294  virtual void setScript(const std::string&);
295  virtual const std::string& script() const;
296 
299  virtual bool loadScript();
300 
302  virtual bool loadScript(const std::string&);
303 
306  virtual bool loadUiLayout();
307 
309  virtual bool loadUiLayout(const std::string&);
310 
313  virtual void setIsSystemScript(bool);
314  virtual bool isSystemScript() const;
316 
319  virtual void setActionCategories(const std::set<std::string>&);
320  virtual void addActionCategory(const std::string&);
321  virtual void removeActionCategory(const std::string&);
322  virtual bool hasActionCategory(const std::string&) const;
323  virtual const std::set<std::string>& actionCategories() const;
325 
328  virtual void setCanBeExecutedConcurrently(bool);
329  virtual bool canBeExecutedConcurrently() const;
331 
334  virtual void setDoctrines(const std::set<std::string>&);
335  virtual bool addDoctrine(const std::string&);
336  virtual bool removeDoctrine(const std::string&);
337  virtual bool supportsDoctrine(const std::string&) const;
338  virtual const std::set<std::string>& doctrines() const;
339  virtual bool renameDoctrine(const std::string& from, const std::string& to);
340  virtual void setAvailableToAllDoctrines(bool);
341  virtual bool availableToAllDoctrines() const;
343 
346  virtual void setShowOnTopLevelRightClickMenu(bool);
347  virtual bool showOnTopLevelRightClickMenu() const;
349 
353  virtual void setDirectoryPath(const std::string&);
354  virtual const std::string& directoryPath() const;
356 
360  virtual const std::set<std::string>& aliases() const;
361  virtual void addAlias(const std::string&);
362  virtual void removeAlias(const std::string&);
363  virtual void clearAliases();
364  virtual void setAliases(const std::set<std::string>&);
365  virtual bool isAliased(const std::string&) const;
367 
369  virtual void assignNewScriptId();
370 
372  virtual bool supports(const DtEntityType&) const;
373 
375  bool operator==(const DtScriptedTaskMetaData&) const;
376  bool operator!=(const DtScriptedTaskMetaData& rhs) const { return !(*this == rhs); };
377 
379  static void setEncryptDecryptFunction(DtEncryptDecryptFcn, void* usr);
380  static void getEncryptDecryptFunction(DtEncryptDecryptFcn&, void*& usr);
381 
383  virtual bool encrypt(const std::string& source, std::string& dest) const;
384 
386  virtual bool encryptScript();
387 
389  virtual bool encryptSize(const std::string& source, int& size) const;
390 
392  virtual bool decrypt(const std::string& source, std::string& dest) const;
393 
396  virtual bool decryptScript();
397 
400  virtual std::auto_ptr<DtRwVariableBindings> upgradeVariables(const DtRwVariableBindings&) const;
401 
406  virtual void setEncrypted(bool);
407  virtual bool encrypted() const;
409 
412  virtual void setFlag(int, bool);
413  virtual bool flagSet(int) const;
415 
421  virtual void loadTranslationFile(const std::string& lang);
422  virtual void translationData(char*& data, unsigned int& len) const;
423  virtual std::string translationLanguage() const;
424  virtual void clearTranslationData();
426 
428  virtual std::string removeTrailingLinefeeds(const std::string&);
429 
431  virtual void makeAllIdsLowercase();
432 
433 protected:
434  virtual std::string readFile(const std::string&) const;
435 
436 protected:
437 
439  friend class boost::serialization::access;
440 
444  template<class Archive>
445  void serialize(Archive & ar, const unsigned int version)
446  {
447  ar & BOOST_SERIALIZATION_NVP(myScriptId);
448  ar & BOOST_SERIALIZATION_NVP(myMenuText);
449  ar & BOOST_SERIALIZATION_NVP(myToolTip);
450  ar & BOOST_SERIALIZATION_NVP(myMenuIcon);
451  ar & BOOST_SERIALIZATION_NVP(myVersion);
452  ar & BOOST_SERIALIZATION_NVP(myScriptEngine);
453  ar & BOOST_SERIALIZATION_NVP(myComments);
454  ar & BOOST_SERIALIZATION_NVP(myMenuLocations);
455  ar & BOOST_SERIALIZATION_NVP(myIsSystemScript);
456  ar & BOOST_SERIALIZATION_NVP(myDescription);
457  ar & BOOST_SERIALIZATION_NVP(myScriptLocation);
458  ar & BOOST_SERIALIZATION_NVP(myDirectoryPath);
459  ar & BOOST_SERIALIZATION_NVP(myEntityTypes);
460  ar & BOOST_SERIALIZATION_NVP(myVariables);
461  ar & BOOST_SERIALIZATION_NVP(myScript);
462 
463  if (version >= 2)
464  {
465  ar & BOOST_SERIALIZATION_NVP(myActionCategories);
466 
467  if (version >= 3)
468  {
469  ar & BOOST_SERIALIZATION_NVP(myShowInMenu);
470  }
471 
472  if (version >= 4)
473  {
474  ar & BOOST_SERIALIZATION_NVP(myEncrypted);
475  }
476 
477  if (version >= 5)
478  {
479  ar & BOOST_SERIALIZATION_NVP(myScriptType);
480  }
481  else
482  {
483  myScriptType = DtScriptedTaskScriptedTask;
484  }
485 
486  if (version >= 6)
487  {
488  ar & BOOST_SERIALIZATION_NVP(myDoctrines);
489  ar & BOOST_SERIALIZATION_NVP(myFlags);
490  }
491  else
492  {
494  }
495 
496  if (version >= 7)
497  {
498  ar & BOOST_SERIALIZATION_NVP(myShowInToolbar);
499  ar & BOOST_SERIALIZATION_NVP(myToolbarLocation);
500  }
501 
502  if (version >= 8)
503  {
504  ar & BOOST_SERIALIZATION_NVP(myExtendedMenuText);
505  }
506 
507  if (version >= 9)
508  {
509  ar & BOOST_SERIALIZATION_NVP(myShortDescription);
510  }
511 
512  if (version >= 10)
513  {
514  ar & BOOST_SERIALIZATION_NVP(myUiLayout);
515  }
516 
517  if (version >= 11)
518  {
519  ar & BOOST_SERIALIZATION_NVP(myAliases);
520  }
521 
522  if (version >= 13)
523  {
524  ar & BOOST_SERIALIZATION_NVP(myCanBeExecutedConcurrently);
525  }
526 
527  if (version >= 14)
528  {
529  ar & BOOST_SERIALIZATION_NVP(myRespectScriptLocation);
530  }
531 
532  if (version >= 15)
533  {
534  ar & BOOST_SERIALIZATION_NVP(myShowDescriptionInDialog);
535  }
536 
537  if (Archive::is_loading::value && (version <= 11))
538  {
539  makeAllIdsLowercase();
540  }
541  }
542  }
543 
544 public:
545  std::string myScriptId;
546  std::string myMenuText;
547  std::string myExtendedMenuText;
548  std::string myToolTip;
549  std::string myMenuIcon;
550  std::string myScriptEngine;
551  std::string myComments;
552  std::string myDescription;
553  mutable std::string myScriptLocation;
554  std::string myShortDescription;
555  std::string myUiLayout;
556 
557  mutable std::string myScript;
558  std::string myDirectoryPath;
559  std::vector<std::string> myMenuLocations;
560  std::vector<std::string> myEntityTypes;
561  std::vector<std::string> myVariables;
562  mutable std::map<std::string, DtScriptedTaskVariable> myCachedVariables;
563  std::string myActionCategories;
564  std::string myDoctrines;
566 
567  std::string myToolbarLocation;
569 
570  mutable std::set<std::string> myActionCategoriesSet;
571  mutable std::set<std::string> myDoctrinesSet;
572 
576 
577  double myVersion;
578  mutable DtFilename myFile;
580  mutable bool myEncrypted;
581 
584 
586  int myFlags;
587 
591 
592  std::set<std::string> myAliases;
593 
594  static std::vector<std::string> theInterpretedScriptEngines;
595 };
596 
597 namespace DtBufferSerialize
598 {
600  DT_DLL_vrfutil char *encode(const DtScriptedTaskMetaData& val, char *buffer);
601  DT_DLL_vrfutil const char *decode(DtScriptedTaskMetaData& val, const char *buffer);
602 }
603 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)