Example #1
0
class SnappingDock(DockWidget):
    def __init__(self, iface, parent=None):
        super(SnappingDock, self).__init__(parent)
        self._iface = iface

        self.setWindowTitle(u'Snapping Panel')
        self.setObjectName(u'snappingDock')

        self._listWidget = QListWidget(self)
        self._listWidget.setSelectionMode(QAbstractItemView.NoSelection)
        self._listWidget.setDropIndicatorShown(False)

        self._dockLayout = QVBoxLayout(self)
        self._dockLayout.setObjectName(u'dockLayout')
        self._dockLayout.addWidget(self._listWidget)

        self._dockContents = QWidget(self)
        self._dockContents.setObjectName(u'dockContents')
        self._dockContents.setLayout(self._dockLayout)
        self.setWidget(self._dockContents)

        # Keep up-to-date with layers added and removed
        QgsMapLayerRegistry.instance().layersAdded.connect(self._layersAdded)
        QgsMapLayerRegistry.instance().layersRemoved.connect(
            self._layersRemoved)

    def refresh(self):
        self._listWidget.clear()
        layers = QgsMapLayerRegistry.instance().mapLayers()
        layerIds = layers.keys()
        sorted(layerIds)
        for layerId in layerIds:
            self.addLayer(layers[layerId])

    def addLayer(self, layer):
        if (layer is None or not layer.isValid()
                or layer.type() != QgsMapLayer.VectorLayer):
            return
        newItem = QListWidgetItem()
        newItem.setData(Qt.UserRole, layer.id())
        # newItem.setSizeHint(layerWidget.minimumSizeHint())
        self._listWidget.addItem(newItem)
        self._listWidget.setItemWidget(newItem,
                                       LayerSnappingWidget(layer, self))

    def removeLayer(self, layerId):
        for idx in range(0, self._listWidget.count() - 1):
            if self._listWidget.item(idx).data() == layerId:
                self._listWidget.takeItem(idx)
                return

    def _layersAdded(self, layers):
        for layer in layers:
            self.addLayer(layer)

    def _layersRemoved(self, layerIds):
        for idx in range(self._listWidget.count() - 1, 0):
            if self._listWidget.item(idx).data() in layerIds:
                self._listWidget.takeItem(idx)
Example #2
0
class SnappingDock(DockWidget):

    def __init__(self, iface, parent=None):
        super(SnappingDock, self).__init__(parent)
        self._iface = iface

        self.setWindowTitle(u'Snapping Panel')
        self.setObjectName(u'snappingDock')

        self._listWidget = QListWidget(self)
        self._listWidget.setSelectionMode(QAbstractItemView.NoSelection)
        self._listWidget.setDropIndicatorShown(False)

        self._dockLayout = QVBoxLayout(self)
        self._dockLayout.setObjectName(u'dockLayout')
        self._dockLayout.addWidget(self._listWidget)

        self._dockContents = QWidget(self)
        self._dockContents.setObjectName(u'dockContents')
        self._dockContents.setLayout(self._dockLayout)
        self.setWidget(self._dockContents)

        # Keep up-to-date with layers added and removed
        QgsMapLayerRegistry.instance().layersAdded.connect(self._layersAdded)
        QgsMapLayerRegistry.instance().layersRemoved.connect(self._layersRemoved)

    def refresh(self):
        self._listWidget.clear()
        layers = QgsMapLayerRegistry.instance().mapLayers()
        layerIds = layers.keys()
        sorted(layerIds)
        for layerId in layerIds:
            self.addLayer(layers[layerId])

    def addLayer(self, layer):
        if (layer is None or not layer.isValid() or layer.type() != QgsMapLayer.VectorLayer):
            return
        newItem = QListWidgetItem()
        newItem.setData(Qt.UserRole, layer.id())
        # newItem.setSizeHint(layerWidget.minimumSizeHint())
        self._listWidget.addItem(newItem)
        self._listWidget.setItemWidget(newItem, LayerSnappingWidget(layer, self))

    def removeLayer(self, layerId):
        for idx in range(0, self._listWidget.count() - 1):
            if self._listWidget.item(idx).data() == layerId:
                self._listWidget.takeItem(idx)
                return

    def _layersAdded(self, layers):
        for layer in layers:
            self.addLayer(layer)

    def _layersRemoved(self, layerIds):
        for idx in range(self._listWidget.count() - 1, 0):
            if self._listWidget.item(idx).data() in layerIds:
                self._listWidget.takeItem(idx)
Example #3
0
class DownloadTab(QWidget):
  current_row = 1
  def __init__(self, parent=None):
    QWidget.__init__(self, parent)

    vLayout = QVBoxLayout(self)
    
    self.downloads_list = QListWidget()
    vLayout.addWidget(self.downloads_list)

  def addDownloadItem(self, title, size):
    downloadItem = downloadItemClass(title, size)
    item = QListWidgetItem("\n\n\n\n")
    self.downloads_list.insertItem(self.current_row, item)
    self.downloads_list.setItemWidget(item, downloadItem)
    self.current_row += 1
    return downloadItem
Example #4
0
class LeapFlow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.controller = Controller()
        self.listener = LeapListener(self)
        self.controller.add_listener(self.listener)

        self.mode = "gallery"
        self.scroll = False
        self.direction = ""
        self.direction_x = 0
        self.scroll_velocity = 0
        self.current_index = 0

        # List containing images for the gallery
        self.list_view = QListWidget()
        self.list_view.setFlow(0)
        self.list_view.setHorizontalScrollMode(1)
        self.list_view.setMouseTracking(True)
        self.list_view.itemClicked.connect(self.show_image)

        # Setting the style of the ListView, background, item selected, etc
        self.list_view.setStyleSheet(
            """
				QListWidget::item:hover {background: transparent;}
				QListWidget::item:disabled:hover {background: transparent;}
				QListWidget::item:hover:!active {background: transparent;}
				QListWidget::item:selected:active {background: transparent;}
	            QListWidget::item:selected:!active {background: transparent;}
	            QListWidget::item:selected:disabled {background: transparent;}
	            QListWidget::item:selected:!disabled {background: transparent;}
	            QListWidget {background: #2C3539}
			"""
        )

        # Image viewer
        self.scene = QGraphicsScene()
        self.viewer = QGraphicsView(self.scene)

        self.stackedWidget = QStackedWidget()
        self.stackedWidget.addWidget(self.list_view)
        self.stackedWidget.addWidget(self.viewer)

        self.setCentralWidget(self.stackedWidget)
        self.resize(500, 400)
        self.showMaximized()

        scan = ScanLibrary("/home/chris/Example")
        threads.append(scan)
        self.connect(scan, SIGNAL(scan.signal), self.add_images_to_list)
        scan.start()

        self.connect(self, SIGNAL("scrollChanged(bool)"), self.scroll_view)

    def setScroll(self, scroll):
        """Emit signal to scroll the view"""
        if self.scroll != scroll:
            self.scroll = scroll
            self.emit(SIGNAL("scrollChanged(bool)"), scroll)

    def scroll_view(self):
        """Scroll the view based on scroll velocity and direction"""

        x = self.direction_x * self.scroll_velocity / 100
        bar_x = self.list_view.horizontalScrollBar().value()
        self.list_view.horizontalScrollBar().setValue(bar_x + x)

    def add_images_to_list(self):
        """To add a widget to the listview you must add a QListWidgetItem
		and replace with your widget"""

        for image in library:
            item = QListWidgetItem()
            pixmap = QPixmap.fromImage(QImage(library[image]))
            label = QLabel()
            label.setPixmap(pixmap.scaled(600, 400))
            item.setSizeHint(label.sizeHint())
            item.setData(0, library[image])
            self.list_view.addItem(item)
            self.list_view.setItemWidget(item, label)

    def show_image(self, item):
        """"Display the selected image"""

        self.current_index = self.list_view.indexFromItem(item).row()
        self.scene.addPixmap((QPixmap.fromImage(QImage(item.text()))).scaled(self.viewer.size()))

        self.stackedWidget.setCurrentIndex(1)
        self.mode = "viewer"

    def previous_image(self):
        """Load previous image"""

        if self.current_index - 1 >= 0:
            self.current_index -= 1
            self.load_image()

    def next_image(self):
        """Load next image"""

        if self.current_index + 1 <= len(library.keys()) - 1:
            self.current_index += 1
            self.load_image()

    def load_image(self):
        """Load the image in self.current_index"""

        self.scene.addPixmap(QPixmap.fromImage(QImage(library[library.keys()[self.current_index]])))
Example #5
0
class LeapFlow (QMainWindow):

	def __init__ (self):
		QMainWindow.__init__ (self)

		self.controller = Controller ()
		self.listener = LeapListener (self)
		self.controller.add_listener (self.listener)

		self.mode = "gallery"
		self.scroll = False
		self.direction = ""
		self.direction_x = 0
		self.scroll_velocity = 0
		self.current_index = 0

		# List containing images for the gallery
		self.list_view = QListWidget ()
		self.list_view.setFlow (0)
		self.list_view.setHorizontalScrollMode (1)
		self.list_view.setMouseTracking (True)
		self.list_view.itemClicked.connect (self.show_image)

		# Setting the style of the ListView, background, item selected, etc
		self.list_view.setStyleSheet ("""
				QListWidget::item:hover {background: transparent;}
				QListWidget::item:disabled:hover {background: transparent;}
				QListWidget::item:hover:!active {background: transparent;}
				QListWidget::item:selected:active {background: transparent;}
	            QListWidget::item:selected:!active {background: transparent;}
	            QListWidget::item:selected:disabled {background: transparent;}
	            QListWidget::item:selected:!disabled {background: transparent;}
	            QListWidget {background: #2C3539}
			""")

		# Image viewer
		self.scene = QGraphicsScene ()
		self.viewer = QGraphicsView (self.scene)

		self.stackedWidget = QStackedWidget ()
		self.stackedWidget.addWidget (self.list_view)
		self.stackedWidget.addWidget (self.viewer)

		self.setCentralWidget (self.stackedWidget)
		self.resize (500, 400)
		self.showMaximized ()

		scan = ScanLibrary ("/home/chris/Example")
		threads.append (scan)
		self.connect (scan, SIGNAL (scan.signal), self.add_images_to_list)
		scan.start ()

		self.connect (self, SIGNAL ("scrollChanged(bool)"), self.scroll_view)

	def setScroll (self, scroll):
		"""Emit signal to scroll the view"""
		if (self.scroll != scroll):
			self.scroll = scroll
			self.emit (SIGNAL("scrollChanged(bool)"), scroll)

	def scroll_view (self):
		"""Scroll the view based on scroll velocity and direction"""

		x = self.direction_x * self.scroll_velocity / 100
		bar_x = self.list_view.horizontalScrollBar ().value ()
		self.list_view.horizontalScrollBar ().setValue (bar_x + x)

	def add_images_to_list (self):
		"""To add a widget to the listview you must add a QListWidgetItem
		and replace with your widget"""

		for image in library:
			item = QListWidgetItem ()
			pixmap = QPixmap.fromImage (QImage (library[image]))
			label = QLabel ()
			label.setPixmap (pixmap.scaled (600, 400))
			item.setSizeHint (label.sizeHint ())
			item.setData (0, library[image])
			self.list_view.addItem (item)
			self.list_view.setItemWidget (item, label)

	def show_image (self, item):
		""""Display the selected image"""

		self.current_index = self.list_view.indexFromItem (item).row ()
		self.scene.addPixmap ((QPixmap.fromImage (QImage (item.text()))).scaled (self.viewer.size()))

		self.stackedWidget.setCurrentIndex (1)
		self.mode = "viewer"

	def previous_image (self):
		"""Load previous image"""

		if self.current_index - 1 >= 0:
			self.current_index -= 1
			self.load_image ()

	def next_image (self):
		"""Load next image"""

		if self.current_index + 1 <= len(library.keys ()) - 1:
			self.current_index += 1
			self.load_image ()

	def load_image (self):
		"""Load the image in self.current_index"""

		self.scene.addPixmap (QPixmap.fromImage (QImage (library[library.keys()[self.current_index]])))
