Added a dialog to configure a mouse click sequence.

Thu, 25 Jun 2015 18:42:55 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 25 Jun 2015 18:42:55 +0200
changeset 4291
5f7f8c8d8bc2
parent 4290
5d4f4230a5ed
child 4292
9dfee1559826

Added a dialog to configure a mouse click sequence.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
APIs/Python3/eric6.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Preferences.MouseClickDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.Preferences.html file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/EditorMouseClickHandlerPage.ui file | annotate | diff | comparison | revisions
Preferences/MouseClickDialog.py file | annotate | diff | comparison | revisions
Preferences/MouseClickDialog.ui file | annotate | diff | comparison | revisions
Utilities/MouseUtilities.py file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Wed Jun 24 19:52:13 2015 +0200
+++ b/APIs/Python3/eric6.api	Thu Jun 25 18:42:55 2015 +0200
@@ -6332,6 +6332,10 @@
 eric6.Preferences.ConfigurationPages.ViewmanagerPage.ViewmanagerPage.save?4()
 eric6.Preferences.ConfigurationPages.ViewmanagerPage.ViewmanagerPage?1()
 eric6.Preferences.ConfigurationPages.ViewmanagerPage.create?4(dlg)
+eric6.Preferences.MouseClickDialog.MouseClickDialog.eventFilter?4(watched, event)
+eric6.Preferences.MouseClickDialog.MouseClickDialog.getClick?4()
+eric6.Preferences.MouseClickDialog.MouseClickDialog.on_clearButton_clicked?4()
+eric6.Preferences.MouseClickDialog.MouseClickDialog?1(modifiers, button, parent=None)
 eric6.Preferences.PreferencesLexer.PreferencesLexer.color?4(style)
 eric6.Preferences.PreferencesLexer.PreferencesLexer.defaulEolFill?4(style)
 eric6.Preferences.PreferencesLexer.PreferencesLexer.defaultColor?4(style)
--- a/APIs/Python3/eric6.bas	Wed Jun 24 19:52:13 2015 +0200
+++ b/APIs/Python3/eric6.bas	Thu Jun 25 18:42:55 2015 +0200
@@ -458,6 +458,7 @@
 Module ClbrBaseClasses.Module VisibilityMixin
 ModuleItem UMLItem
 ModuleModel UMLModel
+MouseClickDialog QDialog Ui_MouseClickDialog
 MultiProject QObject
 MultiProjectBrowser QTreeWidget
 MultiProjectPage ConfigurationPageBase Ui_MultiProjectPage
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Wed Jun 24 19:52:13 2015 +0200
+++ b/Documentation/Help/source.qhp	Thu Jun 25 18:42:55 2015 +0200
@@ -802,6 +802,7 @@
               <section title="eric6.Preferences.ConfigurationPages.ViewmanagerPage" ref="eric6.Preferences.ConfigurationPages.ViewmanagerPage.html" />
             </section>
             <section title="eric6.Preferences.ConfigurationDialog" ref="eric6.Preferences.ConfigurationDialog.html" />
+            <section title="eric6.Preferences.MouseClickDialog" ref="eric6.Preferences.MouseClickDialog.html" />
             <section title="eric6.Preferences.PreferencesLexer" ref="eric6.Preferences.PreferencesLexer.html" />
             <section title="eric6.Preferences.ProgramsDialog" ref="eric6.Preferences.ProgramsDialog.html" />
             <section title="eric6.Preferences.ShortcutDialog" ref="eric6.Preferences.ShortcutDialog.html" />
@@ -7978,6 +7979,13 @@
       <keyword name="ModuleModel.getClasses" id="ModuleModel.getClasses" ref="eric6.Graphics.ModuleItem.html#ModuleModel.getClasses" />
       <keyword name="ModuleParser (Module)" id="ModuleParser (Module)" ref="eric6.Utilities.ModuleParser.html" />
       <keyword name="MouseButtonModifier2String" id="MouseButtonModifier2String" ref="eric6.Utilities.MouseUtilities.html#MouseButtonModifier2String" />
