in progress
This commit is contained in:
commit
6cd510e389
244
GlobalActionHelper.cpp
Normal file
244
GlobalActionHelper.cpp
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
#include "GlobalActionHelper.h"
|
||||||
|
|
||||||
|
#include <qt_windows.h>
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
QHash<QPair<quint32, quint32>, QAction*> GlobalActionHelper::actions_;
|
||||||
|
|
||||||
|
bool GlobalActionHelper::nativeEventFilter(const QByteArray& eventType,
|
||||||
|
void* message, long* result)
|
||||||
|
{
|
||||||
|
Q_UNUSED (eventType);
|
||||||
|
Q_UNUSED (result);
|
||||||
|
MSG* msg = static_cast<MSG*>(message);
|
||||||
|
if (msg->message == WM_HOTKEY)
|
||||||
|
{
|
||||||
|
const quint32 keycode = HIWORD(msg->lParam);
|
||||||
|
const quint32 modifiers = LOWORD(msg->lParam);
|
||||||
|
QAction* action = actions_.value (qMakePair (keycode, modifiers));
|
||||||
|
Q_CHECK_PTR (action);
|
||||||
|
action->activate (QAction::Trigger);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GlobalActionHelper::init()
|
||||||
|
{
|
||||||
|
qApp->installNativeEventFilter (new GlobalActionHelper);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GlobalActionHelper::makeGlobal(QAction* action)
|
||||||
|
{
|
||||||
|
QKeySequence hotKey = action->shortcut ();
|
||||||
|
Qt::KeyboardModifiers allMods = Qt::ShiftModifier | Qt::ControlModifier |
|
||||||
|
Qt::AltModifier | Qt::MetaModifier;
|
||||||
|
Qt::Key key = hotKey.isEmpty() ?
|
||||||
|
Qt::Key(0) :
|
||||||
|
Qt::Key((hotKey[0] ^ allMods) & hotKey[0]);
|
||||||
|
Qt::KeyboardModifiers mods = hotKey.isEmpty() ?
|
||||||
|
Qt::KeyboardModifiers(0) :
|
||||||
|
Qt::KeyboardModifiers(hotKey[0] & allMods);
|
||||||
|
const quint32 nativeKey = nativeKeycode(key);
|
||||||
|
const quint32 nativeMods = nativeModifiers(mods);
|
||||||
|
const bool res = registerHotKey(nativeKey, nativeMods);
|
||||||
|
if (res)
|
||||||
|
actions_.insert (qMakePair(nativeKey, nativeMods), action);
|
||||||
|
else
|
||||||
|
qWarning() << "Failed to register global hotkey:" << hotKey.toString();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
quint32 GlobalActionHelper::nativeKeycode(Qt::Key key)
|
||||||
|
{
|
||||||
|
switch (key)
|
||||||
|
{
|
||||||
|
case Qt::Key_Escape:
|
||||||
|
return VK_ESCAPE;
|
||||||
|
case Qt::Key_Tab:
|
||||||
|
case Qt::Key_Backtab:
|
||||||
|
return VK_TAB;
|
||||||
|
case Qt::Key_Backspace:
|
||||||
|
return VK_BACK;
|
||||||
|
case Qt::Key_Return:
|
||||||
|
case Qt::Key_Enter:
|
||||||
|
return VK_RETURN;
|
||||||
|
case Qt::Key_Insert:
|
||||||
|
return VK_INSERT;
|
||||||
|
case Qt::Key_Delete:
|
||||||
|
return VK_DELETE;
|
||||||
|
case Qt::Key_Pause:
|
||||||
|
return VK_PAUSE;
|
||||||
|
case Qt::Key_Print:
|
||||||
|
return VK_PRINT;
|
||||||
|
case Qt::Key_Clear:
|
||||||
|
return VK_CLEAR;
|
||||||
|
case Qt::Key_Home:
|
||||||
|
return VK_HOME;
|
||||||
|
case Qt::Key_End:
|
||||||
|
return VK_END;
|
||||||
|
case Qt::Key_Left:
|
||||||
|
return VK_LEFT;
|
||||||
|
case Qt::Key_Up:
|
||||||
|
return VK_UP;
|
||||||
|
case Qt::Key_Right:
|
||||||
|
return VK_RIGHT;
|
||||||
|
case Qt::Key_Down:
|
||||||
|
return VK_DOWN;
|
||||||
|
case Qt::Key_PageUp:
|
||||||
|
return VK_PRIOR;
|
||||||
|
case Qt::Key_PageDown:
|
||||||
|
return VK_NEXT;
|
||||||
|
case Qt::Key_F1:
|
||||||
|
return VK_F1;
|
||||||
|
case Qt::Key_F2:
|
||||||
|
return VK_F2;
|
||||||
|
case Qt::Key_F3:
|
||||||
|
return VK_F3;
|
||||||
|
case Qt::Key_F4:
|
||||||
|
return VK_F4;
|
||||||
|
case Qt::Key_F5:
|
||||||
|
return VK_F5;
|
||||||
|
case Qt::Key_F6:
|
||||||
|
return VK_F6;
|
||||||
|
case Qt::Key_F7:
|
||||||
|
return VK_F7;
|
||||||
|
case Qt::Key_F8:
|
||||||
|
return VK_F8;
|
||||||
|
case Qt::Key_F9:
|
||||||
|
return VK_F9;
|
||||||
|
case Qt::Key_F10:
|
||||||
|
return VK_F10;
|
||||||
|
case Qt::Key_F11:
|
||||||
|
return VK_F11;
|
||||||
|
case Qt::Key_F12:
|
||||||
|
return VK_F12;
|
||||||
|
case Qt::Key_F13:
|
||||||
|
return VK_F13;
|
||||||
|
case Qt::Key_F14:
|
||||||
|
return VK_F14;
|
||||||
|
case Qt::Key_F15:
|
||||||
|
return VK_F15;
|
||||||
|
case Qt::Key_F16:
|
||||||
|
return VK_F16;
|
||||||
|
case Qt::Key_F17:
|
||||||
|
return VK_F17;
|
||||||
|
case Qt::Key_F18:
|
||||||
|
return VK_F18;
|
||||||
|
case Qt::Key_F19:
|
||||||
|
return VK_F19;
|
||||||
|
case Qt::Key_F20:
|
||||||
|
return VK_F20;
|
||||||
|
case Qt::Key_F21:
|
||||||
|
return VK_F21;
|
||||||
|
case Qt::Key_F22:
|
||||||
|
return VK_F22;
|
||||||
|
case Qt::Key_F23:
|
||||||
|
return VK_F23;
|
||||||
|
case Qt::Key_F24:
|
||||||
|
return VK_F24;
|
||||||
|
case Qt::Key_Space:
|
||||||
|
return VK_SPACE;
|
||||||
|
case Qt::Key_Asterisk:
|
||||||
|
return VK_MULTIPLY;
|
||||||
|
case Qt::Key_Plus:
|
||||||
|
return VK_ADD;
|
||||||
|
case Qt::Key_Comma:
|
||||||
|
return VK_SEPARATOR;
|
||||||
|
case Qt::Key_Minus:
|
||||||
|
return VK_SUBTRACT;
|
||||||
|
case Qt::Key_Slash:
|
||||||
|
return VK_DIVIDE;
|
||||||
|
case Qt::Key_MediaNext:
|
||||||
|
return VK_MEDIA_NEXT_TRACK;
|
||||||
|
case Qt::Key_MediaPrevious:
|
||||||
|
return VK_MEDIA_PREV_TRACK;
|
||||||
|
case Qt::Key_MediaPlay:
|
||||||
|
return VK_MEDIA_PLAY_PAUSE;
|
||||||
|
case Qt::Key_MediaStop:
|
||||||
|
return VK_MEDIA_STOP;
|
||||||
|
// couldn't find those in VK_*
|
||||||
|
//case Qt::Key_MediaLast:
|
||||||
|
//case Qt::Key_MediaRecord:
|
||||||
|
case Qt::Key_VolumeDown:
|
||||||
|
return VK_VOLUME_DOWN;
|
||||||
|
case Qt::Key_VolumeUp:
|
||||||
|
return VK_VOLUME_UP;
|
||||||
|
case Qt::Key_VolumeMute:
|
||||||
|
return VK_VOLUME_MUTE;
|
||||||
|
|
||||||
|
// numbers
|
||||||
|
case Qt::Key_0:
|
||||||
|
case Qt::Key_1:
|
||||||
|
case Qt::Key_2:
|
||||||
|
case Qt::Key_3:
|
||||||
|
case Qt::Key_4:
|
||||||
|
case Qt::Key_5:
|
||||||
|
case Qt::Key_6:
|
||||||
|
case Qt::Key_7:
|
||||||
|
case Qt::Key_8:
|
||||||
|
case Qt::Key_9:
|
||||||
|
return key;
|
||||||
|
|
||||||
|
// letters
|
||||||
|
case Qt::Key_A:
|
||||||
|
case Qt::Key_B:
|
||||||
|
case Qt::Key_C:
|
||||||
|
case Qt::Key_D:
|
||||||
|
case Qt::Key_E:
|
||||||
|
case Qt::Key_F:
|
||||||
|
case Qt::Key_G:
|
||||||
|
case Qt::Key_H:
|
||||||
|
case Qt::Key_I:
|
||||||
|
case Qt::Key_J:
|
||||||
|
case Qt::Key_K:
|
||||||
|
case Qt::Key_L:
|
||||||
|
case Qt::Key_M:
|
||||||
|
case Qt::Key_N:
|
||||||
|
case Qt::Key_O:
|
||||||
|
case Qt::Key_P:
|
||||||
|
case Qt::Key_Q:
|
||||||
|
case Qt::Key_R:
|
||||||
|
case Qt::Key_S:
|
||||||
|
case Qt::Key_T:
|
||||||
|
case Qt::Key_U:
|
||||||
|
case Qt::Key_V:
|
||||||
|
case Qt::Key_W:
|
||||||
|
case Qt::Key_X:
|
||||||
|
case Qt::Key_Y:
|
||||||
|
case Qt::Key_Z:
|
||||||
|
return key;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
quint32 GlobalActionHelper::nativeModifiers(Qt::KeyboardModifiers modifiers)
|
||||||
|
{
|
||||||
|
// MOD_ALT, MOD_CONTROL, (MOD_KEYUP), MOD_SHIFT, MOD_WIN
|
||||||
|
quint32 native = 0;
|
||||||
|
if (modifiers & Qt::ShiftModifier)
|
||||||
|
native |= MOD_SHIFT;
|
||||||
|
if (modifiers & Qt::ControlModifier)
|
||||||
|
native |= MOD_CONTROL;
|
||||||
|
if (modifiers & Qt::AltModifier)
|
||||||
|
native |= MOD_ALT;
|
||||||
|
if (modifiers & Qt::MetaModifier)
|
||||||
|
native |= MOD_WIN;
|
||||||
|
// TODO: resolve these?
|
||||||
|
//if (modifiers & Qt::KeypadModifier)
|
||||||
|
//if (modifiers & Qt::GroupSwitchModifier)
|
||||||
|
return native;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GlobalActionHelper::registerHotKey(quint32 nativeKey, quint32 nativeMods)
|
||||||
|
{
|
||||||
|
return RegisterHotKey(0, nativeMods ^ nativeKey, nativeMods, nativeKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GlobalActionHelper::unregisterHotKey(quint32 nativeKey, quint32 nativeMods)
|
||||||
|
{
|
||||||
|
return UnregisterHotKey(0, nativeMods ^ nativeKey);
|
||||||
|
}
|
28
GlobalActionHelper.h
Normal file
28
GlobalActionHelper.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef GLOBALACTIONHELPER_H
|
||||||
|
#define GLOBALACTIONHELPER_H
|
||||||
|
|
||||||
|
// Some functions copied from QXT lib
|
||||||
|
|
||||||
|
#include <QAbstractNativeEventFilter>
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
|
class GlobalActionHelper : public QAbstractNativeEventFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool nativeEventFilter (const QByteArray &eventType, void *message,
|
||||||
|
long *result);
|
||||||
|
|
||||||
|
static void init ();
|
||||||
|
static bool makeGlobal (QAction* action);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QHash<QPair<quint32, quint32>, QAction*> actions_;
|
||||||
|
|
||||||
|
static quint32 nativeKeycode (Qt::Key key);
|
||||||
|
static quint32 nativeModifiers (Qt::KeyboardModifiers modifiers);
|
||||||
|
static bool registerHotKey (quint32 nativeKey, quint32 nativeMods);
|
||||||
|
static bool unregisterHotKey (quint32 nativeKey, quint32 nativeMods);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GLOBALACTIONHELPER_H
|
73
Manager.cpp
Normal file
73
Manager.cpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#include "Manager.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QSystemTrayIcon>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QDesktopWidget>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
|
#include "SettingsEditor.h"
|
||||||
|
#include "SelectionDialog.h"
|
||||||
|
#include "GlobalActionHelper.h"
|
||||||
|
|
||||||
|
Manager::Manager(QObject *parent) :
|
||||||
|
QObject(parent),
|
||||||
|
trayIcon_ (new QSystemTrayIcon (QIcon (":/images/icon.png"), this)),
|
||||||
|
selection_ (new SelectionDialog)
|
||||||
|
{
|
||||||
|
trayIcon_->show ();
|
||||||
|
trayIcon_->setContextMenu (trayContextMenu ());
|
||||||
|
|
||||||
|
selection_->setWindowIcon (trayIcon_->icon ());
|
||||||
|
connect (this, SIGNAL (showPixmap (QPixmap)),
|
||||||
|
selection_, SLOT (setPixmap (QPixmap)));
|
||||||
|
connect (selection_, SIGNAL (selected (QPixmap)),
|
||||||
|
SLOT (processRegion (QPixmap)));
|
||||||
|
|
||||||
|
GlobalActionHelper::init ();
|
||||||
|
}
|
||||||
|
|
||||||
|
Manager::~Manager()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenu*Manager::trayContextMenu()
|
||||||
|
{
|
||||||
|
QMenu* menu = new QMenu ();
|
||||||
|
QAction* capture = menu->addAction (tr ("Захват"), this, SLOT (capture ()),
|
||||||
|
tr ("Ctrl+Alt+Z"));
|
||||||
|
GlobalActionHelper::makeGlobal (capture);
|
||||||
|
menu->addAction (tr ("Настройки"), this, SLOT (settings ()));
|
||||||
|
menu->addAction (tr ("Выход"), this, SLOT (close ()));
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Manager::capture()
|
||||||
|
{
|
||||||
|
QList<QScreen*> screens = QApplication::screens ();
|
||||||
|
Q_ASSERT (!screens.isEmpty ());
|
||||||
|
QScreen* screen = screens.first ();
|
||||||
|
Q_CHECK_PTR (screen);
|
||||||
|
WId desktopId = QApplication::desktop ()->winId ();
|
||||||
|
QPixmap pixmap = screen->grabWindow (desktopId);
|
||||||
|
Q_ASSERT (!pixmap.isNull ());
|
||||||
|
emit showPixmap (pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Manager::settings()
|
||||||
|
{
|
||||||
|
SettingsEditor editor;
|
||||||
|
editor.setWindowIcon (trayIcon_->icon ());
|
||||||
|
editor.exec ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Manager::close()
|
||||||
|
{
|
||||||
|
QApplication::quit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Manager::processRegion(QPixmap selected)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
38
Manager.h
Normal file
38
Manager.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#ifndef MANAGER_H
|
||||||
|
#define MANAGER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
|
class QMenu;
|
||||||
|
class QSystemTrayIcon;
|
||||||
|
|
||||||
|
class SelectionDialog;
|
||||||
|
|
||||||
|
class Manager : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit Manager(QObject *parent = 0);
|
||||||
|
~Manager ();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void showPixmap (QPixmap pixmap);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void capture ();
|
||||||
|
void settings ();
|
||||||
|
void close ();
|
||||||
|
|
||||||
|
void processRegion (QPixmap selected);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMenu* trayContextMenu ();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QSystemTrayIcon* trayIcon_;
|
||||||
|
SelectionDialog* selection_;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MANAGER_H
|
5
Recources.qrc
Normal file
5
Recources.qrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/images">
|
||||||
|
<file alias="icon.png">images/icon.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
32
ScreenTranslator.pro
Normal file
32
ScreenTranslator.pro
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#-------------------------------------------------
|
||||||
|
#
|
||||||
|
# Project created by QtCreator 2013-11-22T12:00:23
|
||||||
|
#
|
||||||
|
#-------------------------------------------------
|
||||||
|
|
||||||
|
QT += core gui
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
TARGET = ScreenTranslator
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES += main.cpp\
|
||||||
|
Manager.cpp \
|
||||||
|
SettingsEditor.cpp \
|
||||||
|
SelectionDialog.cpp \
|
||||||
|
GlobalActionHelper.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
Manager.h \
|
||||||
|
SettingsEditor.h \
|
||||||
|
SelectionDialog.h \
|
||||||
|
GlobalActionHelper.h
|
||||||
|
|
||||||
|
FORMS += \
|
||||||
|
SettingsEditor.ui \
|
||||||
|
SelectionDialog.ui
|
||||||
|
|
||||||
|
RESOURCES += \
|
||||||
|
Recources.qrc
|
88
SelectionDialog.cpp
Normal file
88
SelectionDialog.cpp
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#include "SelectionDialog.h"
|
||||||
|
#include "ui_SelectionDialog.h"
|
||||||
|
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
SelectionDialog::SelectionDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::SelectionDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
||||||
|
Qt::WindowStaysOnTopHint);
|
||||||
|
|
||||||
|
ui->label->setAutoFillBackground(false);
|
||||||
|
ui->label->installEventFilter (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectionDialog::~SelectionDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SelectionDialog::eventFilter(QObject* object, QEvent* event)
|
||||||
|
{
|
||||||
|
if (object != ui->label)
|
||||||
|
{
|
||||||
|
return QDialog::eventFilter (object, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event->type () == QEvent::MouseButtonPress)
|
||||||
|
{
|
||||||
|
QMouseEvent* mouseEvent = static_cast <QMouseEvent*> (event);
|
||||||
|
if (mouseEvent->button () == Qt::LeftButton)
|
||||||
|
{
|
||||||
|
startSelectPos_ = mouseEvent->pos ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (event->type () == QEvent::MouseButtonRelease)
|
||||||
|
{
|
||||||
|
QMouseEvent* mouseEvent = static_cast <QMouseEvent*> (event);
|
||||||
|
if (mouseEvent->button () == Qt::LeftButton)
|
||||||
|
{
|
||||||
|
if (startSelectPos_.isNull () || currentPixmap_.isNull ())
|
||||||
|
{
|
||||||
|
QDialog::eventFilter (object, event);
|
||||||
|
}
|
||||||
|
QPoint endPos = mouseEvent->pos ();
|
||||||
|
QRect selection = QRect (startSelectPos_, endPos).normalized ();
|
||||||
|
startSelectPos_ = currentSelectPos_ = QPoint ();
|
||||||
|
QPixmap selectedPixmap = currentPixmap_.copy (selection);
|
||||||
|
emit selected (selectedPixmap);
|
||||||
|
// accept (); //DEBUG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (event->type () == QEvent::MouseMove)
|
||||||
|
{
|
||||||
|
QMouseEvent* mouseEvent = static_cast <QMouseEvent*> (event);
|
||||||
|
if (mouseEvent->buttons () & Qt::LeftButton)
|
||||||
|
{
|
||||||
|
currentSelectPos_ = mouseEvent->pos ();
|
||||||
|
ui->label->repaint ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (event->type () == QEvent::Paint)
|
||||||
|
{
|
||||||
|
QPainter painter (ui->label);
|
||||||
|
painter.setPen (Qt::red);
|
||||||
|
QRect selection = QRect (startSelectPos_, currentSelectPos_).normalized ();
|
||||||
|
painter.drawRect (selection);
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDialog::eventFilter (object, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectionDialog::setPixmap(QPixmap pixmap)
|
||||||
|
{
|
||||||
|
Q_ASSERT (!pixmap.isNull ());
|
||||||
|
currentPixmap_ = pixmap;
|
||||||
|
QPalette palette = this->palette ();
|
||||||
|
palette.setBrush (this->backgroundRole (), pixmap);
|
||||||
|
this->setPalette (palette);
|
||||||
|
this->resize (pixmap.size ());
|
||||||
|
|
||||||
|
show ();
|
||||||
|
setFocus ();
|
||||||
|
}
|
34
SelectionDialog.h
Normal file
34
SelectionDialog.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#ifndef SELECTIONDIALOG_H
|
||||||
|
#define SELECTIONDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class SelectionDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SelectionDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SelectionDialog(QWidget *parent = 0);
|
||||||
|
~SelectionDialog();
|
||||||
|
|
||||||
|
bool eventFilter (QObject *object, QEvent *event);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void selected (QPixmap pixmap);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setPixmap (QPixmap pixmap);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::SelectionDialog *ui;
|
||||||
|
QPoint startSelectPos_;
|
||||||
|
QPoint currentSelectPos_;
|
||||||
|
QPixmap currentPixmap_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SELECTIONDIALOG_H
|
31
SelectionDialog.ui
Normal file
31
SelectionDialog.ui
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SelectionDialog</class>
|
||||||
|
<widget class="QDialog" name="SelectionDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
14
SettingsEditor.cpp
Normal file
14
SettingsEditor.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "SettingsEditor.h"
|
||||||
|
#include "ui_SettingsEditor.h"
|
||||||
|
|
||||||
|
SettingsEditor::SettingsEditor(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::SettingsEditor)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsEditor::~SettingsEditor()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
22
SettingsEditor.h
Normal file
22
SettingsEditor.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef SETTINGSEDITOR_H
|
||||||
|
#define SETTINGSEDITOR_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class SettingsEditor;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SettingsEditor : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SettingsEditor(QWidget *parent = 0);
|
||||||
|
~SettingsEditor();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::SettingsEditor *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SETTINGSEDITOR_H
|
127
SettingsEditor.ui
Normal file
127
SettingsEditor.ui
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SettingsEditor</class>
|
||||||
|
<widget class="QDialog" name="SettingsEditor">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>30</x>
|
||||||
|
<y>240</y>
|
||||||
|
<width>341</width>
|
||||||
|
<height>32</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>50</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>46</width>
|
||||||
|
<height>13</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>40</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>46</width>
|
||||||
|
<height>13</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>50</x>
|
||||||
|
<y>120</y>
|
||||||
|
<width>46</width>
|
||||||
|
<height>13</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>One time select</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="comboBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>160</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>69</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="comboBox_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>160</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>69</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>SettingsEditor</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>SettingsEditor</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
BIN
images/icon.png
Normal file
BIN
images/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
Loading…
Reference in New Issue
Block a user