Example #6
0
class PopupCompleter(QFrame):
    def __init__(self):
        QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.ToolTip)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.listWidget = QListWidget()
        self.listWidget.setMinimumHeight(350)
        vbox.addWidget(self.listWidget)

        self.listWidget.currentItemChanged.connect(self._repaint_items)

    def _repaint_items(self, current, previous):
        if current is not None:
            widget = self.listWidget.itemWidget(current)
            if widget is not None:
                widget.set_selected()
        if previous is not None:
            widget = self.listWidget.itemWidget(previous)
            if widget is not None:
                widget.set_not_selected()

    def reload(self, model):
        """Reload the data of the Popup Completer, and restart the state."""
        self.listWidget.clear()
        self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        self.listWidget.setCurrentRow(8)

    def clear(self):
        """Remove all the items of the list (deleted), and reload the help."""
        self.listWidget.clear()

    def refresh(self, model, has_text=True):
        """Refresh the list when the user search for some word."""
        self.listWidget.clear()
        if not has_text:
            self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        if model:
            self.listWidget.setCurrentItem(model[0][0])
        else:
            self.add_no_found()

    def fetch_more(self, model):
        """Add more items to the list on user scroll."""
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])

    def add_no_found(self):
        """Load no results found message"""
        noFoundItem = self._create_help_item(resources.IMAGES['delete'],
                                             translations.TR_NO_RESULTS)
        self.listWidget.addItem(noFoundItem)

    def add_help(self):
        #Load help
        fileItem = self._create_help_item(resources.IMAGES['locate-file'],
                                          translations.TR_ONLY_FILES)
        self.listWidget.addItem(fileItem)
        classItem = self._create_help_item(resources.IMAGES['locate-class'],
                                           translations.TR_ONLY_CLASSES)
        self.listWidget.addItem(classItem)
        methodItem = self._create_help_item(
            resources.IMAGES['locate-function'], translations.TR_ONLY_METHODS)
        self.listWidget.addItem(methodItem)
        attributeItem = self._create_help_item(
            resources.IMAGES['locate-attributes'],
            translations.TR_ONLY_ATRIBUTES)
        self.listWidget.addItem(attributeItem)
        thisFileItem = self._create_help_item(
            resources.IMAGES['locate-on-this-file'],
            translations.TR_ONLY_CLASSES_METHODS)
        self.listWidget.addItem(thisFileItem)
        tabsItem = self._create_help_item(resources.IMAGES['locate-tab'],
                                          translations.TR_ONLY_CURRENT_TABS)
        self.listWidget.addItem(tabsItem)
        lineItem = self._create_help_item(resources.IMAGES['locate-line'],
                                          translations.TR_GO_TO_LINE)
        self.listWidget.addItem(lineItem)
        nonPythonItem = self._create_help_item(
            resources.IMAGES['locate-nonpython'],
            translations.TR_ONLY_NON_PYTHON)
        self.listWidget.addItem(nonPythonItem)

    def _create_help_item(self, image, text):
        Item = QListWidgetItem(QIcon(image), text)
        font = Item.font()
        font.setBold(True)
        Item.setSizeHint(QSize(20, 30))
        Item.setBackground(QBrush(Qt.lightGray))
        Item.setForeground(QBrush(Qt.black))
        Item.setFont(font)
        return Item
Example #7
0
class PopupCompleter(QFrame):
    def __init__(self):
        QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.ToolTip)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.listWidget = QListWidget()
        self.listWidget.setMinimumHeight(300)
        vbox.addWidget(self.listWidget)

    def reload(self, model):
        """Reload the data of the Popup Completer, and restart the state."""
        self.listWidget.clear()
        self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        self.listWidget.setCurrentRow(6)

    def clear(self):
        """Remove all the items of the list (deleted), and reload the help."""
        self.listWidget.clear()

    def refresh(self, model):
        """Refresh the list when the user search for some word."""
        self.listWidget.clear()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        if model:
            self.listWidget.setCurrentItem(model[0][0])

    def fetch_more(self, model):
        """Add more items to the list on user scroll."""
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])

    def add_help(self):
        #Load help
        fileItem = QListWidgetItem(QIcon(resources.IMAGES['locate-file']),
                                   '@\t(Filter only by Files)')
        font = fileItem.font()
        font.setBold(True)
        fileItem.setSizeHint(QSize(20, 30))
        fileItem.setBackground(QBrush(Qt.lightGray))
        fileItem.setForeground(QBrush(Qt.black))
        fileItem.setFont(font)
        self.listWidget.addItem(fileItem)
        classItem = QListWidgetItem(QIcon(resources.IMAGES['locate-class']),
                                    '<\t(Filter only by Classes)')
        self.listWidget.addItem(classItem)
        classItem.setSizeHint(QSize(20, 30))
        classItem.setBackground(QBrush(Qt.lightGray))
        classItem.setForeground(QBrush(Qt.black))
        classItem.setFont(font)
        methodItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-function']),
            '>\t(Filter only by Methods)')
        self.listWidget.addItem(methodItem)
        methodItem.setSizeHint(QSize(20, 30))
        methodItem.setBackground(QBrush(Qt.lightGray))
        methodItem.setForeground(QBrush(Qt.black))
        methodItem.setFont(font)
        attributeItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-attributes']),
            '-\t(Filter only by Attributes)')
        self.listWidget.addItem(attributeItem)
        attributeItem.setSizeHint(QSize(20, 30))
        attributeItem.setBackground(QBrush(Qt.lightGray))
        attributeItem.setForeground(QBrush(Qt.black))
        attributeItem.setFont(font)
        thisFileItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-on-this-file']),
            '.\t(Filter only by Classes and Methods in this File)')
        font = thisFileItem.font()
        font.setBold(True)
        thisFileItem.setSizeHint(QSize(20, 30))
        thisFileItem.setBackground(QBrush(Qt.lightGray))
        thisFileItem.setForeground(QBrush(Qt.black))
        thisFileItem.setFont(font)
        self.listWidget.addItem(thisFileItem)
        nonPythonItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-nonpython']),
            '!\t(Filter only by Non Python Files)')
        self.listWidget.addItem(nonPythonItem)
        nonPythonItem.setSizeHint(QSize(20, 30))
        nonPythonItem.setBackground(QBrush(Qt.lightGray))
        nonPythonItem.setForeground(QBrush(Qt.black))
        nonPythonItem.setFont(font)
Example #8
0
class PopupCompleter(QFrame):

    def __init__(self):
        QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.ToolTip)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.listWidget = QListWidget()
        self.listWidget.setMinimumHeight(300)
        vbox.addWidget(self.listWidget)

    def reload(self, model):
        """Reload the data of the Popup Completer, and restart the state."""
        self.listWidget.clear()
        self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        self.listWidget.setCurrentRow(6)

    def clear(self):
        """Remove all the items of the list (deleted), and reload the help."""
        self.listWidget.clear()

    def refresh(self, model):
        """Refresh the list when the user search for some word."""
        self.listWidget.clear()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        if model:
            self.listWidget.setCurrentItem(model[0][0])

    def fetch_more(self, model):
        """Add more items to the list on user scroll."""
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])

    def add_help(self):
        #Load help
        fileItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-file']),
                '@\t(Filter only by Files)')
        font = fileItem.font()
        font.setBold(True)
        fileItem.setSizeHint(QSize(20, 30))
        fileItem.setBackground(QBrush(Qt.lightGray))
        fileItem.setForeground(QBrush(Qt.black))
        fileItem.setFont(font)
        self.listWidget.addItem(fileItem)
        classItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-class']),
                '<\t(Filter only by Classes)')
        self.listWidget.addItem(classItem)
        classItem.setSizeHint(QSize(20, 30))
        classItem.setBackground(QBrush(Qt.lightGray))
        classItem.setForeground(QBrush(Qt.black))
        classItem.setFont(font)
        methodItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-function']),
                '>\t(Filter only by Methods)')
        self.listWidget.addItem(methodItem)
        methodItem.setSizeHint(QSize(20, 30))
        methodItem.setBackground(QBrush(Qt.lightGray))
        methodItem.setForeground(QBrush(Qt.black))
        methodItem.setFont(font)
        attributeItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-attributes']),
                '-\t(Filter only by Attributes)')
        self.listWidget.addItem(attributeItem)
        attributeItem.setSizeHint(QSize(20, 30))
        attributeItem.setBackground(QBrush(Qt.lightGray))
        attributeItem.setForeground(QBrush(Qt.black))
        attributeItem.setFont(font)
        thisFileItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-on-this-file']),
                '.\t(Filter only by Classes and Methods in this File)')
        font = thisFileItem.font()
        font.setBold(True)
        thisFileItem.setSizeHint(QSize(20, 30))
        thisFileItem.setBackground(QBrush(Qt.lightGray))
        thisFileItem.setForeground(QBrush(Qt.black))
        thisFileItem.setFont(font)
        self.listWidget.addItem(thisFileItem)
        nonPythonItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-nonpython']),
                '!\t(Filter only by Non Python Files)')
        self.listWidget.addItem(nonPythonItem)
        nonPythonItem.setSizeHint(QSize(20, 30))
        nonPythonItem.setBackground(QBrush(Qt.lightGray))
        nonPythonItem.setForeground(QBrush(Qt.black))
        nonPythonItem.setFont(font)
Example #9
0
class PopupCompleter(QFrame):

    def __init__(self):
        QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.ToolTip)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.listWidget = QListWidget()
        self.listWidget.setMinimumHeight(350)
        vbox.addWidget(self.listWidget)

        self.listWidget.currentItemChanged.connect(self._repaint_items)

    def _repaint_items(self, current, previous):
        if current is not None:
            widget = self.listWidget.itemWidget(current)
            if widget is not None:
                widget.set_selected()
        if previous is not None:
            widget = self.listWidget.itemWidget(previous)
            if widget is not None:
                widget.set_not_selected()

    def reload(self, model):
        """Reload the data of the Popup Completer, and restart the state."""
        self.listWidget.clear()
        self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        self.listWidget.setCurrentRow(8)

    def clear(self):
        """Remove all the items of the list (deleted), and reload the help."""
        self.listWidget.clear()

    def refresh(self, model, has_text=True):
        """Refresh the list when the user search for some word."""
        self.listWidget.clear()
        if not has_text:
            self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        if model:
            self.listWidget.setCurrentItem(model[0][0])
        else:
            self.add_no_found()

    def fetch_more(self, model):
        """Add more items to the list on user scroll."""
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])

    def add_no_found(self):
        """Load no results found message"""
        noFoundItem = self._create_help_item(resources.IMAGES['delete'],
                translations.TR_NO_RESULTS)
        self.listWidget.addItem(noFoundItem)

    def add_help(self):
        #Load help
        fileItem = self._create_help_item(resources.IMAGES['locate-file'],
                         translations.TR_ONLY_FILES)
        self.listWidget.addItem(fileItem)
        classItem = self._create_help_item(resources.IMAGES['locate-class'],
                        translations.TR_ONLY_CLASSES)
        self.listWidget.addItem(classItem)
        methodItem = self._create_help_item(
                        resources.IMAGES['locate-function'],
                        translations.TR_ONLY_METHODS)
        self.listWidget.addItem(methodItem)
        attributeItem = self._create_help_item(
                            resources.IMAGES['locate-attributes'],
                            translations.TR_ONLY_ATRIBUTES)
        self.listWidget.addItem(attributeItem)
        thisFileItem = self._create_help_item(
                    resources.IMAGES['locate-on-this-file'],
                    translations.TR_ONLY_CLASSES_METHODS)
        self.listWidget.addItem(thisFileItem)
        tabsItem = self._create_help_item(resources.IMAGES['locate-tab'],
                translations.TR_ONLY_CURRENT_TABS)
        self.listWidget.addItem(tabsItem)
        lineItem = self._create_help_item(resources.IMAGES['locate-line'],
                translations.TR_GO_TO_LINE)
        self.listWidget.addItem(lineItem)
        nonPythonItem = self._create_help_item(
                resources.IMAGES['locate-nonpython'],
                translations.TR_ONLY_NON_PYTHON)
        self.listWidget.addItem(nonPythonItem)

    def _create_help_item(self, image, text):
        Item = QListWidgetItem(QIcon(image), text)
        font = Item.font()
        font.setBold(True)
        Item.setSizeHint(QSize(20, 30))
        Item.setBackground(QBrush(Qt.lightGray))
        Item.setForeground(QBrush(Qt.black))
        Item.setFont(font)
        return Item
