1 /*
2  * RProjectConfig.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.studio.client.projects.model;
16 
17 import java.util.ArrayList;
18 
19 import org.rstudio.core.client.StringUtil;
20 
21 import com.google.gwt.core.client.JavaScriptObject;
22 import com.google.gwt.core.client.JsArrayString;
23 
24 public class RProjectConfig extends JavaScriptObject
25 {
26    public static final int DEFAULT_VALUE = 0;
27    public static final int YES_VALUE = 1;
28    public static final int NO_VALUE = 2;
29    public static final int ASK_VALUE = 3;
30 
RProjectConfig()31    protected RProjectConfig()
32    {
33    }
34 
createEmpty()35    public native static final RProjectConfig createEmpty() /*-{
36       var config = new Object();
37       config.version = 1.0;
38       return config;
39    }-*/;
40 
getVersion()41    public native final double getVersion() /*-{
42       return this.version;
43    }-*/;
44 
getRVersion()45    public native final RProjectRVersion getRVersion() /*-{
46       return this.r_version;
47    }-*/;
48 
setRVersion(RProjectRVersion rVersion)49    public native final void setRVersion(RProjectRVersion rVersion) /*-{
50       this.r_version = rVersion;
51    }-*/;
52 
getRestoreWorkspace()53    public native final int getRestoreWorkspace() /*-{
54       return this.restore_workspace;
55    }-*/;
56 
setRestoreWorkspace(int restoreWorkspace)57    public native final void setRestoreWorkspace(int restoreWorkspace) /*-{
58       this.restore_workspace = restoreWorkspace;
59    }-*/;
60 
getSaveWorkspace()61    public native final int getSaveWorkspace() /*-{
62       return this.save_workspace;
63    }-*/;
64 
setSaveWorkspace(int saveWorkspace)65    public native final void setSaveWorkspace(int saveWorkspace) /*-{
66       this.save_workspace = saveWorkspace;
67    }-*/;
68 
getAlwaysSaveHistory()69    public native final int getAlwaysSaveHistory() /*-{
70       return this.always_save_history;
71    }-*/;
72 
setAlwaysSaveHistory(int alwaysSaveHistory)73    public native final void setAlwaysSaveHistory(int alwaysSaveHistory) /*-{
74       this.always_save_history = alwaysSaveHistory;
75    }-*/;
76 
getQuitChildProcessesOnExit()77    public native final int getQuitChildProcessesOnExit() /*-{
78       return this.quit_child_processes_on_exit;
79    }-*/;
80 
setQuitChildProcessesOnExit(int quitChildProcessesOnExit)81    public native final void setQuitChildProcessesOnExit(int quitChildProcessesOnExit) /*-{
82       this.quit_child_processes_on_exit = quitChildProcessesOnExit;
83    }-*/;
84 
getDisableExecuteRprofile()85    public native final boolean getDisableExecuteRprofile() /*-{
86       return this.disable_execute_rprofile;
87    }-*/;
88 
setDisableExecuteRprofile(boolean disableExecuteRprofile)89    public native final void setDisableExecuteRprofile(boolean disableExecuteRprofile) /*-{
90       this.disable_execute_rprofile = disableExecuteRprofile;
91    }-*/;
92 
getEnableCodeIndexing()93    public native final boolean getEnableCodeIndexing() /*-{
94       return this.enable_code_indexing;
95    }-*/;
96 
setEnableCodeIndexing(boolean enableCodeIndexing)97    public native final void setEnableCodeIndexing(boolean enableCodeIndexing) /*-{
98       this.enable_code_indexing = enableCodeIndexing;
99    }-*/;
100 
getUseSpacesForTab()101    public native final boolean getUseSpacesForTab() /*-{
102       return this.use_spaces_for_tab;
103    }-*/;
104 
setUseSpacesForTab(boolean useSpacesForTab)105    public native final void setUseSpacesForTab(boolean useSpacesForTab) /*-{
106       this.use_spaces_for_tab = useSpacesForTab;
107    }-*/;
108 
getNumSpacesForTab()109    public native final int getNumSpacesForTab() /*-{
110       return this.num_spaces_for_tab;
111    }-*/;
112 
setNumSpacesForTab(int numSpacesForTab)113    public native final void setNumSpacesForTab(int numSpacesForTab) /*-{
114       this.num_spaces_for_tab = numSpacesForTab;
115    }-*/;
116 
getAutoAppendNewline()117    public native final boolean getAutoAppendNewline() /*-{
118       return this.auto_append_newline;
119    }-*/;
120 
setAutoAppendNewline(boolean autoAppendNewline)121    public native final void setAutoAppendNewline(boolean autoAppendNewline) /*-{
122       this.auto_append_newline = autoAppendNewline;
123    }-*/;
124 
getStripTrailingWhitespace()125    public native final boolean getStripTrailingWhitespace() /*-{
126       return this.strip_trailing_whitespace;
127    }-*/;
128 
setStripTrailingWhitespace(boolean stripTrailingWhitespace)129    public native final void setStripTrailingWhitespace(boolean stripTrailingWhitespace) /*-{
130       this.strip_trailing_whitespace = stripTrailingWhitespace;
131    }-*/;
132 
getLineEndings()133    public native final int getLineEndings() /*-{
134       return this.line_endings;
135    }-*/;
136 
setLineEndings(int lineEndings)137    public native final void setLineEndings(int lineEndings) /*-{
138       this.line_endings = lineEndings;
139    }-*/;
140 
getEncoding()141    public native final String getEncoding() /*-{
142       return this.default_encoding;
143    }-*/;
144 
setEncoding(String defaultEncoding)145    public native final void setEncoding(String defaultEncoding) /*-{
146       this.default_encoding = defaultEncoding;
147    }-*/;
148 
getDefaultSweaveEngine()149    public native final String getDefaultSweaveEngine() /*-{
150       return this.default_sweave_engine;
151    }-*/;
152 
setDefaultSweaveEngine(String defaultSweaveEngine)153    public native final void setDefaultSweaveEngine(String defaultSweaveEngine) /*-{
154       this.default_sweave_engine = defaultSweaveEngine;
155    }-*/;
156 
getDefaultLatexProgram()157    public native final String getDefaultLatexProgram() /*-{
158       return this.default_latex_program;
159    }-*/;
160 
setDefaultLatexProgram(String defaultLatexProgram)161    public native final void setDefaultLatexProgram(String defaultLatexProgram) /*-{
162       this.default_latex_program = defaultLatexProgram;
163    }-*/;
164 
getRootDocument()165    public native final String getRootDocument() /*-{
166       return this.root_document;
167    }-*/;
168 
setRootDocument(String rootDocument)169    public native final void setRootDocument(String rootDocument) /*-{
170       this.root_document = rootDocument;
171    }-*/;
172 
173    public static final String BUILD_TYPE_NONE = "None";
174    public static final String BUILD_TYPE_PACKAGE = "Package";
175    public static final String BUILD_TYPE_MAKEFILE = "Makefile";
176    public static final String BUILD_TYPE_WEBSITE = "Website";
177    public static final String BUILD_TYPE_CUSTOM = "Custom";
178 
getBuildType()179    public native final String getBuildType() /*-{
180       return this.build_type;
181    }-*/;
182 
setBuildType(String buildType)183    public native final void setBuildType(String buildType) /*-{
184       this.build_type = buildType;
185    }-*/;
186 
getPackageUseDevtools()187    public native final boolean getPackageUseDevtools() /*-{
188       return this.package_use_devtools;
189    }-*/;
190 
setPackageUseDevtools(boolean useDevtools)191    public native final void setPackageUseDevtools(boolean useDevtools) /*-{
192       this.package_use_devtools = useDevtools;
193    }-*/;
194 
getPackagePath()195    public native final String getPackagePath() /*-{
196       return this.package_path;
197    }-*/;
198 
setPackagePath(String packagePath)199    public native final void setPackagePath(String packagePath) /*-{
200       this.package_path = packagePath;
201    }-*/;
202 
getPackageInstallArgs()203    public native final String getPackageInstallArgs() /*-{
204       return this.package_install_args;
205    }-*/;
206 
setPackageInstallArgs(String installArgs)207    public native final void setPackageInstallArgs(String installArgs) /*-{
208       this.package_install_args = installArgs;
209    }-*/;
210 
getPackageBuildArgs()211    public native final String getPackageBuildArgs() /*-{
212       return this.package_build_args;
213    }-*/;
214 
setPackageBuildArgs(String buildArgs)215    public native final void setPackageBuildArgs(String buildArgs) /*-{
216       this.package_build_args = buildArgs;
217    }-*/;
218 
219 
getPackageBuildBinaryArgs()220    public native final String getPackageBuildBinaryArgs() /*-{
221       return this.package_build_binary_args;
222    }-*/;
223 
setPackageBuildBinaryArgs(String buildArgs)224    public native final void setPackageBuildBinaryArgs(String buildArgs) /*-{
225       this.package_build_binary_args = buildArgs;
226    }-*/;
227 
getPackageCheckArgs()228    public native final String getPackageCheckArgs() /*-{
229       return this.package_check_args;
230    }-*/;
231 
setPackageCheckArgs(String checkArgs)232    public native final void setPackageCheckArgs(String checkArgs) /*-{
233       this.package_check_args = checkArgs;
234    }-*/;
235 
236 
hasPackageRoxygenize()237    public final boolean hasPackageRoxygenize()
238    {
239       return !StringUtil.isNullOrEmpty(getPackageRoxygenizeNative());
240    }
241 
getPackageRoxygenzieRd()242    public final boolean getPackageRoxygenzieRd()
243    {
244       return getPackageRoxygenize(ROXYGENIZE_RD);
245    }
246 
getPackageRoxygenizeNamespace()247    public final boolean getPackageRoxygenizeNamespace()
248    {
249       return getPackageRoxygenize(ROXYGENIZE_NAMESPACE);
250    }
251 
getPackageRoxygenizeCollate()252    public final boolean getPackageRoxygenizeCollate()
253    {
254       return getPackageRoxygenize(ROXYGENIZE_COLLATE);
255    }
256 
getPackageRoxygenizeVignette()257    public final boolean getPackageRoxygenizeVignette()
258    {
259       return getPackageRoxygenize(ROXYGENIZE_VIGNETTE);
260    }
261 
setPackageRoxygenize(boolean rd, boolean collate, boolean namespace, boolean vignette)262    public final void setPackageRoxygenize(boolean rd,
263                                           boolean collate,
264                                           boolean namespace,
265                                           boolean vignette)
266    {
267       ArrayList<String> roclets = new ArrayList<>();
268       if (rd)
269          roclets.add(ROXYGENIZE_RD);
270       if (collate)
271          roclets.add(ROXYGENIZE_COLLATE);
272       if (namespace)
273          roclets.add(ROXYGENIZE_NAMESPACE);
274       if (vignette)
275          roclets.add(ROXYGENIZE_VIGNETTE);
276 
277       String roxygenize = StringUtil.join(roclets, ROXYGENIZE_DELIM);
278       setPackageRoxygenizeNative(roxygenize);
279    }
280 
281    private static final String ROXYGENIZE_RD = "rd";
282    private static final String ROXYGENIZE_COLLATE = "collate";
283    private static final String ROXYGENIZE_NAMESPACE = "namespace";
284    private static final String ROXYGENIZE_VIGNETTE = "vignette";
285    private static final String ROXYGENIZE_DELIM = ",";
286 
getPackageRoxygenize(String roclet)287    private final boolean getPackageRoxygenize(String roclet)
288    {
289       String[] roclets = getPackageRoxygenizeNative().split(ROXYGENIZE_DELIM);
290       for (int i=0; i<roclets.length; i++)
291          if (roclets[i] == roclet)
292             return true;
293 
294       return false;
295    }
296 
getPackageRoxygenizeNative()297    private native final String getPackageRoxygenizeNative() /*-{
298       return this.package_roxygenize;
299    }-*/;
300 
setPackageRoxygenizeNative(String roxygenize)301    private native final void setPackageRoxygenizeNative(String roxygenize) /*-{
302       this.package_roxygenize = roxygenize;
303    }-*/;
304 
getMakefilePath()305    public native final String getMakefilePath() /*-{
306       return this.makefile_path;
307    }-*/;
308 
setMakefilePath(String makefilePath)309    public native final void setMakefilePath(String makefilePath) /*-{
310       this.makefile_path = makefilePath;
311    }-*/;
312 
getWebsitePath()313    public native final String getWebsitePath() /*-{
314       return this.website_path;
315    }-*/;
316 
setWebsitePath(String websitePath)317    public native final void setWebsitePath(String websitePath) /*-{
318       this.website_path = websitePath;
319    }-*/;
320 
getCustomScriptPath()321    public native final String getCustomScriptPath() /*-{
322       return this.custom_script_path;
323    }-*/;
324 
setCustomScriptPath(String customScriptPath)325    public native final void setCustomScriptPath(String customScriptPath) /*-{
326       this.custom_script_path = customScriptPath;
327    }-*/;
328 
getTutorialPath()329    public native final String getTutorialPath() /*-{
330       return this.tutorial_path;
331    }-*/;
332 
setTutorialPath(String tutorialPath)333    public native final void setTutorialPath(String tutorialPath) /*-{
334       this.tutorial_path = tutorialPath;
335    }-*/;
336 
337    public static final String MARKDOWN_WRAP_DEFAULT = "Default";
338    public static final String MARKDOWN_WRAP_NONE = "None";
339    public static final String MARKDOWN_WRAP_COLUMN = "Column";
340    public static final String MARKDOWN_WRAP_SENTENCE = "Sentence";
341 
getMarkdownWrap()342    public native final String getMarkdownWrap() /*-{
343       return this.markdown_wrap;
344    }-*/;
345 
setMarkdownWrap(String wrap)346    public native final void setMarkdownWrap(String wrap) /*-{
347       this.markdown_wrap = wrap;
348    }-*/;
349 
getMarkdownWrapAtColumn()350    public native final int getMarkdownWrapAtColumn() /*-{
351       return this.markdown_wrap_at_column;
352    }-*/;
353 
setMarkdownWrapAtColumn(int column)354    public native final void setMarkdownWrapAtColumn(int column) /*-{
355       this.markdown_wrap_at_column = column;
356    }-*/;
357 
358    public static final String MARKDOWN_REFERENCES_DEFAULT = "Default";
359    public static final String MARKDOWN_REFERENCES_BLOCK = "Block";
360    public static final String MARKDOWN_REFERENCES_SECTION = "Section";
361    public static final String MARKDOWN_REFERENCES_DOCUMENT = "Document";
362 
getMarkdownReferences()363    public native final String getMarkdownReferences() /*-{
364       return this.markdown_references;
365    }-*/;
366 
setMarkdownReferences(String references)367    public native final void setMarkdownReferences(String references) /*-{
368       this.markdown_references = references;
369    }-*/;
370 
getMarkdownCanonical()371    public native final int getMarkdownCanonical() /*-{
372       return this.markdown_canonical;
373    }-*/;
374 
setMarkdownCanonical(int canonical)375    public native final void setMarkdownCanonical(int canonical) /*-{
376       this.markdown_canonical = canonical;
377    }-*/;
378 
getPythonType()379    public native final String getPythonType() /*-{
380       return this.python_type;
381    }-*/;
382 
setPythonType(String type)383    public native final void setPythonType(String type) /*-{
384       this.python_type = type;
385    }-*/;
386 
getPythonVersion()387    public native final String getPythonVersion() /*-{
388       return this.python_version;
389    }-*/;
390 
setPythonVersion(String version)391    public native final void setPythonVersion(String version) /*-{
392       this.python_version = version;
393    }-*/;
394 
getPythonPath()395    public native final String getPythonPath() /*-{
396       return this.python_path;
397    }-*/;
398 
setPythonPath(String path)399    public native final void setPythonPath(String path) /*-{
400       this.python_path = path;
401    }-*/;
402 
getSpellingDictionary()403    public native final String getSpellingDictionary() /*-{
404       return this.spelling_dictionary;
405    }-*/;
406 
setSpellingDictionary(String dictionary)407    public native final void setSpellingDictionary(String dictionary) /*-{
408       this.spelling_dictionary = dictionary;
409    }-*/;
410 
getZoteroLibraries()411    public native final JsArrayString getZoteroLibraries()  /*-{
412       return this.zotero_libraries || null;
413    }-*/;
414 
setZoteroLibraries(JsArrayString libraries)415    public native final void setZoteroLibraries(JsArrayString libraries) /*-{
416       this.zotero_libraries = libraries;
417    }-*/;
418 
419 
420 
421 }
422