Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

General updates

  • Loading branch information...
commit 7b6e22af18e50bd7fa3f685e22c4bf2436aab831 1 parent 3e49988
@bmcdorman bmcdorman authored
Showing with 1,405 additions and 2,786 deletions.
  1. +5 −6 CMakeLists.txt
  2. +36 −12 include/activatable.hpp
  3. +0 −1  include/dialogs/editor_settings_dialog.hpp
  4. +0 −44 include/dialogs/make_template_dialog.hpp
  5. +48 −0 include/dialogs/save_as_dialog.hpp
  6. +5 −0 include/documentation_manager.hpp
  7. +8 −5 include/interface/communication_queue.hpp
  8. +1 −1  include/interface/interface_manager.hpp
  9. +2 −2 include/interface/target.hpp
  10. +1 −1  include/interface/target_model.hpp
  11. +0 −35 include/kar.hpp
  12. +19 −16 include/main_window.hpp
  13. +11 −7 include/plugin_manager.hpp
  14. +11 −8 include/project/project.hpp
  15. +8 −6 include/project/project_manager.hpp
  16. +8 −6 include/project/project_model.hpp
  17. +4 −7 include/project/project_settings.hpp
  18. +9 −6 include/source_file.hpp
  19. +5 −9 include/tab.hpp
  20. +3 −0  include/template_dialog.hpp
  21. +12 −8 include/template_manager.hpp
  22. +2 −1  include/template_model.hpp
  23. +10 −6 include/template_pack.hpp
  24. +3 −2 include/template_tab.hpp
  25. BIN  latex/KISS.png
  26. BIN  latex/KISSTemplates.png
  27. +0 −71 latex/kisside.aux
  28. +0 −646 latex/kisside.log
  29. +0 −31 latex/kisside.out
  30. BIN  latex/kisside.pdf
  31. 0  latex/kisside.synctex.gz(busy)
  32. +0 −595 latex/kisside.tex
  33. +0 −35 latex/q.log
  34. +0 −19 other/asd.java
  35. BIN  other/asd/Main.class
  36. BIN  other/at.kiss
  37. +0 −68 other/t.java
  38. BIN  other/t/Main.class
  39. BIN  other/test
  40. +0 −9 other/test.c
  41. +0 −12 other/test.cpp
  42. +1 −1  plugins/interfaces/cbc3/CMakeLists.txt
  43. +1 −1  plugins/interfaces/computer/CMakeLists.txt
  44. +1 −1  plugins/interfaces/shared/serial_device.cpp
  45. +1 −1  plugins/interfaces/shared/serial_device.hpp
  46. +14 −1 plugins/interfaces/shared/tcp_socket_device.cpp
  47. +1 −1  plugins/interfaces/shared/tcp_socket_device.hpp
  48. +1 −0  rc/messages/about_kiss.txt
  49. +3 −3 rc/welcome/welcome.qml
  50. +0 −1  src/activatable.cpp
  51. +1 −1  src/declarative_tab.cpp
  52. +5 −8 src/dialogs/editor_settings_dialog.cpp
  53. +0 −31 src/dialogs/make_template_dialog.cpp
  54. +101 −0 src/dialogs/save_as_dialog.cpp
  55. +18 −1 src/documentation_manager.cpp
  56. +8 −5 src/interface/communication_queue.cpp
  57. +1 −1  src/interface/dummy_interface.cpp
  58. +6 −4 src/interface/interface_manager.cpp
  59. +1 −1  src/interface/target.cpp
  60. +0 −97 src/kar.cpp
  61. +5 −1 src/kiss_standard_environment.cpp
  62. +16 −7 src/main.cpp
  63. +57 −55 src/main_window.cpp
  64. +3 −3 src/menus/menu_manager.cpp
  65. +1 −1  src/menus/source_file_menu.cpp
  66. +26 −38 src/project/project.cpp
  67. +6 −9 src/project/project_manager.cpp
  68. +25 −7 src/project/project_model.cpp
  69. +1 −1  src/project/project_settings.cpp
  70. +186 −69 src/source_file.cpp
  71. +6 −6 src/tab.cpp
  72. +18 −5 src/template_dialog.cpp
  73. +52 −8 src/template_manager.cpp
  74. +29 −12 src/template_model.cpp
  75. +7 −9 src/template_pack.cpp
  76. +3 −2 src/template_tab.cpp
  77. +60 −13 src/web_tab.cpp
  78. +20 −6 src/widgets/output_widget.cpp
  79. +7 −4 tests/CMakeLists.txt
  80. +23 −0 tests/save_as_dialog_test.cpp
  81. +2 −7 tests/template_test.cpp
  82. +254 −287 ui/EditorSettingsDialog.ui
  83. +0 −137 ui/MakeTemplateDialog.ui
  84. +0 −88 ui/TargetActions.ui
  85. +0 −124 ui/VideoPlayerTab.ui
  86. +159 −0 ui/save_as_dialog.ui
  87. +64 −53 ui/template_dialog.ui