Example #10
0
class GitStatus(QDialog):

    def __init__(self, plugin, git, path):
        QDialog.__init__(self)
        self.git = git
        self.plugin = plugin
        self.setWindowTitle('Git status')

        layout = QGridLayout(self)

        branches = self.git.branch(unicode(path))

        self.s_branches = QListWidget()

        if len(branches) > 0:
            self.s_branches.addItems(branches[1:])
            self.actual_branch = QLabel("<h2>{0}</h2>".format(branches[0]))
        else:
            self.actual_branch = QLabel()

        branch = QLabel("<h2>Branches</h2>")
        change_branch = QPushButton("Change to")
        merge_branches = QPushButton("Merge branch")

        H = QHBoxLayout()
        delete_branch = QPushButton("Delete branch")
        add_branch = QPushButton("Add branch")
        H.addWidget(add_branch)
        H.addWidget(delete_branch)

        self.lists = []

        no_staged = QLabel("<h2>No staged</h2>")

        untracked_files = QLabel("Untracked files")
        self.untracked_files = QListWidget()
        self.lists.append(self.untracked_files)

        modified_files = QLabel("Modified files")
        self.modified_files = QListWidget()
        self.lists.append(self.modified_files)

        deleted_files = QLabel("Deleted files")
        self.deleted_files = QListWidget()
        self.lists.append(self.deleted_files)

        staged = QLabel("<h2>Staged</h2>")

        added_files = QLabel("Added files")
        self.added_files = QListWidget()
        self.lists.append(self.added_files)

        s_modified_files = QLabel("Modified files")
        self.s_modified_files = QListWidget()
        self.lists.append(self.s_modified_files)

        s_deleted_files = QLabel("Deleted files")
        self.s_deleted_files = QListWidget()
        self.lists.append(self.s_deleted_files)

        layout.addWidget(self.actual_branch, 0, 0, Qt.AlignHCenter)
        layout.addWidget(change_branch, 1, 0)
        layout.addWidget(merge_branches, 2, 0)
        layout.addWidget(no_staged, 3, 0)
        layout.addWidget(untracked_files, 4, 0)
        layout.addWidget(self.untracked_files, 5, 0)
        layout.addWidget(modified_files, 6, 0)
        layout.addWidget(self.modified_files, 7, 0)
        layout.addWidget(deleted_files, 8, 0)
        layout.addWidget(self.deleted_files, 9, 0)

        layout.addWidget(branch, 0, 1)
        layout.addWidget(self.s_branches, 1, 1)
        layout.addLayout(H, 2, 1)
        layout.addWidget(staged, 3, 1)
        layout.addWidget(added_files, 4, 1)
        layout.addWidget(self.added_files, 5, 1)
        layout.addWidget(s_modified_files, 6, 1)
        layout.addWidget(self.s_modified_files, 7, 1)
        layout.addWidget(s_deleted_files, 8, 1)
        layout.addWidget(self.s_deleted_files, 9, 1)

        self.fill(self.git.no_staged["?"], self.untracked_files)
        self.fill(self.git.no_staged["M"], self.modified_files)
        self.fill(self.git.no_staged["D"], self.deleted_files)

        self.fill(self.git.staged["A"], self.added_files)
        self.fill(self.git.staged["M"], self.s_modified_files)
        self.fill(self.git.staged["D"], self.s_deleted_files)

        self.staged_b = QPushButton('Stage files', self)
        self.unstage_b = QPushButton("Unstage files", self)
        self.commit_b = QPushButton('Commit files', self)
        self.uncommit_b = QPushButton("Uncommit files", self)

        layout.addWidget(self.staged_b, 10, 0)
        layout.addWidget(self.unstage_b, 11, 0)
        layout.addWidget(self.commit_b, 10, 1)
        layout.addWidget(self.uncommit_b, 11, 1)

        self.setLayout(layout)

        self.connect(self.staged_b, SIGNAL('clicked()'), self.add)
        self.connect(self.unstage_b, SIGNAL('clicked()'), self.unstage)
        self.connect(self.commit_b, SIGNAL('clicked()'), self.commit)
        self.connect(self.uncommit_b, SIGNAL('clicked()'), self.uncommit)
        self.connect(change_branch, SIGNAL("clicked()"), self.change_branch)
        self.connect(add_branch, SIGNAL("clicked()"), self.add_branch)
        self.connect(delete_branch, SIGNAL("clicked()"), self.delete_branch)
        self.connect(merge_branches, SIGNAL("clicked()"), self.merge_branches)

    def fill(self, a_list, widget_list):
        for x in a_list:

            item = QListWidgetItem()
            widget_list.addItem(item)
            check_box = QCheckBox(x)
            widget_list.setItemWidget(item, check_box)

    def add(self):
        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.untracked_files.count())):

            item = self.untracked_files.item(pos)
            widget = self.untracked_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, text)
                self.untracked_files.removeItemWidget(item)
                self.untracked_files.takeItem(pos)
                item = QListWidgetItem()
                self.added_files.addItem(item)
                check_box = QCheckBox(text)
                self.added_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.modified_files.count())):

            item = self.modified_files.item(pos)
            widget = self.modified_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, widget.text())
                self.modified_files.removeItemWidget(item)
                self.modified_files.takeItem(pos)
                item = QListWidgetItem()
                self.s_modified_files.addItem(item)
                check_box = QCheckBox(text)
                self.s_modified_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.deleted_files.count())):

            item = self.deleted_files.item(pos)
            widget = self.deleted_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, widget.text())
                self.deleted_files.removeItemWidget(item)
                self.deleted_files.takeItem(pos)
                item = QListWidgetItem()
                self.s_deleted_files.addItem(item)
                check_box = QCheckBox(text)
                self.s_deleted_files.setItemWidget(item, check_box)

    def unstage(self):

        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.untracked_files.count())):

            item = self.untracked_files.item(pos)
            widget = self.untracked_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.untracked_files.removeItemWidget(item)
                self.untracked_files.takeItem(pos)

        for pos in reversed(xrange(self.modified_files.count())):

            item = self.modified_files.item(pos)
            widget = self.modified_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.modified_files.removeItemWidget(item)
                self.modified_files.takeItem(pos)

        for pos in reversed(xrange(self.deleted_files.count())):

            item = self.deleted_files.item(pos)
            widget = self.deleted_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.deleted_files.removeItemWidget(item)
                self.deleted_files.takeItem(pos)

    def commit(self):

        msg = QInputDialog.getText(self, "Commit message", "Commit Message:")

        if msg[1] == False:
            return(0)

        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.added_files.count())):

            item = self.added_files.item(pos)
            widget = self.added_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, str(widget.text()), msg[0])
                self.added_files.removeItemWidget(item)
                self.added_files.takeItem(pos)

        for pos in reversed(xrange(self.s_modified_files.count())):

            item = self.s_modified_files.item(pos)
            widget = self.s_modified_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, widget.text(), msg[0])
                self.s_modified_files.removeItemWidget(item)
                self.s_modified_files.takeItem(pos)

        for pos in reversed(xrange(self.s_deleted_files.count())):

            item = self.s_deleted_files.item(pos)
            widget = self.s_deleted_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, widget.text(), msg[0])
                self.s_deleted_files.takeItem(pos)
                self.s_deleted_files.removeItemWidget(item)

    def uncommit(self):
        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.added_files.count())):

            item = self.added_files.item(pos)
            widget = self.added_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, str(widget.text()))
                self.added_files.removeItemWidget(item)
                self.added_files.takeItem(pos)
                item = QListWidgetItem()
                self.untracked_files.addItem(item)
                check_box = QCheckBox(text)
                self.untracked_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.s_modified_files.count())):

            item = self.s_modified_files.item(pos)
            widget = self.s_modified_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, widget.text())
                self.s_modified_files.removeItemWidget(item)
                self.s_modified_files.takeItem(pos)
                item = QListWidgetItem()
                self.modified_files.addItem(item)
                check_box = QCheckBox(text)
                self.modified_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.s_deleted_files.count())):

            item = self.s_deleted_files.item(pos)
            widget = self.s_deleted_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, widget.text())
                self.s_deleted_files.removeItemWidget(item)
                self.s_deleted_files.takeItem(pos)
                item = QListWidgetItem()
                self.deleted_files.addItem(item)
                check_box = QCheckBox(text)
                self.deleted_files.setItemWidget(item, check_box)

    def change_branch(self):

        path = self.plugin.editor.get_project_owner()

        item = self.s_branches.currentItem()

        if item and not self.something():
            text = item.text()
            self.git.change_branch(path, text)
            self.s_branches.clear()
            self.s_branches.addItems(self.git.branch(unicode(path))[1:])
            self.actual_branch.setText("<h2>{0}<h2>".format(text))
        if self.something():
            v = QMessageBox()
            v.setText("Error: you have unsaved changes")
            v.setIcon(v.Warning)
            v.exec_()

    def add_branch(self):

        path = self.plugin.editor.get_project_owner()

        msg = QInputDialog.getText(self, "New branch", "Branch Name:")

        if msg[1] == False:
            return(0)

        self.git.add_branch(path, msg[0])
        self.s_branches.clear()
        self.s_branches.addItems(self.git.branch(unicode(path))[1:])

    def delete_branch(self):
        path = self.plugin.editor.get_project_owner()
        item = self.s_branches.currentItem()
        if item:
            text = str(item.text())
            call = self.git.delete_branch(path, text)

            if not call:
                self.s_branches.clear()
                self.s_branches.addItems(self.git.branch(unicode(path))[1:])

            else:
                m = QMessageBox()
                m.setText("<h2>" + call + "</h2>")
                m.setInformativeText("Force deletion?")
                m.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
                m.setDefaultButton(QMessageBox.Cancel)
                c = m.exec_()
                if c == QMessageBox.Ok:

                    self.git.force_delete_branch(path, text)
                    self.s_branches.clear()

                    self.s_branches.addItems(self.git.branch(unicode(path))[1:])

    def merge_branches(self):
        path = self.plugin.editor.get_project_owner()
        item = self.s_branches.currentItem()
        if item:
            text = str(item.text())
            call = self.git.merge_branches(path, text)
            if call:
                m = QMessageBox()
                m.setText(call)
                m.setInformativeText("Unknown")
                m.setIcon(m.Critical)
                m.exec_()

    def something(self):
        for x in self.lists:
            if x.count() > 0:
                return True
        return False
Example #11
0
class ComboCheckBox(QComboBox):
    def __init__(self, itemdicts):  # items==[str,str...]
        super(ComboCheckBox, self).__init__()

        self.itemdict = itemdicts
        self.items = self.itemdict.keys()
        self.items.insert(0, u'全部')
        self.row_num = len(self.items)
        self.Selectedrow_num = 0
        self.qCheckBox = []
        self.qLineEdit = QLineEdit()
        self.qLineEdit.setReadOnly(True)
        self.qListWidget = QListWidget()
        self.addQCheckBox(0)
        self.qCheckBox[0].stateChanged.connect(self.All)
        for i in range(1, self.row_num):
            self.addQCheckBox(i)
            self.qCheckBox[i].stateChanged.connect(self.show)
        self.setModel(self.qListWidget.model())
        self.setView(self.qListWidget)
        self.setLineEdit(self.qLineEdit)
        self.show()

        # self.qListWidget.setAlternatingRowColors(True)
        # self.qLineEdit.setAlternatingRowColors(True)
        # self.qLineEdit.setStyleSheet("background-color:transparen ")
        # self.qListWidget.setStyleSheet("background-color:#ee3333 ")

    def addQCheckBox(self, i):
        self.qCheckBox.append(QCheckBox())
        qItem = QListWidgetItem(self.qListWidget)
        self.qCheckBox[i].setText(self.items[i])
        if i > 0 and self.itemdict[self.items[i]] == "1":
            self.qCheckBox[i].setChecked(True)
        self.qListWidget.setItemWidget(qItem, self.qCheckBox[i])

    def Selectlist(self):
        Outputlist = []
        for i in range(1, self.row_num):
            if self.qCheckBox[i].isChecked() == True:
                Outputlist.append(self.qCheckBox[i].text())
        self.Selectedrow_num = len(Outputlist)
        return Outputlist

    def show(self):
        show = ''
        Outputlist = self.Selectlist()
        self.qLineEdit.setReadOnly(False)
        self.qLineEdit.clear()
        for i in Outputlist:
            show += i + ';'
        if self.Selectedrow_num == 0:
            self.qCheckBox[0].setCheckState(0)
        elif self.Selectedrow_num == self.row_num - 1:
            self.qCheckBox[0].setCheckState(2)
        else:
            self.qCheckBox[0].setCheckState(1)
        self.qLineEdit.setText(show)
        self.qLineEdit.setReadOnly(True)

    def All(self, state):
        if state == 2:
            for i in range(1, self.row_num):
                self.qCheckBox[i].setChecked(True)
        elif state == 1:
            if self.Selectedrow_num == 0:
                self.qCheckBox[0].setCheckState(2)
        elif state == 0:
            self.clear()

    def clear(self):
        for i in range(self.row_num):
            self.qCheckBox[i].setChecked(False)
