Skip to content

Commit

Permalink
Merge branch 'console'
Browse files Browse the repository at this point in the history
  • Loading branch information
uglide committed Oct 15, 2013
2 parents 0f231c6 + 21b8137 commit 750a372
Show file tree
Hide file tree
Showing 20 changed files with 192 additions and 43 deletions.
27 changes: 16 additions & 11 deletions redis-desktop-manager/Resources/demo.qrc
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
<RCC>
<qresource prefix="/images" >
<file alias="redisIcon.png">../images/redis_small_icon.png</file>
<file alias="redisBigIcon.png">../images/redis_big_icon.png</file>
<file alias="redisIcon_offline.png">../images/redis_small_icon_offline.png</file>
<file alias="wait.png">../images/wait.png</file>
<file alias="db.png">../images/db.png</file>
<file alias="namespace.png">../images/namespace.png</file>
<file alias="key.png">../images/key.png</file>
<file alias="help.png">../images/help.png</file>
<file alias="alert.png">../images/alert.png</file>
<file alias="add.png">../images/add.png</file>
<file alias="import.png">../images/import.png</file>
<file alias="redisIcon.png">../images/redis_small_icon.png</file>
<file alias="redisBigIcon.png">../images/redis_big_icon.png</file>
<file alias="redisIcon_offline.png">../images/redis_small_icon_offline.png</file>
<file alias="wait.png">../images/wait.png</file>
<file alias="db.png">../images/db.png</file>
<file alias="namespace.png">../images/namespace.png</file>
<file alias="key.png">../images/key.png</file>
<file alias="help.png">../images/help.png</file>
<file alias="alert.png">../images/alert.png</file>
<file alias="add.png">../images/add.png</file>
<file alias="import.png">../images/import.png</file>
<file alias="terminal.png">../images/terminal.png</file>
<file alias="serverinfo.png">../images/serverinfo.png</file>
<file alias="refreshdb.png">../images/refreshdb.png</file>
<file alias="editdb.png">../images/editdb.png</file>
<file alias="delete.png">../images/delete.png</file>
</qresource>
</RCC>
Binary file added redis-desktop-manager/images/delete.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added redis-desktop-manager/images/editdb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added redis-desktop-manager/images/refresh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added redis-desktop-manager/images/refreshdb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added redis-desktop-manager/images/serverinfo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added redis-desktop-manager/images/terminal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion redis-desktop-manager/include/demo.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class MainWin : public QMainWindow
Updater * updater;

void loadKeyTab(RedisKeyItem *);
void addTab(QString&, QWidget*);
void addTab(QString&, QWidget*, QString icon = QString());

/** @return >=0 if exist **/
int getTabIndex(QString&);
Expand Down
24 changes: 24 additions & 0 deletions redis-desktop-manager/include/redis/ConsoleConnectionWrapper.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include <QObject>

class RedisConnectionConfig;
class RedisConnectionAbstract;
class consoleTab;

class ConsoleConnectionWrapper : public QObject
{
Q_OBJECT

public:
ConsoleConnectionWrapper(RedisConnectionConfig &, consoleTab &);

public slots:
void executeCommand(QString);

private:
RedisConnectionAbstract * connection;
consoleTab & consoleView;
bool connectionValid;
};

2 changes: 2 additions & 0 deletions redis-desktop-manager/include/redis/Response.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class Response
void appendToSource(QString&);
void appendToSource(QByteArray&);

static QString valueToString(QVariant&);

private:

QString responseString;
Expand Down
6 changes: 5 additions & 1 deletion redis-desktop-manager/include/widgets/consoleTab.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@
#include <QPlainTextEdit>

class RedisConnectionConfig;
class ConsoleConnectionWrapper;