+      <keyword name="MouseClickDialog" id="MouseClickDialog" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog" />
+      <keyword name="MouseClickDialog (Constructor)" id="MouseClickDialog (Constructor)" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.__init__" />
+      <keyword name="MouseClickDialog (Module)" id="MouseClickDialog (Module)" ref="eric6.Preferences.MouseClickDialog.html" />
+      <keyword name="MouseClickDialog.__showClickText" id="MouseClickDialog.__showClickText" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.__showClickText" />
+      <keyword name="MouseClickDialog.eventFilter" id="MouseClickDialog.eventFilter" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.eventFilter" />
+      <keyword name="MouseClickDialog.getClick" id="MouseClickDialog.getClick" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.getClick" />
+      <keyword name="MouseClickDialog.on_clearButton_clicked" id="MouseClickDialog.on_clearButton_clicked" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.on_clearButton_clicked" />
       <keyword name="MouseUtilities (Module)" id="MouseUtilities (Module)" ref="eric6.Utilities.MouseUtilities.html" />
       <keyword name="MultiProject" id="MultiProject" ref="eric6.MultiProject.MultiProject.html#MultiProject" />
       <keyword name="MultiProject (Constructor)" id="MultiProject (Constructor)" ref="eric6.MultiProject.MultiProject.html#MultiProject.__init__" />
@@ -14389,6 +14397,7 @@
       <file>eric6.Preferences.ConfigurationPages.TrayStarterPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.VcsPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.ViewmanagerPage.html</file>
