Initial commit
@@ -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
|
||||
@@ -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>
|
||||
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>
|
||||
|
After Width: | Height: | Size: 725 B |
@@ -0,0 +1,6 @@
|
||||
#include "connectiondata.h"
|
||||
|
||||
ConnectionData::ConnectionData()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>
|
||||
|
After Width: | Height: | Size: 692 B |
|
After Width: | Height: | Size: 688 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 725 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 773 B |
|
After Width: | Height: | Size: 581 B |
@@ -0,0 +1,6 @@
|
||||
#include "groupdata.h"
|
||||
|
||||
GroupData::GroupData()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>&File</string>
|
||||
</property>
|
||||
<addaction name="action_Exit"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menu_Connection">
|
||||
<property name="title">
|
||||
<string>&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>&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>&Edit</string>
|
||||
</property>
|
||||
<addaction name="actionCopy"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menu_Tools">
|
||||
<property name="title">
|
||||
<string>&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>&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>&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>&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>&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>&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 &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>&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>&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>&Preferences</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
<include location="Resources.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
After Width: | Height: | Size: 685 B |
|
After Width: | Height: | Size: 798 B |
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 630 B |
|
After Width: | Height: | Size: 1.3 KiB |