Skylar Ittner 8 years ago
parent ddaecb8594
commit 8affecbf39

@ -102,6 +102,10 @@ public class CodeCompleter {
switch (fileid) {
case "functions":
String[] args = line.split("\\|");
// Prefix symat to Java commands
if (lang.equals("java")) {
args[0] = "symat." + args[0];
}
if (args.length == 2) {
provider.addCompletion(new BasicCompletion(provider, args[0], args[1]));
} else if (args.length == 3) {

@ -92,9 +92,11 @@ public class Editor extends javax.swing.JInternalFrame {
private boolean fileChanged = false;
private CompletionProvider jscomp = new CodeCompleter("js").getProvider();
private CompletionProvider javacomp = new CodeCompleter("java").getProvider();
private CompletionProvider pycomp = new CodeCompleter("py").getProvider();
private AutoCompletion jsac = new AutoCompletion(jscomp);
private AutoCompletion pyac = new AutoCompletion(pycomp);
private AutoCompletion javaac = new AutoCompletion(javacomp);
/**
* The JavaScript language.
@ -169,6 +171,9 @@ public class Editor extends javax.swing.JInternalFrame {
pythonOption.setSelected(true);
codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON);
} else if (lang == JAVA) {
javaac.install(codeBox);
javascriptOption.setSelected(false);
javaOption.setSelected(true);
codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
} else {
jsac.install(codeBox);
@ -928,12 +933,14 @@ public class Editor extends javax.swing.JInternalFrame {
private void javascriptOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javascriptOptionActionPerformed
codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
pyac.uninstall();
javaac.uninstall();
jsac.install(codeBox);
}//GEN-LAST:event_javascriptOptionActionPerformed
private void pythonOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pythonOptionActionPerformed
codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON);
jsac.uninstall();
javaac.uninstall();
pyac.install(codeBox);
}//GEN-LAST:event_pythonOptionActionPerformed
@ -1010,8 +1017,9 @@ public class Editor extends javax.swing.JInternalFrame {
private void javaOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaOptionActionPerformed
codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
//pyac.uninstall();
//jsac.install(codeBox);
pyac.uninstall();
jsac.uninstall();
javaac.install(codeBox);
}//GEN-LAST:event_javaOptionActionPerformed
private void createShared(String id) {
@ -1057,14 +1065,15 @@ public class Editor extends javax.swing.JInternalFrame {
text += line + "\n";
}
} catch (Exception e) {
text = "Error: Could not open embedded sample file.";
if (ext.startsWith("j")) {
text = "/* " + text + " */";
} else {
text = "## " + text;
}
outputBox.setText("Error: Could not open embedded sample file.");
// if (ext.startsWith("j")) {
// text = "/* " + text + " */";
// } else {
// text = "## " + text;
// }
}
openString(text, name + "." + ext, false);
// Open it and remove the .txt ending on Java files
openString(text, name + "." + ext.replace(".txt", ""), false);
}
@Override

@ -66,15 +66,16 @@
<Component class="javax.swing.JList" name="topicList">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
<StringArray count="8">
<StringArray count="9">
<StringItem index="0" value="Welcome"/>
<StringItem index="1" value="Basics"/>
<StringItem index="2" value="Editor"/>
<StringItem index="3" value="Pads"/>
<StringItem index="4" value="Graphing"/>
<StringItem index="5" value="Tasks"/>
<StringItem index="6" value="Commands"/>
<StringItem index="7" value="Licenses"/>
<StringItem index="5" value="Notepad"/>
<StringItem index="6" value="Tasks"/>
<StringItem index="7" value="Commands"/>
<StringItem index="8" value="Licenses"/>
</StringArray>
</Property>
<Property name="selectionMode" type="int" value="0"/>

@ -127,7 +127,11 @@ public class Help extends javax.swing.JInternalFrame {
setBackground(Color.LIGHT_GRAY);
styleloaded = 0;
}
loadTopic(topicList.getSelectedValue().toString().toLowerCase());
try {
loadTopic(topicList.getSelectedValue().toString().toLowerCase());
} catch (Exception ex) {
loadTopic("welcome");
}
}
}
@ -172,7 +176,7 @@ public class Help extends javax.swing.JInternalFrame {
jSplitPane1.setResizeWeight(0.1);
topicList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Welcome", "Basics", "Editor", "Pads", "Graphing", "Tasks", "Commands", "Licenses" };
String[] strings = { "Welcome", "Basics", "Editor", "Pads", "Graphing", "Notepad", "Tasks", "Commands", "Licenses" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});

