Permalink
Browse files

Working on adding javascript plugins and new menu system

  • Loading branch information...
1 parent d48abb8 commit 404e21decbf83a6064caa3ea8a9d5fba9728b4d5 @bmcdorman bmcdorman committed Feb 28, 2012
Showing with 3,768 additions and 1,083 deletions.
  1. +9 −93 CMakeLists.txt
  2. +3 −0 TODO.txt
  3. +26 −0 include/Activatable.h
  4. +27 −0 include/Documentation.h
  5. +49 −22 include/MainWindow.h
  6. +27 −4 include/Project.h
  7. +4 −7 include/Repository.h
  8. +28 −0 include/ResourceHelper.h
  9. +39 −49 include/SourceFile.h
  10. +21 −38 include/Tab.h
  11. +2 −2 include/Target.h
  12. +2 −2 include/TargetInterface.h
  13. +2 −0 include/TargetManager.h
  14. +2 −2 include/VideoPlayerTab.h
  15. +14 −14 include/WebTab.h
  16. +1 −1 include/WelcomeTab.h
  17. +46 −0 include/js/Compiler.h
  18. +26 −0 include/js/Compilers.h
  19. +30 −0 include/js/KissScript.h
  20. +25 −0 include/js/MenuPlugin.h
  21. +55 −0 include/js/Process.h
  22. +10 −0 include/js/Script.h
  23. +15 −0 include/js/ScriptUtils.h
  24. +17 −0 include/js/SourceFilePlugin.h
  25. +13 −0 include/js/Target.h
  26. +65 −0 include/menus/ConcreteMenuable.h
  27. +25 −0 include/menus/DeveloperMenu.h
  28. +23 −0 include/menus/DocumentationMenu.h
  29. +47 −0 include/menus/MainWindowMenu.h
  30. +133 −0 include/menus/MenuManager.h
  31. +12 −0 include/menus/Menus.h
  32. +35 −0 include/menus/SourceFileMenu.h
  33. +47 −0 include/menus/TargetMenu.h
  34. +36 −0 include/menus/WebTabMenu.h
  35. +15 −0 include/widgets/TitleDescriptionWidget.h
  36. +71 −0 latex/kisside.aux
  37. +646 −0 latex/kisside.log
  38. +31 −0 latex/kisside.out
  39. BIN latex/kisside.pdf
  40. 0 latex/kisside.synctex.gz(busy)
  41. +35 −0 latex/q.log
  42. BIN lib/libkisside.a
  43. +19 −0 other/asd.java
  44. BIN other/asd/Main.class
  45. +68 −0 other/t.java
  46. BIN other/t/Main.class
  47. BIN other/test
  48. +9 −0 other/test.c
  49. +12 −0 other/test.cpp
  50. BIN rc/icon_set/icons/text-x-generic.png
  51. +1 −0 rc/rc.qrc
  52. +99 −0 src/Documentation.cpp
  53. +129 −91 src/MainWindow.cpp
  54. +7 −2 src/Project.cpp
  55. +6 −11 src/Repository.cpp
  56. +60 −0 src/ResourceHelper.cpp
  57. +121 −222 src/SourceFile.cpp
  58. +3 −3 src/Target.cpp
  59. +16 −0 src/TargetManager.cpp
  60. +5 −1 src/TargetTool.cpp
  61. +4 −4 src/VideoPlayerTab.cpp
  62. +33 −51 src/WebTab.cpp
  63. +5 −2 src/WelcomeTab.cpp
  64. +38 −0 src/js/Compiler.cpp
  65. +41 −0 src/js/Compilers.cpp
  66. +60 −0 src/js/KissScript.cpp
  67. +11 −0 src/js/MenuPlugin.cpp
  68. +119 −0 src/js/Process.cpp
  69. +25 −0 src/js/ScriptUtils.cpp
  70. +1 −0 src/js/SourceFilePlugin.cpp
  71. +8 −3 src/main.cpp
  72. +91 −0 src/menus/ConcreteMenuable.cpp
  73. +37 −0 src/menus/DeveloperMenu.cpp
  74. +23 −0 src/menus/DocumentationMenu.cpp
  75. +75 −0 src/menus/MainWindowMenu.cpp
  76. +338 −0 src/menus/MenuManager.cpp
  77. +178 −0 src/menus/SourceFileMenu.cpp
  78. +95 −0 src/menus/TargetMenu.cpp
  79. +95 −0 src/menus/WebTabMenu.cpp
  80. +3 −4 src/widgets/SourceLocalFailed.cpp
  81. +14 −0 src/widgets/TitleDescriptionWidget.cpp
  82. +31 −0 ui/Documentation.ui
  83. +4 −189 ui/MainWindow.ui
  84. +0 −266 ui/SourceFile.ui
  85. +88 −0 ui/TargetActions.ui
  86. +82 −0 ui/TitleDescriptionWidget.ui
