Skip to content
Permalink
Browse files
new sexy lineedit widget with builtin clear button
  • Loading branch information
alexbruy committed Dec 3, 2012
1 parent 4215ea7 commit 8cd52d0afd2ee5702e6a08928ac3a64903807b6b
@@ -0,0 +1,60 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
FilterEdit.py
---------------------
Date : October 2012
Copyright : (C) 2012 by Alexander Bruy
Email : alexander dot bruy at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""

__author__ = 'Alexander Bruy'
__date__ = 'October 2012'
__copyright__ = '(C) 2012, Alexander Bruy'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

from PyQt4.QtCore import *
from PyQt4.QtGui import *

import sextante.resources_rc

class FilterLineEdit(QLineEdit):
def __init__(self, parent=None, placeholder="Filter"):
QLineEdit.__init__(self, parent)

if hasattr(self, "setPlaceholderText"):
self.setPlaceholderText(placeholder)

self.btnClear = QToolButton(self)
self.btnClear.setIcon(QIcon(":/sextante/images/clear.png"))
self.btnClear.setCursor(Qt.ArrowCursor)
self.btnClear.setStyleSheet("QToolButton { border: none; padding: 0px; }")
self.btnClear.hide()

self.btnClear.clicked.connect(self.clear)
self.textChanged.connect(self.updateClearButton)

frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
self.setStyleSheet(QString("QLineEdit { padding-right: %1px; } ").arg(self.btnClear.sizeHint().width() + frameWidth + 1))
msz = self.minimumSizeHint()
self.setMinimumSize(max(msz.width(), self.btnClear.sizeHint().height() + frameWidth * 2 + 2),
max(msz.height(), self.btnClear.sizeHint().height() + frameWidth * 2 + 2))

def resizeEvent(self, event):
sz = self.btnClear.sizeHint()
frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
self.btnClear.move(self.rect().right() - frameWidth - sz.width(),
(self.rect().bottom() + 1 - sz.height())/2)

def updateClearButton(self, text):
self.btnClear.setVisible(not text.isEmpty())
@@ -42,8 +42,6 @@

from sextante.ui.ui_SextanteToolbox import Ui_SextanteToolbox

import sextante.resources_rc

try:
_fromUtf8 = QString.fromUtf8
except AttributeError:
@@ -57,13 +55,10 @@ def __init__(self, iface):

self.iface=iface

self.btnClear.setIcon(QIcon(":/sextante/images/clear.png"))

self.externalAppsButton.clicked.connect(self.configureProviders)
self.searchBox.textChanged.connect(self.fillTree)
self.algorithmTree.customContextMenuRequested.connect(self.showPopupMenu)
self.algorithmTree.doubleClicked.connect(self.executeAlgorithm)
self.btnClear.clicked.connect(self.clearFilter)

self.fillTree()

@@ -73,9 +68,6 @@ def algsListHasChanged(self):
def updateTree(self):
Sextante.updateAlgsList()

def clearFilter(self):
self.searchBox.clear()

def configureProviders(self):
webbrowser.open("http://docs.qgis.org/html/en/user_manual/sextante/3rdParty.html")
#=======================================================================
@@ -30,21 +30,7 @@ additional algorithm providers</string>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>2</number>
</property>
<item>
<widget class="QLineEdit" name="searchBox"/>
</item>
<item>
<widget class="QToolButton" name="btnClear">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
<widget class="FilterLineEdit" name="searchBox"/>
</item>
<item>
<widget class="QTreeWidget" name="algorithmTree">
@@ -64,6 +50,13 @@ additional algorithm providers</string>
</layout>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>FilterLineEdit</class>
<extends>QLineEdit</extends>
<header>sextante.gui.FilterLineEdit</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

0 comments on commit 8cd52d0

Please sign in to comment.