From 4ab8437e7fefc42056d052a77cada686c0ce33f6 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Fri, 14 Feb 2003 14:13:25 +0000 Subject: Allow opening of alternate databases. --- Mac/Tools/IDE/PackageManager.py | 45 ++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/Mac/Tools/IDE/PackageManager.py b/Mac/Tools/IDE/PackageManager.py index 6b83e1c..fb15aed 100755 --- a/Mac/Tools/IDE/PackageManager.py +++ b/Mac/Tools/IDE/PackageManager.py @@ -41,6 +41,7 @@ import FrameWork import sys import string import os +import urllib import pimp @@ -78,14 +79,14 @@ class PackageManagerMain(Wapplication.Application): def makeusermenus(self): m = Wapplication.Menu(self.menubar, "File") -## newitem = FrameWork.MenuItem(m, "Open Standard Database", "N", 'openstandard') -## openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open') -## openbynameitem = FrameWork.MenuItem(m, "Open URL"+ELIPSES, "D", 'openbyname') + newitem = FrameWork.MenuItem(m, "Open Standard Database", "N", 'openstandard') + openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open') + openURLitem = FrameWork.MenuItem(m, "Open URL"+ELIPSES, "D", 'openURL') FrameWork.Separator(m) closeitem = FrameWork.MenuItem(m, "Close", "W", 'close') ## saveitem = FrameWork.MenuItem(m, "Save", "S", 'save') ## saveasitem = FrameWork.MenuItem(m, "Save as"+ELIPSES, None, 'save_as') - FrameWork.Separator(m) +## FrameWork.Separator(m) m = Wapplication.Menu(self.menubar, "Edit") undoitem = FrameWork.MenuItem(m, "Undo", 'Z', "undo") @@ -137,12 +138,26 @@ class PackageManagerMain(Wapplication.Application): def do_about(self, id, item, window, event): EasyDialogs.Message("Package Install Manager for Python") - + + def domenu_openstandard(self, *args): + self.opendoc(None) + def domenu_open(self, *args): filename = EasyDialogs.AskFileForOpen(typeList=("TEXT",)) if filename: filename = urllib.pathname2url(filename) self.opendoc(filename) + + def domenu_openURL(self, *args): + ok = EasyDialogs.AskYesNoCancel( + "Warning: by opening a non-standard database " + "you are trusting the maintainer of it " + "to run arbitrary code on your machine.", + yes="OK", no="") + if ok <= 0: return + url = EasyDialogs.AskString("URL of database to open:", ok="Open") + if url: + self.opendoc(url) def domenu_openbyname(self, *args): url = EasyDialogs.AskString("Open URL:", ok="Open") @@ -208,7 +223,18 @@ class PimpInterface: self.pimpinstaller = pimp.PimpInstaller(self.pimpdb) if not url: url = self.pimpprefs.pimpDatabase - self.pimpdb.appendURL(url) + try: + self.pimpdb.appendURL(url) + except IOError, arg: + return "Cannot open %s: %s" % (url, arg) + return None + + def closepimp(self): + self.pimpdb.close() + self.pimpprefs = None + self.pimpdb = None + self.pimpinstaller = None + self.packages = [] def getbrowserdata(self): self.packages = self.pimpdb.list() @@ -236,9 +262,14 @@ class PackageBrowser(PimpInterface): def __init__(self, url = None): self.ic = None - self.setuppimp(url) + msg = self.setuppimp(url) + if msg: + EasyDialogs.Message(msg) self.setupwidgets() self.updatestatus() + + def close(self): + self.closepimp() def setupwidgets(self): self.w = W.Window((580, 400), "Python Install Manager", minsize = (300, 200), tabbable = 0) -- cgit v0.12