+      <file>eric6.Preferences.MouseClickDialog.html</file>
       <file>eric6.Preferences.PreferencesLexer.html</file>
       <file>eric6.Preferences.ProgramsDialog.html</file>
       <file>eric6.Preferences.ShortcutDialog.html</file>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Preferences.MouseClickDialog.html	Thu Jun 25 18:42:55 2015 +0200
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Preferences.MouseClickDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Preferences.MouseClickDialog</h1>
+<p>
+Module implementing a dialog for the configuration of a mouse click sequence.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#MouseClickDialog">MouseClickDialog</a></td>
+<td>Class implementing a dialog for the configuration of a mouse click sequence.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="MouseClickDialog" ID="MouseClickDialog"></a>
+<h2>MouseClickDialog</h2>
+<p>
+    Class implementing a dialog for the configuration of a mouse click
+    sequence.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_MouseClickDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#MouseClickDialog.__init__">MouseClickDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#MouseClickDialog.__showClickText">__showClickText</a></td>
+<td>Private method to show a string representing the entered mouse click sequence.</td>
+</tr><tr>
+<td><a href="#MouseClickDialog.eventFilter">eventFilter</a></td>
+<td>Public method called to filter the event queue.</td>
+</tr><tr>
+<td><a href="#MouseClickDialog.getClick">getClick</a></td>
+<td>Public method to get the entered mouse click sequence.</td>
+</tr><tr>
+<td><a href="#MouseClickDialog.on_clearButton_clicked">on_clearButton_clicked</a></td>
+<td>Private slot to clear the entered sequence.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="MouseClickDialog.__init__" ID="MouseClickDialog.__init__"></a>
+<h4>MouseClickDialog (Constructor)</h4>
+<b>MouseClickDialog</b>(<i>modifiers, button, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>modifiers</i> (Qt.KeyboardModifiers)</dt>
+<dd>
+keyboard modifiers of the handler
+</dd><dt><i>button</i> (Qt.MouseButton)</dt>
+<dd>
+mouse button of the handler
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="MouseClickDialog.__showClickText" ID="MouseClickDialog.__showClickText"></a>
+<h4>MouseClickDialog.__showClickText</h4>
+<b>__showClickText</b>(<i></i>)
+<p>
+        Private method to show a string representing the entered mouse click
+        sequence.
+</p><a NAME="MouseClickDialog.eventFilter" ID="MouseClickDialog.eventFilter"></a>
+<h4>MouseClickDialog.eventFilter</h4>
+<b>eventFilter</b>(<i>watched, event</i>)
+<p>
+        Public method called to filter the event queue.
+</p><dl>
+<dt><i>watched</i> (QObject)</dt>
+<dd>
+reference to the watched object
+</dd><dt><i>event</i> (QEvent)</dt>
+<dd>
+reference to the event that occurred
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a handled event
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="MouseClickDialog.getClick" ID="MouseClickDialog.getClick"></a>
+<h4>MouseClickDialog.getClick</h4>
+<b>getClick</b>(<i></i>)
+<p>
+        Public method to get the entered mouse click sequence.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the modifiers and the mouse button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of Qt.KeyboardModifiers and Qt.MouseButton
+</dd>
+</dl><a NAME="MouseClickDialog.on_clearButton_clicked" ID="MouseClickDialog.on_clearButton_clicked"></a>
+<h4>MouseClickDialog.on_clearButton_clicked</h4>
+<b>on_clearButton_clicked</b>(<i></i>)
+<p>
+        Private slot to clear the entered sequence.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric6.Preferences.html	Wed Jun 24 19:52:13 2015 +0200
+++ b/Documentation/Source/index-eric6.Preferences.html	Thu Jun 25 18:42:55 2015 +0200
@@ -47,6 +47,9 @@
 <td><a href="eric6.Preferences.ConfigurationDialog.html">ConfigurationDialog</a></td>
 <td>Module implementing a dialog for the configuration of eric6.</td>
 </tr><tr>
+<td><a href="eric6.Preferences.MouseClickDialog.html">MouseClickDialog</a></td>
+<td>Module implementing a dialog for the configuration of a mouse click sequence.</td>
+</tr><tr>
 <td><a href="eric6.Preferences.PreferencesLexer.html">PreferencesLexer</a></td>
 <td>Module implementing a special QextScintilla lexer to handle the preferences.</td>
 </tr><tr>
--- a/Preferences/ConfigurationPages/EditorMouseClickHandlerPage.ui	Wed Jun 24 19:52:13 2015 +0200
+++ b/Preferences/ConfigurationPages/EditorMouseClickHandlerPage.ui	Thu Jun 25 18:42:55 2015 +0200
@@ -10,7 +10,7 @@
     <height>398</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_2">
+  <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/MouseClickDialog.py	Thu Jun 25 18:42:55 2015 +0200
@@ -0,0 +1,102 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog for the configuration of a mouse click sequence.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import pyqtSlot, Qt, QEvent
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+
+from .Ui_MouseClickDialog import Ui_MouseClickDialog
+
+from Utilities import MouseUtilities
+
+
+class MouseClickDialog(QDialog, Ui_MouseClickDialog):
+    """
+    Class implementing a dialog for the configuration of a mouse click
+    sequence.
+    """
+    def __init__(self, modifiers, button, parent=None):
+        """
+        Constructor
+        
+        @param modifiers keyboard modifiers of the handler
+        @type Qt.KeyboardModifiers
+        @param button mouse button of the handler
+        @type Qt.MouseButton
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super(MouseClickDialog, self).__init__(parent)
+        self.setupUi(self)
+        self.setModal(True)
+        
+        self.clickGroup.installEventFilter(self)
+        self.clearButton.installEventFilter(self)
+        self.clickEdit.installEventFilter(self)
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).installEventFilter(self)
+        self.buttonBox.button(QDialogButtonBox.Cancel).installEventFilter(self)
+        
+        self.__modifiers = modifiers
+        self.__button = button
+        
+        self.__showClickText()
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+    
+    @pyqtSlot()
+    def on_clearButton_clicked(self):
+        """
+        Private slot to clear the entered sequence.
+        """
+        self.__modifiers = Qt.NoModifier
+        self.__button = Qt.NoButton
+        self.__showClickText()
+    
+    def __showClickText(self):
+        """
+        Private method to show a string representing the entered mouse click
+        sequence.
+        """
+        if self.__button == Qt.NoButton:
+            self.clickEdit.setText("")
+        else:
+            self.clickEdit.setText(MouseUtilities.MouseButtonModifier2String(
+                self.__modifiers, self.__button))
+    
+    def eventFilter(self, watched, event):
+        """
+        Public method called to filter the event queue.
+        
+        @param watched reference to the watched object
+        @type QObject
+        @param event reference to the event that occurred
+        @type QEvent
+        @return flag indicating a handled event
+        @rtype bool
+        """
+        if event.type() == QEvent.MouseButtonRelease and \
+                watched == self.clickEdit:
+            self.__modifiers = int(event.modifiers())
+            self.__button = int(event.button())
+            self.__showClickText()
+            return True
+            
+        return False
+    
+    def getClick(self):
+        """
+        Public method to get the entered mouse click sequence.
+        
+        @return tuple containing the modifiers and the mouse button
+        @rtype tuple of Qt.KeyboardModifiers and Qt.MouseButton
+        """
+        return (self.__modifiers, self.__button)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/MouseClickDialog.ui	Thu Jun 25 18:42:55 2015 +0200
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MouseClickDialog</class>
+ <widget class="QDialog" name="MouseClickDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>550</width>
+    <height>111</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Edit Mouse Click</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QGroupBox" name="clickGroup">
+     <property name="title">
+      <string/>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="1" column="0">
+       <widget class="QPushButton" name="clearButton">
+        <property name="toolTip">
+         <string>Press to clear the mouse click sequence.</string>
+        </property>
+        <property name="text">
+         <string>Clear</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QLineEdit" name="clickEdit">
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" colspan="2">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Press the desired modifier keys and the click the desired mouse button.</string>
+        </property>
+        <property name="wordWrap">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</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>MouseClickDialog</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>MouseClickDialog</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>
--- a/Utilities/MouseUtilities.py	Wed Jun 24 19:52:13 2015 +0200
+++ b/Utilities/MouseUtilities.py	Thu Jun 25 18:42:55 2015 +0200
@@ -7,6 +7,8 @@
 Module implementing utility functions related to Mouse stuff.
 """
 
+from __future__ import unicode_literals
+
 from PyQt5.QtCore import Qt, QCoreApplication
 
 import Globals
--- a/eric6.e4p	Wed Jun 24 19:52:13 2015 +0200
+++ b/eric6.e4p	Thu Jun 25 18:42:55 2015 +0200
@@ -781,6 +781,7 @@
     <Source>Preferences/ConfigurationPages/VcsPage.py</Source>
     <Source>Preferences/ConfigurationPages/ViewmanagerPage.py</Source>
     <Source>Preferences/ConfigurationPages/__init__.py</Source>
+    <Source>Preferences/MouseClickDialog.py</Source>
     <Source>Preferences/PreferencesLexer.py</Source>
     <Source>Preferences/ProgramsDialog.py</Source>
     <Source>Preferences/ShortcutDialog.py</Source>
@@ -1524,6 +1525,7 @@
     <Form>Preferences/ConfigurationPages/TrayStarterPage.ui</Form>
     <Form>Preferences/ConfigurationPages/VcsPage.ui</Form>
     <Form>Preferences/ConfigurationPages/ViewmanagerPage.ui</Form>
+    <Form>Preferences/MouseClickDialog.ui</Form>
     <Form>Preferences/ProgramsDialog.ui</Form>
     <Form>Preferences/ShortcutDialog.ui</Form>
     <Form>Preferences/ShortcutsDialog.ui</Form>
@@ -2163,7 +2165,7 @@
               <string>ShowIgnored</string>
             </key>
             <value>
-              <bool>True</bool>
+              <bool>False</bool>
             </value>
           </dict>
         </value>

eric ide

mercurial