Initial commit

This commit is contained in:
Melanie
2016-11-19 02:33:11 +00:00
commit d10b7efdc5
40 changed files with 3821 additions and 0 deletions
BIN
View File
Binary file not shown.
+39
View File
@@ -0,0 +1,39 @@
#-------------------------------------------------
#
# Project created by QtCreator 2016-11-16T16:46:32
#
#-------------------------------------------------
QT += core gui network xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = ConsoleClient
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
connectionpane.cpp \
connectiondata.cpp \
addconndialog.cpp \
groupdata.cpp \
addgroupdialog.cpp \
preferencesdialog.cpp
HEADERS += mainwindow.h \
connectionpane.h \
connectiondata.h \
addconndialog.h \
groupdata.h \
addgroupdialog.h \
preferencesdialog.h
FORMS += mainwindow.ui \
connectionpane.ui \
addconndialog.ui \
addgroupdialog.ui \
preferencesdialog.ui
RESOURCES += \
Resources.qrc
+336
View File
@@ -0,0 +1,336 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.1.0, 2016-11-18T11:17:18. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{21a24881-731f-4679-9885-7d748f13cb82}</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"/>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.7.0 clang 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.7.0 clang 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.57.clang_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">/Users/melanie/yrgrid/build-ConsoleClient-Desktop_Qt_5_7_0_clang_64bit-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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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"></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">/Users/melanie/yrgrid/build-ConsoleClient-Desktop_Qt_5_7_0_clang_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">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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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"></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">/Users/melanie/yrgrid/build-ConsoleClient-Desktop_Qt_5_7_0_clang_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">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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<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>
</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"></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>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</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 locally</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="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="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">ConsoleClient</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/Users/melanie/yrgrid/ConsoleClient/ConsoleClient.pro</value>
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ConsoleClient.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/Users/melanie/yrgrid/build-ConsoleClient-Desktop_Qt_5_7_0_clang_64bit-Debug/ConsoleClient.app/Contents/MacOS</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.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</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">18</value>
</data>
<data>
<variable>Version</variable>
<value type="int">18</value>
</data>
</qtcreator>
+599
View File
@@ -0,0 +1,599 @@
#############################################################################
# Makefile for building: ConsoleClient.app/Contents/MacOS/ConsoleClient
# Generated by qmake (3.0) (Qt 5.6.0)
# Project: ConsoleClient.pro
# Template: app
# Command: /Users/melanie/Qt5.6.0/5.6/clang_64/bin/qmake -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug -o Makefile ConsoleClient.pro
#############################################################################
MAKEFILE = Makefile
####### Compiler, tools and options
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CXX = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
DEFINES = -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
CFLAGS = -pipe -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC $(DEFINES)
CXXFLAGS = -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC $(DEFINES)
INCPATH = -I. -I../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers -I../../Qt5.6.0/5.6/clang_64/lib/QtGui.framework/Headers -I../../Qt5.6.0/5.6/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang -F/Users/melanie/Qt5.6.0/5.6/clang_64/lib
QMAKE = /Users/melanie/Qt5.6.0/5.6/clang_64/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = ConsoleClient1.0.0
DISTDIR = /Users/melanie/yrgrid/ConsoleClient/.tmp/ConsoleClient1.0.0
LINK = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
LFLAGS = -headerpad_max_install_names -stdlib=libc++ -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wl,-rpath,/Users/melanie/Qt5.6.0/5.6/clang_64/lib
LIBS = $(SUBLIBS) -F/Users/melanie/Qt5.6.0/5.6/clang_64/lib -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL
AR = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar cq
RANLIB = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib -s
SED = sed
STRIP =
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \
mainwindow.cpp moc_mainwindow.cpp
OBJECTS = main.o \
mainwindow.o \
moc_mainwindow.o
DIST = ../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/qdevice.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/device_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/unix.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/macx.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/sanitize.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base-mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang-mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/qconfig.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bootstrap_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_clucene_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designercomponents_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_labstemplates_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_platformsupport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmldevtools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickparticles_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uiplugin.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_functions.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang/qmake.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exclusive_builds.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resolve_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/sdk.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/objective_c.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qml_debug.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/warn_on.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resources.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/moc.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/opengl.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/uic.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/thread.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/rez.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/testcase_targets.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exceptions.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/yacc.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/lex.prf \
ConsoleClient.pro mainwindow.h main.cpp \
mainwindow.cpp
QMAKE_TARGET = ConsoleClient
DESTDIR =
TARGET = ConsoleClient.app/Contents/MacOS/ConsoleClient
first: all
####### Build rules
$(TARGET): ui_mainwindow.h $(OBJECTS)
@test -d ConsoleClient.app/Contents/MacOS/ || mkdir -p ConsoleClient.app/Contents/MacOS/
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: ConsoleClient.pro ../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang/qmake.conf ../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/qdevice.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/device_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/unix.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/macx.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/sanitize.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base-mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang-mac.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/qconfig.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bootstrap_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_clucene_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designercomponents_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_labstemplates_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_platformsupport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmldevtools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickparticles_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uiplugin.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_functions.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang/qmake.conf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exclusive_builds.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_pre.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resolve_config.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/sdk.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_post.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/objective_c.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qml_debug.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/warn_on.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resources.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/moc.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/opengl.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/uic.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/thread.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/rez.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/testcase_targets.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exceptions.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/yacc.prf \
../../Qt5.6.0/5.6/clang_64/mkspecs/features/lex.prf \
ConsoleClient.pro \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/QtWidgets.prl \
../../Qt5.6.0/5.6/clang_64/lib/QtGui.framework/QtGui.prl \
../../Qt5.6.0/5.6/clang_64/lib/QtCore.framework/QtCore.prl
$(QMAKE) -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug -o Makefile ConsoleClient.pro
../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_pre.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/qdevice.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/device_config.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/unix.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/mac.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/macx.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/sanitize.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/gcc-base-mac.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/common/clang-mac.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/qconfig.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcollision_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dcore_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dinput_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dlogic_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquick_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3dquickrender_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_3drender_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bluetooth_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_bootstrap_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_clucene_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_concurrent_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_core_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_dbus_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designer_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_designercomponents_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_enginio_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_gui_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_help_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_labstemplates_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_location_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_macextras_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimedia_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_network_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_nfc_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_opengl_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_openglextensions_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_platformsupport_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_positioning_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_printsupport_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qml_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmldevtools_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qmltest_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quick_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickparticles_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_quickwidgets_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_script_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_scripttools_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sensors_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_serialport_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_sql_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_svg_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_testlib_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uiplugin.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_uitools_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webchannel_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webengine_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginecore_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webenginewidgets_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_websockets_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_webview_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_widgets_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xml_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_functions.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt_config.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang/qmake.conf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/spec_post.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exclusive_builds.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_pre.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_pre.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resolve_config.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/default_post.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/sdk.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/default_post.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/objective_c.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qml_debug.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/warn_on.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/qt.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/resources.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/moc.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/opengl.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/uic.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/unix/thread.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/mac/rez.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/testcase_targets.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/exceptions.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/yacc.prf:
../../Qt5.6.0/5.6/clang_64/mkspecs/features/lex.prf:
ConsoleClient.pro:
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/QtWidgets.prl:
../../Qt5.6.0/5.6/clang_64/lib/QtGui.framework/QtGui.prl:
../../Qt5.6.0/5.6/clang_64/lib/QtCore.framework/QtCore.prl:
qmake: FORCE
@$(QMAKE) -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug -o Makefile ConsoleClient.pro
qmake_all: FORCE
ConsoleClient.app/Contents/PkgInfo:
@test -d ConsoleClient.app/Contents || mkdir -p ConsoleClient.app/Contents
@$(DEL_FILE) ConsoleClient.app/Contents/PkgInfo
@echo "APPL????" > ConsoleClient.app/Contents/PkgInfo
ConsoleClient.app/Contents/Resources/empty.lproj:
@test -d ConsoleClient.app/Contents/Resources || mkdir -p ConsoleClient.app/Contents/Resources
@touch ConsoleClient.app/Contents/Resources/empty.lproj
ConsoleClient.app/Contents/Info.plist:
@test -d ConsoleClient.app/Contents || mkdir -p ConsoleClient.app/Contents
@$(DEL_FILE) ConsoleClient.app/Contents/Info.plist
@sed -e "s,@SHORT_VERSION@,1.0,g" -e "s,@FULL_VERSION@,1.0.0,g" -e "s,@TYPEINFO@,????,g" -e "s,@BUNDLEIDENTIFIER@,com.careminster.ConsoleClient,g" -e "s,@ICON@,,g" -e "s,@EXECUTABLE@,ConsoleClient,g" -e "s,@LIBRARY@,ConsoleClient,g" -e "s,@TYPEINFO@,????,g" ../../Qt5.6.0/5.6/clang_64/mkspecs/macx-clang/Info.plist.app >ConsoleClient.app/Contents/Info.plist
all: Makefile \
ConsoleClient.app/Contents/PkgInfo \
ConsoleClient.app/Contents/Resources/empty.lproj \
ConsoleClient.app/Contents/Info.plist $(TARGET)
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) -r ConsoleClient.app
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
check: first
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_moc_header_make_all: moc_mainwindow.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp
moc_mainwindow.cpp: ../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/QMainWindow \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/qmainwindow.h \
mainwindow.h
/Users/melanie/Qt5.6.0/5.6/clang_64/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -I/Users/melanie/Qt5.6.0/5.6/clang_64/mkspecs/macx-clang -I/Users/melanie/yrgrid/ConsoleClient -I/Users/melanie/Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers -I/Users/melanie/Qt5.6.0/5.6/clang_64/lib/QtGui.framework/Headers -I/Users/melanie/Qt5.6.0/5.6/clang_64/lib/QtCore.framework/Headers -F/Users/melanie/Qt5.6.0/5.6/clang_64/lib mainwindow.h -o moc_mainwindow.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h
ui_mainwindow.h: mainwindow.ui
/Users/melanie/Qt5.6.0/5.6/clang_64/bin/uic mainwindow.ui -o ui_mainwindow.h
compiler_rez_source_make_all:
compiler_rez_source_clean:
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean compiler_uic_clean
####### Compile
main.o: main.cpp mainwindow.h \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/QMainWindow \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/qmainwindow.h \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/QApplication \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/qapplication.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/QMainWindow \
../../Qt5.6.0/5.6/clang_64/lib/QtWidgets.framework/Headers/qmainwindow.h \
ui_mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
####### Install
install: FORCE
uninstall: FORCE
FORCE:
+22
View File
@@ -0,0 +1,22 @@
<RCC>
<qresource prefix="/Icons">
<file>view-refresh.png</file>
<file>computer.png</file>
<file>folder.png</file>
<file>document-properties.png</file>
<file>edit-delete.png</file>
<file>network-transmit-receive.png</file>
<file>network-offline.png</file>
<file>document-new.png</file>
<file>edit-clear.png</file>
<file>edit-copy.png</file>
<file>edit-cut.png</file>
<file>edit-paste.png</file>
<file>system-log-out.png</file>
<file>tab-new.png</file>
<file>systemPreferences.png</file>
</qresource>
<qresource prefix="/fonts">
<file>Consolas.ttf</file>
</qresource>
</RCC>
+33
View File
@@ -0,0 +1,33 @@
#include "addconndialog.h"
#include "ui_addconndialog.h"
AddConnDialog::AddConnDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddConnDialog)
{
ui->setupUi(this);
Name = ui->Name;
Host = ui->Host;
Port = ui->Port;
User = ui->User;
Pass = ui->Pass;
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(OnOK()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(OnCancel()));
}
AddConnDialog::~AddConnDialog()
{
delete ui;
}
void AddConnDialog::OnOK()
{
done(0);
}
void AddConnDialog::OnCancel()
{
done(-1);
}
+35
View File
@@ -0,0 +1,35 @@
#ifndef ADDCONNDIALOG_H
#define ADDCONNDIALOG_H
#include <QDialog>
class QLineEdit;
class QSpinBox;
namespace Ui {
class AddConnDialog;
}
class AddConnDialog : public QDialog
{
Q_OBJECT
public:
explicit AddConnDialog(QWidget *parent = 0);
~AddConnDialog();
QLineEdit *Name;
QLineEdit *Host;
QSpinBox *Port;
QLineEdit *User;
QLineEdit *Pass;
public slots:
void OnCancel();
void OnOK();
private:
Ui::AddConnDialog *ui;
};
#endif // ADDCONNDIALOG_H
+179
View File
@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AddConnDialog</class>
<widget class="QDialog" name="AddConnDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>270</height>
</rect>
</property>
<property name="windowTitle">
<string>Edit connection</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>320</x>
<y>20</y>
<width>91</width>
<height>81</height>
</rect>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>161</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Connection Name</string>
</property>
</widget>
<widget class="QLineEdit" name="Name">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>291</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>New Connection</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>101</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Host Name</string>
</property>
</widget>
<widget class="QLineEdit" name="Host">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>291</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>localhost</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>77</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Port</string>
</property>
</widget>
<widget class="QSpinBox" name="Port">
<property name="geometry">
<rect>
<x>10</x>
<y>130</y>
<width>121</width>
<height>30</height>
</rect>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>9000</number>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>160</y>
<width>101</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>User Name</string>
</property>
</widget>
<widget class="QLineEdit" name="User">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>291</width>
<height>28</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>10</x>
<y>210</y>
<width>91</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Password</string>
</property>
</widget>
<widget class="QLineEdit" name="Pass">
<property name="geometry">
<rect>
<x>10</x>
<y>230</y>
<width>291</width>
<height>28</height>
</rect>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</widget>
<tabstops>
<tabstop>Name</tabstop>
<tabstop>Host</tabstop>
<tabstop>Port</tabstop>
<tabstop>User</tabstop>
<tabstop>Pass</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
+30
View File
@@ -0,0 +1,30 @@
#include "addgroupdialog.h"
#include "ui_addgroupdialog.h"
AddGroupDialog::AddGroupDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddGroupDialog)
{
ui->setupUi(this);
Name = ui->Name;
Dns = ui->Dns;
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(OnOK()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(OnCancel()));
}
AddGroupDialog::~AddGroupDialog()
{
delete ui;
}
void AddGroupDialog::OnOK()
{
done(0);
}
void AddGroupDialog::OnCancel()
{
done(-1);
}
+30
View File
@@ -0,0 +1,30 @@
#ifndef ADDGROUPDIALOG_H
#define ADDGROUPDIALOG_H
#include <QDialog>
class QLineEdit;
namespace Ui {
class AddGroupDialog;
}
class AddGroupDialog : public QDialog
{
Q_OBJECT
public:
explicit AddGroupDialog(QWidget *parent = 0);
~AddGroupDialog();
QLineEdit *Name;
QLineEdit *Dns;
protected slots:
void OnOK();
void OnCancel();
private:
Ui::AddGroupDialog *ui;
};
#endif // ADDGROUPDIALOG_H
+114
View File
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AddGroupDialog</class>
<widget class="QDialog" name="AddGroupDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>120</height>
</rect>
</property>
<property name="windowTitle">
<string>Edit group</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>290</x>
<y>20</y>
<width>81</width>
<height>81</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>13</x>
<y>65</y>
<width>74</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Nameserver</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>13</x>
<y>11</y>
<width>36</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Name</string>
</property>
</widget>
<widget class="QLineEdit" name="Name">
<property name="geometry">
<rect>
<x>10</x>
<y>26</y>
<width>269</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="Dns">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>269</width>
<height>21</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AddGroupDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AddGroupDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