View
11 CMakeLists.txt
@@ -32,7 +32,6 @@ SET(QT_USE_QTDECLARATIVE TRUE)
SET(QT_USE_QTNETWORK TRUE)
SET(QT_USE_QTWEBKIT TRUE)
SET(QT_USE_QTSCRIPT TRUE)
-SET(QT_USE_PHONON TRUE)
INCLUDE(${QT_USE_FILE})
@@ -45,6 +44,7 @@ FILE(GLOB INCLUDES ${INCLUDE}/*.hpp
${INCLUDE}/project/*
${INCLUDE}/compiler/*
${INCLUDE}/interface/*)
+
FILE(GLOB SOURCES ${SRC}/* ${SRC}/lexer/* ${SRC}/dialogs/* ${SRC}/widgets/* ${SRC}/menus/* ${SRC}/js/* ${SRC}/project/* ${SRC}/compiler/* ${SRC}/interface/*)
FILE(GLOB UIS ${UI}/*)
@@ -80,20 +80,20 @@ ADD_LIBRARY(kisside STATIC ${KISS_SRCS_CXX})
SET(EXECUTABLE_OUTPUT_PATH ${KISS_SOURCE_DIR}/deploy)
SET(LIBRARY_OUTPUT_PATH ${KISS_SOURCE_DIR}/lib)
-TARGET_LINK_LIBRARIES(KISS ${QT_LIBRARIES} qscintilla2 pcompiler)
+TARGET_LINK_LIBRARIES(KISS ${QT_LIBRARIES} qscintilla2 pcompiler kar)
IF(APPLE)
- ADD_CUSTOM_TARGET(MacDeployQt ALL
+ ADD_CUSTOM_TARGET(MacDeployQt ALL
COMMAND ${QT_BINARY_DIR}/macdeployqt ${KISS_SOURCE_DIR}/deploy/KISS.app -verbose=0
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
DEPENDS KISS)
- ADD_CUSTOM_TARGET(Info.plist ALL
+ ADD_CUSTOM_TARGET(Info.plist ALL
COMMAND ${CMAKE_COMMAND} -E copy ${RC}/Info.plist ${KISS_SOURCE_DIR}/deploy/KISS.app/Contents
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
DEPENDS KISS)
- ADD_CUSTOM_TARGET(Icons ALL
+ ADD_CUSTOM_TARGET(Icons ALL
COMMAND ${CMAKE_COMMAND} -E copy ${RC}/logos/mac_icon.icns ${KISS_SOURCE_DIR}/deploy/KISS.app/Contents/Resources
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
DEPENDS KISS Info.plist MacDeployQt)
@@ -101,7 +101,6 @@ IF(APPLE)
SET(OSX_INSTALL_NAMES_SCRIPT "${KISS_SOURCE_DIR}/scripts/osx_install_names.sh")
install(DIRECTORY ${RC}/templates DESTINATION ${KISS_SOURCE_DIR}/deploy/KISS.app/Contents)
-
ELSE(APPLE)
install(DIRECTORY ${RC}/templates DESTINATION ${KISS_SOURCE_DIR}/deploy)
ENDIF(APPLE)
View
48 include/activatable.hpp
@@ -27,20 +27,44 @@ template<typename T>
class Activatable
{
public:
- Activatable() : m_active(0) {}
+ 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; }
+ void setActive(T *active)
+ {
+ m_active = active;
+ if(active) activated();
+ else deactivated();
+ }
- void deactivateIfActive(T* active) { if(m_active == active) setActive(0); }
+ T *active()
+ {
+ return m_active;
+ }
+
+ bool isActive()
+ {
+ return m_active;
+ }
+
+ void deactivateIfActive(T *active)
+ {
+ if(m_active == active) setActive(0);
+ }
protected:
- virtual void activated() {}
- virtual void deactivated() {}
+ virtual void activated()
+ {
+ }
+
+ virtual void deactivated()
+ {
+ }
private:
- T* m_active;
+ T *m_active;
};
@@ -48,7 +72,7 @@ class ActivatableObject : public Activatable<QObject>
{
public:
ActivatableObject();
- ActivatableObject(const char* slot);
+ ActivatableObject(const char *slot);
~ActivatableObject();
virtual void activated();
@@ -57,11 +81,11 @@ class ActivatableObject : public Activatable<QObject>
friend class ObjectDestroyed;
private:
- void destroyed(QObject* obj);
+ void destroyed(QObject *obj);
- QObject* m_connected;
+ QObject *m_connected;
- const char* m_signature;
+ const char *m_signature;
};
#endif
View
1  include/dialogs/editor_settings_dialog.hpp
@@ -55,7 +55,6 @@ Q_OBJECT
int exec();
private slots:
- void on_ui_themeSettingsButton_clicked();
void on_ui_buttonBox_clicked(QAbstractButton *button);
private:
View
44 include/dialogs/make_template_dialog.hpp
@@ -1,44 +0,0 @@
-/**************************************************************************
- * Copyright 2007-2012 KISS Institute for Practical Robotics *
- * *
- * This file is part of KISS (Kipr's Instructional Software System). *
- * *
- * KISS is free software: you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation, either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * KISS is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with KISS. Check the LICENSE file in the project root. *
- * If not, see <http://www.gnu.org/licenses/>. *
- **************************************************************************/
-
-#ifndef _MAKETEMPLATEDIALOG_H_
-#define _MAKETEMPLATEDIALOG_H_
-
-#include <QDialog>
-#include <QString>
-#include <QStringList>
-#include "ui_MakeTemplateDialog.h"
-
-class MakeTemplateDialog : public QDialog, public Ui::MakeTemplateDialog
-{
-Q_OBJECT
-public:
- MakeTemplateDialog(QWidget* parent);
-
- void setName(const QString& name);
- void setTypes(const QStringList& name);
- void setExtension(const QString& extension);
-
- QString name();
- QString type();
- QString extension();
-};
-
-#endif
View
48 include/dialogs/save_as_dialog.hpp
@@ -0,0 +1,48 @@
+
+#ifndef _SAVE_AS_DIALOG_HPP_
+#define _SAVE_AS_DIALOG_HPP_
+
+#include <QDialog>
+#include <QItemSelection>
+
+class QFileSystemModel;
+
+namespace Ui
+{
+ class SaveAsDialog;
+}
+
+namespace Kiss
+{
+ namespace Dialog
+ {
+ class SaveAs : public QDialog
+ {
+ Q_OBJECT
+ public:
+ SaveAs(QWidget *parent = 0);
+ ~SaveAs();
+
+ void setNameFilters(const QStringList& filters);
+ QStringList nameFilters() const;
+
+ void setFileName(const QString& name);
+ QString fileName() const;
+
+ void setRootPath(const QString& path);
+ QString rootPath() const;
+
+ QString filePath() const;
+
+ private slots:
+ void fileNameChanged(const QString& name);
+ void selectionChanged(const QModelIndex& index);
+
+ private:
+ QFileSystemModel *m_model;
+ Ui::SaveAsDialog *ui;
+ };
+ }
+}
+
+#endif
View
5 include/documentation_manager.hpp
@@ -30,10 +30,15 @@ namespace Kiss
{
public:
DocumentationManager();
+
void addLocation(const QString& name, const QString& location);
const QList<DocumentationLocation>& locations() const;
+ static QString documentationPath();
+
private:
+ void loadDefaultDocumentation();
+
static const QString description(const QString& location);
static const QString decoration(const QString& location);
QList<DocumentationLocation> m_locations;
View
13 include/interface/communication_queue.hpp
@@ -1,6 +1,8 @@
#ifndef _COMMUNICATIONQUEUE_H_
#define _COMMUNICATIONQUEUE_H_
+#include <kar.hpp>
+
#include <QQueue>
#include <QString>
#include <QByteArray>
@@ -27,7 +29,7 @@ namespace Kiss
};
CommunicationEntry(const Type& type);
- CommunicationEntry(const Type& type, const QString& name);
+ CommunicationEntry(const Type& type, const QString& name, const KarPtr& archive = KarPtr());
CommunicationEntry(const QString& custom, const QByteArray& payload = QByteArray());
const CommunicationEntry::Type& type() const;
@@ -35,15 +37,16 @@ namespace Kiss
const QByteArray& payload() const;
const QString& name() const;
- // TinyArchive *archive() const;
+ const KarPtr& archive() const;
+
private:
- CommunicationEntry(const CommunicationEntry& rhs);
- CommunicationEntry& operator=(const CommunicationEntry& rhs);
-
+ Q_DISABLE_COPY(CommunicationEntry)
+
Type m_type;
QString m_name;
QString m_custom;
QByteArray m_payload;
+ KarPtr m_archive;
};
typedef QSharedPointer<CommunicationEntry> CommunicationEntryPtr;
View
2  include/interface/interface_manager.hpp
@@ -23,7 +23,7 @@ namespace Kiss
void removeInterface(Interface *interface);
const QList<Interface *>& interfaces() const;
- Interface* interface(const QString& name);
+ Interface *interface(const QString& name);
signals:
void interfaceAdded(Interface *interface);
View
4 include/interface/target.hpp
@@ -56,7 +56,7 @@ namespace Kiss
virtual const bool available() = 0;
virtual const bool compile(const QString& name) = 0;
- virtual const bool download(const QString& name) = 0;
+ virtual const bool download(const QString& name, const KarPtr& archive) = 0;
virtual const bool run(const QString& name) = 0;
virtual const bool list() = 0;
@@ -82,7 +82,7 @@ namespace Kiss
CommunicationQueue m_workingQueue;
CommunicationQueue m_queue;
- Interface* m_interface;
+ Interface *m_interface;
ResponderPtrList m_responders;
};
View
2  include/interface/target_model.hpp
@@ -19,7 +19,7 @@ namespace Kiss
{
Q_OBJECT
public:
- TargetModel(InterfaceManager* manager);
+ TargetModel(InterfaceManager *manager);
TargetPtr indexToTarget(const QModelIndex& index) const;
Interface* indexToInterface(const QModelIndex& index) const;
View
35 include/kar.hpp
@@ -1,35 +0,0 @@
-#ifndef _KAR_HPP_
-#define _KAR_HPP_
-
-#include <QString>
-#include <QMap>
-#include <QStringList>
-#include <QByteArray>
-
-namespace Kiss
-{
- class Kar
- {
- public:
- bool addFile(const QString& name, const QByteArray& data);
- void setFile(const QString& name, const QByteArray& data);
- bool removeFile(const QString& name);
- bool hasFile(const QString& name);
- bool rename(const QString& name, const QString& newName);
-
- QByteArray data(const QString& name) const;
- QStringList files() const;
-
- static Kar *create();
- static Kar *load(const QString& path);
- bool save(const QString& path);
-
- private:
- Kar();
- Kar(const QMap<QString, QByteArray>& data);
-
- QMap<QString, QByteArray> m_data;
- };
-}
-
-#endif
View
35 include/main_window.hpp
@@ -29,6 +29,7 @@
#include "menu_manager.hpp"
#include "project_manager.hpp"
#include "project_model.hpp"
+#include "output_widget.hpp"
#include "main_window_menu.hpp"
#include <Qsci/qscilexercpp.h>
@@ -70,7 +71,7 @@ namespace Kiss
* Opens a file with SourceFile tab
* \param filePath Path to file
*/
- bool openFile(const QString& filePath);
+ bool openFile(const QString& filePath, const Project::ProjectPtr& project = Project::ProjectPtr());
bool memoryOpen(const QByteArray& ba, const QString& assocPath);
bool openProject(const QString& filePath);
bool newProject(const QString& folderPath);
@@ -114,16 +115,16 @@ namespace Kiss
* Adds given tab window. Calls tab setup functions.
* \param tab Tab to add
*/
- void addTab(Tab* tab);
+ void addTab(Tab *tab);
- void moveToTab(Tab* tab);
+ void moveToTab(Tab *tab);
QTabWidget* tabWidget();
QList<Tab *> tabs();
template<typename T>
- QList<T*> tabs() {
+ QList<T *> tabs() {
QList<T *> ret;
QList<Tab *> all = tabs();
foreach(Tab* tab, all) {
@@ -137,7 +138,7 @@ namespace Kiss
* Closes all but given tab
* \param tab Tab to keep open
*/
- void closeAllOthers(Tab* tab);
+ void closeAllOthers(Tab *tab);
/*! Reinits menus for current tab */
void refreshMenus();
@@ -147,10 +148,10 @@ namespace Kiss
Project::Manager *projectManager();
Menu::Manager *menuManager();
- Menu::Menuable* menuable(const QString& name);
- QList<Menu::Menuable*> menuablesExcept(const QStringList& names);
+ Menu::Menuable *menuable(const QString& name);
+ QList<Menu::Menuable *> menuablesExcept(const QStringList& names);
void deactivateMenuablesExcept(const QStringList& names);
- QList<Menu::Menuable*> menuables();
+ QList<Menu::Menuable *> menuables();
void activateMenuable(const QString& name, QObject *on);
QStringList standardMenus() const;
@@ -162,25 +163,27 @@ namespace Kiss
bool canGoPrevious();
bool canGoNext();
- Project::Project *activeProject() const;
+ Project::ProjectPtr activeProject() const;
friend class Menu::MainWindowMenu;
public slots:
void importTemplatePack();
void newTemplatePack();
- Project::Project *newProject();
+ Project::ProjectPtr newProject();
void newFile();
void open();
void openProject();
void next();
void previous();
void closeTab(bool force = false);
- void closeProjectTabs(Kiss::Project::Project *project);
+ void closeProjectTabs(const Kiss::Project::ProjectPtr& project);
bool closeFile(const QString& file);
void about();
void settings();
void theme();
+
+ void showCompilerOutput(const Compiler::OutputList& results);
void projectAddNew();
void projectAddExisting();
@@ -190,7 +193,7 @@ namespace Kiss
void showProjectDock(bool show = true);
void hideProjectDock();
- QList<QObject*> tabs(const QString& type);
+ QList<QObject *> tabs(const QString& type);
signals:
void settingsUpdated();
@@ -202,15 +205,15 @@ namespace Kiss
void on_ui_removeFile_clicked();
void openRecent();
- void errorClicked(QListWidgetItem* item);
+ void errorClicked(QListWidgetItem *item);
void showContextMenuForError(const QPoint &pos);
void projectClicked(const QModelIndex& index);
void projectFileClicked(const QModelIndex& index);
- void projectOpened(Kiss::Project::Project *project);
- void projectClosed(Kiss::Project::Project *project);
+ void projectOpened(const Kiss::Project::ProjectPtr& project);
+ void projectClosed(const Kiss::Project::ProjectPtr& project);
private:
Tab *m_currentTab;
@@ -221,7 +224,7 @@ namespace Kiss
Template::Manager *m_templateManager;
Project::Manager m_projectManager;
QList<Menu::Menuable *> m_menuables;
-
+
Project::Model m_projectsModel;
void addLookup(Tab *tab);
View
18 include/plugin_manager.hpp
@@ -68,13 +68,19 @@ namespace Kiss
//! Get plugin instance, loads if not found
T *get(const QString& name)
{
- if(!m_plugins.contains(name))
+ if(!m_plugins.contains(name)) {
if(!loadPlugin(name)) return 0;
+ }
return qobject_cast<T*>(m_plugins[name]->instance());
}
//! Unloads all plugins
- void unloadAll() { while (!m_plugins.isEmpty()) unloadPlugin(m_plugins.begin().key()); }
+ void unloadAll()
+ {
+ while(!m_plugins.isEmpty()) {
+ unloadPlugin(m_plugins.begin().key());
+ }
+ }
//! Loads plugin by given name
bool loadPlugin(const QString& name)
@@ -85,23 +91,21 @@ namespace Kiss
QDir pluginPath(QDir::currentPath());
pluginPath.cd(getExpectedLocation(name));
-
const QString& pluginPathString = pluginPath.absoluteFilePath("lib" + name + "." + OS_LIB_EXT);
- qDebug() << "\tPath:" << pluginPathString;
plugin->setFileName(pluginPathString);
if(!plugin->load()) {
- qWarning("PluginManager::loadPlugin: %s", qPrintable(plugin->errorString()));
+ qWarning() << "PluginManager::loadPlugin:" << plugin->errorString();
delete plugin;
return false;
}
T *instance = qobject_cast<T*>(plugin->instance());
if(!instance) {
- qWarning("PluginManager::loadPlugin: %s", qPrintable(plugin->errorString()));
+ qWarning() << "PluginManager::loadPlugin:" << plugin->errorString();
plugin->unload();
delete plugin;
- qWarning("PluginManager::loadPlugin: Plugin \"%s\" failed qobject_cast to \"%s\"", qPrintable(name), typeid(T).name());
+ qWarning() << "PluginManager::loadPlugin: Plugin \"" << name << "\" failed qobject_cast to \"" << typeid(T).name() << "\"";
return false;
}
View
19 include/project/project.hpp
@@ -2,15 +2,21 @@
#define _PROJECT_HPP_
#include "unit.hpp"
+#include <kar.hpp>
#include <QMap>
#include <QString>
#include <QStringList>
+#include <QSharedPointer>
namespace Kiss
{
namespace Project
{
+ class Project;
+
+ typedef QSharedPointer<Project> ProjectPtr;
+
class Project : public Unit
{
public:
@@ -20,7 +26,6 @@ namespace Kiss
bool removeFile(const QString& path);
QStringList files() const;
- bool settingsEnabled() const;
void setSettings(const Settings& settings);
const Settings& settings() const;
@@ -30,25 +35,23 @@ namespace Kiss
const QString& location() const;
bool save();
- static Project *create(const QString& location);
- static Project *load(const QString& location);
- static Project *loadSingleFile(const QString& location);
+ static ProjectPtr create(const QString& location);
+ static ProjectPtr load(const QString& location);
void refresh();
+
+ KarPtr createArchive() const;
private:
- Project(const QString& location, bool singleFileMode);
+ Project(const QString& location);
void refresh(const QString& location);
QString m_location;
- bool m_singleFileMode;
QStringList m_files;
Settings m_settings;
};
-
- typedef Project* ProjectPtr;
}
}
View
14 include/project/project_manager.hpp
@@ -1,6 +1,8 @@
#ifndef _PROJECT_MANAGER_HPP_
#define _PROJECT_MANAGER_HPP_
+#include "project.hpp"
+
#include <QObject>
#include <QList>
@@ -10,7 +12,7 @@ namespace Kiss
{
class Project;
- typedef QList<Project *> ProjectPtrList;
+ typedef QList<ProjectPtr> ProjectPtrList;
class Manager : public QObject
{
@@ -19,13 +21,13 @@ namespace Kiss
Manager();
~Manager();
- void openProject(Project *project);
- void closeProject(Project *project);
+ void openProject(const ProjectPtr& project);
+ void closeProject(const ProjectPtr& project);
- ProjectPtrList projects() const;
+ const ProjectPtrList& projects() const;
signals:
- void projectOpened(Kiss::Project::Project *project);
- void projectClosed(Kiss::Project::Project *project);
+ void projectOpened(const Kiss::Project::ProjectPtr& project);
+ void projectClosed(const Kiss::Project::ProjectPtr& project);
private:
ProjectPtrList m_projects;
View
14 include/project/project_model.hpp
@@ -1,6 +1,8 @@
#ifndef _PROJECT_MODEL_HPP_
#define _PROJECT_MODEL_HPP_
+#include "project.hpp"
+
#include <QStandardItemModel>
#include <QFileSystemWatcher>
#include <QString>
@@ -11,8 +13,6 @@ namespace Kiss
{
namespace Project
{
- class Project;
-
class MultiRootFilesystemModel : public QStandardItemModel
{
Q_OBJECT
@@ -39,12 +39,14 @@ namespace Kiss
Model();
~Model();
- Kiss::Project::Project *indexToProject(const QModelIndex& index) const;
+ Kiss::Project::ProjectPtr indexToProject(const QModelIndex& index) const;
+ bool isIndexProject(const QModelIndex& index) const;
+ QString indexToPath(const QModelIndex& index) const;
- void addProject(Kiss::Project::Project *project);
- void removeProject(Kiss::Project::Project *project);
+ void addProject(const Kiss::Project::ProjectPtr& project);
+ void removeProject(const Kiss::Project::ProjectPtr& project);
private:
- QMap<QString, Kiss::Project::Project *> m_projects;
+ QMap<QString, Kiss::Project::ProjectPtr> m_projects;
};
}
}
View
11 include/project/project_settings.hpp
@@ -1,18 +1,15 @@
#ifndef _PROJECT_SETTINGS_HPP_
#define _PROJECT_SETTINGS_HPP_
-#include <QWidget>
#include "tab.hpp"
+#include "project.hpp"
#include "ui_ProjectSettingsTab.h"
+#include <QWidget>
+
namespace Kiss
{
- namespace Project
- {
- class Project;
- }
-
namespace Widget
{
class MainWindow;
@@ -21,7 +18,7 @@ namespace Kiss
{
Q_OBJECT
public:
- ProjectSettings(Project::Project *project, MainWindow *mainWindow);
+ ProjectSettings(const Project::ProjectPtr& project, MainWindow *mainWindow);
virtual void activate();
View
15 include/source_file.hpp
@@ -79,7 +79,7 @@ namespace Kiss
bool fileSaveAs(const QString& filePath);
bool fileOpen(const QString& filePath);
bool memoryOpen(const QByteArray& ba, const QString& assocPath);
- bool openProjectFile(Project::Project* project);
+ bool openProjectFile(const Project::ProjectPtr& project);
bool close();
@@ -93,7 +93,7 @@ namespace Kiss
int currentLine() const;
bool breakpointOnLine(int line) const;
- static SourceFile *newProjectFile(MainWindow* mainWindow, Project::Project* project);
+ static SourceFile *newProjectFile(MainWindow* mainWindow, const Project::ProjectPtr& project);
public slots:
bool saveAs();
@@ -118,9 +118,7 @@ namespace Kiss
void screenGrab();
void requestFile();
- void makeTemplate();
-
- void toggleBreakpoint(bool checked);
+ void toggleBreakpoint(const bool& checked);
void clearBreakpoints();
void indentAll();
@@ -155,6 +153,9 @@ namespace Kiss
void authenticationResponse(const Target::Responder::AuthenticateReturn& response);
private:
+ bool saveAsFile();
+ bool saveAsProject();
+
const bool selectTemplate();
void showFind();
@@ -186,13 +187,15 @@ namespace Kiss
void updateTitle();
void updateLexer();
+
+ bool actionPreconditions();
Target::QtResponder m_responder;
protected:
void keyPressEvent(QKeyEvent *event);
virtual void fileChanged(const QFileInfo& file);
- virtual void projectChanged(Project::Project *project);
+ virtual void projectChanged(const Project::ProjectPtr& project);
};
}
}
View
14 include/tab.hpp
@@ -27,16 +27,12 @@
#include <QFileInfo>
#include "target.hpp"
+#include "project.hpp"
#define TABBED_WIDGET_PROPERTY "_kiss_tabbed_"
namespace Kiss
{
- namespace Project
- {
- class Project;
- }
-
namespace Widget
{
class MainWindow;
@@ -82,20 +78,20 @@ namespace Kiss
const QFileInfo& file() const;
bool hasFile() const;
- void setProject(Kiss::Project::Project *project);
- Kiss::Project::Project *project() const;
+ void setProject(const Kiss::Project::ProjectPtr& project);
+ const Kiss::Project::ProjectPtr& project() const;
bool hasProject() const;
protected:
virtual void fileChanged(const QFileInfo& file);
- virtual void projectChanged(Kiss::Project::Project *project);
+ virtual void projectChanged(const Kiss::Project::ProjectPtr& project);
private:
QWidget *m_widget;
MainWindow *m_mainWindow;
QFileInfo m_file;
- Kiss::Project::Project *m_project;
+ Kiss::Project::ProjectPtr m_project;
};
}
}
View
3  include/template_dialog.hpp
@@ -33,11 +33,14 @@ namespace Kiss
private slots:
void selectionChanged(const QItemSelection& selection);
+ void removeSelectedPack();
private:
Kiss::Template::Manager *m_manager;
Kiss::Template::Model *m_model;
Ui::TemplateDialog *ui;
+
+ QString m_helpText;
};
}
}
View
20 include/template_manager.hpp
@@ -1,16 +1,17 @@
#ifndef _TEMPLATE_MANAGER_HPP_
#define _TEMPLATE_MANAGER_HPP_
+#include "template_pack.hpp"
+
#include <QObject>
#include <QList>
#include <QString>
+#include <QDir>
namespace Kiss
{
namespace Template
{
- class Pack;
-
class Manager : public QObject
{
Q_OBJECT
@@ -19,20 +20,23 @@ namespace Kiss
void addPacks(const QString& path);
bool addPack(const QString& path);
- void addPack(Pack *pack);
- void removePack(Pack *pack);
+ void addPack(const PackPtr& pack);
+ bool removePack(const PackPtr& pack, bool removeAsDefault = false);
+ bool removePack(Pack *pack, bool removeAsDefault = false);
- void addDefaultPack(Pack *pack);
+ void addDefaultPack(const PackPtr& pack);
void loadDefaultPacks();
- QList<Pack *> packs() const;
+ QList<PackPtr> packs() const;
signals:
- void packAdded(Kiss::Template::Pack *pack);
+ void packAdded(const Kiss::Template::PackPtr& pack);
void packRemoved(Kiss::Template::Pack *pack);
private:
- QList<Pack *> m_packs;
+ QDir templatePacksDir() const;
+
+ QList<PackPtr> m_packs;
};
}
}
View
3  include/template_model.hpp
@@ -2,6 +2,7 @@
#define _TEMPLATE_MODEL_HPP_
#include "template_file.hpp"
+#include "template_pack.hpp"
#include <QStandardItemModel>
@@ -28,7 +29,7 @@ namespace Kiss
const bool& isReadOnly() const;
private slots:
- void packAdded(Kiss::Template::Pack *pack);
+ void packAdded(const Kiss::Template::PackPtr& pack);
void packRemoved(Kiss::Template::Pack *pack);
void packNameChanged(const QString& name);
void packFileAdded(const QString& path, const Kiss::Template::File& file);
View
16 include/template_pack.hpp
@@ -2,17 +2,21 @@
#define _TEMPLATE_PACK_HPP_
#include "template_file.hpp"
+#include <kar.hpp>
#include <QString>
#include <QIcon>
#include <QStringList>
+#include <QSharedPointer>
namespace Kiss
{
- class Kar;
-
namespace Template
{
+ class Pack;
+
+ typedef QSharedPointer<Kiss::Template::Pack> PackPtr;
+
class Pack : public QObject
{
Q_OBJECT
@@ -45,8 +49,8 @@ namespace Kiss
bool setLexer(const QString& path, const QString& lexer);
QString lexer(const QString& path) const;
- static Pack *create();
- static Pack *load(const QString& path);
+ static PackPtr create();
+ static PackPtr load(const QString& path);
bool save(const QString& path) const;
signals:
@@ -55,10 +59,10 @@ namespace Kiss
void nameChanged(const QString& newName);
private:
- Pack(Kar *archive, const QString& loadedFrom);
+ Pack(const KarPtr& archive, const QString& loadedFrom);
bool isSpecialFile(const QString& path) const;
- Kar *m_archive;
+ KarPtr m_archive;
QString m_loadedFrom;
};
}
View
5 include/template_tab.hpp
@@ -2,6 +2,7 @@
#define _TEMPLATE_TAB_HPP_
#include "tab.hpp"
+#include "template_pack.hpp"
#include <QItemSelection>
@@ -25,7 +26,7 @@ namespace Kiss
{
Q_OBJECT
public:
- TemplateTab(Template::Pack *pack, MainWindow *mainWindow);
+ TemplateTab(const Template::PackPtr& pack, MainWindow *mainWindow);
TemplateTab(const QString& path, MainWindow *mainWindow);
~TemplateTab();
@@ -61,7 +62,7 @@ namespace Kiss
bool m_dirty;
Template::Manager *m_manager;
- Template::Pack *m_pack;
+ Template::PackPtr m_pack;
Template::Model *m_model;
Ui::TemplateTab *ui;
View
BIN  latex/KISS.png
Deleted file not rendered
View
BIN  latex/KISSTemplates.png
Deleted file not rendered
View
71 latex/kisside.aux
@@ -1,71 +0,0 @@
-\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
@@ -1,646 +0,0 @@
-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
@@ -1,31 +0,0 @@
-\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
-\BOOKMARK [2][-]{subsection.5.2}{Repositories}{section.5}% 15
-\BOOKMARK [3][-]{subsubsection.5.2.1}{Example available.lst}{subsection.5.2}% 16
-\BOOKMARK [1][-]{section.6}{Targets}{}% 17
-\BOOKMARK [2][-]{subsection.6.1}{Layout of a Target}{section.6}% 18
-\BOOKMARK [3][-]{subsubsection.6.1.1}{Compiled Target Layout}{subsection.6.1}% 19
-\BOOKMARK [2][-]{subsection.6.2}{Target File}{section.6}% 20
-\BOOKMARK [3][-]{subsubsection.6.2.1}{Target File Options}{subsection.6.2}% 21
-\BOOKMARK [2][-]{subsection.6.3}{CBCv2}{section.6}% 22
-\BOOKMARK [1][-]{section.7}{Templates}{}% 23
-\BOOKMARK [2][-]{subsection.7.1}{Template Metadata}{section.7}% 24
-\BOOKMARK [1][-]{section.8}{Serial Communication with the CBC}{}% 25
-\BOOKMARK [2][-]{subsection.8.1}{Commands}{section.8}% 26
-\BOOKMARK [2][-]{subsection.8.2}{Useful References for Serial Communication}{section.8}% 27
-\BOOKMARK [1][-]{section.9}{Building KISS}{}% 28
-\BOOKMARK [2][-]{subsection.9.1}{Mac OS X}{section.9}% 29
-\BOOKMARK [2][-]{subsection.9.2}{Windows}{section.9}% 30
-\BOOKMARK [2][-]{subsection.9.3}{Linux}{section.9}% 31
View
BIN  latex/kisside.pdf
Binary file not shown
View
0  latex/kisside.synctex.gz(busy)
No changes.
View
595 latex/kisside.tex
@@ -1,595 +0,0 @@
-\documentclass[7pt,letterpaper]{article}
-
-\usepackage[pdftex]{graphicx}
-\usepackage{float}
-\usepackage{ulem}
-\usepackage{listings}
-\usepackage[in]{fullpage}
-\usepackage{hyperref}
-\usepackage{tipa}
-\usepackage{natbib}
-\usepackage[american]{babel}
-\usepackage{csquotes}
-\usepackage{enumerate}
-\usepackage{setspace}
-\usepackage{qtree}
-
-\pagestyle{empty}
-
-\newcommand{\urlfootnote}[1]{\footnote{\url{#1}}}
-\newcommand{\code}[1]{\texttt{#1}}
-\newcommand{\authorInfo}[1]{\gdef\authInfo{#1}}
-\newcounter{counter}
-
-\title{KISS IDE}
-\author{Braden McDorman}
-\authorInfo{KISS Institute for Practical Robotics}
-
-\begin{document}
- \makeatletter
- \noindent\begin{minipage}[l]{.8\textwidth}\begin{flushleft}\begin{small}
- \par\@author\vspace{.5em}
-
- \authInfo
- \end{small}\end{flushleft}\end{minipage}\vspace{.25in}
-
- \begin{center}
- \begin{Large}
- \textbf{\@title}
- \end{Large}
- \end{center}
- \makeatother
-
- \section{Overview}
-
- KISS IDE is an extensible IDE aimed at Robotics Development in C, C++, and Java. This document explains the internals of KISS, and should serve as
- a guide for anyone needing to modify its source.
-
- \includegraphics[width=1\textwidth]{KISS.png}
-
- \section{Tabs}
-
- A Tab is a class that may be managed and added to the \code{MainWindow} for viewing and interaction with the user.
- For a class to identify itself as a Tab, it must implement the \code{Tab} interface.
- A Singleton is a global instance of a class, which can be retrieved using the \code{Singleton::ref()} static method.
- \textbf{\code{MainWindow} casts between \code{Tab} and \code{QWidget}, so a \code{Tab} needs to also implement \code{QWidget}.}
- These classes are implement \code{Tab} in KISS IDE:
-
- \subsection{Tab Classes}
-
- \setstretch{.5}
- \begin{description}
- \item[\code{SourceFile}] - The most important Tab. Allows editing of text, and interfacing with Targets.
- \item[\code{WebTab}] - Implements a simple Web Browser. Used for manuals and Botball Community.
- \item[\code{WelcomeTab}] - Extends \code{WebTab}, removing unnecessary functionality and loading the built-in Welcome HTML.
- \item[\code{VideoPlayerTab}] - Implements a Video Player on top of Phonon. To be used for lessons and other media.
- \item[\code{Repository}] - A graphical front-end to \code{KISSArchive}. Also allows downloading of packages from Repositories.
- \end{description}
- \singlespacing
-
- \subsection{Tab Usage}
-
- \lstset{language=C++,caption={The Tab Class},label=The Tab Class}
- \begin{lstlisting}
-class Tab
-{
-public:
- virtual void activate() = 0;
- virtual void addActionsFile(QMenu* file) = 0;
- virtual void addActionsEdit(QMenu* edit) = 0;
- virtual void addActionsHelp(QMenu* help) = 0;
- virtual void addOtherActions(QMenuBar* menuBar) = 0;
- virtual void addToolbarActions(QToolBar* toolbar) = 0;
- virtual bool beginSetup() = 0;
- virtual void completeSetup() = 0;
- virtual bool close() = 0;
-
- virtual void refreshSettings() = 0;
-};
- \end{lstlisting}
- \vspace{.25in}
-
- \setstretch{.5}
- \begin{description}
- \item[\code{activate()}] - Called every time the tab becomes visible.
- \item[\code{addActionsFile(QMenu* file)}] - Passes \code{QMenu*} to add actions to the File menu.
- \item[\code{addActionsEdit(QMenu* edit)}] - Passes \code{QMenu*} to add actions to the Edit menu.
- \item[\code{addActionsHelp(QMenu* help)}] - Passes \code{QMenu*} to add actions to the Help menu.
- \item[\code{addOtherActions(QMenuBar* menuBar)}] - Allows other menus to be added to the menu bar.
- \item[\code{addToolbarActions(QToolBar* toolbar)}] - Allows actions to be placed in the tool bar.
- \item[\code{beginSetup()}] - A Tab should return \code{true} if setup was successful. \code{false} will prevent the Tab from opening.
- \item[\code{completeSetup()}] - Useful for setting Tab name. Tab has been added to the \code{MainWindow} at this point.
- \item[\code{close()}] - A Tab should return \code{true} if it may be closed. \code{false} otherwise. Prompt for save here.
- \item[\code{refreshSettings()}] - Should be a public slot in a Tab's implementation. Called when settings are updated.
- \end{description}
- \singlespacing
-
- \subsection{WebTab KISS URLs}
-
- WebTab allows HTML to modify the IDE's state through the use of special URLs. These URLs begin with \code{kiss://}.
- \code{kiss://command\#param}, where the scheme is \code{kiss}, \code{command} is the authority, and \code{param} is
- the URL's fragment.
-
- \setstretch{.5}
- \begin{description}
- \item[\code{kiss://new}] - Create new file with template.
- \item[\code{kiss://open}] - Shows open file dialog.
- \item[\code{kiss://settings}] - Show settings dialog.
- \item[\code{kiss://newbrowser\#http://google.com/}] - Creates a new browser, and loads google.com
- \item[\code{kiss://openfile\#path/to/file}] - Open file in new source tab.
- \item[\code{kiss://video\#path/to/video}] - Plays video in new video tab.
- \item[\code{kiss://external\#path/to/file}] - Opens a file in its default editor. (e.g. PDFs opened in Preview)
- \end{description}
- \singlespacing
-
-
- \section{Singletons}
-
- The Concept of a Singleton is an important one in KISS IDE. Several classes use Singletons as their base.
- A Singleton is a global instance of a class, which can be retrieved using the \code{Singleton::ref()} static method.
- These classes implement \code{Singleton} in KISS IDE:
-
- \subsection{Singleton Classes}
-
- \setstretch{.5}
- \begin{description}
- \item[\code{MainWindow}] - Manages Tabs and Opens Files.
- \item[\code{PluginManager}] - An interface for plugin loaders. This is implemented by \code{LexerManager} and \code{TargetManager}.
- \item[\code{LexerManager}] - Manages Loading of \code{LexerSpec} plugins.
- \item[\code{TargetManager}] - Manages loading of Target plugins.
- \item[\code{SourceFileShared}] - A Shared object used to store some common functionality for all \code{SourceFile} tabs.
- For example, Pixmaps and the Debugger are shared resources among all \code{SourceFile} instances.
- \end{description}
- \singlespacing
-
- Singletons for Plugins are necessary, as plugins are inherently single instances. Thus, plugins each have one instance for the entire execution of KISS.
-
-
- \section{Plugins}
-
- \code{PluginManager} is the interface used by both \code{TargetManager} and \code{LexerManager} to load plugins.
- An implementing class must implement \code{getExpectedLocation(const QString\& name)}, which returns the directory to look
- for a plugin with the given \code{name}. In \code{TargetManager}, this returns \code{targets/\$\{name\}}, while in \code{LexerManager} this returns
- \code{lexers}. PluginManager also relies on the implementer to \code{unloadAll()} plugins on destruction.
-
- \subsubsection{Plugin Naming}
- \code{PluginManager} expects plugins to follow the naming scheme \code{lib\$\{name\}\_plugin.\$\{os\_lib\_ext\}}. This is the default on Mac OS X and Unix, but Windows
- requires some modification. Here is an example of how this is achieved in the python target:
-
- \lstset{caption={Python Target},label=Python Target}
- \begin{lstlisting}
-TARGET = $$qtLibraryTarget(python_plugin)
-win32:TARGET = $$qtLibraryTarget(libpython_plugin)
- \end{lstlisting}
- \vspace{.25in}
-
- \subsection{Lexers}
- The Lexer system has several parts, including \code{Lexer}, \code{LexerProvider}, \code{LexerSpec}, and \code{LexerManager}. This may be quite confusing at first glance,
- but provides a robust way to interface with QScintilla. \code{Lexer} implements \code{QsciLexer} for wrapping \code{LexerSpec} classes.
- \code{LexerSpec} is a struct that a plugin developer should implement to highlight syntax. \code{LexerProvider} is the interface for plugins, which
- gives you a \code{LexerSpec} to configure in the \code{init()} method of the plugin. \code{LexerManager} manages the loading of \code{LexerProvider}s.
-
- \subsection{LexerManager Notes}
- \code{LexerManager} keeps track of lexer extensions in a thin layer on top of \code{PluginManager}. This is necessary because lexers can be registered to
- multiple extensions, while \code{PluginManager} expects a 1:1 mapping. It is recommended you use the \code{lexerSpec(const QString\& ext)} function to return the
- appropriate LexerProvider for a given extension rather than \code{get(const QString\& name)}.
-
- \section{KISS Archives}
- KISS Archives are a way to install and uninstall optional components into KISS. All targets, lexers, and video lessons build KISS Archives, some of which are
- preinstalled for distribution. The \code{KissArchive} class provides several static methods for the manipulation and creation of these archives. KISS also has a
- basic CLI for these commands. The currently installed packages are kept track of in an \code{installed} file located in the working directory of KISS.
- Just to be safe, installing/uninstalling KISS Archives unloads all plugins. The easiest way to reload KISS at this point is a restart of KISS.
-
- \lstset{language=C++,caption={KISS Archive Header},label=KISS Archive Header}
- \begin{lstlisting}
-struct KissReturn
-{
- bool error;
- QString message;
-};
-
-class KissArchive
-{
-public:
- static KissReturn create(const QString& name, unsigned version,
- const QStringList& platforms, const QStringList& files,
- QIODevice* out);
- static KissReturn install(QIODevice* in);
- static KissReturn uninstall(const QString& name);
- static QStringList list(QIODevice* in);
- static const unsigned version(const QString& name);
- static QStringList installed();
-};
- \end{lstlisting}
- \vspace{.25in}
-
- \subsection{CLI Interface}
-
- \setstretch{.5}
- \begin{description}
- \item[\code{KISS --createArchive name version platforms contents output.kiss}] - Creates a KISS Archive
- \item[\code{KISS --uninstall name}] - Uninstalls a kiss archive in the working directory.
- \item[\code{KISS --install file.kiss}] - Installs a kiss archive in the working directory.
- \item[\code{KISS --list}] - Lists installed KISS Archives
- \end{description}
- \singlespacing
-
- \subsubsection{Example Creating KISS Archive}
- In this example, we create a \code{contents} file containing newline delimited files to add to a KISS Archive.
-
- \lstset{language=bash,caption={Building KISS Archive for Windows},label=Building KISS Archive for Windows}
- \begin{lstlisting}
-find * -type f > contents
-${KISS}/deploy/KISS --createArchive name 1 win contents test_archive_win.kiss
- \end{lstlisting}
- \vspace{.25in}
- In this example, we use \code{win,osx,nix} rather than \code{win} to specify we want all platforms to be supported.
-
- \lstset{language=bash,caption={Building KISS Archive for All Platforms},label=Building KISS Archive for All Platforms}
- \begin{lstlisting}
-find * -type f > contents
-${KISS}/deploy/KISS --createArchive name 1 win,osx,nix contents test_archive.kiss
- \end{lstlisting}
- \vspace{.25in}
- \textbf{On Mac OS X, the path of KISS is \$\{KISS\}/deploy/KISS.app/Contents/MacOS/KISS}
-
- \subsection{Repositories}
- A repository simply is a remote directory served over HTTP. This directory is required to have an \code{available.lst} file in it, which specifies the packages
- available for download. The format of the \code{available.lst} file is as follows: \code{os<tab>name<tab>version<tab>file}
-
- \subsubsection{Example available.lst}
- \lstset{caption={Example available.lst},label=Example available.lst}
- \begin{lstlisting}
-win cbc2 1 cbc2_target_win.kiss
-osx cbc2 1 cbc2_target_osx.kiss
-nix cbc2 1 cbc2_target_nix.kiss
-win c lexer 1 c_lexer_win.kiss
- \end{lstlisting}
- \vspace{.25in}
-
-
- \section{Targets}
- Targets implement the \code{TargetInterface}, which allows the target to specify the actions it can perform, and perform them.
- The TargetInterface passes a port name with most functions, as Targets are not bound to any specific file or port.
- The \code{Target} class stores a port, and provides wrappers for all TargetInterface functions. It is recommended code wishing to
- use a Target use the \code{Target} class instead of a \code{TargetInterface} directly.
-
- \lstset{language=C++,caption={Target Class},label=Target Class}
- \begin{lstlisting}
-class Target : public QObject
-{
-public:
- Target(QObject *parent = 0);
-
- bool setTargetFile(const QString& filename);
- QMap<QString, QString> targetManualPaths();
- QString requestFilePath();
-
- QStringList errorMessages();
- QStringList warningMessages();
- QStringList linkerMessages();
- QStringList verboseMessages();
- QList<QAction*> actionList();
-
- QStringList sourceExtensions();
- QString defaultExtension();
- bool cStyleBlocks();
-
- bool hasDownload();
- bool hasCompile();
- bool hasRun();
- bool hasStop();
- bool hasSimulate();
- bool hasDebug();
- bool hasUi();
-
- bool compile(const QString& filename);
- bool download(const QString& filename);
- bool run(const QString& filename);
- void stop();
- bool simulate(const QString& filename);
- DebuggerInterface* debug(const QString& filename);
- Tab* ui();
-
- bool hasRequestFile();
- QStringList requestDir(const QString&);
- QByteArray requestFile(const QString&);
-
- bool error();
-
- bool hasPort();
- void setPort(const QString& port);
- const QString& port() const;
-};
- \end{lstlisting}
- \vspace{.25in}
-
- \subsection{Layout of a Target}
- \setstretch{.5}
- \begin{description}
- \item[\code{kiss-targets/name}] - Target directory
- \item[\code{kiss-targets/name/name.pro}] - Qt project file for building
- \item[\code{kiss-targets/name/name.target}] - Loaded by KISS at runtime for target information
- \item[\code{kiss-targets/name/name.api}] - Used for auto-completion in the editor.
- \item[\code{kiss-targets/name/src/*}] - Source Files.
- \item[\code{kiss-targets/name/templates/*}] - Templates for New File dialog
- \end{description}
- \singlespacing
-
- \subsubsection{Compiled Target Layout}
- \setstretch{.5}
- \begin{description}
- \item[\code{targets/name}] - Target directory (\code{kiss-targets/root/targets})
- \item[\code{targets/name/libname\_plugin.dylib}] - Plugin shared library (dylib on Mac OS X)
- \item[\code{targets/name/name.target}]
- \item[\code{targets/name/name.api}]
- \item[\code{kiss-targets/name/templates/*}] - Templates for New File dialog
- \end{description}
- \singlespacing
-
- \subsection{Target File}
-
- \lstset{caption={Example Target File},label=Example Target File}
- \begin{lstlisting}
-[General]
-description=A Description of the Target
-display_name=CBCv2
-extensions=C Sources (*.c *.h)|C++ Sources (*.cpp *.h *.hpp)
-name=cbc2
-port_dialog=true
-default_extension=c
-c_style_blocks=true
-request_file_path=/mnt/browser/stage
-
-[Manuals]
-Manual=targets/cbc2/manual/cbcmanual.html
-Sensors and Motors Manual=targets/cbc2/manual/Sensor_and_Motor_Manual_BB2011.pdf
-Video Lessons=videos/videos.html
-
-[win]
-cflags=-Wimplicit -include stdio.h ...
-include_dirs=targets/gcc/include targets/cbc2/include
-lflags=-lcbc2_sim -lkiss -lglfw -lGLee -lopengl32 ...
-lib_dirs=targets/gcc/lib targets/cbc2/lib
-
-[osx]
-cflags=-arch i386 -Wimplicit -include stdio.h ...
-include_dirs=targets/gcc/include targets/cbc2/include
-lflags=-arch i386 -lcbc2_sim -lGLee -lkiss ...
-lib_dirs=targets/gcc/lib targets/cbc2/lib
-
-[nix]
-cflags=-Wimplicit -include stdio.h ...
-include_dirs=targets/gcc/include targets/cbc2/include
-lflags=-lcbc2_sim -lkiss ...
-lib_dirs=targets/gcc/lib targets/cbc2/lib
- \end{lstlisting}
- \vspace{.25in}
-
- \subsubsection{Target File Options}
- \setstretch{.5}
- \begin{description}
- \item[\code{General/description}] - Description to appear on hover in \code{TemplateDialog}.
- \item[\code{General/display\_name}] - Name to appear in \code{TemplateDialog}.
- \item[\code{General/extensions}] - Pipe delimited source files this target is allowed to open.
- \item[\code{General/name}] - Name.
- \item[\code{General/port\_dialog}] - True if needs port dialog (for downloading, running, etc.)
- \item[\code{General/default\_extension}] - Default lexerspec to use, unless the template specifies otherwise.
- \item[\code{General/c\_style\_blocks}] - If the language uses curly brackets in code. Used to turn on/off ``Indent All".
- \item[\code{General/request\_file\_path}] - The remote path to look for files by default.
- \item[\code{Manuals}] - Holds list of manuals, in the format \code{Name=Path/to/Manual}. Will not show non-existent manual.
- \end{description}
- \singlespacing
- The other sections are left to the target to process, such as compiler and linker flags.
-
- \subsection{CBCv2}
- The CBCv2 target is very similar to GCC, and requires GCC to be installed to work.
- The CBCv2 target uses cbcserial to communicate with the CBC.
-
- \section{Templates}
- Templates are the files that appear in the \code{TemplateDialog} when creating a new file. A template has the extension \code{.template}
- and has the same name that will be displayed in the \code{TemplateDialog}. For example, \code{Hello World.template} will appear in the
- \code{TemplateDialog} as ``Hello World". Templates also have \code{.png} icon by the same name in the same directory. If this icon is not
- found, \code{TemplateDialog} falls back on a \code{Default.png} in the same directory. If \code{Default.png} doesn't exist, no icon is
- displayed. Templates may be located in the \code{target/templates} directory, or one subdirectory lower. For example,
- \code{target/templates/Examples/Turn Left.template} is also valid, and will appear in an ``Examples" folder in the \code{TemplateDialog}.
-
- \vspace{.25in}
- \includegraphics[width=1\textwidth]{KISSTemplates.png}
-
- \subsection{Template Metadata}
- Template files usually contain exactly the text you want loaded into the editor, but KISS allows us to specify some information in a template file.
-
- \setstretch{.5}
- \begin{description}
- \item[\code{KISS\_LEXER <lexer\_name>}] - Specifies the lexerspec to use instead of the target's default.
- \item[\code{KISS\_END\_META}] - Ends the meta section of a template file, which is always the top of the file.
- If no metadata is necessary, this keyword may be omitted.
- \item[\code{KISS\_DATE}] - Inserts the date at any place in the file.
- \end{description}
- \singlespacing
-
- \lstset{caption={Example Template with Metadata},label=Example Template with Metadata}
- \begin{lstlisting}
-KISS_LEXER cpp
-END_KISS_META
-// Created on KISS_DATE
-
-#include <iostream>
-
-using namespace std;
-
-int main()
-{
- cout << "Hello, World!" << endl;
- return 0;
-}
- \end{lstlisting}
- \vspace{.25in}
-
- \lstset{caption={Example Template without Metadata},label=Example Template without Metadata}
- \begin{lstlisting}
-// Created on KISS_DATE
-
-#include <stdio.h>
-
-int main()
-{
- printf("Hello, World!\n");
- return 0;
-}
- \end{lstlisting}
- \vspace{.25in}
-
- \section{Serial Communication with the CBC}
- Serial Communication has been largely rewritten in KISS IDE.
- You may link to the \code{cbcserial} library in \code{kiss-targets/libraries} to use serial communication.
- \code{SerialClient} exposes a few useful functions for serial interaction:
-
- \setstretch{.5}
- \begin{description}
- \item[\code{setPort(const QString\& port)}] - Set port to communicate over.
- \item[\code{sendCommand(quint16 command, const QByteArray\& data = "")}] -
- Sends a command (which is a unique unsigned short) and an associated byte array.
- \item[\code{waitForResult(quint16 command, QByteArray\& data)}] -
- Waits for a command with the specified unsigned short to be sent from the CBC.
- Data is set to the CBC's response
- \item[\code{sendFile(const QString\& name, const QString\& destination)}] - Just a wrapper for \code{KISS\_SEND\_FILE\_COMMAND}.
- Name is the path to a file, while destination is the local CBC path to write to.
- \end{description}
- \singlespacing
-
- \subsection{Commands}
- \vspace{.25in}
- \setstretch{.5}
- \begin{description}
- \item[\code{KISS\_SEND\_FILE\_COMMAND 1}] - Sends file to CBC
- \item[\code{KISS\_REQUEST\_FILE\_COMMAND 2}] - Request file response from CBC
- \item[\code{KISS\_LS\_COMMAND 3}] - Request ls of given directory
- \item[\code{KISS\_RUN\_COMMAND 4}] - Run given file
- \item[\code{KISS\_STOP\_COMMAND 5}] - Stop currently running program
- \item[\code{KISS\_EXECUTE\_COMMAND 6}] - Execute arbitrary shell command
- \item[\code{KISS\_COMPILE\_COMMAND 7}] - Compile given file
- \item[\code{KISS\_CREATE\_PROJECT\_COMMAND 8}] - Create given project name
- \item[\code{KISS\_PRESS\_A\_COMMAND 9}] - Simulate A press
- \item[\code{KISS\_PRESS\_B\_COMMAND 10}] - Simulate B press
- \item[\code{KISS\_PRESS\_LEFT\_COMMAND 11}] - Simulate Left press
- \item[\code{KISS\_PRESS\_RIGHT\_COMMAND 12}] - Simulate Right press
- \item[\code{KISS\_PRESS\_UP\_COMMAND 13}] - Simulate Up press
- \item[\code{KISS\_PRESS\_DOWN\_COMMAND 14}] - Simulate Down press
- \item[\code{KISS\_RELEASE\_A\_COMMAND 15}] - Simulate A release
- \item[\code{KISS\_RELEASE\_B\_COMMAND 16}] - Simulate B release
- \item[\code{KISS\_RELEASE\_LEFT\_COMMAND 17}] - Simulate Left release
- \item[\code{KISS\_RELEASE\_RIGHT\_COMMAND 18}] - Simulate Right release
- \item[\code{KISS\_RELEASE\_UP\_COMMAND 19}] - Simulate Up release
- \item[\code{KISS\_RELEASE\_DOWN\_COMMAND 20}] - Simulate Down release
- \item[\code{KISS\_GET\_STATE\_COMMAND 21}] - Request State information (sensors and motor values)
- \item[\code{KISS\_GET\_STDOUT\_COMMAND 22}] - Get stdout change since last request
- \item[\code{KISS\_DELETE\_FILE\_COMMAND 23}] - Delete file at given file path
- \item[\code{KISS\_MKDIR\_COMMAND 24}] - Make given directory
-
- \item[\code{CBC\_REQUEST\_FILE\_RESULT 127}] - Response to Request File
- \item[\code{CBC\_LS\_RESULT 128}] - Response to ls
- \item[\code{CBC\_EXECUTE\_RESULT 129}] - Response to arbitrary command
- \item[\code{CBC\_COMPILE\_SUCCESS\_RESULT 130}] - Response to compile
- \item[\code{CBC\_STATE\_RESULT 131}] - Response to state request
- \item[\code{CBC\_STDOUT\_RESULT 132}] - Response to stdout request
- \end{description}
- \singlespacing
-
- \subsection{Useful References for Serial Communication}
- \setstretch{.5}
- \begin{description}
- \item[\code{kiss-targets/libraries/cbcserial/SerialClient.cpp}] - Communicates with the CBCv2
- \item[\code{kiss-targets/libraries/cbcserial/QSerialPort.cpp}] - Makes serial communication cross-platform
- \item[\code{cbc/cbcui/src/Serial/SerialServer.cpp}] - The CBC side of serial communication. Shows how each command's data should be packed.
- \end{description}
- \singlespacing
-
-
- \section{Building KISS}
-
- \subsection{Mac OS X}
- \begin{list}{Step \arabic{counter}:~}{\usecounter{counter}}{}
- \item Download and Install the Cocoa Version (Carbon for PPC) of Qt from \newline
- \url{http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x}
- \item Download and Extract QScintilla from \newline
- \url{http://www.riverbankcomputing.co.uk/software/qscintilla/download}
- \item \code{cd \$\{qscintilla\}/Qt4}
- \item \code{nano qscintilla.pro} \newline
- Change \code{dll} to \code{staticlib} under \code{CONFIG}. \newline
- Remove \code{QSCINTILLA\_MAKE\_DLL} from \code{DEFINES}. \newline
- \code{Ctrl-X, Y, Enter} to Save and Exit.
- \item \code{qmake -spec macx-g++}
- \item \code{make}
- \item \code{sudo make install}
- \item \code{cd \$\{development\}}
- \item \code{git clone git@github.com:kissInstitute/kiss.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-targets.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-lexers.git}
- \item \code{echo "KISS=\$\{development\}/kiss" > kiss-lexers/kiss.pri} (Absolute path to kiss)
- \item \code{echo "KISS=\$\{development\}/kiss" > kiss-targets/kiss.pri} (Absolute path to kiss)
- \item \code{cd kiss}
- \item \code{sh scripts/buildAll.sh ../kiss-targets ../kiss-lexers} (Deploys kiss to \code{kiss/deploy})
- \item Open deploy/KISS.app and install the packages you want to deploy with.
- \item \code{sh scripts/osx\_packager.sh version\_number}
- \item Your KISS dmg is now ready in the releases folder.
- \end{list}
-
- \subsection{Windows}
- \textbf{The Windows build piggy-backs off of the unix msysgit environment, so all commands should be executed from a msysgit prompt.}
- \begin{list}{Step \arabic{counter}:~}{\usecounter{counter}}{}
- \item Download and Install msysgit from \newline
- \url{http://code.google.com/p/msysgit/downloads/list}
- \item Download and Install GNU Make from (\textbf{Install to C:\textbackslash gnuwin32}) \newline
- \url{http://gnuwin32.sourceforge.net/packages/make.htm}
- \item Download and Install Qt from (\textbf{Install to C:\textbackslash Qt}) \newline
- \url{http://qt.nokia.com/downloads/sdk-windows-cpp}
- \item Download and Extract QScintilla from \newline
- \url{http://www.riverbankcomputing.co.uk/software/qscintilla/download} to \code{C:\textbackslash Projects\textbackslash}
- \item Download and Install NSIS from \newline
- \url{http://nsis.sourceforge.net/Download}
- \item Right Click on Computer, Properties, Advanced System Settings, Environment Variables, Path, Edit... (On Windows Vista or 7)
- \item Append \code{;C:\textbackslash Qt\textbackslash mingw\textbackslash bin;C:\textbackslash Qt\textbackslash Desktop\textbackslash Qt\textbackslash \$\{version\}\textbackslash mingw\textbackslash bin;C:\textbackslash gnuwin32\textbackslash bin}
- \item \code{mkdir -p /c/Projects}
- \item \code{cd /c/Projects}
- \item \code{cd QScintilla*/Qt4}
- \item \code{qmake}
- \item \code{make}
- \item \code{cp -R Qsci /c/Qt/mingw/include}
- \item \code{cp releases/qscintilla2.dll /c/Qt/mingw/bin}
- \item \code{cd /c/Projects}
- \item \code{git clone git@github.com:kissInstitute/kiss.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-targets.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-lexers.git}
- \item \code{echo "KISS=../../kiss" > kiss-lexers/kiss.pri}
- \item \code{echo "KISS=../../kiss" > kiss-targets/kiss.pri}
- \item \code{mkdir -p kiss-targets/root/targets}
- \item Copy distribution mingw to kiss-targets/gcc
- \item \code{cd kiss}
- \item \code{mkdir depends}
- \item \code{mkdir releases}
- \item You will need to populate \code{depends} with \code{libgcc\_s\_dw2-1.dll}, \code{mingwm10.dll},
- \code{phonon\_ds94.dll}, \code{phonon4.dll}, \code{qscintilla2.dll}, \code{QtCore4.dll}, \code{QtGui4.dll},
- \code{QtNetwork4.dll}, \code{QtWebKit4.dll}
- \item \code{sh scripts/buildAll.sh ../kiss-targets ../kiss-lexers} (Deploys kiss to \code{kiss/deploy})
- \item Right click on kiss/scripts/KISS.nsi, Compile NSIS Script (Choose Compressor)
- \item Choose LZMA (Solid) as compressor.
- \item Your KISS installer is now built in the releases folder.
- \end{list}
-
- \subsection{Linux}
- \begin{list}{Step \arabic{counter}:~}{\usecounter{counter}}{}
- \item Install Qt4 and libqscintilla2 development packages using system package manager
- \item \code{cd \$\{development\}}
- \item \code{git clone git@github.com:kissInstitute/kiss.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-targets.git}
- \item \code{git clone git@github.com:kissInstitute/kiss-lexers.git}
- \item