コード例 #1
0
ファイル: droptarget.py プロジェクト: bbarao/py-cloudapp
class DropWidget(QLabel):

    hidden = True

    def __init__(self, parent=None):
        super(QWidget,self).__init__(parent)
        self.setWindowFlags(Qt.X11BypassWindowManagerHint | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.signals = self.Signals()
        self.setAcceptDrops(1)
        self.resize(QSize(217,68))
        self.setAlignment(Qt.AlignCenter)
        self.setPixmap(QPixmap(':/bg/cloudapp_droptarget.png'))

        self.trayIcon = TrayIcon()
        self.trayIcon.show()
        self.trayIcon.activated[QSystemTrayIcon.ActivationReason].connect(self.trayActivated)
        self.signals.itemDropped[str].connect(self.trayIcon.apiHandle.addItem)

        self.trayIcon.apiHandle.pdialog.voffsetSlider.valueChanged[int].connect(self.vmove)
        self.move(qApp.desktop().screenGeometry().width()-217,self.trayIcon.apiHandle.pdialog.settings['drop_topoffset'])

    def vmove(self, val):
        self.move(self.x(),val)

    def dragEnterEvent(self, event):
        if self.trayIcon.apiHandle.connected:
            event.acceptProposedAction()

    def dropEvent(self, event):
        mimeData = event.mimeData()
        pos = event.pos()
        if pos.x() > 25:
            if mimeData.hasUrls():
                for url in mimeData.urls():
                    if url.scheme() in ('file', 'http','https','ftp'):
                        self.signals.itemDropped.emit(url.toString())
                        self.animOpacity()

    def trayActivated(self, reason):
        if reason == QSystemTrayIcon.Trigger:
            self.toggle()
        elif reason == QSystemTrayIcon.Context:
            if hasattr(self.trayIcon, "deleteAction"):
                deleteCheckBox = self.trayIcon.deleteAction.widget.checkBox
                if deleteCheckBox.isChecked():
                    deleteCheckBox.toggle()

    def animOpacity(self):
        if self.hidden:
            self.show()
        else:
            self.hide()

        self.hidden = not self.hidden

    def toggle(self):
        self.animOpacity()

    class Signals(QObject):
        itemDropped = pyqtSignal(str)
コード例 #2
0
ファイル: traygui.py プロジェクト: imammedo/memocard
class TrayApp:

	def get_default_config(self):
		config = ConfigParser.RawConfigParser()
		config.add_section('GUI')
		config.set('GUI', 'CardWindowY', '15')
		config.set('GUI', 'CardWindowY', '15')
		config.add_section('Learning')
		config.set('Learning', 'SlideTimeout', '10')
		config.set('Learning', 'SlideInterval', '40')
		config.set('Learning', 'FlipSides', 'false')
		config.set('Learning', 'DefaultDB', 'french.jml')
		return config

	def __init__(self):
		self.config = ConfigParser.RawConfigParser()
		try:
			self.config.readfp(open('memocard.cfg'))
		except:
			self.config = self.get_default_config()

		self.flip = self.config.getboolean('Learning', 'FlipSides')

		self.icon = TrayIcon()
		self.icon.connect('activate', self.slide_show_cb)

		# Build menu
		menu = gtk.Menu()
		self.topMenu = menu
		menuItem = gtk.MenuItem('Start/Stop slide show')
		menuItem.connect('activate', self.slide_show_cb)
		self.slide_show_mode = False
		menu.append(menuItem)
		menuItem = gtk.CheckMenuItem('Flip cards')
		menuItem.connect('activate', self.flip_cb)
		menu.append(menuItem)
		menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
		menuItem.connect('activate', self.quit_cb, self.icon)
		menu.append(menuItem)

		self.icon.connect('popup-menu', self.popup_menu_cb, menu)
		self.icon.show()

		# Init cards database
		self.db = jmemorize_db.jMemorizeDB()
		self.db.open_db(self.config.get('Learning', 'DefaultDB'))

		# Add Filter menu Item if backend provides it
		try:
			flt = self.db.getFilter()
			flt_menu = self.build_FilterMenu(flt)
			if flt_menu != None:
				menuItem = gtk.MenuItem('Filter')
				menuItem.set_submenu(flt_menu)
				menu.prepend(menuItem)
				menu.connect('hide', self.setToolTip_from_filter)
		except Exception, e:
			print "Unable to get Filter menu from DB: ", e
コード例 #3
0
 def __init__(self):
     super().__init__()
     self.setFixedHeight(500)
     self.setFixedWidth(350)
     self.setupNote()
     self.setupToolBar()
     self.setupStatusBar()
     self.view.setupSignal(self.updateStatusBar)
     ti = TrayIcon(self)
     ti.show()
     self.show()
コード例 #4
0
ファイル: droptarget.py プロジェクト: hyde1/py-cloudapp
class DropWidget(QLabel):

    def __init__(self, parent=None):
        super(QWidget,self).__init__(parent)
        self.setWindowFlags(Qt.X11BypassWindowManagerHint | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.signals = self.Signals()
        self.setAcceptDrops(1)
        self.resize(QSize(238,68))
        self.setAlignment(Qt.AlignCenter)
              
        self.trayIcon = TrayIcon()
        self.trayIcon.show()
        self.trayIcon.activated[QSystemTrayIcon.ActivationReason].connect(self.trayActivated)
        self.signals.itemDropped[str].connect(self.trayIcon.apiHandle.addItem)
        
        self.trayIcon.apiHandle.pdialog.voffsetSlider.valueChanged[int].connect(self.vmove)
        self.move(qApp.desktop().width()-227,self.trayIcon.apiHandle.pdialog.settings['drop_topoffset'])
        self.slideIn()

    def vmove(self, val):
        self.move(self.x(),val)

    def dragEnterEvent(self, event):
        if self.trayIcon.apiHandle.connected:
            event.acceptProposedAction()
            self.slideOut()

    def dropEvent(self, event):
        mimeData = event.mimeData()
        pos = event.pos()
        if pos.x() > 25:
            if mimeData.hasUrls():
                for url in mimeData.urls():
                    if url.scheme() in ('file', 'http','https','ftp'):
                        self.signals.itemDropped.emit(url.toString())

    def trayActivated(self, reason):
        if reason == QSystemTrayIcon.Trigger:
            if self.trayIcon.apiHandle.connected:
                self.toggle()
        elif reason == QSystemTrayIcon.Context:
            if hasattr(self.trayIcon, "deleteAction"): 
                deleteCheckBox = self.trayIcon.deleteAction.widget.checkBox
                if deleteCheckBox.isChecked():
                    deleteCheckBox.toggle()

    def mousePressEvent(self, event):
        if event.x() in range(4,18):
            self.toggle()

    def slide(self, newRect):
        self.a = QPropertyAnimation(self, "geometry")
        self.a.setDuration(500)
        self.a.setStartValue(self.geometry())
        self.a.setEndValue(newRect)
        self.a.setEasingCurve(QEasingCurve.InOutQuad)
        self.a.start()          

    def slideOut(self):        
        current = self.geometry()
        new = QRect(current)
        new.moveTopLeft(QPoint(qApp.desktop().width() - 236, current.y()))
        bg = ':/bg/cloudapp_droptarget_out.png'
        self.setPixmap(QPixmap(bg))
        self.slide(new)

    def slideIn(self):
        current = self.geometry()
        new = QRect(current)
        bg = ':/bg/cloudapp_droptarget_in.png'
        self.setPixmap(QPixmap(bg))
        new.moveTopLeft(QPoint(qApp.desktop().width() - 19, current.y()))
        self.slide(new)

    def toggle(self):
        current = self.geometry()
        if current.x() > (qApp.desktop().width() - 236):
            self.slideOut()
        else:
            self.slideIn()

    class Signals(QObject):
        itemDropped = pyqtSignal(str)
コード例 #5
0
ファイル: droptarget.py プロジェクト: toastwaffle/py-cloudapp
class DropWidget(QLabel):
    def __init__(self, parent=None):
        super(QWidget, self).__init__(parent)
        self.setWindowFlags(Qt.X11BypassWindowManagerHint
                            | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.signals = self.Signals()
        self.setAcceptDrops(1)
        self.resize(QSize(238, 68))
        self.setAlignment(Qt.AlignCenter)

        self.trayIcon = TrayIcon()
        self.trayIcon.show()
        self.trayIcon.activated[QSystemTrayIcon.ActivationReason].connect(
            self.trayActivated)
        self.signals.itemDropped[str].connect(self.trayIcon.apiHandle.addItem)

        self.trayIcon.apiHandle.pdialog.voffsetSlider.valueChanged[
            int].connect(self.vmove)
        self.move(qApp.desktop().width() - 227,
                  self.trayIcon.apiHandle.pdialog.settings['drop_topoffset'])
        self.slideIn()

    def vmove(self, val):
        self.move(self.x(), val)

    def dragEnterEvent(self, event):
        if self.trayIcon.apiHandle.connected:
            event.acceptProposedAction()
            self.slideOut()

    def dropEvent(self, event):
        mimeData = event.mimeData()
        pos = event.pos()
        if pos.x() > 25:
            if mimeData.hasUrls():
                for url in mimeData.urls():
                    if url.scheme() in ('file', 'http', 'https', 'ftp'):
                        self.signals.itemDropped.emit(url.toString())

    def trayActivated(self, reason):
        if reason == QSystemTrayIcon.Trigger:
            self.toggle()
        elif reason == QSystemTrayIcon.Context:
            if hasattr(self.trayIcon, "deleteAction"):
                deleteCheckBox = self.trayIcon.deleteAction.widget.checkBox
                if deleteCheckBox.isChecked():
                    deleteCheckBox.toggle()

    def mousePressEvent(self, event):
        if event.x() in range(4, 18):
            self.toggle()

    def slide(self, newRect):
        self.a = QPropertyAnimation(self, "geometry")
        self.a.setDuration(500)
        self.a.setStartValue(self.geometry())
        self.a.setEndValue(newRect)
        self.a.setEasingCurve(QEasingCurve.InOutQuad)
        self.a.start()

    def slideOut(self):
        current = self.geometry()
        new = QRect(current)
        new.moveTopLeft(QPoint(qApp.desktop().width() - 236, current.y()))
        bg = ':/bg/cloudapp_droptarget_out.png'
        self.setPixmap(QPixmap(bg))
        self.slide(new)

    def slideIn(self):
        current = self.geometry()
        new = QRect(current)
        bg = ':/bg/cloudapp_droptarget_in.png'
        self.setPixmap(QPixmap(bg))
        new.moveTopLeft(QPoint(qApp.desktop().width() - 19, current.y()))
        self.slide(new)

    def toggle(self):
        current = self.geometry()
        if current.x() > (qApp.desktop().width() - 236):
            self.slideOut()
        else:
            self.slideIn()

    class Signals(QObject):
        itemDropped = pyqtSignal(str)