+6
View File
@@ -0,0 +1,6 @@
#include "connectiondata.h"
ConnectionData::ConnectionData()
{
}
+23
View File
@@ -0,0 +1,23 @@
#ifndef CONNECTIONDATA_H
#define CONNECTIONDATA_H
#include <QString>
#include <QUuid>
class ConnectionData
{
public:
ConnectionData();
QUuid Uuid;
QString Name;
QUuid Group;
QString Host;
int Port;
QString User;
QString Pass;
};
#endif // CONNECTIONDATA_H
+892
View File
@@ -0,0 +1,892 @@
#include "connectionpane.h"
#include "ui_connectionpane.h"
#include <QUrl>
#include <QUrlQuery>
#include <QBuffer>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QMessageBox>
#include <QDomDocument>
#include <QDomElement>
#include <QDomNode>
#include <QDomNodeList>
#include <QDomAttr>
#include <QTextEdit>
#include <QLineEdit>
#include <QLabel>
#include <QVBoxLayout>
#include <QStringList>
#include <QRegExp>
#include <QList>
#include <QTimer>
#include <QDnsLookup>
#include <QEventLoop>
#include <QDebug>
#include <QFontDatabase>
#include <QSettings>
#include "connectiondata.h"
struct CommandData
{
public:
QString Module;
QString HelpText;
QString LongHelp;
QString Description;
ConnectionPane *instance;
void (*fn)(QString module, ConnectionPane *instance, QStringList args);
};
Q_DECLARE_METATYPE (CommandData)
ConnectionPane::ConnectionPane(ConnectionData *c, QHostAddress addr, QWidget *parent) :
QWidget(parent),
ui(new Ui::ConnectionPane)
{
ui->setupUi(this);
Name = c->Name;
Host = c->Host;
Port = c->Port;
User = c->User;
Pass = c->Pass;
loggedIn = false;
QDnsLookup lookup;
if (!addr.isNull())
{
lookup.setNameserver(addr);
QHostAddress dest(Host);
if (dest.isNull())
{
lookup.setName(Host);
lookup.setType(QDnsLookup::A);
QEventLoop loop;
connect(&lookup, SIGNAL(finished()), &loop, SLOT(quit()));
lookup.lookup();
loop.exec();
if (lookup.error() == QDnsLookup::NoError)
Host = lookup.hostAddressRecords().first().value().toString();
}
}
// Construct the URLs
urlStart.setScheme(QString("http"));
urlStart.setHost(Host);
urlStart.setPort(Port);
urlClose = urlStart;
urlCommand = urlStart;
urlPoll = urlStart;
urlStart.setPath(QString("/StartSession/"));
urlClose.setPath(QString("/CloseSession/"));
urlCommand.setPath(QString("/SessionCommand/"));
// Construct the manager
manager = new QNetworkAccessManager(this);
pollReply = 0;
loginReply = 0;
cmdReply = 0;
int id = QFontDatabase::addApplicationFont(":/fonts/Consolas.ttf");
QString family = QFontDatabase::applicationFontFamilies(id).at(0);
QSettings settings;
QString styleSheet;
if (!settings.value("system_font", false).toBool())
styleSheet += "font-family: " + family + ";";
if (settings.value("black_on_white", false).toBool())
styleSheet += "background-color: black; color: white;";
else
styleSheet += "background-color: #fcfcfc; color: black;";
styleSheet += "font-size: 18pt;";
ui->mainPane->setStyleSheet(styleSheet);
}
ConnectionPane::~ConnectionPane()
{
QNetworkAccessManager *m = manager;
manager = 0;
delete m;
delete ui;
}
void ConnectionPane::CommandReply()
{
QByteArray result = cmdReply->readAll();
cmdReply->deleteLater();
cmdReply = 0;
ui->textEntry->setText(QString(""));
TextChanged("");
}
void ConnectionPane::LoginReply()
{
QByteArray result = loginReply->readAll();
loginReply->deleteLater();
if (result.size() == 0)
{
ui->mainPane->setHtml("<font color=\"#7f7f7f\">Connecting ...<br></font><font color=\"#ff0000\">Error!</font>");
QMessageBox::critical(0, QString("Connection error"), QString("Connection to host failed"));
return;
}
QDomDocument doc;
doc.setContent(result, false);
QDomElement root = doc.documentElement();
// Get session ID
QDomNodeList sessionL = root.elementsByTagName(QString("SessionID"));
QDomNode sessionNode = sessionL.at(0);
sessionID = sessionNode.toElement().text();
urlPoll.setPath(QString("/ReadResponses/")+sessionID+QString("/"));
QDomNodeList helpL = root.elementsByTagName(QString("HelpTree"));
QDomNode helpNode = helpL.at(0);
ui->mainPane->setHtml(ui->mainPane->toHtml() + QString("<font color=\"#7f7f7f\">Connected</font>"));
tree.clear();
tree = ProcessTreeLevel(helpNode, tree);
QMap<QString, QVariant> nextLevel;
if (tree.contains("help"))
nextLevel = tree["help"].toMap();
CommandData cmd;
cmd.Module = "Local";
cmd.HelpText = "help [<command>]";
cmd.LongHelp = "Provide help for commands";
cmd.Description = "Provide help for commands";
cmd.instance = this;
cmd.fn = Help;
QVariant v;
v.setValue<CommandData>(cmd);
nextLevel[""] = v;
tree["help"] = nextLevel;
nextLevel.clear();
if (tree.contains("quit:"))
nextLevel = tree["quit"].toMap();
cmd.Module = "Local";
cmd.HelpText = "quit";
cmd.LongHelp = "Quit console session";
cmd.Description = "Quit console session";
cmd.instance = this;
cmd.fn = Quit;
v.setValue<CommandData>(cmd);
nextLevel[""] = v;
tree["quit"] = nextLevel;
// Construct the poll request
QString data = "";
QNetworkRequest request(urlPoll);
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
// Start poll
pollReply = manager->post(request, data.toLatin1());
connect(pollReply, SIGNAL(finished()), this, SLOT(PollReply()));
ui->textEntry->setFocus();
TextChanged(QString(""));
connect(ui->textEntry, SIGNAL(returnPressed()), this, SLOT(ReturnPressed()));
connect(ui->textEntry, SIGNAL(textChanged(QString)), this, SLOT(TextChanged(QString)));
loggedIn = true;
}
void ConnectionPane::PollReply()
{
if (manager == 0)
return;
QByteArray result = pollReply->readAll();
//qDebug() << QString(result);
pollReply->deleteLater();
QString fullText;
if (result.size() != 0)
{
QDomDocument doc;
doc.setContent(result, false);
QDomElement root = doc.documentElement();
QDomNodeList lineL = root.elementsByTagName(QString("Line"));
for (int i = 0 ; i < lineL.count() ; i++)
{
QDomElement e = lineL.at(i).toElement();
QString level;
bool prompt = false;
bool command = false;
bool input = false;
if (e.hasAttribute("Level"))
level = e.attributeNode("Level").value();
if (e.hasAttribute("Prompt"))
{
if (e.attributeNode("Prompt").value() == "true")
prompt = true;
}
if (e.hasAttribute("Command"))
{
if (e.attributeNode("Command").value() == "true")
command = true;
}
if (e.hasAttribute("Input"))
{
if (e.attributeNode("Input").value() == "true")
input = true;
}
QString line = e.text();
if (!input)
fullText += QString("<br>");
fullText += FormatLine(line.trimmed(), level).replace("\n", "<br>");
if (fullText.endsWith("<br>"))
fullText = fullText.mid(fullText.length() - 4);
if (prompt || command)
{
expectingInput = true;
if (command)
expectingCommand = true;
}
}
}
textContent += fullText;
if (textContent.length() > 131400)
textContent = textContent.right(131400);
ui->mainPane->setHtml(textContent);
ui->mainPane->moveCursor(QTextCursor::End);
ui->mainPane->ensureCursorVisible();
if (!loggedIn)
return;
TextChanged(ui->textEntry->text());
// Construct the poll request
QString data = "";
QNetworkRequest request(urlPoll);
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
// Poll again
pollReply = manager->post(request, data.toLatin1());
connect(pollReply, SIGNAL(finished()), this, SLOT(PollReply()));
}
void ConnectionPane::TextChanged(QString text)
{
if (!expectingInput)
ui->helpArea->hide();
else if (!expectingCommand)
ui->helpArea->hide();
else
ui->helpArea->show();
ui->mainPane->moveCursor(QTextCursor::End);
ui->mainPane->ensureCursorVisible();
QStringList words = Parse(text);
bool trailingSpace = text.right(1) == " ";
QStringList opts = FindNextOption(words, trailingSpace);
if (opts.size() == 0)
{
ui->helpArea->setText(QString(""));
}
else
{
QString first = opts.at(0);
if (first.indexOf(QString("Command help:")) == 0)
ui->helpArea->setText(first);
else if (text != "")
{
QString output;
output.sprintf("Options: %s", opts.join(" ").toLocal8Bit().data());
ui->helpArea->setText(output);
}
else
{
QString output;
output.sprintf("Commands: %s", opts.join(" ").toLocal8Bit().data());
ui->helpArea->setText(output);
}
}
}
void ConnectionPane::ReturnPressed()
{
// Construct the command
QString cmd = ui->textEntry->text();
if ((!expectingCommand) && expectingInput)
{
if (SendCommand(cmd))
{
ui->textEntry->setText(QString(""));
TextChanged(ui->textEntry->text());
}
}
QStringList resolved = Resolve(Parse(cmd));
QString historyEntry = resolved.join(" ");
}
void ConnectionPane::Login()
{
QUrlQuery queryString;
queryString.addQueryItem("USER", User);
queryString.addQueryItem("PASS", Pass);
// Construct the login request
QString data = queryString.query(QUrl::FullyEncoded).toUtf8();
QNetworkRequest request(urlStart);
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
// Log in
ui->mainPane->setHtml(ui->mainPane->toHtml() + QString("<font color=\"#7f7f7f\">Connecting ...</font>"));
loginReply = manager->post(request, data.toLatin1());
connect(loginReply, SIGNAL(finished()), this, SLOT(LoginReply()));
}
void ConnectionPane::CloseConnection()
{
close();
}
void ConnectionPane::ClearScrollback()
{
ui->mainPane->setHtml(QString(""));
}
void ConnectionPane::Copy()
{
ui->mainPane->copy();
}
void ConnectionPane::RestartServer()
{
if (!loggedIn)
return;
SendCommand("quit");
ui->mainPane->setHtml(ui->mainPane->toHtml() + QString("<font color=\"#7f7f7f\">Disconnected</font>"));
pollReply->abort();
loggedIn = false;
QTimer::singleShot(5000, this, SLOT(Login()));
}
bool ConnectionPane::IsLoggedIn()
{
return loggedIn;
}
QStringList ConnectionPane::CollectHelp(QStringList helpParts)
{
QString originalHelpRequest = helpParts.join(" ");
QStringList help;
QMap<QString, QVariant> dict = tree;
while (helpParts.size() > 0)
{
QString helpPart = helpParts.at(0);
if (!dict.contains(helpPart))
break;
QVariant val = dict[helpPart];
if (QString(val.typeName()) == QString("QVariantMap"))
{
dict = val.toMap();
}
helpParts.removeFirst();
}
if (dict.contains(QString("")))
{
QVariant v = dict[QString("")];
CommandData ci = v.value<CommandData>();
help.append(ci.HelpText);
help.append(ci.LongHelp);
// help.append(ci.Description);
}
else
{
help.append(QString("No help is available for ") + originalHelpRequest);
}
return help;}
QStringList ConnectionPane::Parse(QString text)
{
QStringList result;
int index = 0;
QStringList unquoted = text.split("\"");
for (index = 0 ; index < unquoted.size() ; index++)
{
if ((index % 2) == 0)
{
QStringList words = unquoted.at(index).split(" ");
for (int i = 0 ; i < words.size() ; i++)
{
QString w = words.at(i);
if (w != QString(""))
result.append(w);
}
}
else
{
result.append(unquoted.at(index));
}
}
return result;
}
QStringList ConnectionPane::Resolve(QStringList cmd)
{
QStringList result(cmd);
int index = -1;
QMap<QString, QVariant> current = tree;
for (int i = 0 ; i < cmd.size() ; i++)
{
QString s = cmd.at(i);
index++;
QStringList found;
for (QMap<QString, QVariant>::iterator it = current.begin() ; it != current.end() ; it++)
{
QString opt = it.key();
if (opt == s)
{
found.clear();
found.append(opt);
break;
}
if (opt.indexOf(s) == 0)
{
found.append(opt);
}
}
if (found.size() == 1)
{
result[index] = found.at(0);
current = current[found.at(0)].toMap();
}
else if (found.size() > 0)
{
QStringList blank;
return blank;
}
else
{
break;
}
}
if (current.contains(QString("")))
{
QVariant v = current[QString("")];
CommandData ci = v.value<CommandData>();
if (!ci.fn)
return QStringList();
(*ci.fn)(ci.Module, ci.instance, result);
return result;
}
return QStringList();
}
QStringList ConnectionPane::FindNextOption(QStringList cmd, bool term)
{
QMap<QString, QVariant> current = tree;
int remaining = cmd.size();
for (int i = 0 ; i < cmd.size() ; i++)
{
QString s = cmd.at(i);
remaining--;
QStringList found;
for (QMap<QString, QVariant>::iterator it = current.begin() ; it != current.end() ; it++)
{
QString opt = it.key();
if (remaining > 0 && opt == s)
{
found.clear();
found.append(opt);
break;
}
if (opt.indexOf(s) == 0)
{
found.append(opt);
}
}
if (found.size() == 1 && ((remaining != 0) || term))
{
current = current[found.at(0)].toMap();
}
else if (found.size() > 0)
{
return found;
}
else
{
break;
}
}
if (current.size() > 1)
{
QStringList choices;
bool addcr = false;
for (QMap<QString, QVariant>::iterator it = current.begin() ; it != current.end() ; it++)
{
QString s = it.key();
if (s == QString(""))
{
QVariant v = current[""];
CommandData ci = v.value<CommandData>();
if (ci.fn)
addcr = true;
}
else
choices.append(s);
}
if (addcr)
choices.append("<cr>");
return choices;
}
if (current.contains(QString("")))
{
QVariant v = current[""];
CommandData ci = v.value<CommandData>();
QStringList ch;
ch.append(QString("Command help: ") + ci.HelpText);
return ch;
}
QList<QString> kl = current.keys();
QStringList ksl(kl);
return ksl;
}
void ConnectionPane::Help(QString, ConnectionPane *instance, QStringList args)
{
instance->ui->mainPane->setHtml(instance->ui->mainPane->toHtml()+instance->OutputLine(QString("# ") + args.join(" "), "command"));
instance->ui->mainPane->moveCursor(QTextCursor::End);
instance->ui->mainPane->ensureCursorVisible();
QStringList help;
QStringList helpParts(args);
helpParts.removeFirst();
instance->ui->textEntry->setText(QString(""));
instance->ui->helpArea->setText(QString(""));
if (helpParts.size() == 0)
help = instance->CollectHelp(help, instance->tree);
else
help = help + instance->CollectHelp(helpParts);
for (int i = 0 ; i < help.size() ; i++)
{
instance->ui->mainPane->setHtml(instance->ui->mainPane->toHtml()+instance->OutputLine(help.at(i), "normal"));
}
instance->ui->mainPane->moveCursor(QTextCursor::End);
instance->ui->mainPane->ensureCursorVisible();
}
void ConnectionPane::Quit(QString, ConnectionPane *instance, QStringList)
{
instance->ui->mainPane->setHtml(instance->ui->mainPane->toHtml()+instance->OutputLine("# quit", "command"));
instance->ui->mainPane->setHtml(instance->ui->mainPane->toHtml()+instance->OutputLine("Use the toolbar button to close session", "error"));
instance->ui->mainPane->moveCursor(QTextCursor::End);
instance->ui->mainPane->ensureCursorVisible();
instance->ui->textEntry->setText(QString(""));
instance->ui->helpArea->setText(QString(""));
}
QStringList ConnectionPane::CollectHelp(QStringList help, QMap<QString, QVariant> level)
{
for (QMap<QString, QVariant>::iterator it = level.begin() ; it != level.end() ; it++)
{
QString key = it.key();
QVariant val = it.value();
if (QString(val.typeName()) == QString("QVariantMap"))
{
QMap<QString, QVariant> nextLevel = val.toMap();
help = CollectHelp(help, nextLevel);
}
else
{
CommandData cmd = val.value<CommandData>();
QString item = cmd.HelpText + QString(" - ") + cmd.LongHelp;
help.append(item);
}
}
return help;
}
void ConnectionPane::CommandHandler(QString, ConnectionPane *instance, QStringList args)
{
QString cmd = args.join(" ");
if(instance->SendCommand(cmd))
{
//instance->ui->mainPane->setHtml(instance->ui->mainPane->toHtml()+instance->OutputLine(QString("# ") + args.join(" "), "command"));
//instance->ui->mainPane->moveCursor(QTextCursor::End);
//instance->ui->mainPane->ensureCursorVisible();
//instance->ui->textEntry->setText(QString(""));
//instance->ui->helpArea->setText(QString(""));
}
}
QString ConnectionPane::FormatLine(QString line, QString level)
{
if (level == "")
return line;
QRegExp re(QString("^(.*)\\[(.*)\\](.*)$"));
QString ret;
if (re.exactMatch(line))
{
QString color = GetColor(re.cap(2));
ret = re.cap(1)+QString("[<font color=\"")+color+QString("\">")+re.cap(2)+QString("</font>]");
line = re.cap(3);
}
if (level == QString("error"))
{
ret += QString("<font color=\"#ff0000\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else if (level == QString("warn"))
{
ret += QString("<font color=\"#cfcf00\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else if (level == QString("command"))
{
ret += QString("<font color=\"#0000ff\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else
{
ret += QString(line.toHtmlEscaped());
}
return ret;
}
QString ConnectionPane::OutputLine(QString line, QString level)
{
QString ret;
if (level == QString("error"))
{
ret += QString("<font color=\"#ff0000\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else if (level == QString("warn"))
{
ret += QString("<font color=\"#cfcf00\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else if (level == QString("command"))
{
ret += QString("<font color=\"#0000ff\">") + QString(line.toHtmlEscaped()) + QString("</font>");
}
else
{
ret += QString(line.toHtmlEscaped());
}
return ret;
}
QString ConnectionPane::GetColor(QString text)
{
QList<QString> colors;
colors.append(QString("#7f7f7f"));
colors.append(QString("#0000ff"));
colors.append(QString("#00cf00"));
colors.append(QString("#00cfcf"));
colors.append(QString("#cf00cf"));
colors.append(QString("#cfcf00"));
return colors.at(qHash(text.toUpper()) % colors.size());
}
/*
void ConnectionPane::DumpTree(QMap<QString, QVariant> level)
{
QMap<QString, QVariant>::iterator it;
for (it = level.begin() ; it != level.end() ; it++)
{
QVariant val = it.value();
QString key = it.key();
if (QString(val.typeName()) == QString("QVariantMap"))
{
printf("Level: %s\n", key.toAscii().data());
QMap<QString, QVariant> nextLevel = val.toMap();
DumpTree(nextLevel);
}
else
{
CommandData cmd = val.value<CommandData>();
printf("%s\n", cmd.HelpText.toAscii().data());
}
}
}
*/
bool ConnectionPane::SendCommand(QString cmd)
{
if (cmdReply)
return false;
QUrlQuery queryString;
queryString.addQueryItem("ID", sessionID);
queryString.addQueryItem("COMMAND", cmd);
QString data = queryString.query(QUrl::FullyEncoded).toUtf8();
QNetworkRequest request(urlCommand);
// Send it
cmdReply = manager->post(request, data.toLatin1());
connect(cmdReply, SIGNAL(finished()), this, SLOT(CommandReply()));
return true;
}
QMap<QString, QVariant> ConnectionPane::ProcessTreeLevel(QDomNode node, QMap<QString, QVariant> level)
{
QDomNodeList levelL = node.childNodes();
for (int i = 0 ; i < levelL.count() ; i++)
{
QDomNode n = levelL.at(i);
if (n.isElement())
{
QDomElement e = n.toElement();
if (e.tagName() == QString("Level"))
{
QDomNode a = e.attributeNode(QString("Name"));
QDomAttr att = a.toAttr();
QString name = att.value();
QMap<QString, QVariant> nextLevel;
level[name] = ProcessTreeLevel(n, nextLevel);
}
else if (e.tagName() == QString("Command"))
{
CommandData cmd;
QDomNodeList cmdL = n.childNodes();
for (int j = 0 ; j < cmdL.count() ; j++)
{
QDomNode cmdN = cmdL.at(j);
QDomElement cmdE = cmdN.toElement();
if (cmdE.tagName() == QString("Module"))
cmd.Module = cmdE.text();
else if(cmdE.tagName() == QString("HelpText"))
cmd.HelpText = cmdE.text();
else if(cmdE.tagName() == QString("LongHelp"))
cmd.LongHelp = cmdE.text();
else if(cmdE.tagName() == QString("Description"))
cmd.Description = cmdE.text();
}
cmd.fn = CommandHandler;
cmd.instance = this;
level[QString("")].setValue(cmd);
}
}
}
return level;
}
+79
View File
@@ -0,0 +1,79 @@
#ifndef CONNECTIONPANE_H
#define CONNECTIONPANE_H
#include <QWidget>
#include <QMap>
#include <QUrl>
#include <QVariant>
#include <QDomNode>
#include <QHostAddress>
class QNetworkAccessManager;
class QNetworkReply;
class ConnectionData;
namespace Ui {
class ConnectionPane;
}
class ConnectionPane : public QWidget
{
Q_OBJECT
public:
explicit ConnectionPane(ConnectionData *c, QHostAddress addr, QWidget *parent = 0);
~ConnectionPane();
public slots:
void CommandReply();
void LoginReply();
void PollReply();
void TextChanged(QString text);
void ReturnPressed();
void Login();
public:
void CloseConnection();
void ClearScrollback();
void Copy();
void RestartServer();
bool IsLoggedIn();
protected:
QStringList CollectHelp(QStringList helpParts);
QStringList Parse(QString text);
QStringList Resolve(QStringList cmd);
QStringList FindNextOption(QStringList cmd, bool term);
static void Help(QString module, ConnectionPane *instance, QStringList args);
static void Quit(QString module, ConnectionPane *instance, QStringList args);
QStringList CollectHelp(QStringList help, QMap<QString, QVariant> level);
static void CommandHandler(QString module, ConnectionPane *instance, QStringList args);
QString FormatLine(QString line, QString level);
QString OutputLine(QString line, QString level);
QString GetColor(QString text);
//void DumpTree(QMap<QString, QVariant> level);
bool SendCommand(QString cmd);
QMap<QString, QVariant> ProcessTreeLevel(QDomNode node, QMap<QString, QVariant> level);
QString Name;
QString Host;
int Port;
QString User;
QString Pass;
QUrl urlStart;
QUrl urlClose;
QUrl urlCommand;
QUrl urlPoll;
QString sessionID;
QNetworkAccessManager *manager;
QMap<QString, QVariant> tree;
QNetworkReply *loginReply;
QNetworkReply *pollReply;
QNetworkReply *cmdReply;
bool loggedIn;
QString textContent;
bool expectingInput;
bool expectingCommand;
private:
Ui::ConnectionPane *ui;
};
#endif // CONNECTIONPANE_H
+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConnectionPane</class>
<widget class="QWidget" name="ConnectionPane">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>5</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTextEdit" name="mainPane">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="helpArea">
<property name="styleSheet">
<string notr="true">background-color: white; padding: 2px;</string>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="textEntry"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

+6
View File
@@ -0,0 +1,6 @@
#include "groupdata.h"
GroupData::GroupData()
{
}
+18
View File
@@ -0,0 +1,18 @@
#ifndef GROUPDATA_H
#define GROUPDATA_H
#include <QUuid>
#include <QString>
#include <QHostAddress>
class GroupData
{
public:
GroupData();
QUuid Uuid;
QString Name;
QHostAddress Dns;
};
#endif // GROUPDATA_H
+12
View File
@@ -0,0 +1,12 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
return a.exec();
}
+767
View File
@@ -0,0 +1,767 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "connectiondata.h"
#include "groupdata.h"
#include "connectionpane.h"
#include <QSettings>
#include <QMessageBox>
#include <QLineEdit>
#include <QSpinBox>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QTreeWidgetItemIterator>
#include <QDebug>
#include <QDnsLookup>
#include "addconndialog.h"
#include "addgroupdialog.h"
#include "preferencesdialog.h"
#include "ui_preferencesdialog.h"
enum ItemType
{
GroupItem = QTreeWidgetItem::UserType,
ConnectionItem = QTreeWidgetItem::UserType + 1
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->connList->setColumnCount(1);
ui->connList->setHeaderLabel("Connections");
ui->connList->setHeaderHidden(true);
ui->connList->sortByColumn(0, Qt::AscendingOrder);
ui->connList->setContextMenuPolicy(Qt::CustomContextMenu);
connect (ui->consolePane, SIGNAL(tabCloseRequested(int)), this, SLOT(CloseTab(int)));
connect (ui->connList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ConnContext(const QPoint &)));
connect(ui->connList, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(ConnectionDoubleClicked(QTreeWidgetItem *, int)));
connect(ui->connList, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(treeWidgetItemChanged(QTreeWidgetItem*,int)));
QCoreApplication::setOrganizationName("OpenSimulator");
QCoreApplication::setApplicationName("OpenSim Console Client");
QSettings settings;
ui->connList->blockSignals(true);
restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
restoreState(settings.value("mainWindowState").toByteArray());
blackOnWhite = settings.value("black_on_white", QVariant(true)).toBool();
systemFont = settings.value("system_font", QVariant(false)).toBool();
if (settings.value("split").isValid())
ui->splitter->restoreState(settings.value("split").toByteArray());
int groupCount = settings.beginReadArray(QString("Groups"));
for (int i = 0 ; i < groupCount ; i++)
{
settings.setArrayIndex(i);
GroupData *grp = new GroupData();
grp->Name = settings.value("Name").toString();
grp->Uuid = settings.value("Uuid").toUuid();
QVariant dnsAddress = settings.value("Dns");
if (dnsAddress.isValid())
grp->Dns = QHostAddress(dnsAddress.toString());
groups[grp->Uuid] = grp;
insertGroup(grp);
QTreeWidgetItem *grpItem = findItem(grp->Uuid);
if (settings.value("Expanded").toBool())
grpItem->setExpanded(true);
}
settings.endArray();
int connCount = settings.beginReadArray(QString("Connections"));
for (int i = 0 ; i < connCount ; i++)
{
settings.setArrayIndex(i);
ConnectionData *c = new ConnectionData;
c->Name = settings.value("Name").toString();
c->Host = settings.value("Host").toString();
c->Port = settings.value("Port").toInt();
c->User = settings.value("User").toString();
c->Pass = settings.value("Pass").toString();
c->Uuid = settings.value("Uuid").toUuid();
connections[c->Uuid] = c;
QTreeWidgetItem *connItem;
QUuid parent = settings.value("Parent").toUuid();
if (!parent.isNull())
{
QTreeWidgetItem *parentItem = findItem(parent);
if (parentItem == 0)
continue;
connItem = new QTreeWidgetItem(parentItem, QStringList(QString(c->Name)), ConnectionItem);
}
else
{
connItem = new QTreeWidgetItem(ui->connList, QStringList(QString(c->Name)), ConnectionItem);
}
connItem->setIcon(0, QIcon(":/Icons/computer.png"));
connItem->setData(0, Qt::UserRole, c->Uuid);
}
settings.endArray();
ui->connList->blockSignals(false);
ui->connList->sortItems(0, Qt::AscendingOrder);
}
MainWindow::~MainWindow()
{
WriteSettings();
// No need to free anything as the OS does it for us
delete ui;
}
void MainWindow::on_action_Exit_triggered()
{
close();
}
void MainWindow::on_action_Connect_triggered()
{
QTreeWidgetItem *item = selectedItem();
if (!item)
return;
if (item->type() == GroupItem) // Group
{
QUuid groupUuid = item->data(0, Qt::UserRole).toUuid();
if (!groups.contains(groupUuid))
return;
for (int i = 0 ; i < item->childCount() ; i ++)
{
QTreeWidgetItem *it = item->child(i);
QUuid uuid = it->data(0, Qt::UserRole).toUuid();
if (!connections.contains(uuid))
continue;
AddNewTab(groups[groupUuid], connections[uuid], groups[groupUuid]->Dns);
}
return;
}
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (!connections.contains(uuid))
return;
ConnectionData *c = connections[uuid];
QHostAddress dns;
if (item->parent() != 0)
{
QTreeWidgetItem *parentItem = item->parent();
QUuid parentUuid = parentItem->data(0, Qt::UserRole).toUuid();
if (groups.contains(parentUuid))
dns = groups[parentUuid]->Dns;
}
AddNewTab(0, c, dns);
}
void MainWindow::on_action_Disconnect_triggered()
{
ConnectionPane *cw = GetCurrentTab();
if (!cw)
return;
cw->CloseConnection();
QTabWidget *p = (QTabWidget *)cw->parent()->parent();
QWidget *pp = (QWidget *)p->parent()->parent();
if (pp && pp->inherits("QTabWidget") && p->count() == 1)
{
delete cw;
delete p;
}
else
{
delete cw;
}
}
void MainWindow::on_action_Edit_triggered()
{
QTreeWidgetItem *item = selectedItem();
if (item == 0)
return;
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (connections.contains(uuid))
{
ConnectionData *c = connections[uuid];
AddConnDialog dlg(this);
dlg.Name->setEnabled(false);
dlg.Name->setText(c->Name);
dlg.Host->setText(c->Host);
dlg.Port->setValue(c->Port);
dlg.User->setText(c->User);
dlg.Pass->setText(c->Pass);
if (dlg.exec() < 0)
return;
c->Host = dlg.Host->text();
c->Port = dlg.Port->value();
c->User = dlg.User->text();
c->Pass = dlg.Pass->text();
}
if (groups.contains(uuid))
{
GroupData *g = groups[uuid];
AddGroupDialog dlg(this);
dlg.Name->setEnabled(false);
dlg.Name->setText(g->Name);
dlg.Dns->setText(g->Dns.toString());
if (dlg.exec() < 0)
return;
if (dlg.Dns->text() != "")
g->Dns = QHostAddress(dlg.Dns->text());
else
g->Dns = QHostAddress();
}
WriteSettings();
}
void MainWindow::on_action_Restart_triggered()
{
ConnectionPane *c = GetCurrentTab();
if (!c)
return;
c->RestartServer();
}
void MainWindow::on_action_Clear_text_triggered()
{
ConnectionPane *cw = GetCurrentTab();
if (!cw)
return;
cw->ClearScrollback();
}
// Recursively find a tab with a given UUID. This returns
// both sub-tab widgets and actual connection panes.
QWidget *MainWindow::findTab(QTabWidget *parent, QUuid uuid)
{
int count = parent->count();
for (int i = 0 ; i < count ; i++)
{
QWidget *w = parent->widget(i);
QVariant u = w->property("UUID");
if (!u.isValid())
continue;
if (u.toUuid() == uuid)
{
return w;
}
if (w->inherits("QTabWidget"))
{
w = findTab((QTabWidget *)w, uuid);
if (w != 0)
return w;
}
}
return 0;
}
void MainWindow::AddNewTab(GroupData *grp, ConnectionData *conn, QHostAddress addr)
{
// Assume that it's a root pane
QTabWidget *parent = ui->consolePane;
// See if there is a connection present and open. If there is one,
// just refuse to add another. If it's not connected, close the old
// pane and another will be created later.
QWidget *w = findTab(ui->consolePane, conn->Uuid);
if (w != 0 && w->inherits("ConnectionPane"))
{
ConnectionPane *c = (ConnectionPane *)w;
if (c->IsLoggedIn())
return;
delete c;
}
// If this is a group pane being opened, see if there is already
// a multipane for this group. If not, create it.
if (grp != 0)
{
w = findTab(ui->consolePane, grp->Uuid);
if (w == 0 || (!w->inherits("QTabWidget")))
{
parent = new QTabWidget(ui->consolePane);
parent->setTabPosition(QTabWidget::North);
parent->setTabShape(QTabWidget::Triangular);
parent->setProperty("UUID", QVariant(grp->Uuid));
ui->consolePane->addTab(parent, grp->Name);
ui->consolePane->setCurrentWidget(parent);
}
else if (w->inherits("QTabWidget"))
{
parent = (QTabWidget *)w;
}
}
ConnectionPane *tabContents = new ConnectionPane(conn, addr, parent);
tabContents->setVisible(true);
tabContents->setProperty("UUID", conn->Uuid);
parent->addTab(tabContents, conn->Name);
parent->setCurrentWidget(tabContents);
tabContents->Login();
}
void MainWindow::WriteSettings()
{
QSettings settings;
settings.clear();
settings.setValue("mainWindowGeometry", saveGeometry());
settings.setValue("mainWindowState", saveState());
settings.setValue("split", ui->splitter->saveState());
settings.setValue("black_on_white", blackOnWhite);
settings.setValue("system_font", systemFont);
settings.beginWriteArray(QString("Groups"), groups.count());
int idx = 0;
for (QMap<QUuid, GroupData *>::iterator it = groups.begin() ; it != groups.end() ; it++, idx++)
{
QTreeWidgetItem *grpItem = findItem((*it)->Uuid);
if (grpItem == 0)
continue;
settings.setArrayIndex(idx);
settings.setValue("Uuid", QVariant((*it)->Uuid));
settings.setValue("Name", QVariant((*it)->Name));
if (!(*it)->Dns.isNull())
settings.setValue("Dns", (*it)->Dns.toString());
settings.setValue("Expanded", QVariant(grpItem->isExpanded()));
}
settings.endArray();
settings.beginWriteArray(QString("Connections"), connections.count());
idx = 0;
for (QMap<QUuid, ConnectionData *>::iterator it = connections.begin() ; it != connections.end() ; it++, idx++)
{
QUuid parent;
if (!(*it)->Uuid.isNull())
{
QTreeWidgetItem *item = findItem((*it)->Uuid);
if (item == 0)
continue;
if (item->parent() != 0)
parent = item->parent()->data(0, Qt::UserRole).toUuid();
}
settings.setArrayIndex(idx);
settings.setValue("Uuid", QVariant((*it)->Uuid));
settings.setValue("Name", QVariant((*it)->Name));
settings.setValue("Host", QVariant((*it)->Host));
settings.setValue("Port", QVariant((*it)->Port));
settings.setValue("User", QVariant((*it)->User));
settings.setValue("Pass", QVariant((*it)->Pass));
settings.setValue("Parent", (QVariant(parent)));
}
settings.endArray();
}
void MainWindow::ConnectionDoubleClicked(QTreeWidgetItem *, int)
{
ui->action_Connect->trigger();
}
ConnectionPane * MainWindow::GetCurrentTab()
{
if (ui->consolePane->count() == 0)
return 0;
if (ui->consolePane->count() == 1 && ui->consolePane->tabText(0) == "Not connected")
return 0;
QWidget *w = ui->consolePane->currentWidget();
if (w->inherits("QTabWidget")) // Sub tabs
{
if (((QTabWidget *)w)->count() == 0)
return 0;
w = ((QTabWidget *)w)->currentWidget();
}
ConnectionPane *cw = dynamic_cast<ConnectionPane *>(w);
return cw;
}
void MainWindow::ConnContext(const QPoint &pos)
{
QTreeWidgetItem *item = ui->connList->itemAt(pos);
ui->connList->clearSelection();
if (item)
item->setSelected(true);
QMenu ctx("Connection actions", this);
if (item != 0)
{
if (item->type() == GroupItem)
{
if (item->childCount() > 0)
{
connect (ctx.addAction("Connect Group"), SIGNAL(triggered()), ui->action_Connect, SLOT(trigger()));
ctx.addSeparator();
}
}
else
{
connect (ctx.addAction("Connect"), SIGNAL(triggered()), ui->action_Connect, SLOT(trigger()));
ctx.addSeparator();
}
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), ui->action_New, SLOT(trigger()));
}
else
{
connect (ctx.addAction("Add ..."), SIGNAL(triggered()), this, SLOT(addRootConnection()));
}
if (item != 0)
connect (ctx.addAction("Edit ..."), SIGNAL(triggered()), ui->action_Edit, SLOT(trigger()));
if (item != 0 && item->type() != GroupItem)
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete, SLOT(trigger()));
else if (item != 0 && item->childCount() == 0)
connect (ctx.addAction("Delete"), SIGNAL(triggered()), ui->actionDelete_group, SLOT(trigger()));
ctx.addSeparator();
connect (ctx.addAction("Add Group..."), SIGNAL(triggered()), ui->actionNew_group, SLOT(trigger()));
ctx.exec(ui->connList->mapToGlobal(pos));
}
void MainWindow::CloseTab(int index)
{
QWidget *w = ui->consolePane->widget(index);
if (w->inherits("QTabWidget"))
{
QTabWidget *tabs = (QTabWidget *)w;
while (tabs->count())
{
ConnectionPane *c = (ConnectionPane *)tabs->widget(0);
c->CloseConnection();
delete c;
}
delete w;
}
else
{
if (w->inherits("ConnectionPane"))
{
ConnectionPane *c = (ConnectionPane *)w;
c->CloseConnection();
}
delete w;
}
}
void MainWindow::on_actionCopy_triggered()
{
ConnectionPane *cw = GetCurrentTab();
if (!cw)
return;
cw->Copy();
}
// Helper to get the selected item from the list.
QTreeWidgetItem *MainWindow::selectedItem()
{
QList<QTreeWidgetItem *> items = ui->connList->selectedItems();
if (items.count() != 1)
return 0;
return items.at(0);
}
// User requests a new group to be created.
void MainWindow::on_actionNew_group_triggered()
{
GroupData *grp= createGroup();
QTreeWidgetItem *item = insertGroup(grp);
ui->connList->editItem(item, 0);
}
// Insert a group into the tree view
QTreeWidgetItem *MainWindow::insertGroup(GroupData *grp)
{
QTreeWidgetItem *item = new QTreeWidgetItem(ui->connList, QStringList(grp->Name), GroupItem);
item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setData(0, Qt::UserRole, grp->Uuid);
item->setIcon(0, QIcon(":/Icons/folder.png"));
ui->connList->sortItems(0, Qt::AscendingOrder);
return item;
}
// Create a new group record and insert it into the groups list.
// Doesn't show or edit it.
GroupData *MainWindow::createGroup()
{
GroupData *grp = new GroupData();
grp->Uuid = QUuid::createUuid();
grp->Name = "New group";
groups[grp->Uuid] = grp;
return grp;
}
// Find any item in the list. Works for both groups and connections.
QTreeWidgetItem *MainWindow::findItem(QUuid uuid)
{
QTreeWidgetItemIterator it(ui->connList);
while (*it)
{
if ((*it)->data(0, Qt::UserRole).toUuid() == uuid)
return (*it);
it++;
}
return 0;
}
// Delete a group from the list
void MainWindow::on_actionDelete_group_triggered()
{
QTreeWidgetItem *item = selectedItem();
if (item == 0)
return;
if (item->childCount() > 0 || item->type() != GroupItem)
return;
if (QMessageBox::question(0, QString("Delete group"),
QString("Really delete this group?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::Yes) != QMessageBox::Yes)
return;
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (groups.contains(uuid))
{
GroupData *grp = groups[uuid];
groups.remove(uuid);
delete grp;
}
delete item;
WriteSettings();
}
void MainWindow::on_action_New_triggered()
{
QList<QTreeWidgetItem *>items = ui->connList->selectedItems();
if (items.count() == 0)
addRootConnection();
else
addChildConnection();
WriteSettings();
}
ConnectionData *MainWindow::createConnection()
{
AddConnDialog dlg(this);
if (dlg.exec() < 0)
return 0;
ConnectionData *c = new ConnectionData;
c->Name = dlg.Name->text();
c->Host = dlg.Host->text();
c->Port = dlg.Port->value();
c->User = dlg.User->text();
c->Pass = dlg.Pass->text();
c->Uuid = QUuid::createUuid();
connections[c->Uuid.toString()] = c;
return c;
}
void MainWindow::addRootConnection()
{
ConnectionData *c = createConnection();
if (c == 0)
return;
QTreeWidgetItem *item = addItem(ui->connList, c);
if (!item)
connections.remove(c->Uuid);
}
void MainWindow::addChildConnection()
{
QTreeWidgetItem *parent = selectedItem();
if (parent == 0)
return;
ConnectionData *c = createConnection();
if (c == 0)
return;
QTreeWidgetItem *item = addItem(parent, c);
if (!item)
connections.remove(c->Uuid);
}
void MainWindow::setupItem(QTreeWidgetItem *item, ConnectionData *c)
{
item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setData(0, Qt::UserRole, c->Uuid);
item->setIcon(0, QIcon(":/Icons/computer.png"));
ui->connList->clearSelection();
item->setSelected(true);
}
QTreeWidgetItem *MainWindow::addItem(QTreeWidget *v, ConnectionData *c)
{
QTreeWidgetItem *item = new QTreeWidgetItem(v, QStringList(QString(c->Name)), ConnectionItem);
ui->connList->sortItems(0, Qt::AscendingOrder);
setupItem(item, c);
return item;
}
QTreeWidgetItem *MainWindow::addItem(QTreeWidgetItem *i, ConnectionData *c)
{
i->setExpanded(true);
QTreeWidgetItem *item = new QTreeWidgetItem(i, QStringList(QString(c->Name)), ConnectionItem);
ui->connList->sortItems(0, Qt::AscendingOrder);
setupItem(item, c);
return item;
}
void MainWindow::on_actionDelete_triggered()
{
QTreeWidgetItem *item = selectedItem();
if (item == 0 || item->type() != ConnectionItem)
return;
QUuid id = item->data(0, Qt::UserRole).toUuid();
if (QMessageBox::question(0, QString("Delete connection"),
QString("Really delete this connection?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::Yes) != QMessageBox::Yes)
return;
if (connections.contains(id))
{
ConnectionData *c = connections[id];
connections.remove(c->Uuid);
delete c;
}
delete item;
WriteSettings();
}
void MainWindow::treeWidgetItemChanged(QTreeWidgetItem *item, int)
{
QUuid uuid = item->data(0, Qt::UserRole).toUuid();
if (groups.contains(uuid))
groups[uuid]->Name = item->text(0);
if (connections.contains(uuid))
connections[uuid]->Name = item->text(0);
WriteSettings();
}
void MainWindow::on_action_Preferences_triggered()
{
PreferencesDialog dlg;
dlg.ui->blackOnWhite->setChecked(blackOnWhite);
dlg.ui->useSystemFonts->setChecked(systemFont);
if (dlg.exec() < 0)
return;
blackOnWhite = dlg.ui->blackOnWhite->isChecked();
systemFont = dlg.ui->useSystemFonts->isChecked();
WriteSettings();
}
+86
View File
@@ -0,0 +1,86 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QString>
#include <QMap>
#include <QUuid>
#include <QHostAddress>
class ConnectionPane;
class QTreeWidget;
class QTreeWidgetItem;
class ConnectionData;
class GroupData;
class QSettings;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
ConnectionPane * GetCurrentTab();
void WriteSettings();
private slots:
void on_action_Exit_triggered();
void on_action_Connect_triggered();
void on_action_New_triggered();
void on_actionDelete_group_triggered();
void on_action_Disconnect_triggered();
void on_action_Edit_triggered();
void on_actionDelete_triggered();
void on_action_Restart_triggered();
void on_action_Clear_text_triggered();
void CloseTab(int index);
void ConnContext(const QPoint &);
void ConnectionDoubleClicked(QTreeWidgetItem * item, int column = 0);
void on_actionCopy_triggered();
void on_actionNew_group_triggered();
void on_action_Preferences_triggered();
public:
protected:
QMap<QUuid, ConnectionData *> connections;
QMap<QUuid, GroupData *> groups;
ConnectionData *createConnection();
QTreeWidgetItem *addItem(QTreeWidget *v, ConnectionData *c);
QTreeWidgetItem *addItem(QTreeWidgetItem *i, ConnectionData *c);
void setupItem(QTreeWidgetItem *item, ConnectionData *c);
GroupData *createGroup();
QTreeWidgetItem *insertGroup(GroupData *grp);
QTreeWidgetItem *findItem(QUuid uuid);
QTreeWidgetItem *selectedItem();
QWidget *findTab(QTabWidget *parent, QUuid uuid);
void AddNewTab(GroupData *grp, ConnectionData *conn, QHostAddress addr);
bool blackOnWhite;
bool systemFont;
protected slots:
void addRootConnection();
void addChildConnection();
void treeWidgetItemChanged(QTreeWidgetItem *item, int column);
private:
QTreeWidgetItem *findOrAddGroup(QString groupName);
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
+270
View File
@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1107</width>
<height>885</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QTabWidget" name="consolePane">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
<property name="usesScrollButtons">
<bool>true</bool>
</property>
<property name="tabsClosable">
<bool>true</bool>
</property>
<property name="movable">
<bool>true</bool>
</property>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Connections</string>
</property>
</widget>
</item>
<item>
<widget class="QTreeWidget" name="connList">
<property name="editTriggers">
<set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectItems</enum>
</property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1107</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menu_File">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="action_Exit"/>
</widget>
<widget class="QMenu" name="menu_Connection">
<property name="title">
<string>&amp;Connection</string>
</property>
<addaction name="action_Connect"/>
<addaction name="action_Disconnect"/>
<addaction name="separator"/>
<addaction name="action_New"/>
<addaction name="actionNew_in_group"/>
<addaction name="action_Edit"/>
<addaction name="actionDelete"/>
<addaction name="separator"/>
<addaction name="actionNew_group"/>
<addaction name="actionDelete_group"/>
</widget>
<widget class="QMenu" name="menu_Server">
<property name="title">
<string>&amp;Server</string>
</property>
<addaction name="action_Clear_text"/>
<addaction name="separator"/>
<addaction name="action_Restart"/>
</widget>
<widget class="QMenu" name="menu_Edit">
<property name="title">
<string>&amp;Edit</string>
</property>
<addaction name="actionCopy"/>
</widget>
<widget class="QMenu" name="menu_Tools">
<property name="title">
<string>&amp;Tools</string>
</property>
<addaction name="action_Preferences"/>
</widget>
<addaction name="menu_File"/>
<addaction name="menu_Edit"/>
<addaction name="menu_Connection"/>
<addaction name="menu_Server"/>
<addaction name="menu_Tools"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="action_Connect"/>
<addaction name="action_Disconnect"/>
<addaction name="separator"/>
<addaction name="action_New"/>
<addaction name="action_Edit"/>
<addaction name="actionDelete"/>
<addaction name="separator"/>
<addaction name="action_Restart"/>
<addaction name="action_Clear_text"/>
<addaction name="separator"/>
<addaction name="action_Preferences"/>
</widget>
<action name="action_Exit">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/system-log-out.png</normaloff>:/Icons/system-log-out.png</iconset>
</property>
<property name="text">
<string>&amp;Exit</string>
</property>
</action>
<action name="action_Connect">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/network-transmit-receive.png</normaloff>:/Icons/network-transmit-receive.png</iconset>
</property>
<property name="text">
<string>&amp;Connect</string>
</property>
</action>
<action name="action_Disconnect">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/network-offline.png</normaloff>:/Icons/network-offline.png</iconset>
</property>
<property name="text">
<string>&amp;Disconnect</string>
</property>
</action>
<action name="action_New">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/document-new.png</normaloff>:/Icons/document-new.png</iconset>
</property>
<property name="text">
<string>&amp;New...</string>
</property>
</action>
<action name="action_Edit">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/document-properties.png</normaloff>:/Icons/document-properties.png</iconset>
</property>
<property name="text">
<string>&amp;Edit...</string>
</property>
</action>
<action name="actionDelete">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/edit-delete.png</normaloff>:/Icons/edit-delete.png</iconset>
</property>
<property name="text">
<string>Delete</string>
</property>
</action>
<action name="actionNew_group">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/folder.png</normaloff>:/Icons/folder.png</iconset>
</property>
<property name="text">
<string>Add &amp;group ...</string>
</property>
</action>
<action name="actionDelete_group">
<property name="text">
<string>Delete group</string>
</property>
</action>
<action name="action_Restart">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/view-refresh.png</normaloff>:/Icons/view-refresh.png</iconset>
</property>
<property name="text">
<string>&amp;Restart</string>
</property>
</action>
<action name="action_Clear_text">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/edit-clear.png</normaloff>:/Icons/edit-clear.png</iconset>
</property>
<property name="text">
<string>&amp;Clear text</string>
</property>
</action>
<action name="actionCopy">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/edit-copy.png</normaloff>:/Icons/edit-copy.png</iconset>
</property>
<property name="text">
<string>Copy</string>
</property>
</action>
<action name="actionNew_in_group">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/document-new.png</normaloff>:/Icons/document-new.png</iconset>
</property>
<property name="text">
<string>New in group...</string>
</property>
</action>
<action name="action_Preferences">
<property name="icon">
<iconset resource="Resources.qrc">
<normaloff>:/Icons/systemPreferences.png</normaloff>:/Icons/systemPreferences.png</iconset>
</property>
<property name="text">
<string>&amp;Preferences</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="Resources.qrc"/>
</resources>
<connections/>
</ui>
Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

+37
View File
@@ -0,0 +1,37 @@
#include "preferencesdialog.h"
#include "ui_preferencesdialog.h"
PreferencesDialog::PreferencesDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::PreferencesDialog)
{
ui->setupUi(this);
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(OnOK()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(OnCancel()));
}
PreferencesDialog::~PreferencesDialog()
{
delete ui;
}
void PreferencesDialog::on_blackOnWhite_toggled(bool)
{
emit changed();
}
void PreferencesDialog::on_useSystemFonts_toggled(bool)
{
emit changed();
}
void PreferencesDialog::OnOK()
{
done(0);
}
void PreferencesDialog::OnCancel()
{
done(-1);
}
+33
View File
@@ -0,0 +1,33 @@
#ifndef PREFERENCESDIALOG_H
#define PREFERENCESDIALOG_H
#include <QDialog>
namespace Ui {
class PreferencesDialog;
}
class PreferencesDialog : public QDialog
{
Q_OBJECT
public:
explicit PreferencesDialog(QWidget *parent = 0);
~PreferencesDialog();
private slots:
void on_blackOnWhite_toggled(bool checked);
void on_useSystemFonts_toggled(bool checked);
public:
Ui::PreferencesDialog *ui;
signals:
void changed();
protected slots:
void OnOK();
void OnCancel();
};
#endif // PREFERENCESDIALOG_H
+110
View File
@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PreferencesDialog</class>
<widget class="QDialog" name="PreferencesDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>380</width>
<height>245</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Terminal</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>-1</number>
</property>
<item>
<widget class="QCheckBox" name="blackOnWhite">
<property name="text">
<string>Black on white</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="useSystemFonts">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Use system font</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>PreferencesDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>PreferencesDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB