Help file fix

This commit is contained in:
Skylar 2015-05-14 01:38:44 -06:00
parent b41551c9e2
commit db689e81b6
4 changed files with 321 additions and 345 deletions

View File

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

View File

@ -1,301 +1,301 @@
/* /*
* CODE LICENSE ===================== * CODE LICENSE =====================
* Copyright (c) 2015, Apocalypse Laboratories * Copyright (c) 2015, Apocalypse Laboratories
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without modification, * Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met: * are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. * list of conditions and the following disclaimer.
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation and/or * this list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution. * other materials provided with the distribution.
* *
* 3. Neither the name of the copyright holder nor the names of its contributors * 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without * may be used to endorse or promote products derived from this software without
* specific prior written permission. * specific prior written permission.
* *
* 4. You adhere to the Media License detailed below. If you do not, this license * 4. You adhere to the Media License detailed below. If you do not, this license
* is automatically revoked and you must purge all copies of the software you * is automatically revoked and you must purge all copies of the software you
* possess, in source or binary form. * possess, in source or binary form.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
* MEDIA LICENSE ==================== * MEDIA LICENSE ====================
* All images and other graphical files (the "graphics") included with this * All images and other graphical files (the "graphics") included with this
* software are copyright (c) 2015 Apocalypse Laboratories. You may not distribute * software are copyright (c) 2015 Apocalypse Laboratories. You may not distribute
* the graphics or any program, source code repository, or other digital storage * the graphics or any program, source code repository, or other digital storage
* media containing them without written permission from Apocalypse Laboratories. * media containing them without written permission from Apocalypse Laboratories.
* This ban on distribution only applies to publicly available systems. * This ban on distribution only applies to publicly available systems.
* A password-protected network file share, USB drive, or other storage scheme that * A password-protected network file share, USB drive, or other storage scheme that
* cannot be easily accessed by the public is generally allowed. If in doubt, * cannot be easily accessed by the public is generally allowed. If in doubt,
* contact Apocalypse Laboratories. If Apocalypse Laboratories allows or denies * contact Apocalypse Laboratories. If Apocalypse Laboratories allows or denies
* you permission, that decision is considered final and binding. * you permission, that decision is considered final and binding.
*/ */
package net.apocalypselabs.symat; package net.apocalypselabs.symat;
import java.awt.Color; import java.awt.Color;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.Calendar; import java.util.Calendar;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet; import javax.swing.text.html.StyleSheet;
/** /**
* *
* @author Skylar * @author Skylar
*/ */
public class Help extends javax.swing.JInternalFrame { public class Help extends javax.swing.JInternalFrame {
/* /*
Some styling stuff. Some styling stuff.
*/ */
private final HTMLEditorKit kit; private final HTMLEditorKit kit;
private final StyleSheet styleSheet; private final StyleSheet styleSheet;
private final StyleSheet dark = new StyleSheet(); private final StyleSheet dark = new StyleSheet();
private final StyleSheet light = new StyleSheet(); private final StyleSheet light = new StyleSheet();
private int styleloaded = -1; private int styleloaded = -1;
/** /**
* Creates new form Help * Creates new form Help
*/ */
public Help() { public Help() {
kit = new HTMLEditorKit(); kit = new HTMLEditorKit();
initComponents(); initComponents();
styleSheet = kit.getStyleSheet(); styleSheet = kit.getStyleSheet();
loadStyleSheets(); loadStyleSheets();
loadTheme(); loadTheme();
} }
/** /**
* Load the styles for the main box. * Load the styles for the main box.
*/ */
private void loadStyleSheets() { private void loadStyleSheets() {
dark.addRule("body { background-color: #293134; }"); dark.addRule("body { background-color: #293134; }");
dark.addRule("h1 { color: #ffffff; }"); dark.addRule("h1 { color: #ffffff; }");
dark.addRule("h2 { color: #ffffff; }"); dark.addRule("h2 { color: #ffffff; }");
dark.addRule("p { color: #ffffff; }"); dark.addRule("p { color: #ffffff; }");
light.addRule("body { background-color: #ffffff; }"); light.addRule("body { background-color: #ffffff; }");
light.addRule("h1 { color: #000000; }"); light.addRule("h1 { color: #000000; }");
light.addRule("h2 { color: #000000; }"); light.addRule("h2 { color: #000000; }");
light.addRule("p { color: #000000; }"); light.addRule("p { color: #000000; }");
} }
/** /**
* (Re)load the theme for this window. * (Re)load the theme for this window.
*/ */
private void loadTheme() { private void loadTheme() {
if ((PrefStorage.getSetting("theme").equals("dark") && styleloaded == 0) if ((PrefStorage.getSetting("theme").equals("dark") && styleloaded == 0)
|| (!PrefStorage.getSetting("theme").equals("dark") && styleloaded == 1)) { || (!PrefStorage.getSetting("theme").equals("dark") && styleloaded == 1)) {
styleloaded = -1; styleloaded = -1;
} }
if (styleloaded == -1) { if (styleloaded == -1) {
if (PrefStorage.getSetting("theme").equals("dark")) { if (PrefStorage.getSetting("theme").equals("dark")) {
topicList.setBackground(new Color(41, 49, 52)); topicList.setBackground(new Color(41, 49, 52));
topicList.setForeground(Color.WHITE); topicList.setForeground(Color.WHITE);
styleSheet.addStyleSheet(dark); styleSheet.addStyleSheet(dark);
styleSheet.removeStyleSheet(light); styleSheet.removeStyleSheet(light);
setBackground(Color.DARK_GRAY); setBackground(Color.DARK_GRAY);
styleloaded = 1; styleloaded = 1;
} else { } else {
topicList.setBackground(Color.WHITE); topicList.setBackground(Color.WHITE);
topicList.setForeground(Color.BLACK); topicList.setForeground(Color.BLACK);
styleSheet.addStyleSheet(light); styleSheet.addStyleSheet(light);
styleSheet.removeStyleSheet(dark); styleSheet.removeStyleSheet(dark);
setBackground(Color.LIGHT_GRAY); setBackground(Color.LIGHT_GRAY);
styleloaded = 0; styleloaded = 0;
} }
loadTopic(topicList.getSelectedValue().toString().toLowerCase()); loadTopic(topicList.getSelectedValue().toString().toLowerCase());
} }
} }
/** /**
* Load a help topic from the help package. * Load a help topic from the help package.
* *
* @param topicName The name of the help file, without the ".html". * @param topicName The name of the help file, without the ".html".
*/ */
public void loadTopic(String topicName) { public void loadTopic(String topicName) {
new LoadThread(topicName).start(); new LoadThread(topicName).start();
} }
/** /**
* This method is called from within the constructor to initialize the form. * This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always * WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor. * regenerated by the Form Editor.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() { private void initComponents() {
jSplitPane1 = new javax.swing.JSplitPane(); jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane(); jScrollPane1 = new javax.swing.JScrollPane();
topicList = new javax.swing.JList(); topicList = new javax.swing.JList();
jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane2 = new javax.swing.JScrollPane();
topicBrowser = new javax.swing.JEditorPane(); topicBrowser = new javax.swing.JEditorPane();
setClosable(true); setClosable(true);
setIconifiable(true); setIconifiable(true);
setMaximizable(true); setMaximizable(true);
setResizable(true); setResizable(true);
setTitle("Manual"); setTitle("Manual");
setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/help.png"))); // NOI18N setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/help.png"))); // NOI18N
addComponentListener(new java.awt.event.ComponentAdapter() { addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) { public void componentShown(java.awt.event.ComponentEvent evt) {
formComponentShown(evt); formComponentShown(evt);
} }
}); });
jSplitPane1.setDividerLocation(100); jSplitPane1.setDividerLocation(100);
jSplitPane1.setDividerSize(3); jSplitPane1.setDividerSize(3);
jSplitPane1.setResizeWeight(0.1); jSplitPane1.setResizeWeight(0.1);
topicList.setModel(new javax.swing.AbstractListModel() { topicList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Welcome", "Basics", "Editor", "Pads", "Graphing", "Plugins", "Tasks", "Commands", "Licenses" }; String[] strings = { "Welcome", "Basics", "Editor", "Pads", "Graphing", "Tasks", "Commands", "Licenses" };
public int getSize() { return strings.length; } public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; } public Object getElementAt(int i) { return strings[i]; }
}); });
topicList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); topicList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
topicList.setSelectedIndex(0); topicList.setSelectedIndex(0);
topicList.setVisibleRowCount(9); topicList.setVisibleRowCount(9);
topicList.addMouseListener(new java.awt.event.MouseAdapter() { topicList.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) { public void mouseClicked(java.awt.event.MouseEvent evt) {
topicListMouseClicked(evt); topicListMouseClicked(evt);
} }
}); });
topicList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { topicList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) { public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
topicListValueChanged(evt); topicListValueChanged(evt);
} }
}); });
jScrollPane1.setViewportView(topicList); jScrollPane1.setViewportView(topicList);
jSplitPane1.setLeftComponent(jScrollPane1); jSplitPane1.setLeftComponent(jScrollPane1);
topicBrowser.setEditable(false); topicBrowser.setEditable(false);
topicBrowser.setBorder(null); topicBrowser.setBorder(null);
topicBrowser.setContentType("text/html"); // NOI18N topicBrowser.setContentType("text/html"); // NOI18N
topicBrowser.setText("<html>\r\n <head>\r\n\r\n </head>\r\n <body>\r\n <p style=\"margin-top: 0\">\r\n \rHi there\n </p>\r\n </body>\r\n</html>\r\n"); topicBrowser.setText("<html>\r\n <head>\r\n\r\n </head>\r\n <body>\r\n <p style=\"margin-top: 0\">\r\n \rHi there\n </p>\r\n </body>\r\n</html>\r\n");
topicBrowser.setEditorKit(kit); topicBrowser.setEditorKit(kit);
topicBrowser.addMouseListener(new java.awt.event.MouseAdapter() { topicBrowser.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) { public void mouseClicked(java.awt.event.MouseEvent evt) {
topicBrowserMouseClicked(evt); topicBrowserMouseClicked(evt);
} }
}); });
jScrollPane2.setViewportView(topicBrowser); jScrollPane2.setViewportView(topicBrowser);
jSplitPane1.setRightComponent(jScrollPane2); jSplitPane1.setRightComponent(jScrollPane2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout); getContentPane().setLayout(layout);
layout.setHorizontalGroup( layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE) .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE)
); );
layout.setVerticalGroup( layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE) .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
); );
pack(); pack();
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//GEN-END:initComponents
private void topicListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_topicListValueChanged private void topicListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_topicListValueChanged
loadTopic(topicList.getSelectedValue().toString().toLowerCase()); loadTopic(topicList.getSelectedValue().toString().toLowerCase());
}//GEN-LAST:event_topicListValueChanged }//GEN-LAST:event_topicListValueChanged
private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
topicList.setSelectedIndex(0); topicList.setSelectedIndex(0);
loadTopic("welcome"); loadTopic("welcome");
}//GEN-LAST:event_formComponentShown }//GEN-LAST:event_formComponentShown
private void topicListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_topicListMouseClicked private void topicListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_topicListMouseClicked
loadTheme(); loadTheme();
}//GEN-LAST:event_topicListMouseClicked }//GEN-LAST:event_topicListMouseClicked
private void topicBrowserMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_topicBrowserMouseClicked private void topicBrowserMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_topicBrowserMouseClicked
loadTheme(); loadTheme();
}//GEN-LAST:event_topicBrowserMouseClicked }//GEN-LAST:event_topicBrowserMouseClicked
private class LoadThread extends Thread { private class LoadThread extends Thread {
String name; String name;
public LoadThread(String topic) { public LoadThread(String topic) {
name = topic; name = topic;
} }
@Override @Override
public void run() { public void run() {
setText("<p><i>Loading...</i></p>", "Manual"); setText("<p><i>Loading...</i></p>", "Manual");
if (name.equals("welcome")) { if (name.equals("welcome")) {
final String text = "<html><head><title>About SyMAT</title></head>" final String text = "<html><head><title>About SyMAT</title></head>"
+ "<body>" + "<body>"
+ "<h1>Welcome to SyMAT!</h1>" + "<h1>Welcome to SyMAT!</h1>"
+ "<p>SyMAT is a Java-based algebra and calculus system. " + "<p>SyMAT is a Java-based algebra and calculus system. "
+ "Scripts and commands can be written in " + "Scripts and commands can be written in "
+ "JavaScript or Python.</p>" + "JavaScript or Python.</p>"
+ "<p>This is SyMAT version " + "<p>This is SyMAT version "
+ Main.VERSION_NAME + " (" + (int) Main.APP_CODE + ")." + Main.VERSION_NAME + " (" + (int) Main.APP_CODE + ")."
+ "</p>" + "</p>"
+ "<p>SyMAT is copyright &copy; " + "<p>SyMAT is copyright &copy; "
+ Calendar.getInstance().get(Calendar.YEAR) + Calendar.getInstance().get(Calendar.YEAR)
+ " Apocalypse Laboratories." + " Apocalypse Laboratories."
+ "<br />" + "<br />"
+ "This built-in documentation falls under the SyMAT Media License.</p>"; + "This built-in documentation falls under the SyMAT Media License.</p>";
setText(text, "Manual"); setText(text, "Manual");
} else { } else {
try { try {
String text = ""; String text = "";
BufferedReader reader = new BufferedReader( BufferedReader reader = new BufferedReader(
new InputStreamReader( new InputStreamReader(
CodeRunner.class CodeRunner.class
.getResourceAsStream("help/" + name + ".html"))); .getResourceAsStream("help/" + name + ".html")));
String line; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
text += line; text += line;
} }
setText(text, "Manual (" + topicList.getSelectedValue().toString() + ")"); setText(text, "Manual (" + topicList.getSelectedValue().toString() + ")");
} catch (Exception e) { } catch (Exception e) {
//JOptionPane.showInternalMessageDialog(Main.mainPane, //JOptionPane.showInternalMessageDialog(Main.mainPane,
//"Error: Cannot load help topic "+name+".\n\n"+e.getMessage()); //"Error: Cannot load help topic "+name+".\n\n"+e.getMessage());
setText("<html><head></head><body><p><b>Error:</b><br>Cannot get help topic \"" setText("<html><head></head><body><p><b>Error:</b><br>Cannot get help topic \""
+ name + "\".<br>(" + e.getMessage() + ")</p></body></html>", "Manual"); + name + "\".<br>(" + e.getMessage() + ")</p></body></html>", "Manual");
} }
} }
} }
private void setText(String string, String wintitle) { private void setText(String string, String wintitle) {
final String text = string; final String text = string;
final String title = wintitle; final String title = wintitle;
SwingUtilities.invokeLater( SwingUtilities.invokeLater(
new Runnable() { new Runnable() {
@Override @Override
public void run() { public void run() {
topicBrowser.setText(text); topicBrowser.setText(text);
topicBrowser.setCaretPosition(0); topicBrowser.setCaretPosition(0);
setTitle(title); setTitle(title);
} }
}); });
} }
} }
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSplitPane jSplitPane1; private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JEditorPane topicBrowser; private javax.swing.JEditorPane topicBrowser;
private javax.swing.JList topicList; private javax.swing.JList topicList;
// End of variables declaration//GEN-END:variables // End of variables declaration//GEN-END:variables
} }

View File

@ -1,23 +1,16 @@
<html> <html>
<head> <head>
<title>Tasks</title> <title>Pads</title>
</head> </head>
<body> <body>
<h1>Task Lists</h1> <h1>Pads</h1>
<p> <p>
Create a new Task List from the SyMAT Menu or the Tools tab. You can work on code with other people around the world.
<br>Items can be added from the Edit menu. Select File &gt; Share... to upload the current script to SyMAT's
To change the values of a task item, servers. Share the address SyMAT gives you, and other people can
click the corresponding menu button. access the script online.
<br>To delete an item, check the Delete this Task <br>To access a script, open Pads from the Tools tab.
box from its settings. You can add, share, edit, and download pads from this window.
<br>The task list can be named from the Edit menu. </p>
Choose List Title... and enter a name. </body>
</p> </html>
<p>
Task lists can be exported as HTML (web page),
so they can be viewed in any web browser.
Select the Export option from the File menu.
</p>
</body>
</html>

View File

@ -1,16 +0,0 @@
<html>
<head>
<title>Pads</title>
</head>
<body>
<h1>Pads</h1>
<p>
You can work on code with other people around the world.
Select File &gt; Share... to upload the current script to SyMAT's
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.
</p>
</body>
</html>