Browse Source

UI has better structure, events are organized, raw console is its own dialog, headers are included one at a time using QT`s standard

logicp 5 years ago
parent
commit
3ec22cae6c
14 changed files with 675 additions and 50 deletions
  1. 1 0
      .gitignore
  2. 1 0
      client.cpp
  3. 3 3
      client.hpp
  4. 23 0
      consoledialog.cpp
  5. 23 0
      consoledialog.h
  6. 58 0
      consoledialog.ui
  7. 13 3
      headers/ktextedit.hpp
  8. 44 1
      headers/util.hpp
  9. 3 0
      ky_gui.pro
  10. 1 1
      ky_gui.pro.user
  11. 391 0
      ky_gui.pro.user.4.10-pre1
  12. 62 16
      mainwindow.cpp
  13. 5 0
      mainwindow.h
  14. 47 26
      mainwindow.ui

+ 1 - 0
.gitignore

@@ -7,3 +7,4 @@ tags
 Makefile
 *.stash
 qrc_kres.*
+**/*.jpg

+ 1 - 0
client.cpp

@@ -95,6 +95,7 @@ void Client::handleMessages() {
     }
     memset(receive_buffer, 0, 2048);
     ::close(m_client_socket_fd);
+//    ::shutdown(m_client_socket_fd, SHUT_RDWR);
 }
 
 /**

+ 3 - 3
client.hpp

@@ -1,5 +1,5 @@
-#ifndef __CLIENT_HPP__
-#define __CLIENT_HPP__
+#ifndef CLIENT_HPP
+#define CLIENT_HPP
 
 #include <QDialog>
 #include <QComboBox>
@@ -80,4 +80,4 @@ private:
     std::vector<int> selected_commands;
     QByteArray outgoing_file;
 };
-#endif // __CLIENT_HPP__
+#endif // CLIENT_HPP

+ 23 - 0
consoledialog.cpp

@@ -0,0 +1,23 @@
+#include "consoledialog.h"
+#include <QPushButton>
+#include "ui_consoledialog.h"
+
+ConsoleDialog::ConsoleDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::ConsoleDialog)
+{
+    ui->setupUi(this);
+
+    QObject::connect(ui->closeConsole, &QPushButton::clicked, this, [this]() {
+        this->close();
+    });
+}
+
+void ConsoleDialog::updateText(const QString& s) {
+    ui->consoleText->append(s);
+}
+
+ConsoleDialog::~ConsoleDialog()
+{
+    delete ui;
+}

+ 23 - 0
consoledialog.h

@@ -0,0 +1,23 @@
+#ifndef CONSOLEDIALOG_H
+#define CONSOLEDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class ConsoleDialog;
+}
+
+class ConsoleDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ConsoleDialog(QWidget *parent = nullptr);
+    void updateText(const QString& s);
+    ~ConsoleDialog();
+
+private:
+    Ui::ConsoleDialog *ui;
+};
+
+#endif // CONSOLEDIALOG_H

+ 58 - 0
consoledialog.ui

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConsoleDialog</class>
+ <widget class="QDialog" name="ConsoleDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>721</width>
+    <height>836</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QTextEdit" name="consoleText">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>60</y>
+     <width>661</width>
+     <height>721</height>
+    </rect>
+   </property>
+   <property name="readOnly">
+    <bool>false</bool>
+   </property>
+  </widget>
+  <widget class="QLabel" name="consoleTitle">
+   <property name="geometry">
+    <rect>
+     <x>300</x>
+     <y>20</y>
+     <width>51</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Console</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="closeConsole">
+   <property name="geometry">
+    <rect>
+     <x>600</x>
+     <y>800</y>
+     <width>80</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Close</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 13 - 3
headers/ktextedit.hpp

@@ -1,11 +1,15 @@
-#include <QTextEdit>
+#ifndef KTEXTEDIT_HPP
+#define KTEXTEDIT_HPP
+
+#include <QTextEdit>
 #include <QDebug>
 #include <QKeyEvent>
 #include <QtUiPlugin/QDesignerCustomWidgetInterface>
 
 
 class KTextEdit : public QTextEdit, public QDesignerCustomWidgetInterface {
-    Q_PLUGIN_METADATA(IID "kstyleyo.kygui.ktextedit" FILE "ktextedit.json")
+    Q_OBJECT
+//    Q_PLUGIN_METADATA(IID "kstyleyo.kygui.ktextedit" FILE "ktextedit.json")
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 
 
@@ -19,13 +23,19 @@ public:
         QTextEdit::clear();
     }
 
+
+signals:
+    void textInputEnter();
+
 protected:
     virtual void keyPressEvent(QKeyEvent* e) {
         qDebug() << "Key press: " << e->key();
+
         if (e->key()==Qt::Key_Enter) {
-            qDebug() << "Ouch!";
+            emit textInputEnter();
         }
         QTextEdit::keyPressEvent(e);
     }
 
 };
+#endif // KTEXTEDIT_HPP

+ 44 - 1
headers/util.hpp

@@ -14,6 +14,7 @@
 #include "rapidjson/document.h"
 #include "json.hpp"
 
+namespace {
 using namespace rapidjson;
 using json = nlohmann::json;
 
@@ -68,6 +69,16 @@ bool isEvent(const char* data) {
     d.Parse(data);
     return strcmp(d["type"].GetString(), "event") == 0;
 }
+// TODO: This should be "message", no?
+bool isMessage(const char* data) {
+    Document d;
+    d.Parse(data);
+    if (d.HasMember("message")) {
+        return true;
+    } else {
+        return false;
+    }
+}
 
 std::string createOperation(const char* op, std::vector<std::string> args) {
     StringBuffer s;
@@ -107,6 +118,38 @@ QString getEvent(const char* data) {
     return "";
 }
 
+QString getMessage(const char* data) {
+    Document d;
+    d.Parse(data);
+    if (d.HasMember("message")) {
+        return d["message"].GetString();
+    }
+    return "";
+}
+
+QVector<QString> getShortArgs(const char* data) {
+    Document d;
+    d.Parse(data);
+    QVector<QString> args{};
+    if (d.HasMember("args")) {
+        if (d["args"].IsArray()) {
+            for (const auto& m : d["args"].GetArray()) {
+                if (m.GetStringLength() < 100) {
+                    args.push_back(m.GetString());
+                }
+            }
+        } else {
+            for (const auto& m : d["args"].GetObject()) {
+                QString arg = m.name.GetString();
+                arg +=  ": ";
+                arg += m.value.GetString();
+                args.push_back(arg);
+            }
+        }
+    }
+    return args;
+}
+
 QVector<QString> getArgs(const char* data) {
     Document d;
     d.Parse(data);
@@ -253,5 +296,5 @@ inline size_t findNullIndex(uint8_t* data) {
     }
     return index;
 }
-
+}
 #endif  // __UTIL_HPP__

+ 3 - 0
ky_gui.pro

@@ -27,12 +27,14 @@ CONFIG += c++17
 
 SOURCES += \
         argdialog.cpp \
+        consoledialog.cpp \
         main.cpp \
         mainwindow.cpp \
         client.cpp
 
 HEADERS += \
         argdialog.h \
+        consoledialog.h \
         mainwindow.h \
         client.hpp \
         headers/ktextedit.hpp \
@@ -47,6 +49,7 @@ HEADERS += \
 
 FORMS += \
         argdialog.ui \
+        consoledialog.ui \
         mainwindow.ui
 
 # Default rules for deployment.

+ 1 - 1
ky_gui.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.11.0, 2020-01-06T20:24:31. -->
+<!-- Written by QtCreator 4.11.0, 2020-01-10T01:04:37. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>

+ 391 - 0
ky_gui.pro.user.4.10-pre1

@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.9.2, 2019-12-31T23:50:53. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{96a79198-eab8-4d91-a674-e4ed057de93f}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap">
+   <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
+   <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.13.0 GCC 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.13.0 GCC 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5130.gcc_64_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/data/c/ky_gui</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/data/c/build-ky_gui-Desktop_Qt_5_13_0_GCC_64bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/data/c/build-ky_gui-Desktop_Qt_5_13_0_GCC_64bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/data/c/build-ky_gui-Desktop_Qt_5_13_0_GCC_64bit-KY Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">KY Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">KY Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
+    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
+     <value type="QString">cpu-cycles</value>
+    </valuelist>
+    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
+    <value type="int" key="Analyzer.Perf.Frequency">250</value>
+    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
+    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
+    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ky_gui</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/data/c/ky_gui/ky_gui.pro</value>
+    <value type="QString" key="RunConfiguration.Arguments">127.0.0.1 9009 test message</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">/data/c/ky_gui</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">1</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">21</value>
+ </data>
+ <data>
+  <variable>Version</variable>
+  <value type="int">21</value>
+ </data>
+</qtcreator>

+ 62 - 16
mainwindow.cpp

@@ -5,8 +5,10 @@
 #include <QTextStream>
 #include <QString>
 #include <QLayout>
+#include <headers/ktextedit.hpp>
 #include <QDateTime>
 #include <vector>
+#include <headers/util.hpp>
 
 /**
  * @brief MainWindow::MainWindow
@@ -19,7 +21,9 @@ MainWindow::MainWindow(int argc, char** argv, QWidget *parent) :
     ui(new Ui::MainWindow),
     arg_ui(new ArgDialog),
     cli_argc(argc),
-    cli_argv(argv) {
+    cli_argv(argv),
+    q_client(nullptr) {
+    q_client = new Client(this, cli_argc, cli_argv);
     ui->setupUi(this);
     this->setWindowTitle("KYGUI");
     QPushButton *button = this->findChild<QPushButton*>("connect");
@@ -41,7 +45,6 @@ MainWindow::~MainWindow()
 void MainWindow::connectClient() {
     qDebug() << "Connecting to KServer";
 
-    q_client = new Client(this, cli_argc, cli_argv);
     QObject::connect(q_client, &Client::messageReceived, this, &MainWindow::updateMessages);
 
     QProgressBar* progressBar = ui->progressBar;
@@ -109,13 +112,41 @@ void MainWindow::connectClient() {
         }
     });
 
-    ui->processList->addItem("Processes results displayed here");
+    QObject::connect(ui->viewConsole, &QPushButton::clicked, this, [this]() {
+        m_console.show();
+    });
 
     // TODO: Handle enter key
-    //    QObject::connect(send_message_box, &QTextEdit::keyReleaseEvent, this, [q_client, send_message_box]() {
-    //        q_client->sendMessage(send_message_box->toPlainText());
-    //        send_message_box->clear();
-    //    });
+//    QObject::connect(static_cast<KTextEdit*>(ui->inputText), &KTextEdit::textInputEnter, this, &MainWindow::handleInputEnterKey);
+    QObject::connect(static_cast<KTextEdit*>(ui->inputText), &KTextEdit::textInputEnter, this, &MainWindow::handleInputEnterKey);
+
+}
+
+void MainWindow::handleInputEnterKey() {
+    q_client->sendMessage(ui->inputText->toPlainText());
+    ui->inputText->clear();
+}
+
+QString MainWindow::parseMessage(const QString& message, StringVec v) {
+    QString simplified_message{};
+    if (isMessage(message.toUtf8())) {
+        simplified_message += "Message: " + getMessage(message.toUtf8());
+    } else if (isEvent(message.toUtf8())) {
+        simplified_message += "Event: " + getEvent(message.toUtf8());
+    } else if (isOperation(message.toUtf8())) {
+        simplified_message += "Operation: ";
+        simplified_message += getOperation(message.toUtf8()).c_str();
+    }
+    // TODO: Find out why rapidJson uses GetArray() in place of IsArray()
+//    QVector<QString> short_args = getShortArgs(message.toUtf8());
+//    if (!short_args.empty()) {
+//        simplified_message += "\nArguments:";
+//        for (const auto& arg : short_args) {
+//            simplified_message += " " + arg + ",";
+//        }
+//        simplified_message.chop(simplified_message.size() - 1);
+//    }
+    return simplified_message;
 }
 
 /**
@@ -125,7 +156,9 @@ void MainWindow::connectClient() {
 void MainWindow::updateMessages(int t, const QString& message, StringVec v) {
     if (t == MESSAGE_UPDATE_TYPE) {
         qDebug() << "Updating message area";
-        ui->messages->append(message);
+        auto simple_message = parseMessage(message, v);
+        ui->messages->append(simple_message);
+        m_console.updateText(message);
     } else if (t == COMMANDS_UPDATE_TYPE) {
         qDebug() << "Updating commands";
         QComboBox* app_list = ui->appList;
@@ -144,14 +177,19 @@ void MainWindow::updateMessages(int t, const QString& message, StringVec v) {
     } else if (t == EVENT_UPDATE_TYPE) {
         QString event_message{QDateTime::currentDateTime().toString("hh:mm:ss") + " - "};
         if (!v.empty()) {
-            auto mask = std::stoi(v.at(0).toUtf8().constData());
-            event_message += message;
-            event_message += "\n";
-            event_message += q_client->getAppName(mask);
-            event_message += ": ";
-            event_message += v.at(1);
-            if (message == "Process Result") {
-                updateProcessResult(mask);
+            // TODO: extract process result handling from here. This should handle any event
+            if (v.size() == 1) {
+                event_message += message + "\n" + v.at(0);
+            } else {
+                auto mask = std::stoi(v.at(0).toUtf8().constData());
+                event_message += message;
+                event_message += "\n";
+                event_message += q_client->getAppName(mask);
+                event_message += ": ";
+                event_message += v.at(1);
+                if (message == "Process Result") {
+                    updateProcessResult(mask);
+                }
             }
         } else {
             event_message += message;
@@ -175,3 +213,11 @@ void MainWindow::updateProcessResult(int mask) {
         }
     }
 }
+
+void MainWindow::keyPressEvent(QKeyEvent *e) {
+    qDebug() << "Key press: " << e->key();
+    if(e->key()==Qt::Key_0)
+    {
+        qDebug() << "Ok";
+    }
+}

+ 5 - 0
mainwindow.h

@@ -9,6 +9,7 @@
 #include <client.hpp>
 #include <headers/ktextedit.hpp>
 #include <argdialog.h>
+#include <consoledialog.h>
 
 namespace Ui {
 class MainWindow;
@@ -20,6 +21,7 @@ class MainWindow : public QMainWindow
 
 public:
     explicit MainWindow(int argc = 0, char** argv = nullptr, QWidget* parent = nullptr);
+    virtual void keyPressEvent(QKeyEvent* e);
     ~MainWindow();
 private:
     Ui::MainWindow *ui;
@@ -27,14 +29,17 @@ private:
     void connectUi();
     void runApp();
     void updateProcessResult(int mask);
+    QString parseMessage(const QString& s, StringVec v);
     int cli_argc;
     char** cli_argv;
     Client* q_client;
     QList<QString> m_events;
+    ConsoleDialog m_console;
 
 private slots:
     void connectClient();
     void updateMessages(int t, const QString& s, StringVec v);
+    void handleInputEnterKey();
 };
 
 

+ 47 - 26
mainwindow.ui

@@ -25,7 +25,7 @@ background-color: rgb(255, 85, 0);
   <widget class="QWidget" name="centralWidget">
    <property name="styleSheet">
     <string notr="true">border-color: rgb(0, 0, 0);
-background-color: rgb(255, 255, 255);</string>
+background-color: rgb(0, 43, 54);</string>
    </property>
    <widget class="QLabel" name="label">
     <property name="geometry">
@@ -72,7 +72,7 @@ background-color: rgb(255, 255, 255);</string>
             <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
 color: rgb(0, 0, 0);
 background-color: rgb(94, 79, 255);
-</string>
+font-weight: 700;</string>
            </property>
            <property name="text">
             <string>Connect</string>
@@ -87,7 +87,8 @@ background-color: rgb(94, 79, 255);
           <widget class="QLabel" name="selectProcessTitle">
            <property name="styleSheet">
             <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(131, 148, 150);
+font-weight: 700;</string>
            </property>
            <property name="text">
             <string>Select process to execute</string>
@@ -109,8 +110,11 @@ color: rgb(0, 0, 0);</string>
          <item>
           <widget class="QComboBox" name="appList">
            <property name="styleSheet">
-            <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+            <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
+background-color: rgb(7, 54, 66);
+color: rgb(131, 148, 150);
+font-weight: 700;
+</string>
            </property>
           </widget>
          </item>
@@ -130,7 +134,8 @@ color: rgb(0, 0, 0);</string>
              <property name="styleSheet">
               <string notr="true">background-color: rgb(157, 157, 157);
 font: 87 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(255, 85, 0);
+font-weight: 700;</string>
              </property>
              <property name="text">
               <string>Args</string>
@@ -148,7 +153,8 @@ color: rgb(0, 0, 0);</string>
              <property name="styleSheet">
               <string notr="true">background-color: rgb(157, 157, 157);
 font: 87 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(255, 85, 0);
+font-weight: 700;</string>
              </property>
              <property name="text">
               <string>Execute</string>
@@ -161,7 +167,8 @@ color: rgb(0, 0, 0);</string>
           <widget class="QLabel" name="eventListTitle">
            <property name="styleSheet">
             <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(131, 148, 150);
+font-weight: 700;</string>
            </property>
            <property name="text">
             <string>Events</string>
@@ -171,9 +178,11 @@ color: rgb(0, 0, 0);</string>
          <item>
           <widget class="QListWidget" name="eventList">
            <property name="styleSheet">
-            <string notr="true">background-color: rgb(177, 177, 177);
-color: rgb(5, 5, 5);
-font: 87 10pt &quot;Noto Sans&quot;;</string>
+            <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
+background-color: rgb(7, 54, 66);
+color: rgb(131, 148, 150);
+font-weight: 700;
+</string>
            </property>
            <property name="alternatingRowColors">
             <bool>false</bool>
@@ -187,7 +196,8 @@ font: 87 10pt &quot;Noto Sans&quot;;</string>
           <widget class="QLabel" name="processListTitle">
            <property name="styleSheet">
             <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(131, 148, 150);
+font-weight: 700;</string>
            </property>
            <property name="text">
             <string>Processes</string>
@@ -200,9 +210,11 @@ color: rgb(0, 0, 0);</string>
          <item>
           <widget class="QListWidget" name="processList">
            <property name="styleSheet">
-            <string notr="true">background-color: rgb(177, 177, 177);
-color: rgb(5, 5, 5);
-font: 87 10pt &quot;Noto Sans&quot;;</string>
+            <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
+background-color: rgb(7, 54, 66);
+color: rgb(131, 148, 150);
+font-weight: 700;
+</string>
            </property>
           </widget>
          </item>
@@ -217,7 +229,8 @@ font: 87 10pt &quot;Noto Sans&quot;;</string>
       <widget class="QLabel" name="messagesTitle">
        <property name="styleSheet">
         <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(131, 148, 150);
+font-weight: 700;</string>
        </property>
        <property name="text">
         <string>Messages</string>
@@ -236,9 +249,11 @@ color: rgb(0, 0, 0);</string>
         <bool>false</bool>
        </property>
        <property name="styleSheet">
-        <string notr="true">background-color: rgb(255, 255, 255);
-color: rgb(5, 5, 5);
-font: 87 10pt &quot;Noto Sans&quot;;</string>
+        <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
+background-color: rgb(7, 54, 66);
+color: rgb(131, 148, 150);
+font-weight: 700;
+</string>
        </property>
        <property name="lineWrapMode">
         <enum>QTextEdit::WidgetWidth</enum>
@@ -264,7 +279,8 @@ font: 87 10pt &quot;Noto Sans&quot;;</string>
          <property name="styleSheet">
           <string notr="true">background-color: rgb(157, 157, 157);
 font: 87 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(0, 0, 0);
+font-weight: 700;</string>
          </property>
          <property name="text">
           <string>View Console</string>
@@ -300,7 +316,8 @@ color: rgb(0, 0, 0);</string>
            <property name="styleSheet">
             <string notr="true">background-color: rgb(130, 255, 121);
 font: 87 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(0, 0, 0);
+font-weight: 700;</string>
            </property>
            <property name="text">
             <string>Send</string>
@@ -334,9 +351,11 @@ color: rgb(0, 0, 0);</string>
           </sizepolicy>
          </property>
          <property name="styleSheet">
-          <string notr="true">background-color: rgb(255, 255, 255);
-color: rgb(5, 5, 5);
-font: 87 10pt &quot;Noto Sans&quot;;</string>
+          <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
+background-color: rgb(7, 54, 66);
+color: rgb(131, 148, 150);
+font-weight: 700;
+</string>
          </property>
         </widget>
        </item>
@@ -344,7 +363,8 @@ font: 87 10pt &quot;Noto Sans&quot;;</string>
         <widget class="QLabel" name="inputTitle">
          <property name="styleSheet">
           <string notr="true">font: 75 11pt &quot;Noto Sans&quot;;
-color: rgb(0, 0, 0);</string>
+color: rgb(131, 148, 150);
+font-weight: 700;</string>
          </property>
          <property name="text">
           <string>Input</string>
@@ -364,7 +384,8 @@ color: rgb(0, 0, 0);</string>
        <property name="styleSheet">
         <string notr="true">font: 87 11pt &quot;Noto Sans&quot;;
 color: rgb(0, 0, 0);
-background-color: rgb(255, 65, 68);</string>
+background-color: rgb(255, 65, 68);
+font-weight: 700;</string>
        </property>
        <property name="text">
         <string>Disconnect</string>