Example #12
0
class PopupCompleter(QFrame):

    def __init__(self):
        QFrame.__init__(self, None, Qt.FramelessWindowHint | Qt.ToolTip)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.listWidget = QListWidget()
        self.listWidget.setMinimumHeight(350)
        vbox.addWidget(self.listWidget)

        self.listWidget.currentItemChanged.connect(self._repaint_items)

    def _repaint_items(self, current, previous):
        if current is not None:
            widget = self.listWidget.itemWidget(current)
            if widget is not None:
                widget.set_selected()
        if previous is not None:
            widget = self.listWidget.itemWidget(previous)
            if widget is not None:
                widget.set_not_selected()

    def reload(self, model):
        """Reload the data of the Popup Completer, and restart the state."""
        self.listWidget.clear()
        self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        self.listWidget.setCurrentRow(8)

    def clear(self):
        """Remove all the items of the list (deleted), and reload the help."""
        self.listWidget.clear()

    def refresh(self, model, has_text=True):
        """Refresh the list when the user search for some word."""
        self.listWidget.clear()
        if not has_text:
            self.add_help()
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])
        if model:
            self.listWidget.setCurrentItem(model[0][0])
        else:
            self.add_no_found()

    def fetch_more(self, model):
        """Add more items to the list on user scroll."""
        for item in model:
            self.listWidget.addItem(item[0])
            self.listWidget.setItemWidget(item[0], item[1])

    def add_no_found(self):
        #Load no results found message
        noFoundItem = QListWidgetItem(
            QIcon(resources.IMAGES['delete']),
                'No results were found!')
        font = noFoundItem.font()
        font.setBold(True)
        noFoundItem.setSizeHint(QSize(20, 30))
        noFoundItem.setBackground(QBrush(Qt.lightGray))
        noFoundItem.setForeground(QBrush(Qt.black))
        noFoundItem.setFont(font)
        self.listWidget.addItem(noFoundItem)

    def add_help(self):
        #Load help
        fileItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-file']),
            '@\t(Filter only by Files)')
        font = fileItem.font()
        font.setBold(True)
        fileItem.setSizeHint(QSize(20, 30))
        fileItem.setBackground(QBrush(Qt.lightGray))
        fileItem.setForeground(QBrush(Qt.black))
        fileItem.setFont(font)
        self.listWidget.addItem(fileItem)
        classItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-class']),
            '<\t(Filter only by Classes)')
        self.listWidget.addItem(classItem)
        classItem.setSizeHint(QSize(20, 30))
        classItem.setBackground(QBrush(Qt.lightGray))
        classItem.setForeground(QBrush(Qt.black))
        classItem.setFont(font)
        methodItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-function']),
            '>\t(Filter only by Methods)')
        self.listWidget.addItem(methodItem)
        methodItem.setSizeHint(QSize(20, 30))
        methodItem.setBackground(QBrush(Qt.lightGray))
        methodItem.setForeground(QBrush(Qt.black))
        methodItem.setFont(font)
        attributeItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-attributes']),
            '-\t(Filter only by Attributes)')
        self.listWidget.addItem(attributeItem)
        attributeItem.setSizeHint(QSize(20, 30))
        attributeItem.setBackground(QBrush(Qt.lightGray))
        attributeItem.setForeground(QBrush(Qt.black))
        attributeItem.setFont(font)
        thisFileItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-on-this-file']),
            '.\t(Filter only by Classes and Methods in this File)')
        font = thisFileItem.font()
        font.setBold(True)
        thisFileItem.setSizeHint(QSize(20, 30))
        thisFileItem.setBackground(QBrush(Qt.lightGray))
        thisFileItem.setForeground(QBrush(Qt.black))
        thisFileItem.setFont(font)
        self.listWidget.addItem(thisFileItem)
        tabsItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-tab']),
            '/\t(Filter only by the current Tabs)')
        font = tabsItem.font()
        font.setBold(True)
        tabsItem.setSizeHint(QSize(20, 30))
        tabsItem.setBackground(QBrush(Qt.lightGray))
        tabsItem.setForeground(QBrush(Qt.black))
        tabsItem.setFont(font)
        self.listWidget.addItem(tabsItem)
        lineItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-line']),
            ':\t(Go to Line)')
        font = lineItem.font()
        font.setBold(True)
        lineItem.setSizeHint(QSize(20, 30))
        lineItem.setBackground(QBrush(Qt.lightGray))
        lineItem.setForeground(QBrush(Qt.black))
        lineItem.setFont(font)
        self.listWidget.addItem(lineItem)
        nonPythonItem = QListWidgetItem(
            QIcon(resources.IMAGES['locate-nonpython']),
            '!\t(Filter only by Non Python Files)')
        self.listWidget.addItem(nonPythonItem)
        nonPythonItem.setSizeHint(QSize(20, 30))
        nonPythonItem.setBackground(QBrush(Qt.lightGray))
        nonPythonItem.setForeground(QBrush(Qt.black))
        nonPythonItem.setFont(font)
Example #13
0
class GitStatus(QDialog):
    def __init__(self, plugin, git, path):
        QDialog.__init__(self)
        self.git = git
        self.plugin = plugin
        self.setWindowTitle('Git status')

        layout = QGridLayout(self)

        branches = self.git.branch(unicode(path))

        self.s_branches = QListWidget()

        if len(branches) > 0:
            self.s_branches.addItems(branches[1:])
            self.actual_branch = QLabel("<h2>{0}</h2>".format(branches[0]))
        else:
            self.actual_branch = QLabel()

        branch = QLabel("<h2>Branches</h2>")
        change_branch = QPushButton("Change to")
        merge_branches = QPushButton("Merge branch")

        H = QHBoxLayout()
        delete_branch = QPushButton("Delete branch")
        add_branch = QPushButton("Add branch")
        H.addWidget(add_branch)
        H.addWidget(delete_branch)

        self.lists = []

        no_staged = QLabel("<h2>No staged</h2>")

        untracked_files = QLabel("Untracked files")
        self.untracked_files = QListWidget()
        self.lists.append(self.untracked_files)

        modified_files = QLabel("Modified files")
        self.modified_files = QListWidget()
        self.lists.append(self.modified_files)

        deleted_files = QLabel("Deleted files")
        self.deleted_files = QListWidget()
        self.lists.append(self.deleted_files)

        staged = QLabel("<h2>Staged</h2>")

        added_files = QLabel("Added files")
        self.added_files = QListWidget()
        self.lists.append(self.added_files)

        s_modified_files = QLabel("Modified files")
        self.s_modified_files = QListWidget()
        self.lists.append(self.s_modified_files)

        s_deleted_files = QLabel("Deleted files")
        self.s_deleted_files = QListWidget()
        self.lists.append(self.s_deleted_files)

        layout.addWidget(self.actual_branch, 0, 0, Qt.AlignHCenter)
        layout.addWidget(change_branch, 1, 0)
        layout.addWidget(merge_branches, 2, 0)
        layout.addWidget(no_staged, 3, 0)
        layout.addWidget(untracked_files, 4, 0)
        layout.addWidget(self.untracked_files, 5, 0)
        layout.addWidget(modified_files, 6, 0)
        layout.addWidget(self.modified_files, 7, 0)
        layout.addWidget(deleted_files, 8, 0)
        layout.addWidget(self.deleted_files, 9, 0)

        layout.addWidget(branch, 0, 1)
        layout.addWidget(self.s_branches, 1, 1)
        layout.addLayout(H, 2, 1)
        layout.addWidget(staged, 3, 1)
        layout.addWidget(added_files, 4, 1)
        layout.addWidget(self.added_files, 5, 1)
        layout.addWidget(s_modified_files, 6, 1)
        layout.addWidget(self.s_modified_files, 7, 1)
        layout.addWidget(s_deleted_files, 8, 1)
        layout.addWidget(self.s_deleted_files, 9, 1)

        self.fill(self.git.no_staged["?"], self.untracked_files)
        self.fill(self.git.no_staged["M"], self.modified_files)
        self.fill(self.git.no_staged["D"], self.deleted_files)

        self.fill(self.git.staged["A"], self.added_files)
        self.fill(self.git.staged["M"], self.s_modified_files)
        self.fill(self.git.staged["D"], self.s_deleted_files)

        self.staged_b = QPushButton('Stage files', self)
        self.unstage_b = QPushButton("Unstage files", self)
        self.commit_b = QPushButton('Commit files', self)
        self.uncommit_b = QPushButton("Uncommit files", self)

        layout.addWidget(self.staged_b, 10, 0)
        layout.addWidget(self.unstage_b, 11, 0)
        layout.addWidget(self.commit_b, 10, 1)
        layout.addWidget(self.uncommit_b, 11, 1)

        self.setLayout(layout)

        self.connect(self.staged_b, SIGNAL('clicked()'), self.add)
        self.connect(self.unstage_b, SIGNAL('clicked()'), self.unstage)
        self.connect(self.commit_b, SIGNAL('clicked()'), self.commit)
        self.connect(self.uncommit_b, SIGNAL('clicked()'), self.uncommit)
        self.connect(change_branch, SIGNAL("clicked()"), self.change_branch)
        self.connect(add_branch, SIGNAL("clicked()"), self.add_branch)
        self.connect(delete_branch, SIGNAL("clicked()"), self.delete_branch)
        self.connect(merge_branches, SIGNAL("clicked()"), self.merge_branches)

    def fill(self, a_list, widget_list):
        for x in a_list:

            item = QListWidgetItem()
            widget_list.addItem(item)
            check_box = QCheckBox(x)
            widget_list.setItemWidget(item, check_box)

    def add(self):
        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.untracked_files.count())):

            item = self.untracked_files.item(pos)
            widget = self.untracked_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, text)
                self.untracked_files.removeItemWidget(item)
                self.untracked_files.takeItem(pos)
                item = QListWidgetItem()
                self.added_files.addItem(item)
                check_box = QCheckBox(text)
                self.added_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.modified_files.count())):

            item = self.modified_files.item(pos)
            widget = self.modified_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, widget.text())
                self.modified_files.removeItemWidget(item)
                self.modified_files.takeItem(pos)
                item = QListWidgetItem()
                self.s_modified_files.addItem(item)
                check_box = QCheckBox(text)
                self.s_modified_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.deleted_files.count())):

            item = self.deleted_files.item(pos)
            widget = self.deleted_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.add(path, widget.text())
                self.deleted_files.removeItemWidget(item)
                self.deleted_files.takeItem(pos)
                item = QListWidgetItem()
                self.s_deleted_files.addItem(item)
                check_box = QCheckBox(text)
                self.s_deleted_files.setItemWidget(item, check_box)

    def unstage(self):

        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.untracked_files.count())):

            item = self.untracked_files.item(pos)
            widget = self.untracked_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.untracked_files.removeItemWidget(item)
                self.untracked_files.takeItem(pos)

        for pos in reversed(xrange(self.modified_files.count())):

            item = self.modified_files.item(pos)
            widget = self.modified_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.modified_files.removeItemWidget(item)
                self.modified_files.takeItem(pos)

        for pos in reversed(xrange(self.deleted_files.count())):

            item = self.deleted_files.item(pos)
            widget = self.deleted_files.itemWidget(item)

            if widget.isChecked():
                self.git.unstage(path, widget.text())
                self.deleted_files.removeItemWidget(item)
                self.deleted_files.takeItem(pos)

    def commit(self):

        msg = QInputDialog.getText(self, "Commit message", "Commit Message:")

        if msg[1] == False:
            return (0)

        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.added_files.count())):

            item = self.added_files.item(pos)
            widget = self.added_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, str(widget.text()), msg[0])
                self.added_files.removeItemWidget(item)
                self.added_files.takeItem(pos)

        for pos in reversed(xrange(self.s_modified_files.count())):

            item = self.s_modified_files.item(pos)
            widget = self.s_modified_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, widget.text(), msg[0])
                self.s_modified_files.removeItemWidget(item)
                self.s_modified_files.takeItem(pos)

        for pos in reversed(xrange(self.s_deleted_files.count())):

            item = self.s_deleted_files.item(pos)
            widget = self.s_deleted_files.itemWidget(item)

            if widget.isChecked():
                self.git.commit(path, widget.text(), msg[0])
                self.s_deleted_files.takeItem(pos)
                self.s_deleted_files.removeItemWidget(item)

    def uncommit(self):
        path = self.plugin.editor.get_project_owner()
        for pos in reversed(xrange(self.added_files.count())):

            item = self.added_files.item(pos)
            widget = self.added_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, str(widget.text()))
                self.added_files.removeItemWidget(item)
                self.added_files.takeItem(pos)
                item = QListWidgetItem()
                self.untracked_files.addItem(item)
                check_box = QCheckBox(text)
                self.untracked_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.s_modified_files.count())):

            item = self.s_modified_files.item(pos)
            widget = self.s_modified_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, widget.text())
                self.s_modified_files.removeItemWidget(item)
                self.s_modified_files.takeItem(pos)
                item = QListWidgetItem()
                self.modified_files.addItem(item)
                check_box = QCheckBox(text)
                self.modified_files.setItemWidget(item, check_box)

        for pos in reversed(xrange(self.s_deleted_files.count())):

            item = self.s_deleted_files.item(pos)
            widget = self.s_deleted_files.itemWidget(item)
            text = widget.text()

            if widget.isChecked():
                self.git.uncommit(path, widget.text())
                self.s_deleted_files.removeItemWidget(item)
                self.s_deleted_files.takeItem(pos)
                item = QListWidgetItem()
                self.deleted_files.addItem(item)
                check_box = QCheckBox(text)
                self.deleted_files.setItemWidget(item, check_box)

    def change_branch(self):

        path = self.plugin.editor.get_project_owner()

        item = self.s_branches.currentItem()

        if item and not self.something():
            text = item.text()
            self.git.change_branch(path, text)
            self.s_branches.clear()
            self.s_branches.addItems(self.git.branch(unicode(path))[1:])
            self.actual_branch.setText("<h2>{0}<h2>".format(text))
        if self.something():
            v = QMessageBox()
            v.setText("Error: you have unsaved changes")
            v.setIcon(v.Warning)
            v.exec_()

    def add_branch(self):

        path = self.plugin.editor.get_project_owner()

        msg = QInputDialog.getText(self, "New branch", "Branch Name:")

        if msg[1] == False:
            return (0)

        self.git.add_branch(path, msg[0])
        self.s_branches.clear()
        self.s_branches.addItems(self.git.branch(unicode(path))[1:])

    def delete_branch(self):
        path = self.plugin.editor.get_project_owner()
        item = self.s_branches.currentItem()
        if item:
            text = str(item.text())
            call = self.git.delete_branch(path, text)

            if not call:
                self.s_branches.clear()
                self.s_branches.addItems(self.git.branch(unicode(path))[1:])

            else:
                m = QMessageBox()
                m.setText("<h2>" + call + "</h2>")
                m.setInformativeText("Force deletion?")
                m.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
                m.setDefaultButton(QMessageBox.Cancel)
                c = m.exec_()
                if c == QMessageBox.Ok:

                    self.git.force_delete_branch(path, text)
                    self.s_branches.clear()

                    self.s_branches.addItems(
                        self.git.branch(unicode(path))[1:])

    def merge_branches(self):
        path = self.plugin.editor.get_project_owner()
        item = self.s_branches.currentItem()
        if item:
            text = str(item.text())
            call = self.git.merge_branches(path, text)
            if call:
                m = QMessageBox()
                m.setText(call)
                m.setInformativeText("Unknown")
                m.setIcon(m.Critical)
                m.exec_()

    def something(self):
        for x in self.lists:
            if x.count() > 0:
                return True
        return False