@ -339,11 +339,10 @@ public class Main extends JRibbonFrame {
tries++;
}
JRibbon ribbon = getRibbon();
JRibbonBand coreband = new JRibbonBand("Core", null);
JRibbonBand appsband = new JRibbonBand("Apps", null);
JRibbonBand webband = new JRibbonBand("Community", null);
JRibbonBand codeband = new JRibbonBand("Code", null);
JRibbonBand toolsband = new JRibbonBand("Tools", null);
JRibbonBand webband = new JRibbonBand("Web", null);
JRibbonBand collabband = new JRibbonBand("Team", null);
//JRibbonBand getpluginband = new JRibbonBand("Install", null);
try {
loadPlugins();
@ -385,12 +384,10 @@ public class Main extends JRibbonFrame {
WebBrowser.WIKI_LOGO));
}
});
forumbtn.addActionListener(new ActionListener() {
browserbtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
loadFrame(new WebBrowser("Community Forum",
"http://forum.symatapp.com/",
WebBrowser.FORUM_LOGO));
loadFrame(new WebBrowser());
}
});
padsbtn.addActionListener(new ActionListener() {
@ -416,31 +413,28 @@ public class Main extends JRibbonFrame {
"Write quick notes on a virtual napkin."));
wikibtn.setActionRichTooltip(new RichTooltip("SyMAT Wiki",
"View and edit online documentation and tutorials."));
forumbtn.setActionRichTooltip(new RichTooltip("Support Forum",
"Discuss and share with the SyMAT community."));
browserbtn.setActionRichTooltip(new RichTooltip("Web Browser",
"Go online and browse the web."));
padsbtn.setActionRichTooltip(new RichTooltip("Code Pads",
"Collaborate over the Internet on projects."));
tasksbtn.setActionRichTooltip(new RichTooltip("Task List",
"Manage tasks and to-do lists for projects."));
coreband.addCommandButton(shellbtn, RibbonElementPriority.TOP);
coreband.addCommandButton(editorbtn, RibbonElementPriority.TOP);
codeband.addCommandButton(shellbtn, RibbonElementPriority.TOP);
codeband.addCommandButton(editorbtn, RibbonElementPriority.TOP);
appsband.addCommandButton(graphbtn, RibbonElementPriority.MEDIUM);
appsband.addCommandButton(notepadbtn, RibbonElementPriority.MEDIUM);
toolsband.addCommandButton(graphbtn, RibbonElementPriority.MEDIUM);
toolsband.addCommandButton(notepadbtn, RibbonElementPriority.MEDIUM);
toolsband.addCommandButton(tasksbtn, RibbonElementPriority.MEDIUM);
webband.addCommandButton(wikibtn, RibbonElementPriority.LOW);
webband.addCommandButton(forumbtn, RibbonElementPriority.LOW);
webband.addCommandButton(padsbtn, RibbonElementPriority.TOP);
webband.addCommandButton(browserbtn, RibbonElementPriority.MEDIUM);
webband.addCommandButton(wikibtn, RibbonElementPriority.MEDIUM);
collabband.addCommandButton(padsbtn, RibbonElementPriority.MEDIUM);
collabband.addCommandButton(tasksbtn, RibbonElementPriority.MEDIUM);
coreband.setResizePolicies((List) Arrays.asList(
new CoreRibbonResizePolicies.None(coreband.getControlPanel()),
new IconRibbonBandResizePolicy(coreband.getControlPanel())));
appsband.setResizePolicies((List) Arrays.asList(
new CoreRibbonResizePolicies.None(appsband.getControlPanel()),
new IconRibbonBandResizePolicy(appsband.getControlPanel())));
codeband.setResizePolicies((List) Arrays.asList(new CoreRibbonResizePolicies.None(codeband.getControlPanel()),
new IconRibbonBandResizePolicy(codeband.getControlPanel())));
toolsband.setResizePolicies((List) Arrays.asList(new CoreRibbonResizePolicies.None(toolsband.getControlPanel()),
new IconRibbonBandResizePolicy(toolsband.getControlPanel())));
webband.setResizePolicies((List) Arrays.asList(
new CoreRibbonResizePolicies.None(webband.getControlPanel()),
new IconRibbonBandResizePolicy(webband.getControlPanel())));
@ -454,14 +448,14 @@ public class Main extends JRibbonFrame {
// new CoreRibbonResizePolicies.None(appsband.getControlPanel()),
// new IconRibbonBandResizePolicy(pluginband.getControlPanel())));
RibbonTask hometask = new RibbonTask("Home", coreband, appsband);
RibbonTask webtask = new RibbonTask("Tools", webband, collabband);
RibbonTask hometask = new RibbonTask("Apps", codeband, toolsband, webband);
//RibbonTask webtask = new RibbonTask("Tools", webband, collabband);
RibbonTask plugintask = new RibbonTask("Plugins", pluginband);
loadRibbonMenu(null);
ribbon.addTask(hometask);
ribbon.addTask(webtask);
//ribbon.addTask(webtask);
ribbon.addTask(plugintask);
}
@ -559,7 +553,7 @@ public class Main extends JRibbonFrame {
new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
loadFrame(new Editor());
loadFrame(new Editor(Editor.JAVASCRIPT));
}
},
JCommandButton.CommandButtonKind.ACTION_ONLY);
@ -570,7 +564,18 @@ public class Main extends JRibbonFrame {
new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
loadFrame(new Editor(true));
loadFrame(new Editor(Editor.PYTHON));
}
},
JCommandButton.CommandButtonKind.ACTION_ONLY);
RibbonApplicationMenuEntrySecondary newjavabtn
= new RibbonApplicationMenuEntrySecondary(
getTinyRibbonIcon("jaicon"),
"Java",
new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
loadFrame(new Editor(Editor.JAVA));
}
},
JCommandButton.CommandButtonKind.ACTION_ONLY);
@ -637,7 +642,7 @@ public class Main extends JRibbonFrame {
} else {
openbtn.addSecondaryMenuGroup("Recent Files", recent);
}
newbtn.addSecondaryMenuGroup("Code File", newjsbtn, newpybtn);
newbtn.addSecondaryMenuGroup("Code File", newjsbtn, newpybtn, newjavabtn);
newbtn.addSecondaryMenuGroup("Other", newtaskbtn);
RibbonApplicationMenuEntryFooter displaybtn
@ -1150,8 +1155,8 @@ public class Main extends JRibbonFrame {
/**
*
*/
public static JCommandButton forumbtn
= new JCommandButton("Forum", getRibbonIcon("forum"));
public static JCommandButton browserbtn
= new JCommandButton("Browser", getRibbonIcon("browser"));
/**
*

@ -85,7 +85,7 @@
<Dimension value="[300, 300]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[480, 400]"/>
<Dimension value="[550, 391]"/>
</Property>
</Properties>
<SyntheticProperties>
@ -107,16 +107,19 @@
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-112,0,0,1,-32"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-121,0,0,2,38"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="javax.swing.JSplitPane" name="jSplitPane1">
<Properties>
<Property name="dividerLocation" type="int" value="260"/>
<Property name="dividerLocation" type="int" value="200"/>
<Property name="orientation" type="int" value="0"/>
<Property name="resizeWeight" type="double" value="0.7"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[550, 375]"/>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
@ -143,23 +146,66 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
</Container>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
<JSplitPaneConstraints position="right"/>
<JSplitPaneConstraints position="bottom"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="437" max="32767" attributes="0"/>
<Component id="clearBtn" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="jScrollPane1" alignment="0" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="clearBtn" alignment="0" min="-2" pref="18" max="-2" attributes="0"/>
</Group>
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="100" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextArea" name="outputBox">
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="outputBox">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="1"/>
<Property name="tabSize" type="int" value="4"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="clearBtn">
<Properties>
<Property name="text" type="java.lang.String" value="Clear"/>
<Property name="toolTipText" type="java.lang.String" value=""/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearBtnActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="1"/>
<Property name="tabSize" type="int" value="4"/>
<Property name="text" type="java.lang.String" value="Output:"/>
</Properties>
</Component>
</SubComponents>

@ -219,8 +219,11 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
jSplitPane1 = new javax.swing.JSplitPane();
browserBox = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
outputBox = new javax.swing.JTextArea();
clearBtn = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
statusBar = new javax.swing.JToolBar();
statusLbl = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
@ -239,7 +242,7 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
setTitle("Pad Editor");
setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/editor.png"))); // NOI18N
setMinimumSize(new java.awt.Dimension(300, 300));
setPreferredSize(new java.awt.Dimension(480, 400));
setPreferredSize(new java.awt.Dimension(550, 391));
addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
}
@ -266,9 +269,10 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
}
});
jSplitPane1.setDividerLocation(260);
jSplitPane1.setDividerLocation(200);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setResizeWeight(0.7);
jSplitPane1.setPreferredSize(new java.awt.Dimension(550, 375));
browserBox.setMinimumSize(new java.awt.Dimension(100, 25));
browserBox.addComponentListener(new java.awt.event.ComponentAdapter() {
@ -284,7 +288,37 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
outputBox.setTabSize(4);
jScrollPane1.setViewportView(outputBox);
jSplitPane1.setRightComponent(jScrollPane1);
clearBtn.setText("Clear");
clearBtn.setToolTipText("");
clearBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearBtnActionPerformed(evt);
}
});
jLabel1.setText("Output:");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 437, Short.MAX_VALUE)
.addComponent(clearBtn))
.addComponent(jScrollPane1)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(clearBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE))
);
jSplitPane1.setBottomComponent(jPanel1);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
@ -426,21 +460,31 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
}
private void javascriptOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javascriptOptionActionPerformed
pythonOption.setSelected(false);
javaOption.setSelected(false);
javascriptOption.setSelected(true);
}//GEN-LAST:event_javascriptOptionActionPerformed
private void pythonOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pythonOptionActionPerformed
pythonOption.setSelected(true);
javaOption.setSelected(false);
javascriptOption.setSelected(false);
}//GEN-LAST:event_pythonOptionActionPerformed
private void javaOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaOptionActionPerformed
pythonOption.setSelected(false);
javaOption.setSelected(true);
javascriptOption.setSelected(false);
}//GEN-LAST:event_javaOptionActionPerformed
private void browserBoxComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_browserBoxComponentResized
resizeAll();
}//GEN-LAST:event_browserBoxComponentResized
private void clearBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearBtnActionPerformed
outputBox.setText("");
}//GEN-LAST:event_clearBtnActionPerformed
private void resizeAll() {
Platform.runLater(new Runnable() {
@Override
@ -454,8 +498,11 @@ public class PadEditor extends javax.swing.JInternalFrame implements RunScriptLi
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel browserBox;
private javax.swing.JButton clearBtn;
private javax.swing.JMenu codeLangMenu;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JRadioButtonMenuItem javaOption;

@ -95,6 +95,7 @@ public class Update extends javax.swing.JInternalFrame {
@Override
public void run() {
changelogBox.setText(html);
changelogBox.setCaretPosition(0);
}
});
}

@ -61,11 +61,14 @@
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="Main.ubuntuRegular.deriveFont(16.0f)" type="code"/>
</Property>
<Property name="text" type="java.lang.String" value="&lt;"/>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/net/apocalypselabs/symat/icons/arrow-left.png"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Go back a page"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
<Dimension value="[50, 50]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
@ -93,31 +96,69 @@
<AuxValue name="JavaCodeGenerator_ListenersCodePost" type="java.lang.String" value="navBar.add(urlBox, java.awt.BorderLayout.CENTER);&#xa;/*"/>
</AuxValues>
</Component>
<Component class="javax.swing.JButton" name="goBtn">
<Container class="javax.swing.JToolBar" name="buttonBar">
<Properties>
<Property name="text" type="java.lang.String" value="Go"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
</Property>
<Property name="verticalTextPosition" type="int" value="3"/>
<Property name="floatable" type="boolean" value="false"/>
<Property name="rollover" type="boolean" value="true"/>
<Property name="borderPainted" type="boolean" value="false"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="goBtnActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="*/"/>
<AuxValue name="JavaCodeGenerator_InitCodePost" type="java.lang.String" value="navBar.add(goBtn, java.awt.BorderLayout.EAST);"/>
<AuxValue name="JavaCodeGenerator_ListenersCodePost" type="java.lang.String" value="/*"/>
<AuxValue name="JavaCodeGenerator_InitCodePost" type="java.lang.String" value="navBar.add(buttonBar, BorderLayout.EAST);"/>
<AuxValue name="JavaCodeGenerator_LayoutCodePost" type="java.lang.String" value="/*"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
</AuxValues>
</Component>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="goBtn">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/net/apocalypselabs/symat/icons/goarrow.png"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Navigate"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 50]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 21]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 30]"/>
</Property>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="goBtnActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="*/"/>
<AuxValue name="JavaCodeGenerator_InitCodePost" type="java.lang.String" value="buttonBar.add(goBtn);"/>
<AuxValue name="JavaCodeGenerator_ListenersCodePost" type="java.lang.String" value="/*"/>
</AuxValues>
</Component>
<Component class="javax.swing.JToolBar$Separator" name="sepBar">
</Component>
<Component class="javax.swing.JButton" name="homeBtn">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/net/apocalypselabs/symat/icons/home.png"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Go to homepage"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 50]"/>
</Property>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="homeBtnActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="browserBox">

