Code

clean up tabs and DOS-ishness
[inkscape.git] / src / extension / script / InkscapeScript.cpp
1 /**
2  * Inkscape Scripting container
3  *
4  * Authors:
5  *   Bob Jamison <rjamison@titan.com>
6  *
7  * Copyright (C) 2004-2008 Authors
8  *
9  * Released under GNU GPL, read the file 'COPYING' for more information
10  */
13 #include "InkscapeScript.h"
15 #include <bind/javabind.h>
19 namespace Inkscape
20 {
21 namespace Extension
22 {
23 namespace Script
24 {
27 typedef Inkscape::Bind::Value Value;
30 /**
31  *
32  */
33 InkscapeScript::InkscapeScript()
34 {
35 }
40 /**
41  *
42  */
43 InkscapeScript::~InkscapeScript()
44 {
45 }
50 /**
51  * Interprets the script in the 'script' buffer,
52  * storing the stdout output in 'output', and any
53  * error messages in 'error.'  Language is one of the
54  * enumerated types in ScriptLanguage above.
55  */
56 bool InkscapeScript::interpretScript(const Glib::ustring &script,
57                                  Glib::ustring &output,
58                                  Glib::ustring &error,
59                                  ScriptLanguage language)
60 {
61     const char *langname=NULL;
62     //if() instead of switch() lets us scope vars
63     if (language == InkscapeScript::JAVASCRIPT)
64         {
65         langname="Javascript";
66         }
67     else if (language == InkscapeScript::PYTHON)
68         {
69         langname="Python";
70         }
71     else if (language == InkscapeScript::RUBY)
72         {
73         langname="Ruby";
74         }
75     else
76         {
77         g_warning("interpretScript: Unknown Script Language type: %d\n",
78                         language);
79         return false;
80         }
82     Inkscape::Bind::JavaBindery *binder =
83             Inkscape::Bind::JavaBindery::getInstance();
84     if (!binder->loadJVM())  //idempotent
85         {
86         g_warning("interpretScript: unable to start JVM\n");
87         return false;
88         }
89     std::vector<Value> parms;
90     Value retval;
91     Value parm;
92     parm.setString(langname);
93     parms.push_back(parm);
94     parm.setString(script);
95     parms.push_back(parm);
96     bool ret = binder->callStatic(Value::BIND_BOOLEAN,
97                                  "org/inkscape/cmn/ScriptRunner", 
98                              "run",
99                              "(Ljava/lang/String;Ljava/lang/String;)Z",
100                              parms,
101                              retval);
102     if (!ret)
103         {
104         g_warning("interpretScript: failed\n");
105         return false;
106         }
107    
108     return true;
112 /**
113  * Interprets the script in the named file,
114  * storing the stdout output in 'output', and any
115  * error messages in 'error.'  Language is one of the
116  * enumerated types in ScriptLanguage above.
117  */
118 bool InkscapeScript::interpretFile(const Glib::ustring &fname,
119                                  Glib::ustring &output,
120                                  Glib::ustring &error,
121                                  ScriptLanguage language)
123     const char *langname=NULL;
124     //if() instead of switch() lets us scope vars
125     if (language == InkscapeScript::JAVASCRIPT)
126         {
127         langname="Javascript";
128         }
129     else if (language == InkscapeScript::PYTHON)
130         {
131         langname="Python";
132         }
133     else if (language == InkscapeScript::RUBY)
134         {
135         langname="Ruby";
136         }
137     else
138         {
139         g_warning("interpretFile: Unknown Script Language type: %d\n",
140                         language);
141         return false;
142         }
144     Inkscape::Bind::JavaBindery *binder =
145             Inkscape::Bind::JavaBindery::getInstance();
146     if (!binder->loadJVM())  //idempotent
147         {
148         g_warning("interpretFile: unable to start JVM\n");
149         return false;
150         }
151     std::vector<Value> parms;
152     Value retval;
153     Value parm;
154     parm.setString(langname);
155     parms.push_back(parm);
156     parm.setString(fname);
157     parms.push_back(parm);
158     bool ret = binder->callStatic(Value::BIND_BOOLEAN,
159                              "org/inkscape/cmn/ScriptRunner",
160                              "runFile",
161                              "(Ljava/lang/String;Ljava/lang/String;)Z",
162                              parms,
163                              retval);
164     if (!ret)
165         {
166         g_warning("interpretFile: failed\n");
167         return false;
168         }
169    
170     return true;
181 }  // namespace Script
182 }  // namespace Extension
183 }  // namespace Inkscape
185 //#########################################################################
186 //# E N D    O F    F I L E
187 //#########################################################################
189 /*
190   Local Variables:
191   mode:c++
192   c-file-style:"stroustrup"
193   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
194   indent-tabs-mode:nil
195   fill-column:99
196   End:
197 */
198 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :