12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # flake8: noqa
- #
- # Copyright (C) 2011 Michael Pitidis, Hussein Abdulwahid.
- #
- # This file is part of Labelme.
- #
- # Labelme 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 3 of the License, or
- # (at your option) any later version.
- #
- # Labelme is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with Labelme. If not, see <http://www.gnu.org/licenses/>.
- #
- from math import sqrt
- try:
- from PyQt5.QtGui import *
- from PyQt5.QtCore import *
- from PyQt5.QtWidgets import *
- except ImportError:
- from PyQt4.QtGui import *
- from PyQt4.QtCore import *
- def newIcon(icon):
- return QIcon(':/' + icon)
- def newButton(text, icon=None, slot=None):
- b = QPushButton(text)
- if icon is not None:
- b.setIcon(newIcon(icon))
- if slot is not None:
- b.clicked.connect(slot)
- return b
- def newAction(parent, text, slot=None, shortcut=None, icon=None,
- tip=None, checkable=False, enabled=True):
- """Create a new action and assign callbacks, shortcuts, etc."""
- a = QAction(text, parent)
- if icon is not None:
- a.setIcon(newIcon(icon))
- if shortcut is not None:
- if isinstance(shortcut, (list, tuple)):
- a.setShortcuts(shortcut)
- else:
- a.setShortcut(shortcut)
- if tip is not None:
- a.setToolTip(tip)
- a.setStatusTip(tip)
- if slot is not None:
- a.triggered.connect(slot)
- if checkable:
- a.setCheckable(True)
- a.setEnabled(enabled)
- return a
- def addActions(widget, actions):
- for action in actions:
- if action is None:
- widget.addSeparator()
- elif isinstance(action, QMenu):
- widget.addMenu(action)
- else:
- widget.addAction(action)
- def labelValidator():
- return QRegExpValidator(QRegExp(r'^[^ \t].+'), None)
- class struct(object):
- def __init__(self, **kwargs):
- self.__dict__.update(kwargs)
- def distance(p):
- return sqrt(p.x() * p.x() + p.y() * p.y())
- def fmtShortcut(text):
- mod, key = text.split('+', 1)
- return '<b>%s</b>+<b>%s</b>' % (mod, key)
|