@ -56,6 +56,7 @@
package net.apocalypselabs.symat;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@ -76,6 +77,8 @@ import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;
import javafx.util.Callback;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
@ -190,27 +193,6 @@ public class WebBrowser extends javax.swing.JInternalFrame {
loadURL("http://wiki.symatapp.com/");
}
/**
*
* @return
*/
public String homepage() {
try {
String text = "";
BufferedReader reader = new BufferedReader(
new InputStreamReader(
WebBrowser.class
.getResourceAsStream("resources/homepage.html")));
String line;
while ((line = reader.readLine()) != null) {
text += line;
}
return text;
} catch (IOException ex) {
return "Error: " + ex.getMessage();
}
}
/**
*
* @param title
@ -232,15 +214,21 @@ public class WebBrowser extends javax.swing.JInternalFrame {
this(title, url);
switch (icon) {
case WIKI_LOGO:
homeBtn.setVisible(false);
sepBar.setVisible(false);
setFrameIcon(new ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/wiki.png")));
break;
case FORUM_LOGO:
homeBtn.setVisible(false);
sepBar.setVisible(false);
setFrameIcon(new ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/forum.png")));
break;
case PAD_LOGO:
navBar.setVisible(false);
goBtn.setEnabled(false);
backBtn.setEnabled(false);
homeBtn.setVisible(false);
sepBar.setVisible(false);
setFrameIcon(new ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/editor.png")));
break;
default:
@ -274,14 +262,90 @@ public class WebBrowser extends javax.swing.JInternalFrame {
* @param url
*/
public void loadURL(final String url) {
Platform.runLater(new Runnable() {
@Override
public void run() {
webEngine.load(url);
resizeAll();
if (url.startsWith("about:")) {
final String action = url.replace("about:", "");
Platform.runLater(new Runnable() {
@Override
public void run() {
switch (action) {
case "home":
webEngine.loadContent(homepage());
break;
case "blank":
webEngine.loadContent("");
break;
case "new":
Main.loadFrame(new WebBrowser());
break;
default:
webEngine.loadContent(errorpage("Invalid URL", "That isn't a valid address."));
}
resizeAll();
}
});
urlBox.setText(url);
} else {
Platform.runLater(new Runnable() {
@Override
public void run() {
webEngine.load(url);
resizeAll();
}
});
urlBox.setText(url);
}
}
/**
* Get the homepage/startpage HTML.
*
* @return
*/
public String homepage() {
try {
String text = "";
BufferedReader reader = new BufferedReader(
new InputStreamReader(
WebBrowser.class
.getResourceAsStream("resources/homepage.html")));
String line;
while ((line = reader.readLine()) != null) {
text += line;
}
});
urlBox.setText(url);
return text;
} catch (IOException ex) {
return errorpage("Error: " + ex.getMessage(), ex.toString());
}
}
/**
* Returns a webpage suitable for showing error messages.
*
* @param error Short error message
* @param details Error information
* @return HTML page content
*/
public String errorpage(String error, String details) {
try {
String text = "";
BufferedReader reader = new BufferedReader(
new InputStreamReader(
WebBrowser.class
.getResourceAsStream("resources/errorpage.html")));
String line;
while ((line = reader.readLine()) != null) {
text += line;
}
text = text.replaceAll("<<<ERROR>>>", error);
text = text.replaceAll("<<<DETAILS>>>", details);
return text;
} catch (IOException ex) {
return "Oh, no! Something bad happened:<br />"
+ error
+ "<br />Also, an error occured "
+ "while displaying the error page: "
+ ex.getMessage();
}
}
/**
@ -318,7 +382,10 @@ public class WebBrowser extends javax.swing.JInternalFrame {
navBar = new javax.swing.JToolBar();
backBtn = new javax.swing.JButton();
urlBox = new javax.swing.JTextField();
buttonBar = new javax.swing.JToolBar();
goBtn = new javax.swing.JButton();
sepBar = new javax.swing.JToolBar.Separator();
homeBtn = new javax.swing.JButton();
browserBox = new javax.swing.JPanel();
setClosable(true);
@ -360,10 +427,11 @@ public class WebBrowser extends javax.swing.JInternalFrame {
navBar.setLayout(new java.awt.BorderLayout());
backBtn.setFont(Main.ubuntuRegular.deriveFont(16.0f));
backBtn.setText("<");
backBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/arrow-left.png"))); // NOI18N
backBtn.setToolTipText("Go back a page");
backBtn.setFocusable(false);
backBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
backBtn.setMaximumSize(new java.awt.Dimension(30, 21));
backBtn.setMaximumSize(new java.awt.Dimension(50, 50));
backBtn.setMinimumSize(new java.awt.Dimension(30, 21));
backBtn.setPreferredSize(new java.awt.Dimension(30, 21));
backBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
@ -387,21 +455,45 @@ public class WebBrowser extends javax.swing.JInternalFrame {
navBar.add(urlBox);
*/
goBtn.setText("Go");
goBtn.setFocusable(false);
buttonBar.setFloatable(false);
buttonBar.setRollover(true);
buttonBar.setBorderPainted(false);
navBar.add(buttonBar, BorderLayout.EAST);
goBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/goarrow.png"))); // NOI18N
goBtn.setToolTipText("Navigate");
goBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
goBtn.setMaximumSize(new java.awt.Dimension(30, 21));
goBtn.setMaximumSize(new java.awt.Dimension(50, 50));
goBtn.setMinimumSize(new java.awt.Dimension(30, 21));
goBtn.setPreferredSize(new java.awt.Dimension(30, 21));
goBtn.setPreferredSize(new java.awt.Dimension(30, 30));
goBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
navBar.add(goBtn, java.awt.BorderLayout.EAST);
buttonBar.add(goBtn);
goBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
goBtnActionPerformed(evt);
}
});
/*
navBar.add(goBtn);
buttonBar.add(goBtn);
*/
buttonBar.add(sepBar);
homeBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/home.png"))); // NOI18N
homeBtn.setToolTipText("Go to homepage");
homeBtn.setFocusable(false);
homeBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
homeBtn.setMaximumSize(new java.awt.Dimension(50, 50));
homeBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
homeBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
homeBtnActionPerformed(evt);
}
});
buttonBar.add(homeBtn);
/*
navBar.add(buttonBar);
*/
getContentPane().add(navBar, java.awt.BorderLayout.PAGE_START);
@ -437,7 +529,7 @@ public class WebBrowser extends javax.swing.JInternalFrame {
if (urlBox.getText().equals("about:home")) {
loadString(homepage());
} else {
if (!urlBox.getText().startsWith("http")) {
if (!urlBox.getText().startsWith("http") && !urlBox.getText().startsWith("about:")) {
urlBox.setText("http://" + urlBox.getText());
}
loadURL(urlBox.getText());
@ -456,6 +548,10 @@ public class WebBrowser extends javax.swing.JInternalFrame {
});
}//GEN-LAST:event_backBtnActionPerformed
private void homeBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_homeBtnActionPerformed
loadURL("about:home");
}//GEN-LAST:event_homeBtnActionPerformed
private void resizeAll() {
Platform.runLater(new Runnable() {
@Override
@ -466,12 +562,33 @@ public class WebBrowser extends javax.swing.JInternalFrame {
}
});
}
/**
* Add a component to the toolbar.
* @param btn The JComponent to add.
*/
public void addButton(JComponent btn) {
buttonBar.add(btn);
}
/**
* Add a button to the toolbar.
* @param btn The JButton to add.
* @param action An ActionListener to handle actions.
*/
public void addButton(JButton btn, ActionListener action) {
buttonBar.add(btn);
btn.addActionListener(action);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton backBtn;
private javax.swing.JPanel browserBox;
public javax.swing.JToolBar buttonBar;
private javax.swing.JButton goBtn;
private javax.swing.JButton homeBtn;
private javax.swing.JToolBar navBar;
private javax.swing.JToolBar.Separator sepBar;
private javax.swing.JTextField urlBox;
// End of variables declaration//GEN-END:variables
}