View
102 CMakeLists.txt
@@ -19,6 +19,8 @@ INCLUDE_DIRECTORIES(
${INCLUDE}/dialogs
${INCLUDE}/lexer
${INCLUDE}/widgets
+ ${INCLUDE}/menus
+ ${INCLUDE}/js
)
SET(QT_USE_QTNETWORK TRUE)
@@ -27,99 +29,13 @@ SET(QT_USE_QTSCRIPT TRUE)
SET(QT_USE_PHONON TRUE)
INCLUDE(${QT_USE_FILE})
-SET(KISS_SRCS_CXX
- ${SRC}/Debugger.cpp
- ${SRC}/KissArchive.cpp
- ${SRC}/MainWindow.cpp
- ${SRC}/Repository.cpp
- ${SRC}/SourceFile.cpp
- ${SRC}/SourceFileShared.cpp
- ${SRC}/Target.cpp
- ${SRC}/TargetManager.cpp
- ${SRC}/WebTab.cpp
- ${SRC}/WelcomeTab.cpp
- ${SRC}/dialogs/ChoosePortDialog.cpp
- ${SRC}/dialogs/EditorSettingsDialog.cpp
- ${SRC}/dialogs/SourceDialog.cpp
- ${SRC}/dialogs/TemplateDialog.cpp
- ${SRC}/dialogs/MakeTemplateDialog.cpp
- ${SRC}/dialogs/RequestFileDialog.cpp
- ${SRC}/lexer/LexerC.cpp
- ${SRC}/lexer/LexerCPP.cpp
- ${SRC}/lexer/LexerJava.cpp
- ${SRC}/lexer/LexerFactory.cpp
- ${SRC}/VideoPlayerTab.cpp
- ${SRC}/dialogs/MessageDialog.cpp
- ${SRC}/JavaScript.cpp
- ${SRC}/main.cpp
- ${SRC}/widgets/SourceFindWidget.cpp
- ${SRC}/widgets/SourceLocalFailed.cpp
- ${SRC}/TemplateManager.cpp
- ${SRC}/TemplateFormat.cpp
- ${SRC}/Transaction.cpp
- ${SRC}/UiEventManager.cpp
- ${SRC}/AudioTutorial.cpp
- ${SRC}/Project.cpp
- ${SRC}/ProjectManager.cpp
-)
-
-SET(KISS_UI
- ${UI}/ChoosePortDialog.ui
- ${UI}/Debugger.ui
- ${UI}/EditorSettingsDialog.ui
- ${UI}/FindDialog.ui
- ${UI}/Interaction.ui
- ${UI}/MainWindow.ui
- ${UI}/Repository.ui
- ${UI}/RepositoryDialog.ui
- ${UI}/SourceDialog.ui
- ${UI}/SourceFile.ui
- ${UI}/TargetSettingsDialog.ui
- ${UI}/TemplateDialog.ui
- ${UI}/MakeTemplateDialog.ui
- ${UI}/WebTab.ui
- ${UI}/SourceDialog.ui
- ${UI}/RequestFileDialog.ui
- ${UI}/VideoPlayerTab.ui
- ${UI}/MessageDialog.ui
- ${UI}/SourceFindWidget.ui
- ${UI}/SourceLocalFailed.ui
-)
+FILE(GLOB INCLUDES ${INCLUDE}/* ${INCLUDE}/lexer/* ${INCLUDE}/dialogs/* ${INCLUDE}/widgets/* ${INCLUDE}/menus/* ${INCLUDE}/js/*)
+FILE(GLOB SOURCES ${SRC}/* ${SRC}/lexer/* ${SRC}/dialogs/* ${SRC}/widgets/* ${SRC}/menus/* ${SRC}/js/*)
+FILE(GLOB UIS ${UI}/*)
-SET(KISS_MOC_SRCS
- ${INCLUDE}/Debugger.h
- ${INCLUDE}/MainWindow.h
- ${INCLUDE}/Repository.h
- ${INCLUDE}/SourceFile.h
- ${INCLUDE}/SourceFileShared.h
- ${INCLUDE}/Target.h
- ${INCLUDE}/WebTab.h
- ${INCLUDE}/WelcomeTab.h
- ${INCLUDE}/dialogs/ChoosePortDialog.h
- ${INCLUDE}/dialogs/EditorSettingsDialog.h
- ${INCLUDE}/dialogs/SourceDialog.h
- ${INCLUDE}/dialogs/TemplateDialog.h
- ${INCLUDE}/dialogs/RequestFileDialog.h
- ${INCLUDE}/dialogs/MakeTemplateDialog.h
- ${INCLUDE}/lexer/LexerC.h
- ${INCLUDE}/lexer/LexerCPP.h
- ${INCLUDE}/lexer/LexerJava.h
- ${INCLUDE}/lexer/LexerFactory.h
- ${INCLUDE}/VideoPlayerTab.h
- ${INCLUDE}/dialogs/MessageDialog.h
- ${INCLUDE}/MacroString.h
- ${INCLUDE}/JavaScript.h
- ${INCLUDE}/widgets/SourceFindWidget.h
- ${INCLUDE}/widgets/SourceLocalFailed.h
- ${INCLUDE}/TemplateManager.h
- ${INCLUDE}/TemplateFormat.h
- ${INCLUDE}/Transaction.h
- ${INCLUDE}/CompilerInterface.h
- ${INCLUDE}/UiEventManager.h
- ${INCLUDE}/AudioTutorial.h
- ${INCLUDE}/Project.h
- ${INCLUDE}/ProjectManager.h
-)
+SET(KISS_SRCS_CXX ${SOURCES})
+SET(KISS_UI ${UIS})
+SET(KISS_MOC_SRCS ${INCLUDES})
SET(KISS_QRC_FILES
${RC}/rc.qrc
@@ -132,7 +48,7 @@ QT4_ADD_RESOURCES(KISS_SRCS_CXX ${KISS_QRC_FILES})
IF(APPLE)
SET(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.7.sdk")
- SET(CMAKE_CXX_FLAGS "-arch i386 -arch x86_64")
+ SET(CMAKE_CXX_FLAGS "-arch x86_64")
LINK_DIRECTORIES(/Library/Frameworks/)
ADD_EXECUTABLE(KISS MACOSX_BUNDLE ${KISS_SRCS_CXX})
ELSEIF(UNIX)
View
3 TODO.txt
@@ -0,0 +1,3 @@
+Official To-Do List:
+
+* fix run_for with C++
View
26 include/Activatable.h
@@ -0,0 +1,26 @@
+#ifndef _ACTIVATABLE_H_
+#define _ACTIVATABLE_H_
+
+#include <QObject>
+
+template<typename T>
+class Activatable
+{
+public:
+ Activatable() : m_active(0) {}
+
+ void setActive(T* active) { m_active = active; if(active) activated(); else deactivated(); }
+ T* active() { return m_active; }
+ bool isActive() { return m_active; }
+
+protected:
+ virtual void activated() {}
+ virtual void deactivated() {}
+
+private:
+ T* m_active;
+};
+
+class ActivatableObject : public Activatable<QObject> {};
+
+#endif
View
27 include/Documentation.h
@@ -0,0 +1,27 @@
+#ifndef _DOCUMENTATION_H_
+#define _DOCUMENTATION_H_
+
+#include "Tab.h"
+#include <QListWidgetItem>
+
+
+#define UI_EVENT_OPEN_MANUAL "openManual"
+
+class MainWindow;
+
+class Documentation : public QObject, public TabbedWidget
+{
+Q_OBJECT
+public:
+ Documentation(MainWindow* parent);
+
+ void activate();
+ bool beginSetup();
+ void completeSetup();
+ bool close();
+ void refreshSettings();
+private slots:
+ void itemDoubleClicked(QListWidgetItem* item);
+};
+
+#endif
View
71 include/MainWindow.h
@@ -24,12 +24,12 @@
#include "ui_MainWindow.h"
#include "EditorSettingsDialog.h"
#include "Tab.h"
-#include "Singleton.h"
#include <Qsci/qscilexercpp.h>
#include <QEvent>
#include <QToolButton>
#include <QListWidget>
+#include "MenuManager.h"
#define RECENTS "recents"
@@ -59,7 +59,7 @@ struct Messages
*
* Very little is actually implemented in MainWindow. Instead, most is in the implementation of every Tab.
*/
-class MainWindow : public QMainWindow, private Ui::MainWindow, public Singleton<MainWindow>
+class MainWindow : public QMainWindow, private Ui::MainWindow
{
Q_OBJECT
@@ -69,18 +69,15 @@ class MainWindow : public QMainWindow, private Ui::MainWindow, public Singleton<
void closeEvent(QCloseEvent *e);
- /*!
- * Creates a new SourceFile tab
- */
- void newFile();
-
/*!
* Opens a file with SourceFile tab
* \param filePath Path to file
*/
bool openFile(const QString& filePath);
- void initMenus(Tab* tab);
+ void initMenus(TabbedWidget* tab);
+
+ void initMenus();
/*! Sets Window Title
* \param title Title to append to primary window name
@@ -100,11 +97,11 @@ class MainWindow : public QMainWindow, private Ui::MainWindow, public Singleton<
void setStatusMessage(const QString& message, int time = 0);
/*! Shows given errors in Error View */
- void setErrors(Tab* tab,
+ void setErrors(TabbedWidget* tab,
const QStringList& errors, const QStringList& warnings,
const QStringList& linker, const QStringList& verbose);
- void showErrors(Tab* tab);
+ void showErrors(TabbedWidget* tab);
void hideErrors();
@@ -118,36 +115,59 @@ class MainWindow : public QMainWindow, private Ui::MainWindow, public Singleton<
* Adds given tab window. Calls tab setup functions.
* \param tab Tab to add
*/
- void addTab(Tab* tab);
+ void addTab(TabbedWidget* tab);
+
+ void moveToTab(TabbedWidget* tab);
QTabWidget* tabWidget();
+ QList<TabbedWidget*> tabs();
+
+ template<typename T>
+ QList<T*> tabs() {
+ QList<T*> ret;
+ QList<TabbedWidget*> all = tabs();
+ foreach(TabbedWidget* tab, all) {
+ T* t = dynamic_cast<T*>(tab);
+ if(t) ret.append(t);
+ }
+ return ret;
+ }
+
/*!
* Closes all but given tab
* \param tab Tab to keep open
*/
- void closeAllOthers(Tab* tab);
+ void closeAllOthers(TabbedWidget* tab);
/*! Reinits menus for current tab */
void refreshMenus();
bool eventFilter(QObject* target, QEvent* event);
+ MenuManager* menuManager();
+ Menuable* menuable(const QString& name);
+ QList<Menuable*> menuablesExcept(const QStringList& name);
+ QList<Menuable*> menuables();
+ void activateMenuable(const QString& name, QObject* on);
+
+ friend class MainWindowMenu;
+
public slots:
- void on_actionNew_triggered();
- void on_actionOpen_triggered();
- void on_actionNext_triggered();
- void on_actionPrevious_triggered();
- void on_actionClose_triggered();
+ void newFile();
+ void open();
+ void next();
+ void previous();
+ void closeTab();
void on_actionAbout_triggered();
void errorViewShowVerbose();
void errorViewShowSimple();
void on_actionEditor_Settings_triggered();
+ void managePackages();
+ void installLocalPackage();
private slots:
void on_ui_tabWidget_currentChanged(int i);
- void on_actionManagePackages_triggered();
- void on_actionInstallLocalPackage_triggered();
void openRecent();
void errorClicked(QListWidgetItem* item);
@@ -156,11 +176,18 @@ private slots:
private:
- Tab* m_currentTab;
- Tab* m_errorTab;
+ TabbedWidget* m_currentTab;
+ TabbedWidget* m_errorTab;
EditorSettingsDialog m_editorSettingsDialog;
- QMap<Tab*, Messages> m_messages;
+ QMap<TabbedWidget*, Messages> m_messages;
+ QMap<QWidget*, TabbedWidget*> m_lookup;
QListWidget m_errorList, m_warningList, m_linkErrorList, m_verboseList;
+ MenuManager m_menuManager;
+ QList<Menuable*> m_menuables;
+
+ void addLookup(TabbedWidget* tab);
+ void removeLookup(QWidget* widget);
+ TabbedWidget* lookup(QWidget* widget);
void showErrorMessages(bool verbose = false);
View
31 include/Project.h
@@ -3,15 +3,38 @@
#include <QString>
#include <QIODevice>
+#include <QObject>
-class Project
+class Project : public QObject
{
+Q_OBJECT
public:
- static Project* load(QIODevice* in);
+ bool addFile(const QString& path);
+ bool createFile(const QString& path);
+ const QString& setName(const QString& name);
+
+ void refresh();
+
+ QStringList files() const;
+
+ QStringList resources() const;
+ QStringList sources() const;
+
+ QString outputPath() const;
+
+ const QString& name();
+
+ static Project* load(const QString& path);
+ static Project* create(const QString& path);
+
+signals:
+ void updated();
+
protected:
-private:
+ Project(const QString& name);
- QString m_name;
+private:
+ QString m_path;
};
#endif
View
11 include/Repository.h
@@ -31,18 +31,15 @@
#include <QNetworkReply>
#include <QNetworkAccessManager>
-class Repository : public QWidget, public Tab, private Ui::Repository
+class MainWindow;
+
+class Repository : public QWidget, public TabbedWidget, private Ui::Repository
{
Q_OBJECT
public:
- Repository(QWidget* parent = 0);
+ Repository(MainWindow* parent = 0);
void activate();
- void addActionsFile(QMenu* file);
- void addActionsEdit(QMenu* edit);
- void addActionsHelp(QMenu* help);
- void addOtherActions(QMenuBar* menuBar);
- void addToolbarActions(QToolBar* toolbar);
bool beginSetup();
void completeSetup();
View
28 include/ResourceHelper.h
@@ -0,0 +1,28 @@
+#ifndef _RESOURCE_HELPER_H_
+#define _RESOURCE_HELPER_H_
+
+#include "Singleton.h"
+
+#include <QStringList>
+#include <QMap>
+#include <QIcon>
+#include <QPixmap>
+
+struct ResourceHelper : Singleton<ResourceHelper>
+{
+ ResourceHelper();
+
+ QString lookup(const QString& name);
+ QIcon icon(const QString& name);
+ QPixmap pixmap(const QString& name);
+
+ const QStringList& searchLocations();
+ void addSearchLocation(const QString& location);
+
+private:
+ QMap<QString, QString> m_cache;
+
+ QStringList m_locations;
+};
+
+#endif
View
88 include/SourceFile.h
@@ -67,25 +67,18 @@
#define UI_EVENT_TEMPLATE_SELECTED "templateSelected"
-#define UI_EVENT_OPEN_MANUAL "openManual"
-
class FindDialog;
class MainWindow;
namespace Lexer { class Constructor; }
-class SourceFile : public QWidget, public Tab, private Ui::SourceFile
+class SourceFile : public QWidget, public TabbedWidget, private Ui::SourceFile
{
Q_OBJECT
public:
- SourceFile(QWidget* parent = 0);
+ SourceFile(MainWindow* parent = 0);
void activate();
- void addActionsFile(QMenu* file);
- void addActionsEdit(QMenu* edit);
- void addActionsHelp(QMenu* help);
- void addOtherActions(QMenuBar* menuBar);
- void addToolbarActions(QToolBar* toolbar);
bool beginSetup();
void completeSetup();
@@ -109,14 +102,39 @@ Q_OBJECT
//! \return Current zoom level
int getZoom();
- QsciScintilla* getEditor();
-
void moveTo(int line, int pos);
Target* target();
QsciScintilla* editor();
public slots:
+ bool saveAs();
+
+ void copy();
+ void cut();
+ void paste();
+ void undo();
+ void redo();
+ void find();
+ void print();
+
+ void changeTarget();
+ void choosePort();
+
+ void download();
+ void compile();
+ void run();
+ void stop();
+ void simulate();
+ void debug();
+ void screenGrab();
+ void requestFile();
+
+ void makeTemplate();
+
+ void toggleBreakpoint(bool checked);
+ void clearBreakpoints();
+
void indentAll();
void refreshSettings();
void updateMargins();
@@ -125,48 +143,18 @@ public slots:
void zoomIn();
//! Decreate editor's zoom level
void zoomOut();
-
- //! Promps user to save file to a browsed location
- void on_actionSaveAs_triggered();
+
+ void zoomReset();
//! Save current file
- bool fileSave();
+ bool save();
void sourceModified(bool m);
-
+
+
private slots:
- void on_actionCopy_triggered();
- void on_actionCut_triggered();
- void on_actionPaste_triggered();
- void on_actionUndo_triggered();
- void on_actionRedo_triggered();
- void on_actionFind_triggered();
-
- void openManual();
- void on_actionPrint_triggered();
-
- void on_actionZoomIn_triggered();
- void on_actionZoomOut_triggered();
- void on_actionResetZoomLevel_triggered();
-
- void on_actionChangeTarget_triggered();
- void on_actionChoosePort_triggered();
-
- void on_actionDownload_triggered();
- void on_actionCompile_triggered();
- void on_actionRun_triggered();
- void on_actionStop_triggered();
- void on_actionSimulate_triggered();
- void on_actionDebug_triggered();
- void on_actionScreenGrab_triggered();
- void on_actionRequestFile_triggered();
-
- void on_actionMakeTemplate_triggered();
-
- void on_actionToggleBreakpoint_triggered(bool checked);
- void on_actionClearBreakpoints_triggered();
-
void on_ui_editor_cursorPositionChanged(int line, int index);
+
private:
void showFind();
bool checkPort();
@@ -183,7 +171,7 @@ private slots:
QString m_targetName;
QString m_templateExt;
- bool m_debugger;
+ bool m_debuggerEnabled;
// These are handles for the markers shown in the margin
int m_errorIndicator;
@@ -201,7 +189,9 @@ private slots:
void markProblems(const QStringList& errors, const QStringList& warnings);
void updateErrors();
void updateBreakpointToggle();
- bool changeTarget(bool _template = true);
+ bool changeTarget(bool _template);
+
+ Debugger m_debugger;
protected:
void keyPressEvent(QKeyEvent *event);
View
59 include/Tab.h
@@ -26,48 +26,22 @@ class QMenu;
class QMenuBar;
class QToolBar;
-/*! \class Tab
- * \brief Provides an interface all Tabs must implement
- *
- * A Tab must implement both this interface and QWidget, which is expected once passed to MainWindow for processing.
- */
-class Tab
+#include <QWidget>
+#include <QVariant>
+#include <QDebug>
+
+#define TABBED_WIDGET_PROPERTY "_kiss_tabbed_"
+
+class TabbedWidget
{
-public:
- /*!
- * Called every time this Tab is switched to. Useful for setting window title.
- */
- virtual void activate() = 0;
-
- /*!
- * Allows a Tab to add actions to the "File" menu in the menu bar.
- * \param file Pointer to current file menu
- */
- virtual void addActionsFile(QMenu* file) = 0;
-
- /*!
- * Allows a Tab to add actions to the "Edit" menu in the menu bar.
- * \param edit Pointer to current edit menu
- */
- virtual void addActionsEdit(QMenu* edit) = 0;
+public:
+ TabbedWidget(QWidget* widget, MainWindow* mainWindow = 0) : m_widget(widget), m_mainWindow(mainWindow) {}
+ ~TabbedWidget() { /* delete m_widget; */ }
/*!
- * Allows a Tab to add actions to the "Help" menu in the menu bar.
- * \param help Pointer to current help menu
- */
- virtual void addActionsHelp(QMenu* help) = 0;
-
- /*!
- * Allows a Tab to create menus and add actions to them.
- * \param menuBar Pointer to current menu bar
- */
- virtual void addOtherActions(QMenuBar* menuBar) = 0;
-
- /*!
- * Allows a Tab to add actions to the tool bar.
- * \param toolbar Pointer to current tool bar
+ * Called every time this Tab is switched to. Useful for setting window title.
*/
- virtual void addToolbarActions(QToolBar* toolbar) = 0;
+ virtual void activate() { qWarning() << "Activated"; }
/*!
* Begin setup is called before a Tab is added to the Tab Widget.
@@ -87,6 +61,15 @@ class Tab
virtual bool close() = 0;
virtual void refreshSettings() = 0;
+
+ QWidget* widget() const { return m_widget; }
+
+ MainWindow* mainWindow() const { return m_mainWindow; }
+ void setMainWindow(MainWindow* mainWindow) { m_mainWindow = mainWindow; }
+
+private:
+ QWidget* m_widget;
+ MainWindow* m_mainWindow;
};
#endif
View
4 include/Target.h
@@ -45,7 +45,7 @@ Q_OBJECT
// Sets the current target file (and loads the QPluginLoader object)
bool setTargetFile(const QString& filename);
- QMap<QString, QString> targetManualPaths();
+ static QMap<QString, QString> targetManualPaths(const QString& filename);
QString requestFilePath();
// These pass straight through to the TargetInterface if it is loaded
@@ -117,7 +117,7 @@ Q_OBJECT
* \return Pointer to DebuggerInterface if the TargetInterface exists and debug setup was successful.
*/
DebuggerInterface* debug(const QString& filename);
- Tab* ui();
+ TabbedWidget* ui();
bool hasScreenGrab();
QByteArray screenGrab();
View
4 include/TargetInterface.h
@@ -49,7 +49,7 @@ class TargetInterface
virtual bool simulate(const QString&, const QString&) { return false; }
virtual bool debugConsole(const QString&, const QString&, const QList<Location>&) { return false; }
virtual DebuggerInterface* debug(const QString&, const QString&) { return 0; }
- virtual Tab* ui(const QString&) { return 0; }
+ virtual TabbedWidget* ui(const QString&) { return 0; }
virtual bool hasScreenGrab() { return false; }
virtual QByteArray screenGrab(const QString&) { return QByteArray(); }
@@ -108,6 +108,6 @@ class TargetInterface
QStringList m_errorArgs;
};
-Q_DECLARE_INTERFACE(TargetInterface, "com.kipr.kiss-c.TargetInterface/3.0");
+Q_DECLARE_INTERFACE(TargetInterface, "com.kipr.kiss-c.TargetInterface/3.1");
#endif
View
2 include/TargetManager.h
@@ -34,6 +34,8 @@ class TargetManager : public PluginManager<TargetManager, TargetInterface>
QStringList targets();
QString displayName(const QString& target);
QString targetPath(const QString& target);
+ QStringList targetPaths();
+ QStringList targetFiles();
QStringList allSupportedExtensions();
QString getExpectedLocation(const QString& name) const;
View
4 include/VideoPlayerTab.h
@@ -27,11 +27,11 @@
#include <QWidget>
#include <Phonon>
-class VideoPlayerTab : public QWidget, public Tab, public Ui::VideoPlayerTab
+class VideoPlayerTab : public QWidget, public TabbedWidget, public Ui::VideoPlayerTab
{
Q_OBJECT
public:
- VideoPlayerTab(QWidget* parent = 0);
+ VideoPlayerTab(MainWindow* parent = 0);
void activate();
View
28 include/WebTab.h
@@ -30,47 +30,47 @@
class MainWindow;
-class WebTab : public QWidget, public Tab, protected Ui::WebTab
+class WebTab : public QWidget, public TabbedWidget, protected Ui::WebTab
{
Q_OBJECT
public:
- WebTab(QWidget* parent = 0);
+ WebTab(MainWindow* parent = 0);
~WebTab();
virtual void activate();
- virtual void addActionsFile(QMenu* file);
- virtual void addActionsEdit(QMenu* edit);
- virtual void addActionsHelp(QMenu* help);
- virtual void addOtherActions(QMenuBar* menuBar);
- virtual void addToolbarActions(QToolBar* toolbar);
-
bool beginSetup();
virtual void completeSetup();
bool close();
//! Loads an unformatted URL
void load(QString url, bool hideUrl = false);
+ QString current();
+
+public slots:
+ void copy();
+ void cut();
+ void paste();
+
+ void go();
+ void refresh();
+
+ //! Opens current web page in system's default browser
+ void openInBrowser();
private slots:
void updateTitle(const QString& title);
void updateUrl(const QUrl& url);
void on_actionGo_triggered();
- void on_actionCopy_triggered();
- void on_actionCut_triggered();
- void on_actionPaste_triggered();
void on_ui_prevFind_clicked();
void on_ui_nextFind_clicked();
//! Check if there was an error loading the page
void on_ui_webView_loadFinished(bool ok);
- //! Opens current web page in system's default browser
- void on_actionOpenInBrowser_triggered();
-
void refreshSettings();
protected:
View
2 include/WelcomeTab.h
@@ -27,7 +27,7 @@ class WelcomeTab : public WebTab
{
Q_OBJECT
public:
- WelcomeTab(QWidget* parent = 0);
+ WelcomeTab(MainWindow* parent = 0);
void addActionsEdit(QMenu* edit);
void addOtherActions(QMenuBar* menuBar);
View
46 include/js/Compiler.h
@@ -0,0 +1,46 @@
+#ifndef _COMPILER_H_
+#define _COMPILER_H_
+
+#include <QString>
+#include <QStringList>
+#include <QScriptValue>
+
+struct CompileResult
+{
+ CompileResult(bool success, const QStringList& verboseMessages, const QStringList& errorMessages,
+ const QStringList& warningMessages, const QStringList& linkerMessages);
+
+ const bool success;
+
+ const QStringList verboseMessages;
+ const QStringList errorMessages;
+ const QStringList warningMessages;
+ const QStringList linkerMessages;
+};
+
+class Compiler
+{
+public:
+ Compiler(const QString& name, const QStringList& types);
+
+ const QString& name() const;
+ const QStringList& types() const;
+
+ virtual CompileResult compile(const QStringList& files) = 0;
+private:
+ QString m_name;
+ QStringList m_types;
+};
+
+class CompilerPlugin : public Compiler
+{
+public:
+ CompilerPlugin(const QScriptValue& plugin);
+
+ virtual CompileResult compile(const QStringList& files);
+
+private:
+ QScriptValue m_plugin;
+};
+
+#endif
View
26 include/js/Compilers.h
@@ -0,0 +1,26 @@
+#ifndef _COMPILERS_H_
+#define _COMPILERS_H_
+
+#include "Singleton.h"
+
+#include <QList>
+
+class Compiler;
+
+class Compilers : public Singleton<Compilers>
+{
+public:
+ Compilers();
+
+ void addCompiler(Compiler* compiler);
+ void removeCompiler(Compiler* compiler);
+
+ Compiler* compiler(const QString& type) const;
+ QList<Compiler*> compilers(const QString& type) const;
+ const QList<Compiler*>& compilers() const;
+
+private:
+ QList<Compiler*> m_compilers;
+};
+
+#endif
View
30 include/js/KissScript.h
@@ -0,0 +1,30 @@
+#ifndef _KISSSCRIPT_H_
+#define _KISSSCRIPT_H_
+
+#include <QObject>
+#include <QScriptable>
+#include <QScriptValue>
+
+class KissScript : public QObject, public QScriptable
+{
+Q_OBJECT
+Q_PROPERTY(QString os READ os)
+Q_PROPERTY(QString cwd READ cwd)
+public:
+ KissScript();
+
+ QString os() const;
+ QString cwd() const;
+
+public slots:
+ QScriptValue plugin(const QString& type, const QScriptValue& obj);
+ void log(const QString& from, const QString& message);
+ void log(const QString& message);
+
+ QScriptValue process();
+
+private:
+
+};
+
+#endif
View
25 include/js/MenuPlugin.h
@@ -0,0 +1,25 @@
+#ifndef _MENUPLUGIN_H_
+#define _MENUPLUGIN_H_
+
+#include <QString>
+#include <QStringList>
+#include <QScriptValue>
+#include <QScriptable>
+
+#include "MenuManager.h"
+
+class MenuPlugin : public QObject, public QScriptable//, public Menuable
+{
+Q_OBJECT
+public:
+ MenuPlugin(const QString& name);
+
+public slots:
+ void addAction(const QScriptValue& obj);
+
+private:
+ QMap<QString, MenuNodeList> m_nodes;
+
+};
+
+#endif
View
55 include/js/Process.h
@@ -0,0 +1,55 @@
+#ifndef _PROCESS_H_
+#define _PROCESS_H_
+
+#include <QObject>
+#include <QScriptable>
+#include <QProcess>
+#include <QScriptValue>
+
+class Process : public QObject, public QScriptable
+{
+Q_OBJECT
+Q_PROPERTY(QString program READ program WRITE setProgram)
+Q_PROPERTY(QScriptValue environment READ environment WRITE setEnvironment)
+Q_PROPERTY(QScriptValue systemEnvironment READ systemEnvironment)
+Q_PROPERTY(int exitCode READ exitCode)
+public:
+ Process();
+ Process(const QString& program);
+
+ const QString& program() const;
+ void setProgram(const QString& program);
+ QScriptValue systemEnvironment() const;
+
+public slots:
+ void start(const QStringList& args);
+ void terminate();
+
+ QString stdout() const;
+ QString stderr() const;
+
+ QScriptValue environment() const;
+ void setEnvironment(const QScriptValue& obj);
+
+ void waitForFinished(int timeout);
+
+ int exitCode() const;
+
+signals:
+ void started();
+ void finished(int code, bool normalExit);
+ void error(const QString& message);
+
+private slots:
+ void processFinished(int code, QProcess::ExitStatus status);
+ void processError(QProcess::ProcessError err);
+
+private:
+ void init();
+
+ QString m_program;
+
+ QProcess* m_process;
+};
+
+#endif
View
10 include/js/Script.h
@@ -0,0 +1,10 @@
+#ifndef _SCRIPT_H_
+#define _SCRIPT_H_
+
+class Script
+{
+public:
+
+};
+
+#endif
View
15 include/js/ScriptUtils.h
@@ -0,0 +1,15 @@
+#ifndef _SCRIPTUTILS_H_
+#define _SCRIPTUTILS_H_
+
+#include <QScriptValue>
+#include <QMap>
+#include <QString>
+
+class ScriptUtils
+{
+public:
+ static QMap<QString, QScriptValue> objectMap(QScriptValue object);
+ static QMap<QString, QString> objectStringMap(QScriptValue object);
+};
+
+#endif
View
17 include/js/SourceFilePlugin.h
@@ -0,0 +1,17 @@
+#ifndef _SOURCEFILEPLUGIN_H_
+#define _SOURCEFILEPLUGIN_H_
+
+#include "SourceFile.h"
+
+#include <QObject>
+#include <QScriptable>
+
+class SourceFilePlugin : public QObject, public QScriptable
+{
+Q_OBJECT
+public:
+
+
+};
+
+#endif
View
13 include/js/Target.h
@@ -0,0 +1,13 @@
+#ifndef _TARGET_H_
+#define _TARGET_H_
+
+#include <QString>
+#include <QStringList>
+#include <QScriptValue>
+
+class Target
+{
+
+};
+
+#endif
View
65 include/menus/ConcreteMenuable.h
@@ -0,0 +1,65 @@
+#ifndef _CONCRETEMENUABLE_H_
+#define _CONCRETEMENUABLE_H_
+
+#include "Activatable.h"
+#include "MenuManager.h"
+
+struct Invokable
+{
+ Invokable(ActivatableObject* obj, const char* slot) : obj(obj), slot(slot) {}
+
+ ActivatableObject* obj;
+ const char* slot;
+};
+
+struct ConcreteMenuable : virtual QObject, Menuable
+{
+Q_OBJECT
+public:
+ ConcreteMenuable(const QString& name);
+ ~ConcreteMenuable();
+
+ MenuNodeList actionsFile();
+ MenuNodeList actionsEdit();
+ MenuNodeList actionsHelp();
+ MenuNodeList actions();
+ MenuNodeList toolbarActions();
+
+protected slots:
+ virtual void triggered() = 0;
+ virtual void activeTriggered();
+ virtual void activeToggled(bool state);
+
+protected:
+ MenuNodeList m_file;
+ MenuNodeList m_edit;
+ MenuNodeList m_help;
+ MenuNodeList m_actions;
+ MenuNodeList m_toolbar;
+
+ MenuNode* node(QAction* action);
+
+ QAction* activeAction(const QIcon& icon, const QString& text, const QKeySequence& shortcut, ActivatableObject* activatable, const char* slot);
+ QAction* activeCheckedAction(const QIcon& icon, const QString& text, const QKeySequence& shortcut, ActivatableObject* activatable, const char* slot);
+ QAction* activeAction(const QString& iconRes, const QString& text, const QKeySequence& shortcut, ActivatableObject* activatable, const char* slot);
+ QAction* activeAction(const QString& text, const QKeySequence& shortcut, ActivatableObject* activatable, const char* slot);
+
+ QAction* action(const QIcon& icon, const QString& text, const QKeySequence& shortcut = QKeySequence::UnknownKey);
+
+ QAction* action(const QString& iconRes, const QString& text, const QKeySequence& shortcut = QKeySequence::UnknownKey);
+
+ QAction* action(const QString& text, const QKeySequence& shortcut = QKeySequence::UnknownKey);
+
+ // Preps for action deletion
+ void finish();
+
+private:
+ void finishList(const MenuNodeList& nodes);
+
+ // Sets don't allow duplicates.
+ QSet<QAction*> m_rawActions;
+
+ QMap<QAction*, Invokable> m_activatables;
+};
+
+#endif
View
25 include/menus/DeveloperMenu.h
@@ -0,0 +1,25 @@
+#ifndef _DEVELOPERMENU_H_
+#define _DEVELOPERMENU_H_
+
+#include "Activatable.h"
+#include "MenuManager.h"
+#include "SourceFile.h"
+#include "ConcreteMenuable.h"
+
+class DeveloperMenu : public ConcreteMenuable
+{
+Q_OBJECT
+public:
+ DeveloperMenu();
+
+ static QString menuName();
+
+protected slots:
+ virtual void triggered();
+
+private:
+ QAction* injectScript;
+ QAction* uninstallAll;
+};
+
+#endif
View
23 include/menus/DocumentationMenu.h
@@ -0,0 +1,23 @@
+#ifndef _DOCUMENTATIONMENU_H_
+#define _DOCUMENTATIONMENU_H_
+
+#include <QObject>
+#include "MenuManager.h"
+#include "ConcreteMenuable.h"
+
+class MainWindow;
+
+class DocumentationMenu : public ConcreteMenuable
+{
+Q_OBJECT
+public:
+ DocumentationMenu(MainWindow* mainWindow);
+
+ static QString menuName();
+protected slots:
+ virtual void triggered();
+private:
+ MainWindow* m_mainWindow;
+};
+
+#endif
View
47 include/menus/MainWindowMenu.h
@@ -0,0 +1,47 @@
+#ifndef _MAINWINDOWMENU_H_
+#define _MAINWINDOWMENU_H_
+
+#include "Singleton.h"
+#include "Activatable.h"
+#include "MenuManager.h"
+#include "SourceFile.h"
+#include "ConcreteMenuable.h"
+
+class MainWindowMenu : public ConcreteMenuable, public ActivatableObject
+{
+Q_OBJECT
+public:
+ MainWindowMenu(MainWindow* mainWindow);
+
+ MenuNode* fileOperations() const;
+ MenuNode* nextNode() const;
+ MenuNode* prevNode() const;
+ MenuNode* closeNode() const;
+
+ static QString menuName();
+
+protected slots:
+ virtual void triggered();
+
+private:
+ QAction* newFile;
+ QAction* open;
+ QAction* next;
+ QAction* prev;
+ QAction* close;
+
+ QAction* quit;
+
+ QAction* repo;
+ QAction* install;
+
+ MenuNode* m_nextNode;
+ MenuNode* m_prevNode;
+ MenuNode* m_closeNode;
+
+ MenuNode* m_fileOperations;
+
+ MainWindow* m_mainWindow;
+};
+
+#endif
View
133 include/menus/MenuManager.h
@@ -0,0 +1,133 @@
+#ifndef _MENUMANAGER_H_
+#define _MENUMANAGER_H_
+
+#include "Singleton.h"
+#include "ResourceHelper.h"
+
+#include <QList>
+#include <QSet>
+#include <QMenuBar>
+#include <QToolBar>
+#include <QAction>
+#include <QObject>
+
+typedef QList<QAction*> QActionList;
+
+struct Menuable;
+
+struct MenuableActionPair
+{
+ MenuableActionPair(Menuable* menuable, QAction* action) : menuable(menuable), action(action) {}
+
+ Menuable* menuable;
+ QAction* action;
+};
+
+struct MenuNode
+{
+ MenuNode();
+ MenuNode(const QString& name);
+ MenuNode(const QString& name, Menuable* menuable, QAction* action);
+ MenuNode(Menuable* menuable, QAction* action);
+ ~MenuNode();
+
+ static QList<MenuNode*> unify(QList<MenuNode*> nodes);
+ static MenuNode* insertionPoint();
+ static MenuNode* separator();
+
+ QActionList allActions();
+
+ QAction* rawAction;
+
+ QString name;
+ QList<MenuNode*> children;
+
+ QList<MenuableActionPair> registers;
+
+ bool _insertionPoint;
+ bool activeControl;
+
+private:
+ static QString uniqueName();
+};
+
+typedef QList<MenuNode*> MenuNodeList;
+class MenuManager;
+
+class Menuable
+{
+public:
+ Menuable(const QString& name) : m_name(name), m_menuManager(0) {}
+
+ virtual MenuNodeList actionsFile() = 0;
+ virtual MenuNodeList actionsEdit() = 0;
+ virtual MenuNodeList actionsHelp() = 0;
+ virtual MenuNodeList actions() = 0;
+ virtual MenuNodeList toolbarActions() = 0;
+
+ const QString& name() { return m_name; }
+
+ MenuManager* menuManager() { return m_menuManager; }
+ void setMenuManager(MenuManager* menuManager) { m_menuManager = menuManager; }
+
+private:
+ QString m_name;
+
+ MenuManager* m_menuManager;
+};
+
+class MenuManager : public QObject
+{
+Q_OBJECT
+public:
+ MenuManager();
+ ~MenuManager();
+
+ void registerMenus(Menuable* menuable);
+ void unregisterMenus(Menuable* menuable);
+
+ void activate(QList<Menuable*> menus);
+ void addActivation(Menuable* menuable);
+ void removeActivation(Menuable* menuable);
+
+ void construct(QMenuBar* menuBar, QToolBar* toolBar);
+ bool isConstructed() const;
+
+ void refreshToolbar();
+
+private slots:
+ void triggered();
+
+private:
+ void addChildren(MenuNode* parent, const MenuNodeList& nodes);
+ QList<MenuableActionPair> actionsToPair(Menuable* menuable, const QActionList& actions);
+ void unregisterMenus(Menuable* menuable, MenuNode* node);
+ void construct(QMenu* menu, MenuNodeList nodes);
+ void construct(QToolBar* tool, MenuNodeList nodes);
+ void construct(QMenu* menu, MenuNode* node);
+ void construct(QToolBar* toolbar, MenuNode* node);
+
+ void flattenInsertions(MenuNode* node);
+
+ void refresh();
+ void refresh(MenuNode* node);
+
+ bool isActivatable(MenuNode* node) const;
+
+ MenuNode* lookup(QAction* action);
+
+ MenuNode* m_root;
+
+ MenuNode* m_file;
+ MenuNode* m_edit;
+ MenuNode* m_help;
+
+ MenuNode* m_tool;
+
+ QList<Menuable*> m_active;
+
+ QMenuBar* m_menuBar;
+ QToolBar* m_toolBar;
+};
+
+#endif
View
12 include/menus/Menus.h
@@ -0,0 +1,12 @@
+#ifndef _MENUS_H_
+#define _MENUS_H_
+
+#include "MenuManager.h"
+#include "TargetMenu.h"
+#include "SourceFileMenu.h"
+#include "WebTabMenu.h"
+#include "MainWindowMenu.h"
+#include "DeveloperMenu.h"
+#include "DocumentationMenu.h"
+
+#endif
View
35 include/menus/SourceFileMenu.h
@@ -0,0 +1,35 @@
+#ifndef _SOURCEFILEMENU_H_
+#define _SOURCEFILEMENU_H_
+
+#include "Activatable.h"
+#include "MenuManager.h"
+#include "SourceFile.h"
+#include "ConcreteMenuable.h"
+
+class MainWindow;
+
+class SourceFileMenu : public ConcreteMenuable, public ActivatableObject
+{
+Q_OBJECT
+public:
+ SourceFileMenu(MainWindow* mainWindow);
+
+ MenuNode* breakpointToggle() const;
+
+ static QString menuName();
+
+protected:
+ void activated();
+ void deactivated();
+
+protected slots:
+ virtual void triggered();
+
+private:
+ MenuNode* breakpoint;
+
+ MenuNode* undo;
+ MenuNode* redo;
+};
+
+#endif
View
47 include/menus/TargetMenu.h
@@ -0,0 +1,47 @@
+#ifndef _TARGETMENU_H_
+#define _TARGETMENU_H_
+
+#include "MenuManager.h"
+#include "Singleton.h"
+#include "Activatable.h"
+#include "SourceFile.h"
+#include "ConcreteMenuable.h"
+
+#include <QMultiMap>
+
+class TargetMenu : public ConcreteMenuable, public Singleton<TargetMenu>, public ActivatableObject
+{
+Q_OBJECT
+public:
+ TargetMenu();
+ void refresh();
+
+ MenuNode* additional();
+
+ MenuNodeList manuals();
+ MenuNodeList manuals(const QString& target);
+
+ static QString menuName();
+
+protected:
+ void activated();
+ void deactivated();
+
+protected slots:
+ virtual void triggered();
+
+private:
+ QMultiMap<QString, MenuNode*> m_manuals;
+ QString m_target;
+
+ MenuNode* m_additional;
+
+ MenuNode* compileNode;
+ MenuNode* downloadNode;
+ MenuNode* simulateNode;
+ MenuNode* runNode;
+ MenuNode* stopNode;
+ MenuNode* debugNode;
+};
+
+#endif
View
36 include/menus/WebTabMenu.h
@@ -0,0 +1,36 @@
+#ifndef _WEBTABMENU_H_
+#define _WEBTABMENU_H_
+
+#include "Activatable.h"
+#include "Singleton.h"
+#include "MenuManager.h"
+#include "WebTab.h"
+#include "ConcreteMenuable.h"
+
+class WebTabMenu : public ConcreteMenuable, public ActivatableObject
+{
+Q_OBJECT
+public:
+ WebTabMenu();
+
+ static QString menuName();
+
+protected:
+ void activated();
+ void deactivated();
+
+protected slots:
+ virtual void triggered();
+
+private:
+ QAction* copy;
+ QAction* cut;
+ QAction* paste;
+
+ QAction* back;
+ QAction* forward;
+ QAction* reload;
+ QAction* open;
+};
+
+#endif
View
15 include/widgets/TitleDescriptionWidget.h
@@ -0,0 +1,15 @@
+#ifndef _TITLEDESCRIPTIONWIDGET_H_
+#define _TITLEDESCRIPTIONWIDGET_H_
+
+#include "ui_TitleDescriptionWidget.h"
+#include <QString>
+
+class TitleDescriptionWidget : public QWidget, public Ui::TitleDescriptionWidget
+{
+Q_OBJECT
+public:
+ TitleDescriptionWidget(QWidget* parent);
+ TitleDescriptionWidget(const QString& title, const QString& description, QWidget* parent);
+};
+
+#endif
View
71 latex/kisside.aux
@@ -0,0 +1,71 @@
+\relax
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand\HyField@AuxAddToFields[1]{}
+\select@language{american}
+\@writefile{toc}{\select@language{american}}
+\@writefile{lof}{\select@language{american}}
+\@writefile{lot}{\select@language{american}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Overview}{1}{section.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Tabs}{1}{section.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Tab Classes}{1}{subsection.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Tab Usage}{2}{subsection.2.2}}
+\newlabel{The Tab Class}{{1}{2}{The Tab Class\relax }{lstlisting.1}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}The Tab Class}{2}{lstlisting.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}WebTab KISS URLs}{2}{subsection.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Singletons}{3}{section.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Singleton Classes}{3}{subsection.3.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Plugins}{3}{section.4}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.0.1}Plugin Naming}{3}{subsubsection.4.0.1}}
+\newlabel{Python Target}{{2}{3}{Python Target\relax }{lstlisting.2}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Python Target}{3}{lstlisting.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Lexers}{4}{subsection.4.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}LexerManager Notes}{4}{subsection.4.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {5}KISS Archives}{4}{section.5}}
+\newlabel{KISS Archive Header}{{3}{4}{KISS Archive Header\relax }{lstlisting.3}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}KISS Archive Header}{4}{lstlisting.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}CLI Interface}{4}{subsection.5.1}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}Example Creating KISS Archive}{5}{subsubsection.5.1.1}}
+\newlabel{Building KISS Archive for Windows}{{4}{5}{Building KISS Archive for Windows\relax }{lstlisting.4}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Building KISS Archive for Windows}{5}{lstlisting.4}}
+\newlabel{Building KISS Archive for All Platforms}{{5}{5}{Building KISS Archive for All Platforms\relax }{lstlisting.5}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Building KISS Archive for All Platforms}{5}{lstlisting.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Repositories}{5}{subsection.5.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Example available.lst}{5}{subsubsection.5.2.1}}
+\newlabel{Example available.lst}{{6}{5}{Example available.lst\relax }{lstlisting.6}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Example available.lst}{5}{lstlisting.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Targets}{5}{section.6}}
+\newlabel{Target Class}{{7}{5}{Target Class\relax }{lstlisting.7}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}Target Class}{5}{lstlisting.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Layout of a Target}{6}{subsection.6.1}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}Compiled Target Layout}{7}{subsubsection.6.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Target File}{7}{subsection.6.2}}
+\newlabel{Example Target File}{{8}{7}{Example Target File\relax }{lstlisting.8}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}Example Target File}{7}{lstlisting.8}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1}Target File Options}{7}{subsubsection.6.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}CBCv2}{8}{subsection.6.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Templates}{8}{section.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Template Metadata}{9}{subsection.7.1}}
+\newlabel{Example Template with Metadata}{{9}{9}{Example Template with Metadata\relax }{lstlisting.9}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Example Template with Metadata}{9}{lstlisting.9}}
+\newlabel{Example Template without Metadata}{{10}{10}{Example Template without Metadata\relax }{lstlisting.10}{}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {10}Example Template without Metadata}{10}{lstlisting.10}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Serial Communication with the CBC}{10}{section.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Commands}{10}{subsection.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Useful References for Serial Communication}{11}{subsection.8.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {9}Building KISS}{11}{section.9}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Mac OS X}{11}{subsection.9.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Windows}{12}{subsection.9.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.3}Linux}{13}{subsection.9.3}}
View
646 latex/kisside.log
@@ -0,0 +1,646 @@
+This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011) (format=pdflatex 2011.7.3) 4 AUG 2011 16:10
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**kisside.tex
+(./kisside.tex
+LaTeX2e <2009/09/24>
+Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
+rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi
+c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
+h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
+h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
+ icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
+iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
+ lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
+ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven
+ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded
+.
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/graphics.cfg
+File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
+)
+Package graphics Info: Driver file: pdftex.def on input line 91.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2010/04/08 v1.3 Providing info/warning/message (HO)
+)
+(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2011/04/18 v1.20 LaTeX kernel commands for general use (HO)
+)
+\Gread@gobject=\count87
+))
+\Gin@req@height=\dimen103
+\Gin@req@width=\dimen104
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/float/float.sty
+Package: float 2001/11/08 v1.3d Float enhancements (AL)
+\c@float@type=\count88
+\float@exts=\toks15
+\float@box=\box26
+\@float@everytoks=\toks16
+\@floatcapt=\box27
+)
+(/usr/local/texlive/2011/texmf-dist/tex/generic/ulem/ulem.sty
+\UL@box=\box28
+\UL@hyphenbox=\box29
+\UL@skip=\skip43
+\UL@hook=\toks17
+\UL@height=\dimen105
+\UL@pe=\count89
+\UL@pixel=\dimen106
+\ULC@box=\box30
+Package: ulem 2011/03/18
+\ULdepth=\dimen107
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/listings.sty
+\lst@mode=\count90
+\lst@gtempboxa=\box31
+\lst@token=\toks18
+\lst@length=\count91
+\lst@currlwidth=\dimen108
+\lst@column=\count92
+\lst@pos=\count93
+\lst@lostspace=\dimen109
+\lst@width=\dimen110
+\lst@newlines=\count94
+\lst@lineno=\count95
+\lst@maxwidth=\dimen111
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
+\c@lstnumber=\count96
+\lst@skipnumbers=\count97
+\lst@framebox=\box32
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/listings.cfg
+File: listings.cfg 2007/02/22 1.4 listings configuration
+))
+Package: listings 2007/02/22 1.4 (Carsten Heinz)
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/preprint/fullpage.sty
+Package: fullpage 1999/02/23 1.1 (PWD)
+\FP@margin=\skip44
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2011/04/17 v6.82g Hypertext links for LaTeX
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
+Package: hobsub-hyperref 2011/04/23 v1.4 Bundle oberdiek, subset hyperref (HO)
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
+Package: hobsub-generic 2011/04/23 v1.4 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2011/04/23 v1.4 Subsetting bundle oberdiek (HO)
+Package hobsub Info: Skipping package `infwarerr' (already loaded).
+Package hobsub Info: Skipping package `ltxcmds' (already loaded).
+Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+Package: ifvtex 2010/03/01 v1.5 Switches for detecting VTeX and its modes (HO)
+Package ifvtex Info: VTeX not detected.
+Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO)
+Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in PDF mode is detected.
+Package: etexcmds 2011/02/16 v1.5 Prefix for e-TeX command names (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+Package: kvsetkeys 2011/04/07 v1.13 Key value parser (HO)
+Package: kvdefinekeys 2011/04/07 v1.3 Defining keys (HO)
+Package: pdftexcmds 2011/04/22 v0.16 Utilities of pdfTeX for LuaTeX (HO)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+Package: pdfescape 2011/04/04 v1.12 Provides string conversions (HO)
+Package: bigintcalc 2011/01/30 v1.2 Expandable big integer calculations (HO)
+Package: bitset 2011/01/30 v1.1 Data type bit set (HO)
+Package: uniquecounter 2011/01/30 v1.2 Provides unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
+Package: hopatch 2011/01/30 v1.0 Wrapper for package hooks (HO)
+Package: xcolor-patch 2011/01/30 xcolor patch
+Package: atveryend 2011/04/23 v1.7 Hooks at very end of document (HO)
+Package atveryend Info: \enddocument detected (standard).
+Package: atbegshi 2011/01/30 v1.15 At begin shipout hook (HO)
+Package: refcount 2010/12/01 v3.2 Data extraction from references (HO)
+Package: hycolor 2011/01/30 v1.7 Color options of hyperref/bookmark (HO)
+)
+(/usr/local/texlive/2011/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2010/12/23 v3.10 Keyval support for LaTeX options (HO)
+)
+\@linkdim=\dimen112
+\Hy@linkcounter=\count98
+\Hy@pagecounter=\count99
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2011/04/17 v6.82g Hyperref: PDFDocEncoding definition (HO)
+)
+\Hy@SavedSpaceFactor=\count100
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+Package hyperref Info: Hyper figures OFF on input line 4026.
+Package hyperref Info: Link nesting OFF on input line 4031.
+Package hyperref Info: Hyper index ON on input line 4034.
+Package hyperref Info: Plain pages OFF on input line 4041.
+Package hyperref Info: Backreferencing OFF on input line 4046.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4264.
+\c@Hy@tempcnt=\count101
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip10
+Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 4617.
+\Fld@menulength=\count102
+\Field@Width=\dimen113
+\Fld@charsize=\dimen114
+Package hyperref Info: Hyper figures OFF on input line 5701.
+Package hyperref Info: Link nesting OFF on input line 5706.
+Package hyperref Info: Hyper index ON on input line 5709.
+Package hyperref Info: backreferencing OFF on input line 5716.
+Package hyperref Info: Link coloring OFF on input line 5721.
+Package hyperref Info: Link coloring with OCG OFF on input line 5726.
+Package hyperref Info: PDF/A mode OFF on input line 5731.
+LaTeX Info: Redefining \ref on input line 5771.
+LaTeX Info: Redefining \pageref on input line 5775.
+\Hy@abspage=\count103
+\c@Item=\count104
+\c@Hfootnote=\count105
+)
+
+Package hyperref Message: Driver (autodetected): hpdftex.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2011/04/17 v6.82g Hyperref driver for pdfTeX
+\Fld@listcount=\count106
+\c@bookmark@seq@number=\count107
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
+)
+\Hy@SectionHShift=\skip45
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/tipa/tipa.sty
+Package: tipa 2002/08/08 TIPA version 1.1
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/fontenc.sty
+Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/tipa/t3enc.def
+File: t3enc.def 2001/12/31 T3 encoding
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/ot1enc.def
+File: ot1enc.def 2005/09/27 v1.99g Standard LaTeX file
+LaTeX Font Info: Redeclaring font encoding OT1 on input line 43.
+)))
+(/usr/local/texlive/2011/texmf-dist/tex/latex/natbib/natbib.sty
+Package: natbib 2010/09/13 8.31b (PWD, AO)
+\bibhang=\skip46
+\bibsep=\skip47
+LaTeX Info: Redefining \cite on input line 694.
+\c@NAT@ctr=\count108
+)
+(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2008/07/06 v3.8l The Babel package
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/english.ldf
+Language: english 2005/03/30 v3.3o English support from the babel system
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.def
+File: babel.def 2008/07/06 v3.8l Babel common definitions
+\babel@savecnt=\count109
+\U@D=\dimen115
+)
+\l@canadian = a dialect from \language\l@american
+\l@australian = a dialect from \language\l@british
+\l@newzealand = a dialect from \language\l@british
+))
+(/usr/local/texlive/2011/texmf-dist/tex/latex/csquotes/csquotes.sty
+Package: csquotes 2011/03/25 v5.1c context-sensitive quotations
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+Package: etoolbox 2011/01/03 v2.1 e-TeX tools for LaTeX
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/etex-pkg/etex.sty
+Package: etex 1998/03/26 v2.0 eTeX basic definition package (PEB)
+\et@xins=\count110
+)
+\etb@tempcnta=\count111
+)
+\csq@reset=\count112
+\csq@gtype=\count113
+\csq@glevel=\count114
+\csq@qlevel=\count115
+\csq@maxlvl=\count116
+\csq@tshold=\count117
+\csq@ltx@everypar=\toks19
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/csquotes/csquotes.def
+File: csquotes.def 2011/03/25 v5.1c csquotes generic definitions
+)
+Package csquotes Info: Trying to load configuration file 'csquotes.cfg'...
+Package csquotes Info: ... configuration file loaded successfully.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/csquotes/csquotes.cfg
+File: csquotes.cfg
+))
+(/usr/local/texlive/2011/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 1999/03/05 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/setspace/setspace.sty
+Package: setspace 2000/12/01 6.7 Contributed and Supported LaTeX2e package
+
+Package: `setspace' 6.7 <2000/12/01>
+) (/usr/local/texlive/2011/texmf-dist/tex/latex/qtree/qtree.sty
+Package: 2008/12/12 v.3.1bQtree: tree-drawing for linguistics
+Package: qtree 2008/12/12 v.3.1bQtree: tree-drawing for linguistics
+(/usr/local/texlive/2011/texmf-dist/tex/latex/pict2e/pict2e.sty
+Package: pict2e 2011/04/05 v0.2y Improved picture commands (HjG,RN,JT)
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/pict2e/pict2e.cfg
+File: pict2e.cfg 2011/04/05 v0.1t pict2e configuration for teTeX/TeXLive
+)
+Package pict2e Info: Driver file: pdftex.def on input line 119.
+Package pict2e Info: Driver file for pict2e: p2e-pdftex.def on input line 121.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/pict2e/p2e-pdftex.def
+File: p2e-pdftex.def 2011/04/05 v0.1t Driver-dependant file (RN,HjG,JT)
+)
+\pIIe@GRAPH=\toks21
+\@arclen=\dimen116
+\@arcrad=\dimen117
+\@tempdimd=\dimen118
+)
+\c@treecount=\count118
+\c@branchcount=\count119
+\parentbox=\box33
+\treebox=\box34
+\treeboxone=\box35
+\treeboxtwo=\box36
+\treeboxthree=\box37
+\treeboxfour=\box38
+\treeboxfive=\box39
+\treeboxsix=\box40
+\treeboxseven=\box41
+\treeboxeight=\box42
+\treeboxnine=\box43
+\treeboxten=\box44
+\treeboxeleven=\box45
+\treeboxtwelve=\box46
+\treeboxthirteen=\box47
+\treeboxfourteen=\box48
+\treeboxfifteen=\box49
+\treeboxsixteen=\box50
+\treeboxseventeen=\box51
+\treeboxeighteen=\box52
+\treeboxnineteen=\box53
+\treeboxtwenty=\box54
+\treeoffsetone=\skip48
+\treeoffsettwo=\skip49
+\treeoffsetthree=\skip50
+\treeoffsetfour=\skip51
+\treeoffsetfive=\skip52
+\treeoffsetsix=\skip53
+\treeoffsetseven=\skip54
+\treeoffseteight=\skip55
+\treeoffsetnine=\skip56
+\treeoffsetten=\skip57
+\treeoffseteleven=\skip58
+\treeoffsettwelve=\skip59
+\treeoffsetthirteen=\skip60
+\treeoffsetfourteen=\skip61
+\treeoffsetfifteen=\skip62
+\treeoffsetsixteen=\skip63
+\treeoffsetseventeen=\skip64
+\treeoffseteighteen=\skip65
+\treeoffsetnineteen=\skip66
+\treeoffsettwenty=\skip67
+\treeshiftone=\skip68
+\treeshifttwo=\skip69
+\treeshiftthree=\skip70
+\treeshiftfour=\skip71
+\treeshiftfive=\skip72
+\treeshiftsix=\skip73
+\treeshiftseven=\skip74
+\treeshifteight=\skip75
+\treeshiftnine=\skip76
+\treeshiftten=\skip77
+\treeshifteleven=\skip78
+\treeshifttwelve=\skip79
+\treeshiftthirteen=\skip80
+\treeshiftfourteen=\skip81
+\treeshiftfifteen=\skip82
+\treeshiftsixteen=\skip83
+\treeshiftseventeen=\skip84
+\treeshifteighteen=\skip85
+\treeshiftnineteen=\skip86
+\treeshifttwenty=\skip87
+\treewidthone=\skip88
+\treewidthtwo=\skip89
+\treewidththree=\skip90
+\treewidthfour=\skip91
+\treewidthfive=\skip92
+\treewidthsix=\skip93
+\treewidthseven=\skip94
+\treewidtheight=\skip95
+\treewidthnine=\skip96
+\treewidthten=\skip97
+\treewidtheleven=\skip98
+\treewidthtwelve=\skip99
+\treewidththirteen=\skip100
+\treewidthfourteen=\skip101
+\treewidthfifteen=\skip102
+\treewidthsixteen=\skip103
+\treewidthseventeen=\skip104
+\treewidtheighteen=\skip105
+\treewidthnineteen=\skip106
+\treewidthtwenty=\skip107
+\daughteroffsetone=\skip108
+\daughteroffsettwo=\skip109
+\daughteroffsetthree=\skip110
+\daughteroffsetfour=\skip111
+\branchwidthone=\skip112
+\branchwidthtwo=\skip113
+\branchwidththree=\skip114
+\branchwidthfour=\skip115
+\parentoffset=\skip116
+\treeoffset=\skip117
+\daughteroffset=\skip118
+\branchwidth=\skip119
+\parentwidth=\skip120
+\treewidth=\skip121
+\qta=\toks22
+\qtb=\toks23
+\nbranches=\count120
+\qroofx=\count121
+\qroofy=\count122
+\@qrscratchbox=\box55
+)
+\c@counter=\count123
+Package csquotes Info: Checking for multilingual support...
+Package csquotes Info: ... found 'babel' package.
+Package csquotes Info: Adjusting default style.
+Package csquotes Info: Redefining alias 'default' -> 'american'.
+
+
+LaTeX Warning: Unused global option(s):
+ [7pt].
+
+(./kisside.aux)
+\openout1 = `kisside.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 28.
+LaTeX Font Info: ... okay on input line 28.
+LaTeX Font Info: Checking defaults for T3/cmr/m/n on input line 28.
+LaTeX Font Info: Try loading font information for T3+cmr on input line 28.
+ (/usr/local/texlive/2011/texmf-dist/tex/latex/tipa/t3cmr.fd
+File: t3cmr.fd 2001/12/31 TIPA font definitions
+)
+LaTeX Font Info: ... okay on input line 28.
+
+(/usr/local/texlive/2011/texmf-dist/tex/context/base/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count124
+\scratchdimen=\dimen119
+\scratchbox=\box56
+\nofMPsegments=\count125
+\nofMParguments=\count126
+\everyMPshowfont=\toks24
+\MPscratchCnt=\count127
+\MPscratchDim=\dimen120
+\MPnumerator=\count128
+\makeMPintoPDFobject=\count129
+\everyMPtoPDFconversion=\toks25
+) (/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
+Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/grfext.sty
+Package: grfext 2010/08/19 v1.1 Managing graphics extensions (HO)
+)
+Package grfext Info: Graphics extension search list:
+(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
+G,.JBIG2,.JB2,.eps]
+(grfext) \AppendGraphicsExtensions on input line 452.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
+e
+))
+\c@lstlisting=\count130
+\AtBeginShipoutBox=\box57
+Package hyperref Info: Link coloring OFF on input line 28.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2010/04/30 v2.40 Cross-referencing by name of section
+
+(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
+Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
+)
+\c@section@level=\count131
+)
+LaTeX Info: Redefining \ref on input line 28.
+LaTeX Info: Redefining \pageref on input line 28.
+LaTeX Info: Redefining \nameref on input line 28.
+
+(./kisside.out) (./kisside.out)
+\@outlinefile=\write3
+\openout3 = `kisside.out'.
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 34.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 34.
+ <KISS.png, id=128, 1142.2675pt x 763.85374pt>
+File: KISS.png Graphic file (type png)
+
+<use KISS.png>
+Package pdftex.def Info: KISS.png used on input line 48.
+(pdftex.def) Requested size: 469.75502pt x 314.12614pt.
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 48--49
+[][]
+ []
+
+LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available
+(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 55.
+[1
+
+{/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map} <./KISS.
+png>] (/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2004/09/05 1.3 listings language file
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2004/09/05 1.3 listings language file
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
+)
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 75.
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 75.
+ [2]
+Overfull \hbox (1.15106pt too wide) in paragraph at lines 137--138
+[]\OT1/cmr/m/n/10 - An in-ter-face for plu-gin load-ers. This is im-ple-mented
+by \OT1/cmtt/m/n/10 LexerManager \OT1/cmr/m/n/10 and \OT1/cmtt/m/n/10 TargetMan
+ager\OT1/cmr/m/n/10 .
+ []
+
+LaTeX Font Info: Try loading font information for OMS+cmtt on input line 152
+.
+LaTeX Font Info: No file OMScmtt.fd. on input line 152.
+
+LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
+(Font) using `OMS/cmsy/m/n' instead
+(Font) for symbol `textbraceleft' on input line 152.
+
+
+Package hyperref Warning: Difference (2) between bookmark levels is greater
+(hyperref) than one, level fixed on input line 155.
+
+[3] [4] (/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2004/09/05 1.3 listings language file
+)
+(/usr/local/texlive/2011/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2004/09/05 1.3 listings language file
+)
+LaTeX Font Info: Try loading font information for OML+cmr on input line 222.
+
+
+(/usr/local/texlive/2011/texmf-dist/tex/latex/base/omlcmr.fd
+File: omlcmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10> not available
+(Font) Font shape `OML/cmm/m/it' tried instead on input line 222.
+
+Overfull \hbox (16.24992pt too wide) in paragraph at lines 231--232
+[][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
+ []
+
+LaTeX Font Info: Font shape `OMS/cmr/bx/n' in size <10> not available
+(Font) Font shape `OMS/cmsy/b/n' tried instead on input line 234.
+
+Overfull \hbox (13.99388pt too wide) in paragraph at lines 237--239
+\OT1/cmr/m/n/10 A repos-i-tory sim-ply is a re-mote di-rec-tory served over HTT
+P. This di-rec-tory is re-quired to have an \OT1/cmtt/m/n/10 available.lst
+ []
+
+[5] [6]
+Overfull \hbox (10.24986pt too wide) in paragraph at lines 346--347
+[][][][][][][][][][][][][][][][][][][][]
+ []
+
+[7] <KISSTemplates.png, id=299, 1055.945pt x 679.53876pt>
+File: KISSTemplates.png Graphic file (type png)
+
+<use KISSTemplates.png>
+Package pdftex.def Info: KISSTemplates.png used on input line 398.
+(pdftex.def) Requested size: 469.75502pt x 302.30566pt.
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 398--399
+[][]
+ []
+
+[8] [9 <./KISSTemplates.png>]
+Overfull \hbox (34.1926pt too wide) in paragraph at lines 457--459
+[]\OT1/cmr/m/n/10 - Just a wrap-per for \OT1/cmtt/m/n/10 KISS[]SEND[]FILE[]COMM
+AND\OT1/cmr/m/n/10 .
+ []
+
+[10] [11] [12]
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 595.
+ [13]
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 595.
+ (./kisside.aux)
+Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 595.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 595.
+Package rerunfilecheck Info: File `kisside.out' has not changed.
+(rerunfilecheck) Checksum: CE4695D10E03C8D683EC14A04EB1F9B8;1891.
+
+
+LaTeX Font Warning: Some font shapes were not available, defaults substituted.
+
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 595.
+ )
+Here is how much of TeX's memory you used:
+ 10027 strings out of 493633
+ 141381 string characters out of 3143378
+ 285689 words of memory out of 3000000
+ 12950 multiletter control sequences out of 15000+200000
+ 6990 words of font info for 26 fonts, out of 3000000 for 9000
+ 831 hyphenation exceptions out of 8191
+ 34i,5n,58p,934b,1700s stack positions out of 5000i,500n,10000p,200000b,50000s
+</usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmbsy10.pf
+b></usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
+></usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb>
+</usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb><
+/usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></u
+sr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmr9.pfb></usr/
+local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/l
+ocal/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/lo
+cal/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb>
+Output written on kisside.pdf (13 pages, 311062 bytes).
+PDF statistics:
+ 504 PDF objects out of 1000 (max. 8388607)
+ 471 compressed objects within 5 object streams
+ 255 named destinations out of 1000 (max. 500000)
+ 259 words of extra memory for PDF output out of 10000 (max. 10000000)
+
View
31 latex/kisside.out
@@ -0,0 +1,31 @@
+\BOOKMARK [1][-]{section.1}{Overview}{}% 1
+\BOOKMARK [1][-]{section.2}{Tabs}{}% 2
+\BOOKMARK [2][-]{subsection.2.1}{Tab Classes}{section.2}% 3
+\BOOKMARK [2][-]{subsection.2.2}{Tab Usage}{section.2}% 4
+\BOOKMARK [2][-]{subsection.2.3}{WebTab KISS URLs}{section.2}% 5
+\BOOKMARK [1][-]{section.3}{Singletons}{}% 6
+\BOOKMARK [2][-]{subsection.3.1}{Singleton Classes}{section.3}% 7
+\BOOKMARK [1][-]{section.4}{Plugins}{}% 8
+\BOOKMARK [2][-]{subsubsection.4.0.1}{Plugin Naming}{section.4}% 9
+\BOOKMARK [2][-]{subsection.4.1}{Lexers}{section.4}% 10
+\BOOKMARK [2][-]{subsection.4.2}{LexerManager Notes}{section.4}% 11
+\BOOKMARK [1][-]{section.5}{KISS Archives}{}% 12
+\BOOKMARK [2][-]{subsection.5.1}{CLI Interface}{section.5}% 13
+\BOOKMARK [3][-]{subsubsection.5.1.1}{Example Creating KISS Archive}{subsection.5.1}% 14