Compare commits
4 Commits
de0fe97442
...
pragma-onc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99b35e131d | ||
|
|
a42cf60f30 | ||
|
|
7a03fbca8f | ||
|
|
0a5bb3a246 |
96
README.md
96
README.md
@@ -1,3 +1,95 @@
|
||||
# Skui
|
||||
# SKUI - Custom user interfaces with all levels of logic
|
||||

|
||||
|
||||
Build fast and easy to use control software with Skui.
|
||||

|
||||
|
||||
## Roadmap
|
||||
Since SKUI is it's early developing stage the actual application is not usable for production.
|
||||
Therefore the most important thing to look at is the roadmap, where you see the progress and the direction of the project.
|
||||
The developing is split up into [milestones](https://dev.skui.eu/SKUI/SKUI/milestones) that include specific task issues.
|
||||
A [milestones](https://dev.skui.eu/SKUI/SKUI/milestones) has a rought topic, but might also include issues that aren't
|
||||
related to that topic. The [milestones](https://dev.skui.eu/SKUI/SKUI/milestones) have rather than in most roadmaps
|
||||
no deadline. So that the developing can happen without pressure and botched jobs.
|
||||
The current planing considers the following [milestones](https://dev.skui.eu/SKUI/SKUI/milestones):
|
||||
|
||||
### 1. ~~Jufo Comptition~~
|
||||
For the jugend forscht compedition there needs to be a minimal version to show to the judge.
|
||||
It inludes only Nodes and Visuals to send an string via serial connection to stear a servo.
|
||||
|
||||
### 2. [GUI Phase](https://dev.skui.eu/SKUI/SKUI/milestone/2)
|
||||
The GUI phase includes a usable GUI that the User can intuitive use without major bugs.
|
||||
It does not aim to to reinvent the nodes itself, but to provide enhancements and new features with the existing node system.
|
||||
One major part of this milestone is the introduction of a working NodeEditor.
|
||||
Serialization is not planed for this phase.
|
||||
|
||||
### 3. [Python embedding](https://dev.skui.eu/SKUI/SKUI/milestone/3)
|
||||
Python will be a big part of SKUI. Therefore the embedding of Python is requiered.
|
||||
This milestone yet again rethinks the Node as an Python function.
|
||||
This solves a lot of problems regarding the connection of Nodes.
|
||||
The tasks in this milestone can be distributed into the following topics:
|
||||
- Type System
|
||||
- Serialization
|
||||
- Python API
|
||||
|
||||
### 4. [Standard library](https://dev.skui.eu/SKUI/SKUI/milestone/4)
|
||||
For SKUI a standard library is indispensable. It is the requirement to build first hardware demonstrators.
|
||||
The standard library should at least include:
|
||||
- Arithmetic
|
||||
- String manipulation
|
||||
- Drivers
|
||||
- TCP
|
||||
- HTTP
|
||||
- Serial
|
||||
- File IO
|
||||
- Visuals
|
||||
- QML subclass
|
||||
- Progressbar
|
||||
- Gauge
|
||||
- Text field
|
||||
- ...
|
||||
|
||||
## Build (Windows)
|
||||
SKUI has no release at the moment, therefore you have to build it yourself.
|
||||
SKUI is written in C++ and heavily depends on Qt. It uses CMake as it's build system.
|
||||
The following steps help you to compile the application:
|
||||
|
||||
### 1. Installing required toools
|
||||
First of all you need a working C++ compiler. We use MSCV 2022 as a compiler,
|
||||
but you can use any that is comatible to Qt and works on your system.
|
||||
The easiest way to install MSCV is via Viusal Studio. You can install it by clicking [here](https://visualstudio.microsoft.com/de/downloads/).
|
||||
Choose the "Desktop developing with C++" installation kit to be on the safe side.
|
||||
|
||||
Next up is Qt, we use version 6.5. To install it use one of Qt's installation methods.
|
||||
A link to the installation guide of Qt can be found [here](https://doc.qt.io/qt-6/get-and-install-qt.html)
|
||||
|
||||
You can install CMake with various techniques. Ship it with Visual Studio, ship it with Qt or
|
||||
install it manually from CMake itself. [Link](https://cmake.org/download/) to CMake download page.
|
||||
|
||||
To download and work on the project you need to install git. A link to download it can be found [here](https://git-scm.com/install/windows).
|
||||
|
||||
Great know you have all the tools you need to build SKUI!
|
||||
|
||||
### 2. Download SKUI sources
|
||||
To build SKUI you first have to copy the sources to a directory of your choice.
|
||||
Go into a directory you want to use and clone the project via:
|
||||
```shell
|
||||
git clone https://dev.skui.eu/SKUI/SKUI.git
|
||||
```
|
||||
Go into the downloaded directory:
|
||||
```shell
|
||||
cd SKUI
|
||||
```
|
||||
|
||||
Now you are good to go to build SKUI yourself.
|
||||
|
||||
### 3. Build SKUI
|
||||
⚠️ Under unstruction ⚠️
|
||||
|
||||
## Contribution
|
||||
There are several ways you can help to contribute to the project.
|
||||
If its writting code, giving feedback or just spreading the idea.
|
||||
A complete guide of how you can contriblte to SKUI can be found at [CONTRIBUTING.md](/CONTRIBUTING.md)
|
||||
|
||||
|
||||
## Licence
|
||||
SKUI is licenced under GNU GPL v3. The complete licence can be found at [LICENSE](/LICENSE).
|
||||
BIN
docs/images/SKUI_NodeEditor_Screenshot1.png
Normal file
BIN
docs/images/SKUI_NodeEditor_Screenshot1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
@@ -1,5 +1,4 @@
|
||||
#ifndef CONTEXT_MENU_H
|
||||
#define CONTEXT_MENU_H
|
||||
#pragma once
|
||||
|
||||
#include <QMenu>
|
||||
|
||||
@@ -25,5 +24,3 @@ private:
|
||||
const QPoint m_spawn_position;
|
||||
Node *m_node = nullptr;
|
||||
};
|
||||
|
||||
#endif // CONTEXT_MENU_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef DOCUMENT_H
|
||||
#define DOCUMENT_H
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <QJsonObject>
|
||||
@@ -87,5 +86,3 @@ private:
|
||||
NodeEditor *m_nodeeditor = nullptr;
|
||||
static Document *s_active_document;
|
||||
};
|
||||
|
||||
#endif // DOCUMENT_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
#pragma once
|
||||
|
||||
#include <QDir>
|
||||
#include <QMainWindow>
|
||||
@@ -47,4 +46,3 @@ private:
|
||||
|
||||
DisplayMode m_display_mode = DisplayMode::Run;
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef PROPERTYWINDOW_H
|
||||
#define PROPERTYWINDOW_H
|
||||
#pragma once
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QLabel>
|
||||
@@ -14,5 +13,3 @@ class PropertyWindow : public QWidget
|
||||
public:
|
||||
explicit PropertyWindow(QWidget *parent, const QObject *object);
|
||||
};
|
||||
|
||||
#endif // PROPERTYWINDOW_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef RENAME_NODE_DIALOG_H
|
||||
#define RENAME_NODE_DIALOG_H
|
||||
#pragma once
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
@@ -23,5 +22,3 @@ private:
|
||||
QLineEdit *m_name_edit = nullptr;
|
||||
QDialogButtonBox *m_button_box = nullptr;
|
||||
};
|
||||
|
||||
#endif // RENAME_NODE_DIALOG_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef SKUI_H
|
||||
#define SKUI_H
|
||||
#pragma once
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDebug>
|
||||
@@ -12,5 +11,3 @@ public:
|
||||
|
||||
bool notify(QObject *, QEvent *) override;
|
||||
};
|
||||
|
||||
#endif // SKUI_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef INTERFACE_H
|
||||
#define INTERFACE_H
|
||||
#pragma once
|
||||
|
||||
#include <QDebug>
|
||||
#include <QVariant>
|
||||
@@ -29,5 +28,3 @@ private:
|
||||
QList<Interface *> m_routed_interfaces;
|
||||
std::function<void()> m_callback;
|
||||
};
|
||||
|
||||
#endif // INTERFACE_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef NODE_H
|
||||
#define NODE_H
|
||||
#pragma once
|
||||
|
||||
#include <QHash>
|
||||
#include <QObject>
|
||||
@@ -102,5 +101,3 @@ private:
|
||||
QList<Interface> m_interfaces;
|
||||
static QMap<QString, int> instance_counter;
|
||||
};
|
||||
|
||||
#endif // NODE_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef LABEL_H
|
||||
#define LABEL_H
|
||||
#pragma once
|
||||
|
||||
#include <QLabel>
|
||||
|
||||
@@ -18,5 +17,3 @@ private:
|
||||
|
||||
QLabel *m_label;
|
||||
};
|
||||
|
||||
#endif // LABEL_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef LINEEDIT_H
|
||||
#define LINEEDIT_H
|
||||
#pragma once
|
||||
|
||||
#include <QLineEdit>
|
||||
|
||||
@@ -18,5 +17,3 @@ private slots:
|
||||
private:
|
||||
QWidget *paintWidget(VisualContainer *) override;
|
||||
};
|
||||
|
||||
#endif // LINEEDIT_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef SERIALSEND_H
|
||||
#define SERIALSEND_H
|
||||
#pragma once
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QLabel>
|
||||
@@ -22,5 +21,3 @@ private:
|
||||
QComboBox *m_combo_box;
|
||||
QSerialPort m_serial_port;
|
||||
};
|
||||
|
||||
#endif // SERIALSEND_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef SLIDER_H
|
||||
#define SLIDER_H
|
||||
#pragma once
|
||||
|
||||
#include <QDebug>
|
||||
#include <QSlider>
|
||||
@@ -18,5 +17,3 @@ private slots:
|
||||
private:
|
||||
QWidget *paintWidget(VisualContainer *) override;
|
||||
};
|
||||
|
||||
#endif // SLIDER_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef TEXTCOMBINE_H
|
||||
#define TEXTCOMBINE_H
|
||||
#pragma once
|
||||
|
||||
#include "../node.h"
|
||||
|
||||
@@ -12,5 +11,3 @@ public:
|
||||
private:
|
||||
void valueChanged();
|
||||
};
|
||||
|
||||
#endif // TEXTCOMBINE_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef VISUAL_H
|
||||
#define VISUAL_H
|
||||
#pragma once
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
||||
@@ -72,5 +71,3 @@ signals:
|
||||
private:
|
||||
QWidget *m_widget = nullptr;
|
||||
};
|
||||
|
||||
#endif // VISUAL_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef CABLE_H
|
||||
#define CABLE_H
|
||||
#pragma once
|
||||
|
||||
#include <QCursor>
|
||||
#include <QGraphicsObject>
|
||||
@@ -33,14 +32,6 @@ class Cable : public QGraphicsObject
|
||||
public:
|
||||
explicit Cable(QGraphicsItem *parent, const Pad *start_pad);
|
||||
|
||||
//void abortCable();
|
||||
//deleteCable / ~Cable()
|
||||
//Pad *startPad();
|
||||
//QList<Pad *> endPads();
|
||||
//bool isActive() { return m_is_active; }
|
||||
//getCablePath() -> QList<QPoint> or QList<CableSegment> depending on
|
||||
//dynamic bounding rect, on edit is scene rect or bounding rect of the cable, on finished cable bounding rect
|
||||
|
||||
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override;
|
||||
QRectF boundingRect() const override;
|
||||
|
||||
@@ -79,7 +70,7 @@ protected:
|
||||
* the preview decides if it uses a horizontal or vertical based on
|
||||
* the angle to the latest corner.
|
||||
*
|
||||
* To enter a position, use setCorner(QPoint).
|
||||
* To enter a position, use corner(QPoint).
|
||||
*
|
||||
* @param point The position to render the preview, normally the current mouse position.
|
||||
*
|
||||
@@ -127,5 +118,3 @@ private:
|
||||
// Do not access directly, use updateBoundingRect() to update repaint.
|
||||
QRectF m_bounding_rect;
|
||||
};
|
||||
|
||||
#endif // CABLE_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef NODE_GRAPHICSITEM_H
|
||||
#define NODE_GRAPHICSITEM_H
|
||||
#pragma once
|
||||
|
||||
#include <QFontMetrics>
|
||||
#include <QGraphicsItem>
|
||||
@@ -57,5 +56,3 @@ private:
|
||||
QString m_object_name;
|
||||
QList<QMetaObject::Connection> m_node_connections;
|
||||
};
|
||||
|
||||
#endif // NODE_GRAPHICSITEM_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef PAD_H
|
||||
#define PAD_H
|
||||
#pragma once
|
||||
|
||||
#include <QCursor>
|
||||
#include <QGraphicsObject>
|
||||
@@ -67,5 +66,3 @@ private:
|
||||
const PadSide m_pad_side;
|
||||
Interface *m_represented_interface;
|
||||
};
|
||||
|
||||
#endif // PAD_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef NodeEditor_H
|
||||
#define NodeEditor_H
|
||||
#pragma once
|
||||
|
||||
#include <QGraphicsView>
|
||||
#include <QLoggingCategory>
|
||||
@@ -29,5 +28,3 @@ private:
|
||||
bool m_dragging = false;
|
||||
QPoint m_last_drag_pos;
|
||||
};
|
||||
|
||||
#endif // NodeEditor_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef NODEEDITOR_SCENE_H
|
||||
#define NODEEDITOR_SCENE_H
|
||||
#pragma once
|
||||
|
||||
#include <QGraphicsScene>
|
||||
#include <QGuiApplication>
|
||||
@@ -30,5 +29,3 @@ private:
|
||||
QCursor m_cursor_before_pad;
|
||||
QPointer<Cable> m_last_cable = nullptr;
|
||||
};
|
||||
|
||||
#endif // NODEEDITOR_SCENE_H
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef PANEL_H
|
||||
#define PANEL_H
|
||||
#pragma once
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QLoggingCategory>
|
||||
@@ -169,5 +168,3 @@ private:
|
||||
|
||||
QList<RbbWidgetPair> m_selection;
|
||||
};
|
||||
|
||||
#endif // PANEL_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef RESIZEBOUNDINGBOX_H
|
||||
#define RESIZEBOUNDINGBOX_H
|
||||
#pragma once
|
||||
|
||||
#include <QCursor>
|
||||
#include <QMargins>
|
||||
@@ -74,5 +73,3 @@ private:
|
||||
QPointF last_global_position;
|
||||
QRect last_geometry;
|
||||
};
|
||||
|
||||
#endif // RESIZEBOUNDINGBOX_H
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#ifndef VISUAL_CONTAINER_H
|
||||
#define VISUAL_CONTAINER_H
|
||||
#pragma once
|
||||
|
||||
#include "../node/node.h"
|
||||
#include <QChildEvent>
|
||||
@@ -25,5 +24,3 @@ protected:
|
||||
private:
|
||||
Node *m_node = nullptr;
|
||||
};
|
||||
|
||||
#endif // VISUAL_CONTAINER_H
|
||||
Reference in New Issue
Block a user