@ -1,3 +1,3 @@
String formula = ask("Enter formula:");
plot(formula);
plotname("Cool graph!");
String formula = symat.ask("Enter formula:");
symat.plot(formula);
symat.plotname("Cool graph!");

@ -1,6 +1,9 @@
public class HelloWorld {
public static void main(String[] args) {
print("Hello world");
String message = "Hello World!";
int x = 5;
print(message);
symat.notify(message + " X is " + x + ".");
}
}

@ -1,162 +1,6 @@
void notify(String msg) {
SyMAT_Functions.notify(msg);
}
Object ask(String msg) {
return SyMAT_Functions.ask(msg);
}
Object factorial(int n) {
return SyMAT_Functions.factorial(n);
}
Object diff(String fun,String var) {
return SyMAT_Functions.diff(fun,var);
}
Object integrate(String fun,String var) {
return SyMAT_Functions.integrate(fun,var);
}
Object rad(double num) {
return SyMAT_Functions.rad(num);
}
Object deg(double num) {
return SyMAT_Functions.deg(num);
}
Object subs(String fun,String var) {
return SyMAT_Functions.subs(fun,var);
}
void plot(String fun) {
SyMAT_Functions.plot(fun);
}
void plot() {
SyMAT_Functions.plot();
}
void plotname(String fun) {
SyMAT_Functions.plotname(fun);
}
Object plotname() {
return SyMAT_Functions.plotname();
}
void xlim(int min, int max) {
SyMAT_Functions.xlim(min,max);
}
void plotclr() {
SyMAT_Functions.plotclr();
}
void drawdot(int x, int y) {
SyMAT_Functions.drawdot(x, y);
}
Object simplify(String expr) {
return SyMAT_Functions.simplify(expr);
}
Object vpa(String expr) {
return SyMAT_Functions.vpa(expr);
}
Object readfile(String path) {
return SyMAT_Functions.readfile(path);
}
void savefile(String data,String path) {
SyMAT_Functions.savefile(data,path);
}
Object mtimes(double[][] a, double[][] b) {
return SyMAT_Functions.mtimes(a,b);
}
Object mpower(double[][] a, int b) {
return SyMAT_Functions.mpower(a,b);
}
Object add(double a...) {
return SyMAT_Functions.add(a);
}
Object subtract(double a...) {
return SyMAT_Functions.subtract(a);
}
Object times(double a...) {
return SyMAT_Functions.times(a);
}
Object divide(double a...) {
return SyMAT_Functions.divide(a);
}
Object mod(double a...) {
return SyMAT_Functions.mod(a);
}
Object rand(int min, int max) {
return SyMAT_Functions.rand(min,max);
}
Object rand(int min) {
return SyMAT_Functions.rand(min,1);
}
Object rand() {
return SyMAT_Functions.rand(0,1);
}
Object randb() {
return SyMAT_Functions.randb();
}
void sleep(int x) {
SyMAT_Functions.sleep(x);
}
void pause(int x) {
SyMAT_Functions.pause(x);
}
Object perms(double a...) {
return SyMAT_Functions.perms(a);
}
Object md5sum(String a) {
return SyMAT_Functions.md5sum(a);
}
Object save(String a, String b) {
return SyMAT_Functions.save(a,b);
}
Object load(String a) {
return SyMAT_Functions.load(a);
}
Object powermod(String a,String b,String m) {
return SyMAT_Functions.powermod(a,b,m);
}
Object powermod(double a,double b,double m) {
return SyMAT_Functions.powermod(a,b,m);
}
Object gcd(long a,long b) {
return SyMAT_Functions.gcd(a,b);
}
Object solve(String a, String b, int c) {
return SyMAT_Functions.solve(a,b,c);
}
Object solve(String a) {
return SyMAT_Functions.solve(a,"x",0);
}
Object printa(Object a) {
return SyMAT_Functions.printa(a);
}
Object sec(double a) {
return SyMAT_Functions.sec(a);
}
Object csc(double a) {
return SyMAT_Functions.csc(a);
}
Object cot(double a) {
return SyMAT_Functions.cot(a);
}
Object asec(double a) {
return SyMAT_Functions.asec(a);
}
Object acsc(double a) {
return SyMAT_Functions.acsc(a);
}
Object acot(double a) {
return SyMAT_Functions.acot(a);
}
Object sech(double a) {
return SyMAT_Functions.sech(a);
}
Object csch(double a) {
return SyMAT_Functions.csch(a);
}
Object coth(double a) {
return SyMAT_Functions.coth(a);
}
Object filedialog() {
return SyMAT_Functions.filedialog();
}
Object textbox() {
return SyMAT_Functions.textbox();
}
Object browser() {
return SyMAT_Functions.browser();
}
import net.apocalypselabs.symat.Functions;
Functions symat = new Functions();
public static final double E = java.lang.Math.E;
public static final double PI = java.lang.Math.PI;
public static final double SQRT1_2 = java.lang.Math.sqrt(0.5);
public static final double SQRT2 = java.lang.Math.sqrt(2);

