File size: 2,326 Bytes
985c397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#! python
# SPDX-License-Identifier: LGPL-2.1-or-later

# (c) 2006 Juergen Riegel

from . import template
import model.generateModel_Module
import model.generateTools


class TemplateFeature(template.ModelTemplate):
    def Generate(self):
        file = open(self.outputDir + self.feature.Name + "Imp.cpp", "w")
        model.generateTools.replace(self.TemplateImplement, locals(), file)
        file = open(self.outputDir + self.feature.Name + ".cpp", "w")
        model.generateTools.replace(self.TemplateModule, locals(), file)
        file = open(self.outputDir + self.feature.Name + ".h", "w")
        model.generateTools.replace(self.TemplateHeader, locals(), file)
        # file.write( model.generateTools.replace(self.Template,locals()))

    TemplateHeader = """

#ifndef @self.module.Name.upper()@_FEATURE_@self.feature.Name.upper()@_H

#define @self.module.Name.upper()@_FEATURE_@self.feature.Name.upper()@_H



#include <App/PropertyStandard.h>



#include <App/Feature.h>



namespace @self.module.Name@

{





class @self.feature.Name@ : public App::Feature

{

  PROPERTY_HEADER(@self.module.Name@::@self.feature.Name@);



public:

  @self.feature.Name@();

+ for i in self.feature.Property:

  @i.Type@ @i.Name@;

-



  /** @name Methods override feature */

  //@{

  /// Recalculate the feature

  virtual int execute(void);

  /// Return the type name of the ViewProvider

  virtual const char* getViewProviderName(void) const {

    return "@self.module.Name@Gui::ViewProviderBox";

  }

  //@}

};



} //namespace @self.module.Name@



#endif // @self.module.Name.upper()@_FEATURE_@self.feature.Name.upper()@_H



"""
    TemplateModule = """



#include "@self.feature.Name@.h"



using namespace @self.module.Name@;



PROPERTY_SOURCE(@self.module.Name@::@self.feature.Name@, App::Feature)



@self.feature.Name@::@self.feature.Name@()

{

+ for i in self.feature.Property:

  ADD_PROPERTY(@i.Name@,(0.0));

-

}

"""
    # Here's the template for the user part of the implementation. This does NOT get overwritten if it already exists.
    TemplateImplement = """

//



#include "@self.feature.Name@.h"



using namespace @self.module.Name@;



// TODO This method implements the function of the feature

int @self.feature.Name@::execute(void)

{

   return 0;

}



"""