The following patches made by Dmitry E. Oboukhov applied:

* Middle click on the tray icon translates current selection
  * Middle click on the main window also translates current selection
  * When editing groups, double click on the dictionary adds it to the
    current group.
This commit is contained in:
Konstantin Isakov 2009-07-31 11:40:54 +00:00
parent f7d47163d3
commit 64867e9f1b
5 changed files with 54 additions and 8 deletions

View file

@ -36,6 +36,8 @@ Groups::Groups( QWidget * parent,
this, SLOT( removeAll() ) ); this, SLOT( removeAll() ) );
connect( ui.addDictsToGroup, SIGNAL( clicked() ), connect( ui.addDictsToGroup, SIGNAL( clicked() ),
this, SLOT( addToGroup() ) ); this, SLOT( addToGroup() ) );
connect( ui.dictionaries, SIGNAL( doubleClicked(const QModelIndex &) ),
this, SLOT( addToGroup() ) );
connect( ui.removeDictsFromGroup, SIGNAL( clicked() ), connect( ui.removeDictsFromGroup, SIGNAL( clicked() ),
this, SLOT( removeFromGroup() ) ); this, SLOT( removeFromGroup() ) );

View file

@ -274,6 +274,22 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
doDeferredInit( dictionaries ); doDeferredInit( dictionaries );
} }
void MainWindow::mousePressEvent( QMouseEvent *event)
{
if (event->button() != Qt::MidButton)
return QMainWindow::mousePressEvent(event);
// middle clicked
QString subtype = "plain";
QString str = QApplication::clipboard()->text(subtype,
QClipboard::Selection);
ui.translateLine->setText(str);
QKeyEvent ev(QEvent::Type(6)/*QEvent::KeyPress*/, Qt::Key_Enter,
Qt::NoModifier);
QApplication::sendEvent(ui.translateLine, &ev);
}
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
// Save MainWindow state and geometry // Save MainWindow state and geometry
@ -1273,10 +1289,22 @@ void MainWindow::latestReleaseReplyReady()
void MainWindow::trayIconActivated( QSystemTrayIcon::ActivationReason r ) void MainWindow::trayIconActivated( QSystemTrayIcon::ActivationReason r )
{ {
if ( r == QSystemTrayIcon::Trigger ) switch(r) {
{ case QSystemTrayIcon::Trigger:
// Left click toggles the visibility of main window // Left click toggles the visibility of main window
toggleMainWindow(); toggleMainWindow();
break;
case QSystemTrayIcon::MiddleClick:
// Middle mouse click on Tray translates selection
// it is functional like as stardict
if ( scanPopup.get() ) {
scanPopup->translateWordFromSelection();
}
break;
default:
break;
} }
} }

View file

@ -108,6 +108,8 @@ private:
void applyZoomFactor(); void applyZoomFactor();
void mousePressEvent ( QMouseEvent * event );
private slots: private slots:
void hotKeyActivated( int ); void hotKeyActivated( int );

View file

@ -141,12 +141,21 @@ void ScanPopup::applyZoomFactor()
void ScanPopup::translateWordFromClipboard() void ScanPopup::translateWordFromClipboard()
{ {
printf( "translating from clipboard\n" ); return translateWordFromClipboard(QClipboard::Clipboard);
}
void ScanPopup::translateWordFromSelection()
{
return translateWordFromClipboard(QClipboard::Selection);
}
void ScanPopup::translateWordFromClipboard(QClipboard::Mode m)
{
printf( "translating from clipboard or selection\n" );
QString subtype = "plain"; QString subtype = "plain";
QString str = QApplication::clipboard()->text( subtype, QString str = QApplication::clipboard()->text( subtype, m);
QClipboard::Clipboard );
str = pendingInputWord = gd::toQString( Folding::trimWhitespaceOrPunct( gd::toWString( str ) ) ); str = pendingInputWord = gd::toQString( Folding::trimWhitespaceOrPunct( gd::toWString( str ) ) );

View file

@ -43,9 +43,14 @@ public slots:
/// Translates the word from the clipboard, showing the window etc. /// Translates the word from the clipboard, showing the window etc.
void translateWordFromClipboard(); void translateWordFromClipboard();
/// Translates the word from the clipboard selection
void translateWordFromSelection();
private: private:
// Translates the word from the clipboard or the clipboard selection
void translateWordFromClipboard(QClipboard::Mode m);
Config::Class & cfg; Config::Class & cfg;
bool isScanningEnabled; bool isScanningEnabled;
std::vector< sptr< Dictionary::Class > > const & allDictionaries; std::vector< sptr< Dictionary::Class > > const & allDictionaries;