class consoleTab: public QPlainTextEdit
{
Q_OBJECT

public:
consoleTab(RedisConnectionConfig &);
consoleTab(RedisConnectionConfig&);
~consoleTab(void);
void output(QString);
void setPrompt(QString);
void scrollDown();

protected:
Expand All @@ -30,6 +32,8 @@ class consoleTab: public QPlainTextEdit
bool isLocked;
QStringList *history;
int historyPos;
ConsoleConnectionWrapper * connection;
//QThread connectionThread;

void onEnter();
void insertPrompt(bool insertNewBlock = true);
Expand Down
Binary file modified redis-desktop-manager/redis-desktop-manager.rc
Binary file not shown.
17 changes: 17 additions & 0 deletions redis-desktop-manager/redis-desktop-manager.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
<ClCompile Include="GeneratedFiles\Debug\moc_connection.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ConsoleConnectionWrapper.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_consoleTab.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
Expand Down Expand Up @@ -65,6 +68,9 @@
<ClCompile Include="GeneratedFiles\Release\moc_connection.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ConsoleConnectionWrapper.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_consoleTab.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
Expand Down Expand Up @@ -122,6 +128,7 @@
<ClCompile Include="source\network\qxtsshprocess.cpp" />
<ClCompile Include="source\network\qxtsshtcpsocket.cpp" />
<ClCompile Include="source\redis\Command.cpp" />
<ClCompile Include="source\redis\ConsoleConnectionWrapper.cpp" />
<ClCompile Include="source\redis\redisconnection.cpp" />
<ClCompile Include="source\redis\RedisConnectionAbstract.cpp" />
<ClCompile Include="source\redis\RedisConnectionConfig.cpp" />
Expand Down Expand Up @@ -177,6 +184,16 @@
<ClInclude Include="include\models\SortedSetKeyModel.h" />
<ClInclude Include="include\network\qxtsshchannel_p.h" />
<ClInclude Include="include\redis\Command.h" />
<CustomBuild Include="include\redis\ConsoleConnectionWrapper.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing ConsoleConnectionWrapper.h...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtXml" "-I$(SolutionDir)\deps\libssh\include" "-I.\source\models"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing ConsoleConnectionWrapper.h...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtXml" "-I$(SolutionDir)\deps\libssh\include" "-I.\source\models"</Command>
</CustomBuild>
<ClInclude Include="include\redis\redisconnection.h" />
<ClInclude Include="include\redis\RedisConnectionAbstract.h" />
<ClInclude Include="include\redis\RedisConnectionConfig.h" />
Expand Down
20 changes: 16 additions & 4 deletions redis-desktop-manager/redis-desktop-manager.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -239,15 +239,24 @@
<ClCompile Include="GeneratedFiles\Release\moc_serverInfoViewTab.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="source\widgets\consoleTab.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_consoleTab.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_consoleTab.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ConsoleConnectionWrapper.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ConsoleConnectionWrapper.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="source\redis\ConsoleConnectionWrapper.cpp">
<Filter>Source Files\redis</Filter>
</ClCompile>
<ClCompile Include="source\widgets\consoleTab.cpp">
<Filter>Source Files\widgets</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="include\connection.h">
Expand Down Expand Up @@ -316,8 +325,11 @@
<CustomBuild Include="forms/serverInfoViewTab.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="include\redis\ConsoleConnectionWrapper.h">
<Filter>Header Files\redis</Filter>
</CustomBuild>
<CustomBuild Include="include\widgets\consoleTab.h">
<Filter>Header Files</Filter>
<Filter>Header Files\widgets</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
Expand Down
40 changes: 18 additions & 22 deletions redis-desktop-manager/source/demo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ int MainWin::getTabIndex(QString& name)
return -1;
}

void MainWin::addTab(QString& tabName, QWidget* tab)
void MainWin::addTab(QString& tabName, QWidget* tab, QString icon)
{
//find opened tab with same key
int currIndexOnTab = getTabIndex(tabName);
Expand All @@ -239,9 +239,15 @@ void MainWin::addTab(QString& tabName, QWidget* tab)
OnTabClose(currIndexOnTab);
}

ui.tabWidget->setCurrentIndex(
ui.tabWidget->addTab(tab, tabName)
);
int currIndex;

if (icon.isEmpty()) {
currIndex = ui.tabWidget->addTab(tab, tabName);
} else {
currIndex = ui.tabWidget->addTab(tab, QIcon(icon), tabName);
}

ui.tabWidget->setCurrentIndex(currIndex);
}

void MainWin::OnTreeViewContextMenu(const QPoint &point)
Expand All @@ -256,13 +262,13 @@ void MainWin::OnTreeViewContextMenu(const QPoint &point)

if (type == RedisServerItem::TYPE) {
QMenu *menu = new QMenu();
//menu->addAction("Console", this, SLOT(OnConsoleOpen()));
//menu->addSeparator();
menu->addAction("Server info", this, SLOT(OnServerInfoOpen()));
menu->addAction("Reload", this, SLOT(OnReloadServerInTree()));
menu->addAction(QIcon(":/images/terminal.png"), "Console", this, SLOT(OnConsoleOpen()));
menu->addSeparator();
menu->addAction("Edit", this, SLOT(OnEditConnection()));
menu->addAction("Delete", this, SLOT(OnRemoveConnectionFromTree()));
menu->addAction(QIcon(":/images/serverinfo.png"), "Server info", this, SLOT(OnServerInfoOpen()));
menu->addAction(QIcon(":/images/refreshdb.png"), "Reload", this, SLOT(OnReloadServerInTree()));
menu->addSeparator();
menu->addAction(QIcon(":/images/editdb.png"), "Edit", this, SLOT(OnEditConnection()));
menu->addAction(QIcon(":/images/delete.png"), "Delete", this, SLOT(OnRemoveConnectionFromTree()));
menu->exec(QCursor::pos());
}
}
Expand Down Expand Up @@ -372,7 +378,7 @@ void MainWin::OnServerInfoOpen()

serverInfoViewTab * tab = new serverInfoViewTab(server->text(), info);
QString serverName = server->text();
addTab(serverName, tab);
addTab(serverName, tab, ":/images/serverinfo.png");
}