Example #14
0
class Ui_MainWindow(object):
    # plot visualization variable
    present = None
    timer = None
    buffer = 16384
    linecolor = "green"
    # setting for pyaudio

    rate = 44100
    p = pyaudio.PyAudio()
    chunks = []
    inStream = None
    recThread = None
    addThread = None

    xlimit = 10000
    ylimit = 1000000

    savename = None
    displayTime = None
    data = None
    capFlag = 0
    mlFlag = 0

    fth = True
    sth = False
    tth = False

    dapper = [0.00, 0.00, 0.00]
    avgper = 0.00

    ndapper = [0.00, 0.00, 0.00]
    navgper = 0.00

    #    namePre=None
    #   ratePre=None
    #  spectrumPre=None
    # freqPre=None
    #nsamPre=None

    #

    def stream(self):
        while True:
            if self.inStream is not None:
                self.chunks.append(self.inStream.read(self.buffer))

    def record(self):
        self.inStream = self.p.open(format=pyaudio.paInt16,
                                    channels=1,
                                    rate=self.rate,
                                    input=True,
                                    frames_per_buffer=self.buffer)
        self.addThread = threading.Thread(target=self.stream)
        self.addThread.start()

    # a figure instance to plot on
    figure = None
    # this is the Canvas Widget that displays the `figure`
    canvas = None
    # this is the Navigation widget
    # it takes the Canvas widget and a parent
    toolbar = None

    def setupUi(self, MainWindow):
        screen_resolution = app.desktop().screenGeometry()
        width, height = screen_resolution.width(), screen_resolution.height()
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(width / 1.5, height / 1.5)
        #        MainWindow.setMinimumSize(QtCore.QSize(1024, 768))
        #        MainWindow.setMaximumSize(QtCore.QSize(width / 1.5, height / 1.5))

        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

        # self.plotlayout = QtGui.QVBoxLayout(self.centralwidget)
        self.gridlayout = QtGui.QGridLayout(self.centralwidget)

        # a figure instance to plot on
        self.figure = plt.figure()
        # this is the Canvas Widget that displays the `figure`
        self.canvas = FigureCanvas(self.figure)
        cid = self.canvas.mpl_connect('button_press_event', self.plotClick)
        # this is the Navigation widget
        # it takes the Canvas widget and a parent
        self.toolbar = NavigationToolbar(self.canvas, self.centralwidget)

        self.inGridlayout = QtGui.QGridLayout()
        self.inBoxlayout = QtGui.QHBoxLayout()

        self.list = QListWidget(self.centralwidget)

        # self.gridlayout.addLayout(self.list, 1)

        # inGridlayout has toolbar, button, ...etc
        # inBoxlayout has button6, button5, button4
        #        self.gridLayout.addWidget(self.toolbar)
        self.gridlayout.addWidget(self.toolbar, 0, 0)
        self.gridlayout.addWidget(self.canvas, 1, 0)
        self.gridlayout.addLayout(self.inGridlayout, 3, 0)
        self.gridlayout.addLayout(self.inBoxlayout, 2, 0)
        self.gridlayout.addLayout(self.inBoxlayout, 0, 3)
        self.gridlayout.addWidget(self.list, 0, 1, 4, 4)
        # self.inBoxlayout.addWidget(self.toolbar,0)
        self.gridlayout.setObjectName(_fromUtf8("griddisplay"))
        # self.centralwidget.setLayout(self.plotlayout)

        palettegl = QtGui.QPalette()
        palettegl.setBrush(QtGui.QPalette.Light, QtCore.Qt.black)
        """
                self.lineEdit = QtGui.QTextEdit(self.centralwidget)
                # self.lineEdit.setGeometry(QtCore.QRect(10, 475, 800, 105))
                self.gridlayout.addWidget(self.lineEdit, 0, 3, 4, 4)
                self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
                self.lineEdit.setReadOnly(True)


"""

        self.qlabeldap = QtGui.QLabel(self.centralwidget)
        self.qlabeldap.setText("Estimated Payloaded DAP Percentage")
        self.inGridlayout.addWidget(self.qlabeldap, 1, 0, 1, 1)

        self.leftBoundary_1 = QtGui.QPushButton(self.centralwidget)
        self.leftBoundary_1.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.leftBoundary_1.setObjectName(_fromUtf8("leftBoundary_1"))
        self.leftBoundary_1.clicked.connect(self.lbnd1f)
        #        self.leftBoundary_1.setPalette(palettegl)
        #        self.leftBoundary_1.display("00:00")
        self.inGridlayout.addWidget(self.leftBoundary_1, 1, 1, 1, 1)

        self.rightBoundary_1 = QtGui.QPushButton(self.centralwidget)
        self.rightBoundary_1.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.rightBoundary_1.setObjectName(_fromUtf8("rightBoundary_1"))
        self.rightBoundary_1.clicked.connect(self.rbnd1f)
        #        self.rightBoundary_1.setPalette(palettegl)
        #        self.rightBoundary_1.display("00:00")
        self.inGridlayout.addWidget(self.rightBoundary_1, 1, 2, 1, 1)

        self.threshold_1 = QtGui.QPushButton(self.centralwidget)
        self.threshold_1.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.threshold_1.setObjectName(_fromUtf8("threshold_1"))
        self.threshold_1.clicked.connect(self.th1f)
        #        self.threshold_1.setPalette(palettegl)
        #        self.threshold_1.display("00:00")
        self.inGridlayout.addWidget(self.threshold_1, 1, 3, 1, 1)

        #        self.qLabelChunk1 = QtGui.QLabel(self.centralwidget)
        #        self.qLabelChunk1.setText("labelChunk1")
        #        self.inGridlayout.addWidget(self.qLabelChunk1,2,0,1,1)

        self.Dapp = QtGui.QLCDNumber(self.centralwidget)
        self.Dapp.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.Dapp.setObjectName(_fromUtf8("Dapp"))
        self.Dapp.setPalette(palettegl)
        self.Dapp.display("00.00")
        self.inGridlayout.addWidget(self.Dapp, 2, 0, 1, 1)

        self.lbnd1 = QtGui.QSpinBox(self.centralwidget)
        self.lbnd1.setRange(0, 20000)
        self.lbnd1.setValue(1000)
        self.lbnd1.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.lbnd1.setObjectName(_fromUtf8("lbnd1size"))
        self.inGridlayout.addWidget(self.lbnd1, 2, 1, 1, 1)

        self.rbnd1 = QtGui.QSpinBox(self.centralwidget)
        self.rbnd1.setRange(0, 20000)
        self.rbnd1.setValue(2500)
        self.rbnd1.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.rbnd1.setObjectName(_fromUtf8("rbnd1size"))
        self.inGridlayout.addWidget(self.rbnd1, 2, 2, 1, 1)

        self.th1 = QtGui.QSpinBox(self.centralwidget)
        self.th1.setRange(200000, 100000000)
        self.th1.setValue(200000)
        self.th1.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.th1.setObjectName(_fromUtf8("th1size"))
        self.inGridlayout.addWidget(self.th1, 2, 3, 1, 1)

        self.qLabelLCD2 = QtGui.QLabel(self.centralwidget)
        self.qLabelLCD2.setText("Estimated Non Payloaded DAP Percentage")
        self.inGridlayout.addWidget(self.qLabelLCD2, 3, 0, 1, 1)

        self.leftBoundary_2 = QtGui.QPushButton(self.centralwidget)
        self.leftBoundary_2.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.leftBoundary_2.setObjectName(_fromUtf8("leftBoundary_2"))
        self.leftBoundary_2.clicked.connect(self.lbnd2f)
        #        self.leftBoundary_2.setPalette(palettegl)
        #        self.leftBoundary_2.display("00:00")
        self.inGridlayout.addWidget(self.leftBoundary_2, 3, 1, 1, 1)

        self.rightBoundary_2 = QtGui.QPushButton(self.centralwidget)
        self.rightBoundary_2.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.rightBoundary_2.setObjectName(_fromUtf8("rightBoundary_2"))
        self.rightBoundary_2.clicked.connect(self.rbnd2f)
        #        self.rightBoundary_2.setPalette(palettegl)
        #        self.rightBoundary_2.display("00:00")
        self.inGridlayout.addWidget(self.rightBoundary_2, 3, 2, 1, 1)

        self.threshold_2 = QtGui.QPushButton(self.centralwidget)
        self.threshold_2.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.threshold_2.setObjectName(_fromUtf8("threshold_2"))
        self.threshold_2.clicked.connect(self.th2f)
        #        self.threshold_2.setPalette(palettegl)
        #        self.threshold_2.display("00:00")
        self.inGridlayout.addWidget(self.threshold_2, 3, 3, 1, 1)

        #        self.qLabelChunk2 = QtGui.QLabel(self.centralwidget)
        #        self.qLabelChunk2.setText("labelChunk2")
        #        self.inGridlayout.addWidget(self.qLabelChunk2,4,0,1,1)

        self.nDapp = QtGui.QLCDNumber(self.centralwidget)
        self.nDapp.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.nDapp.setObjectName(_fromUtf8("nDapp"))
        self.nDapp.setPalette(palettegl)
        self.nDapp.display("00.00")
        self.inGridlayout.addWidget(self.nDapp, 4, 0, 1, 1)

        self.lbnd2 = QtGui.QSpinBox(self.centralwidget)
        self.lbnd2.setRange(0, 20000)
        self.lbnd2.setValue(2500)
        self.lbnd2.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.lbnd2.setObjectName(_fromUtf8("lbnd2size"))
        self.inGridlayout.addWidget(self.lbnd2, 4, 1, 1, 1)
        self.lbnd2.setEnabled(False)

        self.rbnd2 = QtGui.QSpinBox(self.centralwidget)
        self.rbnd2.setRange(0, 20000)
        self.rbnd2.setValue(6000)
        self.rbnd2.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.rbnd2.setObjectName(_fromUtf8("rbnd2size"))
        self.inGridlayout.addWidget(self.rbnd2, 4, 2, 1, 1)
        self.rbnd2.setEnabled(False)

        self.th2 = QtGui.QSpinBox(self.centralwidget)
        self.th2.setRange(200000, 100000000)
        self.th2.setValue(200000)
        self.th2.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.th2.setObjectName(_fromUtf8("th2size"))
        self.inGridlayout.addWidget(self.th2, 4, 3, 1, 1)
        self.th2.setEnabled(False)

        self.qLabelLCD3 = QtGui.QLabel(self.centralwidget)
        self.qLabelLCD3.setText("Payloaded Drone/Non PD Detection Count")
        self.inGridlayout.addWidget(self.qLabelLCD3, 5, 0, 1, 1)

        self.leftBoundary_3 = QtGui.QPushButton(self.centralwidget)
        self.leftBoundary_3.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.leftBoundary_3.setObjectName(_fromUtf8("leftBoundary_3"))
        self.leftBoundary_3.clicked.connect(self.lbnd3f)
        #        self.leftBoundary_3.setPalette(palettegl)
        #        self.leftBoundary_3.display("00:00")
        self.inGridlayout.addWidget(self.leftBoundary_3, 5, 1, 1, 1)

        self.rightBoundary_3 = QtGui.QPushButton(self.centralwidget)
        self.rightBoundary_3.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.rightBoundary_3.setObjectName(_fromUtf8("rightBoundary_3"))
        self.rightBoundary_3.clicked.connect(self.rbnd3f)
        #        self.lcdNumber3_2.setPalette(palettegl)
        #        self.lcdNumber3_2.display("00:00")
        self.inGridlayout.addWidget(self.rightBoundary_3, 5, 2, 1, 1)

        self.threshold_3 = QtGui.QPushButton(self.centralwidget)
        self.threshold_3.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.threshold_3.setObjectName(_fromUtf8("threshold_3"))
        self.threshold_3.clicked.connect(self.th3f)
        #        self.threshold_3.setPalette(palettegl)
        #        self.threshold_3.display("00:00")
        self.inGridlayout.addWidget(self.threshold_3, 5, 3, 1, 1)

        #        self.qLabelChunk3 = QtGui.QLabel(self.centralwidget)
        #        self.qLabelChunk3.setText("labelChunk3")
        #        self.inGridlayout.addWidget(self.qLabelChunk3, 6, 0, 1, 1)

        self.CntLcd = QtGui.QLCDNumber(self.centralwidget)
        self.CntLcd.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.CntLcd.setObjectName(_fromUtf8("CntLcd"))
        self.CntLcd.setPalette(palettegl)
        self.CntLcd.display("00:00")
        self.inGridlayout.addWidget(self.CntLcd, 6, 0, 1, 1)

        self.lbnd3 = QtGui.QSpinBox(self.centralwidget)
        self.lbnd3.setRange(0, 20000)
        self.lbnd3.setValue(6000)
        self.lbnd3.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.lbnd3.setObjectName(_fromUtf8("lbnd3size"))
        self.inGridlayout.addWidget(self.lbnd3, 6, 1, 1, 1)
        self.lbnd3.setEnabled(False)

        self.rbnd3 = QtGui.QSpinBox(self.centralwidget)
        self.rbnd3.setRange(0, 20000)
        self.rbnd3.setValue(9000)
        self.rbnd3.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.rbnd3.setObjectName(_fromUtf8("rbnd3size"))
        self.inGridlayout.addWidget(self.rbnd3, 6, 2, 1, 1)
        self.rbnd3.setEnabled(False)

        self.th3 = QtGui.QSpinBox(self.centralwidget)
        self.th3.setRange(200000, 100000000)
        self.th3.setValue(200000)
        self.th3.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.th3.setObjectName(_fromUtf8("th3size"))
        self.inGridlayout.addWidget(self.th3, 6, 3, 1, 1)
        self.th3.setEnabled(False)

        self.lcdNumber = QtGui.QLCDNumber(self.centralwidget)
        self.lcdNumber.setGeometry(QtCore.QRect(340, 668, 91, 38))
        self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
        self.lcdNumber.setPalette(palettegl)
        self.lcdNumber.display("00:00")
        self.inBoxlayout.addWidget(self.lcdNumber, 1)

        self.analyzeButton = QtGui.QPushButton(self.centralwidget)
        self.analyzeButton.setGeometry(QtCore.QRect(440, 668, 91, 38))
        self.analyzeButton.setObjectName(_fromUtf8("analyzeButton"))
        self.analyzeButton.clicked.connect(self.start)
        self.inBoxlayout.addWidget(self.analyzeButton, 2)
        self.analyzeButton.connect(
            QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F1),
                            self.centralwidget), QtCore.SIGNAL('activated()'),
            self.start)
        #     self.inGridlayout.addWidget(self.analyzeButton)

        self.stopButton = QtGui.QPushButton(self.centralwidget)
        self.stopButton.setGeometry(QtCore.QRect(540, 668, 91, 38))
        self.stopButton.setObjectName(_fromUtf8("stopButton"))
        self.stopButton.clicked.connect(self.stop)
        self.inBoxlayout.addWidget(self.stopButton, 3)
        self.stopButton.connect(
            QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F2),
                            self.centralwidget), QtCore.SIGNAL('activated()'),
            self.stop)
        #      self.inGridlayout.addWidget(self.stopButton)

        self.recordButton = QtGui.QPushButton(self.centralwidget)
        self.recordButton.setGeometry(QtCore.QRect(640, 668, 91, 38))
        self.recordButton.setObjectName(_fromUtf8("recordButton"))
        self.recordButton.clicked.connect(self.save)
        self.inBoxlayout.addWidget(self.recordButton, 4)
        self.recordButton.connect(
            QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F3),
                            self.centralwidget), QtCore.SIGNAL('activated()'),
            self.save)

        self.chunksize = QtGui.QSpinBox(self.centralwidget)
        self.chunksize.setRange(10, 17)
        self.chunksize.setValue(14)
        self.chunksize.setGeometry(QtCore.QRect(740, 668, 55, 38))
        self.chunksize.setObjectName(_fromUtf8("chunksize"))
        self.inBoxlayout.addWidget(self.chunksize, 5)
        self.chunksize.valueChanged.connect(self.intchanged)

        #       self.inGridlayout.addWidget(self.recordButton)
        self.horizontalSlider = QtGui.QSlider(self.centralwidget)
        self.horizontalSlider.setRange(200, 20000)
        self.horizontalSlider.setValue(10000)
        self.horizontalSlider.valueChanged.connect(self.hsvhandler)
        self.horizontalSlider.setGeometry(QtCore.QRect(800, 668, 71, 38))
        self.inBoxlayout.addWidget(self.horizontalSlider, 6)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider"))
        #    self.inGridlayout.addWidget(self.horizontalSlider)

        self.verticallSlider = QtGui.QSlider(self.centralwidget)
        self.verticallSlider.setRange(1000000, 100000000)
        self.verticallSlider.setValue(1000000)
        self.verticallSlider.valueChanged.connect(self.vsvhandler)
        self.verticallSlider.setGeometry(QtCore.QRect(880, 668, 71, 38))
        self.verticallSlider.setOrientation(QtCore.Qt.Vertical)
        self.inBoxlayout.addWidget(self.verticallSlider, 7)
        self.verticallSlider.setObjectName(_fromUtf8("verticalSlider"))
        #  self.inGridlayout.addWidget(self.verticallSlider, 7, 0, 7, 2)
        #   self.inGridlayout.addWidget(self.verticallSlider)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1024, 26))
        self.menubar.setObjectName(_fromUtf8("menubar"))

        self.menuFFT_Mode = QtGui.QMenu(self.menubar)
        self.menuFFT_Mode.setObjectName(_fromUtf8("menuDegree"))

        self.menuCross = QtGui.QMenu(self.menubar)
        self.menuCross.setObjectName(_fromUtf8("menuCross"))

        self.menuCapture = QtGui.QMenu(self.menubar)
        self.menuCapture.setObjectName(_fromUtf8("menuCapture"))

        self.menuThreshold = QtGui.QMenu(self.menubar)
        self.menuThreshold.setObjectName(_fromUtf8("menuThreshold"))

        self.menuConnection = QtGui.QMenu(self.menubar)
        self.menuConnection.setObjectName(_fromUtf8("menuConnection"))

        self.menuConsole = QtGui.QMenu(self.menubar)
        self.menuConsole.setObjectName(_fromUtf8("menuConsole"))

        self.menuHelp = QtGui.QMenu(self.menubar)
        self.menuHelp.setObjectName(_fromUtf8("menuHelp"))

        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))

        MainWindow.setStatusBar(self.statusbar)
        ag = QtGui.QActionGroup(MainWindow, exclusive=True)
        self.actionDrone = ag.addAction(
            QtGui.QAction(MainWindow, checkable=True))
        self.actionDrone.setChecked(True)
        self.actionDrone.triggered.connect(self.green)
        self.actionDrone.setObjectName(_fromUtf8("zero"))

        self.actionOthers = ag.addAction(
            QtGui.QAction(MainWindow, checkable=True))
        self.actionOthers.triggered.connect(self.red)
        self.actionOthers.setObjectName(_fromUtf8("sixty"))

        self.menuFFT_Mode.addAction(self.actionDrone)
        self.menuFFT_Mode.addAction(self.actionOthers)
        self.menubar.addAction(self.menuFFT_Mode.menuAction())

        ag2 = QtGui.QActionGroup(MainWindow, exclusive=True)
        self.scr = ag2.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.scr.setChecked(True)
        self.scr.triggered.connect(self.scrmode)
        self.scr.setObjectName(_fromUtf8("scrOnly"))

        self.rec = ag2.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.rec.triggered.connect(self.recmode)
        self.rec.setObjectName(_fromUtf8("recOnly"))

        self.scrnrec = ag2.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.scrnrec.triggered.connect(self.scrnrecmode)
        self.scrnrec.setObjectName(_fromUtf8("scrNrec"))

        self.menuCapture.addAction(self.scr)
        self.menuCapture.addAction(self.rec)
        self.menuCapture.addAction(self.scrnrec)

        self.menubar.addAction(self.menuCapture.menuAction())

        ag3 = QtGui.QActionGroup(MainWindow, exclusive=True)
        self.autopilot = ag3.addAction(
            QtGui.QAction(MainWindow, checkable=True))
        self.autopilot.triggered.connect(self.automode)
        self.autopilot.setObjectName(_fromUtf8("autopilot"))

        self.supervise = ag3.addAction(
            QtGui.QAction(MainWindow, checkable=True))
        self.supervise.triggered.connect(self.manualmode)
        self.supervise.setObjectName(_fromUtf8("supervise"))

        self.thonly = ag3.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.thonly.triggered.connect(self.thmode)
        self.thonly.setObjectName(_fromUtf8("thonly"))
        self.thonly.setChecked(True)

        self.menuCross.addAction(self.autopilot)
        self.menuCross.addAction(self.supervise)
        self.menuCross.addAction(self.thonly)

        self.menubar.addAction(self.menuCross.menuAction())

        ag4 = QtGui.QActionGroup(MainWindow, exclusive=False)

        self.fir = ag4.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.fir.setChecked(True)
        self.fir.setObjectName(_fromUtf8("First"))
        self.fir.triggered.connect(self.chkfir)

        self.sec = ag4.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.sec.setObjectName(_fromUtf8("Second"))
        self.sec.triggered.connect(self.chksec)

        self.thi = ag4.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.thi.setObjectName(_fromUtf8("Third"))
        self.thi.triggered.connect(self.chkthi)

        self.menuThreshold.addAction(self.fir)
        self.menuThreshold.addAction(self.sec)
        self.menuThreshold.addAction(self.thi)

        self.menubar.addAction(self.menuThreshold.menuAction())

        ag5 = QtGui.QActionGroup(MainWindow, exclusive=True)

        self.con = ag5.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.con.setChecked(True)
        self.con.setObjectName(_fromUtf8("Connect"))

        self.discon = ag5.addAction(QtGui.QAction(MainWindow, checkable=True))
        self.discon.setObjectName(_fromUtf8("Disconnect"))

        self.menuConnection.addAction(self.con)
        self.menuConnection.addAction(self.discon)
        self.menubar.addAction(self.menuConnection.menuAction())

        ag6 = QtGui.QActionGroup(MainWindow)

        self.write = ag6.addAction(QtGui.QAction(MainWindow))
        self.write.setChecked(True)
        self.write.setObjectName(_fromUtf8("Write"))

        self.clear = ag6.addAction(QtGui.QAction(MainWindow))
        self.clear.setObjectName(_fromUtf8("Clear"))

        self.menuConsole.addAction(self.write)
        self.menuConsole.addAction(self.clear)

        self.menubar.addAction(self.menuConsole.menuAction())

        ag7 = QtGui.QActionGroup(MainWindow)

        self.dev = ag7.addAction(QtGui.QAction(MainWindow))
        self.dev.setChecked(True)
        # self.dev.triggered.connect(self.help)
        self.dev.setObjectName(_fromUtf8("Developers"))

        self.about = ag7.addAction(QtGui.QAction(MainWindow))
        self.about.setObjectName(_fromUtf8("About"))

        self.menuHelp.addAction(self.dev)
        self.menuHelp.addAction(self.about)

        self.menubar.addAction(self.menuHelp.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            _translate(
                "MainWindow",
                "Realtime Fast Fourier Transform Analyzer For Caputuring Payloaded Drone Frequency-Made by Kiefer Kim",
                None))
        self.recordButton.setText(_translate("MainWindow", "Record(F3)", None))
        self.stopButton.setText(_translate("MainWindow", "Stop(F2)", None))
        self.analyzeButton.setText(
            _translate("MainWindow", "Analyze(F1)", None))

        # leftBoundary_1 etc
        self.leftBoundary_1.setText(
            _translate("MainWindow", "1st Minimum Frequency", None))
        self.rightBoundary_1.setText(
            _translate("MainWindow", "1st Maximum Frequency", None))
        self.threshold_1.setText(
            _translate("MainWindow", "1st Threshold", None))
        self.leftBoundary_2.setText(
            _translate("MainWindow", "2nd Minimum Frequency", None))
        self.rightBoundary_2.setText(
            _translate("MainWindow", "2nd Maximum Frequency", None))
        self.threshold_2.setText(
            _translate("MainWindow", "2nd Threshold", None))
        self.leftBoundary_3.setText(
            _translate("MainWindow", "3rd Minimum Frequency", None))
        self.rightBoundary_3.setText(
            _translate("MainWindow", "3rd Maximum Frequency", None))
        self.threshold_3.setText(
            _translate("MainWindow", "3rd Threshold", None))

        self.menuFFT_Mode.setTitle(
            _translate("MainWindow", "Object Type", None))
        self.actionDrone.setText(
            _translate("MainWindow", "Payloaded Drone", None))
        self.actionOthers.setText(_translate("MainWindow", "Others", None))

        self.menuCross.setTitle(
            _translate("MainWindow", "Machine Learning", None))
        self.autopilot.setText(_translate("MainWindow", "Self Learn", None))
        self.supervise.setText(_translate("MainWindow", "Validation", None))
        self.thonly.setText(_translate("MainWindow", "Deactivate", None))

        self.menuCapture.setTitle(_translate("MainWindow", "Record", None))
        self.scr.setText(_translate("MainWindow", "Plot.png Only", None))
        self.rec.setText(_translate("MainWindow", "Record.wav Only", None))
        self.scrnrec.setText(
            _translate("MainWindow", "Plot.png+Record.wav", None))

        self.menuThreshold.setTitle(_translate("MainWindow", "Threshold",
                                               None))
        self.fir.setText(_translate("MainWindow", "First", None))
        self.sec.setText(_translate("MainWindow", "Second", None))
        self.thi.setText(_translate("MainWindow", "Third", None))

        self.menuConnection.setTitle(
            _translate("MainWindow", "Connection", None))
        self.con.setText(_translate("MainWindow", "Connect", None))
        self.discon.setText(_translate("MainWindow", "Disconnect", None))
        #
        self.menuConsole.setTitle(_translate("MainWindow", "Console", None))
        self.write.setText(_translate("MainWindow", "Write", None))
        self.clear.setText(_translate("MainWindow", "Clear", None))

        self.menuHelp.setTitle(_translate("MainWindow", "Help", None))
        self.dev.setText(_translate("MainWindow", "Developers", None))
        self.about.setText(_translate("MainWindow", "About", None))

    def tick(self):
        now = datetime.datetime.now()
        minutes, seconds = divmod((now - self.present).total_seconds(), 60)
        self.displayTime = QtCore.QTime(0, minutes, round(seconds))
        self.lcdNumber.display(self.displayTime.toString('mm:ss'))

        if len(self.chunks) > 0:
            X = self.chunks.pop(0)
            self.data = scipy.array(struct.unpack("%dB" % (self.buffer * 2),
                                                  X))

            # print "RECORDED",len(self.data)/float(self.rate),"SEC"
            # ffty = scipy.fftpack.fft(self.data)
            # fftx = scipy.fftpack.rfftfreq(self.buffer * 2, 1.0 / self.rate)

            spectrum = scipy.fftpack.fft(self.data)
            freq = scipy.fftpack.fftfreq(len(self.data), d=0.5 / self.rate)
            #if self.mlFlag is 0:
            ax2 = self.figure.add_subplot(111)
            ax2.plot(freq, abs(spectrum), color=self.linecolor)
            if self.fir.isChecked():
                l1 = self.lbnd1.value() * self.buffer / self.rate
                r1 = self.rbnd1.value() * self.buffer / self.rate
                max1 = np.amax(abs(spectrum[l1:r1]))
                for index, xy in enumerate(zip(freq, abs(spectrum))):
                    if xy[1] == max1:
                        plt.annotate('(%s, %s)' % (int(xy[0]), int(xy[1])),
                                     xy=xy)
                        if max1 >= self.th1.value() and xy[0] > 0:
                            temp = self.capFlag
                            self.capFlag = -1
                            self.save()
                            if self.actionDrone.isChecked():
                                self.lineEdit.append(u'드론모드 th1 검출:')
                                if self.thonly.isChecked():
                                    self.dapper[0] = max1 / self.th1.value(
                                    ) * 100
                                    if self.dapper[0] > 100.00:
                                        self.dapper[0] = 100.00
                            else:
                                self.lineEdit.append(u'기타모드 th1 검출:')
                            self.lineEdit.append(self.savename + ":" +
                                                 str(xy) + ">=" +
                                                 str(self.th1.value()))
                            self.capFlag = temp

            if self.sec.isChecked():
                l2 = self.lbnd2.value() * self.buffer / self.rate
                r2 = self.rbnd2.value() * self.buffer / self.rate
                max2 = np.amax(abs(spectrum[l2:r2]))
                for index, xy in enumerate(zip(freq, abs(spectrum))):
                    if xy[1] == max2:
                        plt.annotate('(%s, %s)' % (int(xy[0]), int(xy[1])),
                                     xy=xy)
                        if max2 >= self.th2.value() and xy[0] > 0:
                            temp = self.capFlag
                            self.capFlag = -1
                            self.save()
                            if self.actionDrone.isChecked():
                                self.lineEdit.append(u'드론모드 th2 검출:')
                                if self.thonly.isChecked():
                                    self.dapper[1] = max2 / self.th2.value(
                                    ) * 100
                                    if self.dapper[1] > 100.00:
                                        self.dapper[1] = 100.00
                            else:
                                self.lineEdit.append(u'기타모드 th2 검출:')
                            self.lineEdit.append(self.savename + ":" +
                                                 str(xy) + ">=" +
                                                 str(self.th2.value()))
                            self.capFlag = temp

            if self.thi.isChecked():
                l3 = self.lbnd3.value() * self.buffer / self.rate
                r3 = self.rbnd3.value() * self.buffer / self.rate
                max3 = np.amax(abs(spectrum[l3:r3]))
                for index, xy in enumerate(zip(freq, abs(spectrum))):
                    if xy[1] == max3:
                        plt.annotate('(%s, %s)' % (int(xy[0]), int(xy[1])),
                                     xy=xy)
                        if max3 >= self.th3.value() and xy[0] > 0:
                            temp = self.capFlag
                            self.capFlag = -1
                            self.save()
                            if self.actionDrone.isChecked():
                                self.lineEdit.append(u'드론모드 th3 검출:')
                                if self.thonly.isChecked():
                                    self.dapper[2] = max3 / self.th3.value(
                                    ) * 100
                                    if self.dapper[2] > 100.00:
                                        self.dapper[2] = 100.00
                            else:
                                self.lineEdit.append(u'기타모드 th3 검출:')
                            self.lineEdit.append(self.savename + ":" +
                                                 str(xy) + ">=" +
                                                 str(self.th3.value()))
                            self.capFlag = temp
            self.calcdap()

            #print np.alen(abs(spectrum))
            #print np.alen(freq)
            #for xy in zip(freq, abs(spectrum)):
            #   if maxamplitude == xy[1]:
            #      plt.annotate('(%s, %s)' % xy, xy=xy, textcoords='data')
            ax2.set_xlim(0, self.xlimit)
            ax2.set_ylim(0, self.ylimit)
            ax2.set_xlabel("frequency [Hz]")
            #ax2.set_title("Recorded Chunk Sec: " + str(len(self.data) / float(self.rate)))
            # ax2.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.1e'))
            ax2.grid(True)
            ax2.hold(False)
            plt.title("Recorded Chunk Sec: " +
                      str(len(self.data) / float(self.rate)))
            self.canvas.draw()

            #elif self.mlFlag is 1 and self.namePre:
        '''
        data = [random.random() for i in range(10)]
        # create an axis
        ax = self.figure.add_subplot(111)
        # discards the old graph
        ax.hold(True)
        # plot data
        ax.plot(data, '*-')
        # refresh canvas
        self.canvas.draw()
        '''

    # 리스트에 CustomWidget의 객체들을 삽입
    def create(self):
        for i in range(0, 3):
            wid = Ui_MainWindow.CustomWidget(
                "abcdefghijklmnopqrstu")  # 매개변수가 log 값이 되어야함

            wid2 = QtGui.QListWidgetItem()
            wid2.setSizeHint(QtCore.QSize(100, 60))
            self.list.addItem(wid2)
            self.list.setItemWidget(wid2, wid)
            self.list.setStyleSheet(
                "QListWidget::item { border-bottom: 1px solid black; }")

    # 리스트에 있는 CustomWidget의 객체들을 삭제
    def remove(self):
        self.list.takeItem(self.list.currentRow())

    def tongtong(self):
        print "When I look into your eyes"

    def start(self):
        if self.timer is None:
            self.recThread = threading.Thread(target=self.record)
            self.recThread.start()
            self.present = datetime.datetime.now()
            self.timer = QtCore.QTimer()
            self.timer.timeout.connect(self.tick)
            self.timer.start(10)
            self.chunksize.setDisabled(True)
            self.statusbar.showMessage("Analyzing Started")

    def stop(self):
        if self.timer is not None:
            self.statusbar.showMessage("Analyzing Stopped")
            self.timer.stop()
            self.timer = None
            self.addThread = None
            self.recThread = None
            self.inStream = None
            self.chunks = []
            self.chunksize.setEnabled(True)

    def save(self):
        if self.figure:
            now = datetime.datetime.now()
            self.savename = now.isoformat().replace("T", "-").replace(
                ":", "-") + "+" + self.displayTime.toString('mm-ss')
            if self.capFlag is 0:
                if self.displayTime:
                    self.figure.savefig("%s.png" % self.savename,
                                        bbox_inches='tight')
                    self.statusbar.showMessage(
                        self.savename + ".png Saved on Current Directory")
            elif self.capFlag is 1:
                if self.data is not None:
                    scipy.io.wavfile.write("%s.wav" % self.savename, self.rate,
                                           self.data)
                    self.statusbar.showMessage(
                        self.savename + ".wav Saved on Current Directory")
            elif self.capFlag is 2:
                if self.data is not None and self.displayTime:
                    self.figure.savefig("%s.png" % self.savename,
                                        bbox_inches='tight')
                    scipy.io.wavfile.write("%s.wav" % self.savename, self.rate,
                                           self.data)
                    self.statusbar.showMessage(
                        self.savename + ".png and " + self.savename +
                        ".wav Saved on Current Directory")

    def intchanged(self):
        self.buffer = 2**self.chunksize.value()
        self.statusbar.showMessage(
            "Current Buffer Size Changed: " + str(self.buffer * 2) +
            " Change will be affected on further analysis ")

    def green(self):
        self.linecolor = "green"
        self.statusbar.showMessage(
            "Fast Fourier Transform Mode Changed to Payloaded Drone")

    def red(self):
        self.linecolor = "red"
        self.statusbar.showMessage(
            "Fast Fourier Transform Mode Changed to Others")

    def hsvhandler(self, value):
        self.xlimit = self.horizontalSlider.value()
        self.statusbar.showMessage("X-limit Changed to: " + str(self.xlimit))

    def vsvhandler(self, value):
        self.ylimit = self.verticallSlider.value()
        self.statusbar.showMessage("Y-limit Changed to: " + str(self.ylimit))

    def scrmode(self):
        self.capFlag = 0
        self.statusbar.showMessage("Recording Mode Changed to Plot Only")

    def recmode(self):
        self.capFlag = 1
        self.statusbar.showMessage("Recording Mode Changed to Wave Only")

    def scrnrecmode(self):
        self.capFlag = 2
        self.statusbar.showMessage("Recording Mode Changed to Plot+Wave")

    def automode(self):
        self.mlFlag = 0
        self.statusbar.showMessage(
            "Machine Learning Mode Changed to Autopilot")

    def manualmode(self):
        self.mlFlag = 1
        self.statusbar.showMessage("Machine Learning Mode Changed to Manual")
        #name = QtGui.QFileDialog.getOpenself.savenames(None, u'녹음 파일 선택 - wav확장자를 가진 파일 하나를 열어주세요',QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MusicLocation),"Record (*.wav)");
        #name = QtGui.QFileDialog.getOpenself.savenames(None, u'녹음 파일 선택 - wav확장자를 가진 파일 하나를 열어주세요',"./","Record (*.wav)");

    '''
        if not name:
            return
        else:
            self.namePre=name[0]
            self.ratePre, X = scipy.io.wavfile.read(self.namePre)
            fnarray=self.namePre.split("\\")
            self.namePre=fnarray[len(fnarray)-1]
            self.spectrumPre = scipy.fftpack.fft(X)
            self.freqPre=scipy.fftpack.fftfreq(len(X), d=1.0 / self.ratePre)
            self.nsamPre=X.shape[0]
    '''

    def thmode(self):
        '''
        for file in os.listdir("./X"):
            if file.endswith(".wav"):
                fnarray = file.split("/")
                tt=fnarray[len(fnarray) - 1]
                self.ratePre, X = scipy.io.wavfile.read("./X/"+file)
                self.spectrumPre = scipy.fftpack.fft(X)
                self.freqPre = scipy.fftpack.fftfreq(len(X), d=1.0 / self.ratePre)
                ax2 = self.figure.add_subplot(111)
                ax2.plot(self.freqPre, abs(self.spectrumPre), color=self.linecolor)
                ax2.set_xlim(1000, self.xlimit)
                ax2.set_ylim(0, 10000000)
                ax2.set_xlabel("frequency [Hz]")
                # ax2.set_title("Recorded Chunk Sec: " + str(len(self.data) / float(self.rate)))
                # ax2.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.1e'))
                ax2.set_title(tt)
                ax2.grid(True)
                #self.canvas.draw()
                print tt
                plt.savefig("%s.png" % tt, bbox_inches='tight')

            '''

        self.mlFlag = 2
        self.statusbar.showMessage(
            "Machine Learning Mode Deactivated. Using Preset Threshold")

    def chkfir(self):
        if self.fir.isChecked() == False:
            self.lbnd1.setEnabled(False)
            self.rbnd1.setEnabled(False)
            self.th1.setEnabled(False)
        else:
            self.lbnd1.setEnabled(True)
            self.rbnd1.setEnabled(True)
            self.th1.setEnabled(True)

    def chksec(self):
        if self.sec.isChecked() == False:
            self.lbnd2.setEnabled(False)
            self.rbnd2.setEnabled(False)
            self.th2.setEnabled(False)
        else:
            self.lbnd2.setEnabled(True)
            self.rbnd2.setEnabled(True)
            self.th2.setEnabled(True)

    def chkthi(self):
        if self.thi.isChecked() == False:
            self.lbnd3.setEnabled(False)
            self.rbnd3.setEnabled(False)
            self.th3.setEnabled(False)
        else:
            self.lbnd3.setEnabled(True)
            self.rbnd3.setEnabled(True)
            self.th3.setEnabled(True)

    def lbnd1f(self):
        self.leftBoundary_1.setEnabled(False)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.lbnd1.setFocus(True)

    def lbnd2f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(False)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.lbnd2.setFocus(True)

    def lbnd3f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(False)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.lbnd3.setFocus(True)

    def rbnd1f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(False)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.rbnd1.setFocus(True)

    def rbnd2f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(False)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.rbnd2.setFocus(True)

    def rbnd3f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(False)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.rbnd3.setFocus(True)

    def th1f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(False)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(True)
        self.th1.setFocus(True)

    def th2f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(False)
        self.threshold_3.setEnabled(True)
        self.th2.setFocus(True)

    def th3f(self):
        self.leftBoundary_1.setEnabled(True)
        self.leftBoundary_2.setEnabled(True)
        self.leftBoundary_3.setEnabled(True)
        self.rightBoundary_1.setEnabled(True)
        self.rightBoundary_2.setEnabled(True)
        self.rightBoundary_3.setEnabled(True)
        self.threshold_1.setEnabled(True)
        self.threshold_2.setEnabled(True)
        self.threshold_3.setEnabled(False)
        self.th3.setFocus(True)

    def calcdap(self):
        nzerocnt = 0
        avgdap = 0.00
        for per in self.dapper:
            if per > 0:
                nzerocnt += 1
                avgdap += per
        if nzerocnt > 0:
            self.avgper = avgdap / float(nzerocnt)
            self.Dapp.display(self.avgper)
        else:
            self.Dapp.display(0.00)

    def calcndap(self):
        nzerocnt = 0
        avgndap = 0.00
        for per in self.ndapper:
            if per > 0:
                nzerocnt += 1
                avgndap += per
        if nzerocnt > 0:
            self.navgper = avgndap / float(nzerocnt)
            self.nDapp.display(self.navgper)
        else:
            self.nDapp.display(0.00)

    def plotClick(self, value):
        if not str(value).__contains__("(None,None)"):
            arr = str(value).split("=")[2].lstrip("(").replace(") button",
                                                               "").split(",")
            xflt = float(arr[0])
            x = int(xflt)
            yflt = float(arr[1])
            y = int(yflt)
            if self.leftBoundary_1.isEnabled() is False:
                if x < self.rbnd1.value():
                    self.lbnd1.setValue(x)
                    self.leftBoundary_1.setEnabled(True)
            elif self.leftBoundary_2.isEnabled() is False:
                if x < self.rbnd2.value():
                    self.lbnd2.setValue(x)
                    self.leftBoundary_2.setEnabled(True)
            elif self.leftBoundary_3.isEnabled() is False:
                if x < self.rbnd3.value():
                    self.lbnd3.setValue(x)
                    self.leftBoundary_3.setEnabled(True)
            elif self.rightBoundary_1.isEnabled() is False:
                if x > self.lbnd1.value():
                    self.rbnd1.setValue(x)
                    self.rightBoundary_1.setEnabled(True)
            elif self.rightBoundary_2.isEnabled() is False:
                if x > self.lbnd2.value():
                    self.rbnd2.setValue(x)
                    self.rightBoundary_2.setEnabled(True)
            elif self.rightBoundary_3.isEnabled() is False:
                if x > self.lbnd3.value():
                    self.rbnd3.setValue(x)
                    self.rightBoundary_3.setEnabled(True)
            elif self.threshold_1.isEnabled() is False:
                self.th1.setValue(y)
                self.threshold_1.setEnabled(True)
            elif self.threshold_2.isEnabled() is False:
                self.th2.setValue(y)
                self.threshold_2.setEnabled(True)
            elif self.threshold_3.isEnabled() is False:
                self.th3.setValue(y)
                self.threshold_3.setEnabled(True)

                #if event.xdata is not None:
        #   print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % (event.button, event.x, event.y, event.xdata, event.ydata))

    def listItemRightClicked(self, QPos):
        self.listMenu = QtGui.QMenu()
        menu_item = self.listMenu.addAction("Remove Item")
        #        self.connect(menu_item, QtCore.SIGNAL("triggered()"), self.menuItemClicked)
        parentPosition = self.list.mapToGlobal(QtCore.QPoint(0, 0))
        self.listMenu.move(parentPosition + QPos)
        self.listMenu.show()

    def menuItemClicked(self):
        currentItemName = str(
            self.listWidget_extractedmeters.currentItem().text())
        print(currentItemName)

    class CustomWidget(QtGui.QWidget):
        downloadRequest = QtCore.pyqtSignal(str)

        def __init__(self, log):
            QtGui.QWidget.__init__(self)
            self.label = QtGui.QLabel(self)
            self.label.setText(log)
            self.button1 = QtGui.QPushButton('1', self)
            self.button1.setFixedSize(20, 20)
            #self.button1.clicked.connect(Ui_MainWindow.tongtong)
            self.button2 = QtGui.QPushButton('2', self)
            self.button2.setFixedSize(20, 20)
            self.button2.clicked.connect(self.handleButton)
            self.button3 = QtGui.QPushButton('3', self)
            self.button3.setFixedSize(20, 20)
            self.button3.clicked.connect(self.handleButton)
            self.button4 = QtGui.QPushButton('4', self)
            self.button4.setFixedSize(20, 20)
            self.button4.clicked.connect(self.handleButton)
            self.button5 = QtGui.QPushButton('5', self)
            self.button5.setFixedSize(20, 20)
            self.button5.clicked.connect(self.handleButton)

            self.layout = QtGui.QVBoxLayout(self)
            self.layout2 = QtGui.QHBoxLayout(self)
            self.layout.addWidget(self.label)
            self.layout.addLayout(self.layout2, 1)

            self.layout2.addWidget(self.button1)
            self.layout2.addWidget(self.button2)
            self.layout2.addWidget(self.button3)
            self.layout2.addWidget(self.button4)
            self.layout2.addWidget(self.button5)

        def handleButton(self):
            url = self.edit.text().strip()
            if url and not self._thread.isRunning():
                self.viewer.clear()
                self._thread.start()
                # safely communicate with worker via signal
                self.downloadRequest.emit(url)
