diff options
author | RaNaN <Mast3rRaNaN@hotmail.de> | 2010-08-25 19:30:08 +0200 |
---|---|---|
committer | RaNaN <Mast3rRaNaN@hotmail.de> | 2010-08-25 19:30:08 +0200 |
commit | b31a5a67e45ad9a274c668efa7424ddb80769fec (patch) | |
tree | 79e40e3dd2e65d1a4fb93e1e23a3d650404fcc45 /interfaces/pyLoadGui.py | |
parent | new icon, fixes (diff) | |
download | pyload-b31a5a67e45ad9a274c668efa7424ddb80769fec.tar.xz |
icon fixes
Diffstat (limited to 'interfaces/pyLoadGui.py')
-rwxr-xr-x | interfaces/pyLoadGui.py | 157 |
1 files changed, 70 insertions, 87 deletions
diff --git a/interfaces/pyLoadGui.py b/interfaces/pyLoadGui.py index 6279fb10b..f1b963e88 100755 --- a/interfaces/pyLoadGui.py +++ b/interfaces/pyLoadGui.py @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>. - + @author: mkaay @version: v0.4.0 """ @@ -34,9 +34,13 @@ from os.path import join from os.path import abspath from os.path import dirname -sys.path.append(join(dirname(abspath(__file__)),"..")) +try: + sys.path.append(join(dirname(abspath(__file__)),"..")) +except: + pass from module import InitHomeDir + from module.gui.ConnectionManager import * from module.gui.connector import Connector from module.gui.MainWindow import * @@ -66,33 +70,12 @@ class main(QObject): QObject.__init__(self) self.app = QApplication(sys.argv) self.path = pypath - self.homedir = self.getHomeDir() - + self.homedir = abspath("") + self.configdir = "" - + self.init(True) - - def getHomeDir(self): - homedir = "" - - if platform == 'nt': - homedir = expanduser("~") - if homedir == "~": - import ctypes - CSIDL_APPDATA = 26 - _SHGetFolderPath = ctypes.windll.shell32.SHGetFolderPathW - _SHGetFolderPath.argtypes = [ctypes.wintypes.HWND, - ctypes.c_int, - ctypes.wintypes.HANDLE, - ctypes.wintypes.DWORD, ctypes.wintypes.LPCWSTR] - - path_buf = ctypes.wintypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) - result = _SHGetFolderPath(0, CSIDL_APPDATA, 0, 0, path_buf) - homedir = path_buf.value - else: - homedir = expanduser("~") - return homedir - + def init(self, first=False): """ set main things up @@ -114,12 +97,12 @@ class main(QObject): self.connWindow = ConnectionManager() self.mainloop = self.Loop(self) self.connectSignals() - + self.checkClipboard = False default = self.refreshConnections() self.connData = None self.captchaProcessing = False - + if first: self.tray = TrayIcon() self.tray.show() @@ -128,14 +111,14 @@ class main(QObject): self.connect(self.tray.exitAction, SIGNAL("triggered()"), self.app.quit) self.connect(self.tray.showAction, SIGNAL("toggled(bool)"), self.mainWindow.setVisible) self.connect(self.mainWindow, SIGNAL("hidden"), self.tray.mainWindowHidden) - + if not first: self.connWindow.show() else: self.connWindow.edit.setData(default) data = self.connWindow.edit.getData() self.slotConnect(data) - + def startMain(self): """ start all refresh threads and show main window @@ -154,11 +137,11 @@ class main(QObject): self.clipboard = self.app.clipboard() self.connect(self.clipboard, SIGNAL('dataChanged()'), self.slotClipboardChange) self.mainWindow.actions["clipboard"].setChecked(self.checkClipboard) - + self.mainWindow.tabs["settings"]["w"].setConnector(self.connector) self.mainWindow.tabs["settings"]["w"].loadConfig() self.tray.showAction.setDisabled(False) - + def stopMain(self): """ stop all refresh threads and hide main window @@ -172,7 +155,7 @@ class main(QObject): self.mainWindow.hide() self.queue.stop() self.connector.wait() - + def connectSignals(self): """ signal and slot stuff, yay! @@ -196,10 +179,10 @@ class main(QObject): self.connect(self.mainWindow, SIGNAL("pullOutPackage"), self.slotPullOutPackage) self.connect(self.mainWindow, SIGNAL("setPriority"), self.slotSetPriority) self.connect(self.mainWindow, SIGNAL("reloadAccounts"), self.slotReloadAccounts) - + self.connect(self.mainWindow, SIGNAL("quit"), self.quit) self.connect(self.mainWindow.captchaDock, SIGNAL("done"), self.slotCaptchaDone) - + def slotShowConnector(self): """ emitted from main window (menu) @@ -208,26 +191,26 @@ class main(QObject): """ self.stopMain() self.init() - + def quit(self): """ quit gui """ self.app.quit() - + def loop(self): """ start application loop """ sys.exit(self.app.exec_()) - + def slotErrorBox(self, msg): """ display a nice error box """ msgb = QMessageBox(QMessageBox.Warning, "Error", msg) msgb.exec_() - + def initPackageCollector(self): """ init the package collector view @@ -281,7 +264,7 @@ class main(QObject): view.connect(view, SIGNAL("droppedToPack"), self.slotAddFileToPackage) #self.packageCollector = PackageCollector(view, self.connector) self.packageCollector = view.model() - + def initQueue(self): """ init the queue view @@ -293,7 +276,7 @@ class main(QObject): view.setSelectionMode(QAbstractItemView.ExtendedSelection) self.queue = view.model() self.queue.start() - + def refreshServerStatus(self): """ refresh server status and overall speed in the status bar @@ -307,7 +290,7 @@ class main(QObject): text = _("Status: %(status)s | Speed: %(speed)s kb/s") % status self.mainWindow.actions["toggle_status"].setChecked(not status["pause"]) self.mainWindow.serverStatus.setText(text) - + def refreshLog(self): """ update log window @@ -322,7 +305,7 @@ class main(QObject): cursor = self.mainWindow.tabs["log"]["text"].textCursor() cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor) self.mainWindow.tabs["log"]["text"].setTextCursor(cursor) - + def getConnections(self): """ parse all connections in the config file @@ -361,7 +344,7 @@ class main(QObject): data["password"] = subs["server"].attribute("password", "") ret.append(data) return ret - + def slotSaveConnection(self, data): """ save connection to config file @@ -399,7 +382,7 @@ class main(QObject): connectionsNode.appendChild(connNode) self.parser.saveData() self.refreshConnections() - + def slotRemoveConnection(self, data): """ remove connection from config file @@ -418,7 +401,7 @@ class main(QObject): connectionsNode.removeChild(found) self.parser.saveData() self.refreshConnections() - + def slotConnect(self, data): """ connect to a core @@ -427,7 +410,7 @@ class main(QObject): """ self.connWindow.hide() if not data["type"] == "remote": - + coreparser = ConfigParser(self.configdir) if not coreparser.config: raise Exception @@ -437,7 +420,7 @@ class main(QObject): # data["password"] = "pwhere" # data["host"] = "127.0.0.1" # data["ssl"] = False - + data["port"] = coreparser.get("remote","port") data["user"] = coreparser.get("remote","username") data["password"] = coreparser.get("remote","password") @@ -447,7 +430,7 @@ class main(QObject): server_url = "http%(ssl)s://%(user)s:%(password)s@%(host)s:%(port)s/" % data self.connector.setAddr(str(server_url)) self.startMain() - + def refreshConnections(self): """ reload connetions and display them @@ -459,26 +442,26 @@ class main(QObject): if conn["default"]: return conn return None - + def slotSetDownloadStatus(self, status): """ toolbar start/pause slot """ self.connector.setPause(not status) - + def slotAddPackage(self, name, links): """ emitted from main window add package to the collector """ self.connector.proxy.add_package(name, links) - + def slotAddFileToPackage(self, pid, fid): """ emitted from collector view after a drop action """ self.connector.addFileToPackage(fid, pid) - + def slotAddContainer(self, path): """ emitted from main window @@ -490,7 +473,7 @@ class main(QObject): content = fh.read() fh.close() self.connector.proxy.upload_container(filename, Binary(content)) - + def slotSaveMainWindow(self, state, geo): """ save the window geometry and toolbar/dock position to config file @@ -503,14 +486,14 @@ class main(QObject): geoNode = mainWindowNode.toElement().elementsByTagName("geometry").item(0) newStateNode = self.parser.xml.createTextNode(state) newGeoNode = self.parser.xml.createTextNode(geo) - + stateNode.removeChild(stateNode.firstChild()) geoNode.removeChild(geoNode.firstChild()) stateNode.appendChild(newStateNode) geoNode.appendChild(newGeoNode) - + self.parser.saveData() - + def restoreMainWindow(self): """ load and restore main window geometry and toolbar/dock position from config @@ -519,20 +502,20 @@ class main(QObject): if mainWindowNode.isNull(): return nodes = self.parser.parseNode(mainWindowNode, "dict") - + state = str(nodes["state"].text()) geo = str(nodes["geometry"].text()) - + self.mainWindow.restoreWindow(state, geo) self.mainWindow.captchaDock.hide() - + def slotPushPackageToQueue(self, id): """ emitted from main window push the collector package to queue """ self.connector.proxy.push_package_to_queue(id) - + def slotRestartDownload(self, id, isPack): """ emitted from main window @@ -542,7 +525,7 @@ class main(QObject): self.connector.restartPackage(id) else: self.connector.restartFile(id) - + def slotRemoveDownload(self, id, isPack): """ emitted from main window @@ -552,7 +535,7 @@ class main(QObject): self.connector.removePackage(id) else: self.connector.removeFile(id) - + def slotAbortDownload(self, id, isPack): """ emitted from main window @@ -563,14 +546,14 @@ class main(QObject): self.connector.proxy.abort_files(data["links"].keys()) else: self.connector.proxy.abort_files([id]) - + def slotStopAllDownloads(self): """ emitted from main window stop all running downloads """ self.connector.stopAllDownloads() - + def slotClipboardChange(self): """ called if clipboard changes @@ -581,31 +564,31 @@ class main(QObject): matches = pattern.finditer(text) for match in matches: self.slotAddLinks([str(match.group(0))]) - + def slotSetClipboardStatus(self, status): """ set clipboard checking """ self.checkClipboard = status - + def slotChangePackageName(self, pid, name): """ package name edit finished """ self.connector.setPackageName(pid, str(name)) - + def slotPullOutPackage(self, pid): """ pull package out of the queue """ self.connector.proxy.pull_out_package(pid) - + def slotSetPriority(self, pid, level): """ set package priority """ self.connector.proxy.set_priority(pid, level) - + def checkCaptcha(self): if self.connector.captchaWaiting() and self.mainWindow.captchaDock.isFree(): cid, img, imgType = self.connector.getCaptcha() @@ -617,10 +600,10 @@ class main(QObject): self.mainWindow.captchaDock.hide() self.mainWindow.captchaDock.processing = False self.mainWindow.captchaDock.currentID = None - + def slotCaptchaDone(self, cid, result): self.connector.setCaptchaResult(str(cid), str(result)) - + def pullEvents(self): events = self.connector.getEvents() for event in events: @@ -642,20 +625,20 @@ class main(QObject): pass elif event[1] == "collector": self.packageCollector.addEvent(event) - + def slotReloadAccounts(self): self.mainWindow.tabs["accounts"]["view"].model().reloadData() - + class Loop(): def __init__(self, parent): self.parent = parent self.timer = QTimer() self.timer.connect(self.timer, SIGNAL("timeout()"), self.update) - + def start(self): self.update() self.timer.start(1000) - + def update(self): """ methods to call @@ -664,29 +647,29 @@ class main(QObject): self.parent.refreshLog() self.parent.checkCaptcha() self.parent.pullEvents() - + def stop(self): self.timer.stop() - + class TrayIcon(QSystemTrayIcon): def __init__(self): - QSystemTrayIcon.__init__(self, QIcon(join("icons", "logo.png"))) + QSystemTrayIcon.__init__(self, QIcon(join(pypath, "icons", "logo.png"))) self.contextMenu = QMenu() self.showAction = QAction(_("Show"), self.contextMenu) self.showAction.setCheckable(True) self.showAction.setChecked(True) self.showAction.setDisabled(True) self.contextMenu.addAction(self.showAction) - self.exitAction = QAction(QIcon(join("icons", "close.png")), _("Exit"), self.contextMenu) + self.exitAction = QAction(QIcon(join(pypath, "icons", "close.png")), _("Exit"), self.contextMenu) self.contextMenu.addAction(self.exitAction) self.setContextMenu(self.contextMenu) - + self.connect(self, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.doubleClicked) - + def mainWindowHidden(self): self.showAction.setChecked(False) - + def doubleClicked(self, reason): if self.showAction.isEnabled(): if reason == QSystemTrayIcon.DoubleClick: @@ -697,15 +680,15 @@ class Notification(QObject): QObject.__init__(self) self.tray = tray self.usePynotify = False - + try: self.usePynotify = pynotify.init("icon-summary-body") except: pass - + def showMessage(self, body): if self.usePynotify: - n = pynotify.Notification("pyload", body, join("icons", "logo.png")) + n = pynotify.Notification("pyload", body, join(pypath, "icons", "logo.png")) try: n.set_hint_string("x-canonical-append", "") except: |