void MainWin::OnConsoleOpen()
Expand All @@ -388,17 +394,7 @@ void MainWin::OnConsoleOpen()

QString serverName = server->text();

addTab(serverName, tab);

/*
QStringList info = server->getInfo();
if (info.isEmpty())
return;
serverInfoViewTab * tab = new serverInfoViewTab(server->text(), info);
QString serverName = server->text();
addTab(serverName, tab);*/
addTab(serverName, tab, ":/images/terminal.png");
}

QStandardItem * MainWin::getSelectedItemInConnectionsTree()
Expand Down
2 changes: 1 addition & 1 deletion redis-desktop-manager/source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ int main(int argc, char *argv[])
QApplication a(argc, argv);

QApplication::setApplicationName("Redis Desktop Manager");
QApplication::setApplicationVersion("0.4.1");
QApplication::setApplicationVersion("0.5.0");
QApplication::setOrganizationDomain("redisdesktop.com");

MainWin w;
Expand Down
62 changes: 62 additions & 0 deletions redis-desktop-manager/source/redis/ConsoleConnectionWrapper.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include "ConsoleConnectionWrapper.h"

#include "RedisConnectionAbstract.h"
#include "RedisConnection.h"
#include "RedisConnectionOverSsh.h"
#include "consoleTab.h"
#include "Response.h"

ConsoleConnectionWrapper::ConsoleConnectionWrapper(RedisConnectionConfig &config, consoleTab &view)
: consoleView(view) , connectionValid(false)
{
if (config.isNull())
{
consoleView.output("Invalid config. Can't create connection.");
return;
}

connection = (config.useSshTunnel()) ? (RedisConnectionAbstract *) new RedisConnectionOverSsh(config)
: (RedisConnectionAbstract *) new RedisConnection(config);

if (!connection->connect())
{
consoleView.output("Invalid config. Can't create connection.");
return;
}

connectionValid = true;
consoleView.setPrompt(QString("%1:0>").arg(config.name));
consoleView.output("Connected.");
}

void ConsoleConnectionWrapper::executeCommand(QString cmd)
{
if (!connectionValid)
{
consoleView.output("Invalid config. Can't create connection.");
return;
}

if (!connection->isConnected() && !connection->connect())
{
consoleView.output("Connection error. Check network connection");
return;
}

QVariant result = connection->execute(cmd);

QRegExp selectDbRegex("^( )*select( )+(\\d)+");

bool isSelectCommand = selectDbRegex.indexIn(cmd) > -1;

if (isSelectCommand)
{
consoleView.setPrompt(
QString("%1:%2>")
.arg(connection->config.name)
.arg(selectDbRegex.cap(3))
);
}

consoleView.output(Response::valueToString(result));
}
12 changes: 12 additions & 0 deletions redis-desktop-manager/source/redis/Response.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,3 +270,15 @@ int Response::getSizeOfBulkReply(QString& reply, int endOfFirstLine = -1)

return reply.mid(1, endOfFirstLine-1).toInt();
}

QString Response::valueToString(QVariant& value)
{
if (value.isNull())
{
return "NULL";
} else if (value.type() == QVariant::StringList) {
return value.toStringList().join("\r\n");
}

return value.toString();
}
17 changes: 15 additions & 2 deletions redis-desktop-manager/source/widgets/consoleTab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
#include <QTextBlock>

#include "RedisConnectionConfig.h"
#include "ConsoleConnectionWrapper.h"

consoleTab::consoleTab(RedisConnectionConfig& config)
{
prompt += config.name + ">";
{
appendHtml("<span style='color: orange;'>List of unsupported commands: PTTL, DUMP, RESTORE, AUTH, QUIT, MONITOR</span>");

QPalette p = palette();
p.setColor(QPalette::Base, QColor(57, 57, 57));
Expand All @@ -18,11 +19,22 @@ consoleTab::consoleTab(RedisConnectionConfig& config)
historyPos = 0;
insertPrompt(false);
isLocked = false;

connection = new ConsoleConnectionWrapper(config, *this);

connect(this, SIGNAL(onCommand(QString)), connection, SLOT(executeCommand(QString)));
}


consoleTab::~consoleTab(void)
{
//connectionThread.quit();
///connectionThread.wait();
}

void consoleTab::setPrompt(QString str)
{
prompt = str;
}

void consoleTab::keyPressEvent(QKeyEvent *event)
Expand All @@ -36,6 +48,7 @@ void consoleTab::keyPressEvent(QKeyEvent *event)
&& event->modifiers() == Qt::NoModifier
&& textCursor().positionInBlock() > prompt.length())
QPlainTextEdit::keyPressEvent(event);

if(event->key() == Qt::Key_Return && event->modifiers() == Qt::NoModifier)
onEnter();
if(event->key() == Qt::Key_Up && event->modifiers() == Qt::NoModifier)
Expand Down
Loading

0 comments on commit 750a372

Please sign in to comment.