Example #15
0
class MainQMainWindow(QMainWindow):
    def __init__(self):
        super(MainQMainWindow, self).__init__()
        # Create QListWidget
        self.setFixedSize(800, 500)
        self.myQListWidget = QListWidget(self)
        self.alerts = []
        # [Alert(AlertInfo('2018-01-12 00:00:01', '1', '1'), 'alert'),
        #  Alert(AlertInfo('2018-01-12 00:01:01', '2', '2'), 'ignored'),
        #  Alert(AlertInfo('2018-01-12 00:02:01', '3', '3'), 'resolved')
        #  ]
        # self.myQListWidget.setStyleSheet("QListWidget::item { border: 0px solid red }")
        for alert in self.alerts[::-1]:
            # Create QCustomQWidget
            myQCustomQWidget = QCustomQWidget()
            myQCustomQWidget.setItemFromAlert(alert)
            # Create QListWidgetItem
            myQListWidgetItem = QListWidgetItem(self.myQListWidget)
            # Set size hint
            myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
            # Add QListWidgetItem into QListWidget
            self.myQListWidget.addItem(myQListWidgetItem)
            self.myQListWidget.setItemWidget(myQListWidgetItem,
                                             myQCustomQWidget)

        self.myQListWidget.itemDoubleClicked.connect(self._handleDoubleClick)
        self.setCentralWidget(self.myQListWidget)

    #TODO: update 1 element
    def updateValues(self, alerts):
        self.myQListWidget.clear()
        for alert in alerts[::-1]:
            print(alert.state)
            myQCustomQWidget = QCustomQWidget()
            myQCustomQWidget.setItemFromAlert(alert)
            # Create QListWidgetItem
            myQListWidgetItem = QListWidgetItem(self.myQListWidget)
            # Set size hint
            myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
            # Add QListWidgetItem into QListWidget
            self.myQListWidget.addItem(myQListWidgetItem)
            self.myQListWidget.setItemWidget(myQListWidgetItem,
                                             myQCustomQWidget)

        self.alerts = alerts

    @SimpleThread
    def server(self, primaryText):

        model_path = os.path.join('frozen_inference_graph.pb')
        pipe = detectionPipeline(
            args.filename,
            './config_ex.json',
            # pipe = detectionPipeline('/Users/StasDon/Documents/Competitions/2018-19/HacknCode/data/videos/l_07_persons_1_01.mp4', './config_ex.json',
            models_paths=[model_path],
            gui=self)
        pipe.processVideo()

    ##TODO: ADD HASHMAP
    def search_for_alert(self, cam):
        for idx, alert in enumerate(self.alerts):
            if alert.state == 'alert' and alert.info.camera == cam:
                return idx
        return None

    def _handleDoubleClick(self, item):
        selected_index = self.myQListWidget.currentRow()
        alerts = self.alerts[::-1].copy()
        dialog = AlertInfoWindow(alert=alerts[selected_index], parent=self)
        if dialog.exec_() == QDialog.Accepted:
            alerts[selected_index].state = dialog.choice
            self.updateValues(alerts[::-1])
        dialog.deleteLater()