@ -8,6 +8,7 @@
<br>Try typing commands, like "2*2" or "sin(.5)".
<br>You can make variables too, try "x=.5" then "sin(x)".
<br><br>SyMAT keeps track of the last few commands you enter in a shell.
To run one again, use the up and down keys to navigate the history.</p>
To run one again, use the up and down keys to navigate the history.
<br><br>To see a list of special SyMAT commands, press Ctrl-Space while editing code.</p>
</body>
</html>

@ -55,7 +55,7 @@
If any part of this license is deemed unenforcable, the remainder
of the license remains in full effect.</p>
<h2>This application also uses libraries from third-parties.</h2>
<h3>tl;dr: Apache License, Modified BSD, GNU LGPL, Python Software License, CDDL V1.1, Mozilla Public License, Ubuntu Font License</h3>
<h3>tl;dr: Apache License, Modified BSD, GNU LGPL, Python Software License, CDDL V1.1, Mozilla Public License, SIL Open Font License, Ubuntu Font License</h3>
<p><b>Symja (parser), log4j, Java-Prettify, json-simple, java-etherpad-lite:</b></p>
<p>Licensed under the Apache License, Version 2.0 (the "License");<br>
you may not use this file except in compliance with the License.<br>
@ -774,6 +774,103 @@ The code released under the CDDL shall be governed by the laws of the State of C
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br>
</p><br>
<br>
<p><b>Font Awesome</b></p>
<pre>Copyright (c) 2015, Dave Gandy (http://fontawesome.io),
with Reserved Font Name Font Awesome.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
</pre>
<br>
<p><b>iTextPDF, Symja (core), BeanShell:</b></p>
<p> GNU LESSER GENERAL PUBLIC LICENSE<br>
Version 3, 29 June 2007<br>

@ -0,0 +1,11 @@
<html>
<head>
<title>Notepad</title>
</head>
<body>
<h1>Notepad</h1>
<p>
The Notepad is a window that automatically remembers what you type. Save reminders, code snippets, and more.
</p>
</body>
</html>

@ -10,7 +10,7 @@
servers. Share the address SyMAT gives you, and other people can
access the script online.
<br>To access a script, open Pads from the Tools tab.
You can add, share, edit, and download pads from this window.
You can add, share, edit, run, and download pads from this window.
</p>
</body>
</html>
</html>

@ -5,7 +5,7 @@
<body>
<h1>Task Lists</h1>
<p>
Create a new Task List from the SyMAT Menu or the Tools tab.
Create a new Task List from the SyMAT Menu or the Ribbon.
<br>Items can be added from the Edit menu.
To change the values of a task item,
click the corresponding menu button.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save