diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2003-11-19 14:34:18 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2003-11-19 14:34:18 (GMT) |
commit | 28ecf70db57828db2ca279643bf9aeca7662f35c (patch) | |
tree | 09b7767bbc411f85313b58d6fe7e5e67d9392973 /Mac/scripts/MkDistr_ui.py | |
parent | 6045b9c93511c767f6cfa2d2fa299c76181acd9b (diff) | |
download | cpython-28ecf70db57828db2ca279643bf9aeca7662f35c.zip cpython-28ecf70db57828db2ca279643bf9aeca7662f35c.tar.gz cpython-28ecf70db57828db2ca279643bf9aeca7662f35c.tar.bz2 |
Getting rid of support for MacOS9 and earlier. This is the first step,
and the biggest in size, but probably the easiest. Hunting through the
source code comes next.
Diffstat (limited to 'Mac/scripts/MkDistr_ui.py')
-rw-r--r-- | Mac/scripts/MkDistr_ui.py | 356 |
1 files changed, 0 insertions, 356 deletions
diff --git a/Mac/scripts/MkDistr_ui.py b/Mac/scripts/MkDistr_ui.py deleted file mode 100644 index ee7ace0..0000000 --- a/Mac/scripts/MkDistr_ui.py +++ /dev/null @@ -1,356 +0,0 @@ -# -# MkDistr - User Interface. -# -# Jack Jansen, CWI, August 1995 -# -# XXXX To be done (requires mods of FrameWork and toolbox interfaces too): -# - Give dialogs titles (need dlg->win conversion) -# - Place dialogs better (???) -# - <return> as <ok> -# - big box around ok button -# - window-close crashes on reopen (why?) -# - Box around lists (???) -# - Change cursor while busy (need cursor support in Qd) -# -from Carbon import Res -from Carbon import Dlg -from Carbon import Ctl -from Carbon import List -from Carbon import Win -from Carbon import Qd -from FrameWork import * -import EasyDialogs -import os -import sys -import macresource - -# Resource IDs -ID_MAIN = 514 -MAIN_LIST=1 -MAIN_MKDISTR=2 -MAIN_CHECK=3 -MAIN_INCLUDE=4 -MAIN_EXCLUDE=5 - -ID_INCWINDOW=515 -ID_EXCWINDOW=517 -INCEXC_DELETE=2 -INCEXC_CHANGE=3 -INCEXC_ADD=4 - -ID_INCLUDE=512 -ID_EXCLUDE=513 -DLG_OK=1 # Include for include, exclude for exclude -DLG_CANCEL=2 -DLG_SRCPATH=3 -DLG_DSTPATH=4 # include dialog only -DLG_EXCLUDE=5 # Exclude, include dialog only - -ID_DTYPE=516 -DTYPE_EXIST=1 -DTYPE_NEW=2 -DTYPE_CANCEL=3 - -class EditDialogWindow(DialogWindow): - """Include/exclude editor (modeless dialog window)""" - - def open(self, id, (src, dst), callback, cancelrv): - self.id = id - self.callback = callback - self.cancelrv = cancelrv - DialogWindow.open(self, id) - tp, h, rect = self.dlg.GetDialogItem(DLG_SRCPATH) - Dlg.SetDialogItemText(h, src) - self.dlg.SetDialogDefaultItem(DLG_OK) - self.dlg.SetDialogCancelItem(DLG_CANCEL) - if id == ID_INCLUDE: - tp, h, rect = self.dlg.GetDialogItem(DLG_DSTPATH) - if dst == None: - dst = '' - Dlg.SetDialogItemText(h, dst) - self.dlg.DrawDialog() - - def do_itemhit(self, item, event): - if item in (DLG_OK, DLG_CANCEL, DLG_EXCLUDE): - self.done(item) - # else it is not interesting - - def done(self, item): - tp, h, rect = self.dlg.GetDialogItem(DLG_SRCPATH) - src = Dlg.GetDialogItemText(h) - if item == DLG_OK: - if self.id == ID_INCLUDE: - tp, h, rect = self.dlg.GetDialogItem(DLG_DSTPATH) - dst = Dlg.GetDialogItemText(h) - rv = (src, dst) - else: - rv = (src, None) - elif item == DLG_EXCLUDE: - rv = (src, None) - else: - rv = self.cancelrv - self.close() - self.callback((item in (DLG_OK, DLG_EXCLUDE)), rv) - -class ListWindow(DialogWindow): - """A dialog window containing a list as its main item""" - - def open(self, id, contents): - self.id = id - DialogWindow.open(self, id) - Qd.SetPort(self.wid) - tp, h, rect = self.dlg.GetDialogItem(MAIN_LIST) - self.listrect = rect - rect2 = rect[0]+1, rect[1]+1, rect[2]-16, rect[3]-16 # Scroll bar space - self.list = List.LNew(rect2, (0, 0, 1, len(contents)), (0,0), 0, self.wid, - 0, 1, 1, 1) - self.setlist(contents) - - def setlist(self, contents): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if contents: - self.list.LAddRow(len(contents), 0) - for i in range(len(contents)): - self.list.LSetCell(contents[i], (0, i)) - self.list.LSetDrawingMode(1) - ##self.list.LUpdate(self.wid.GetWindowPort().visRgn) - self.wid.InvalWindowRect(self.listrect) - - def additem(self, item): - where = self.list.LAddRow(1, 0) - self.list.LSetCell(item, (0, where)) - - def delgetitem(self, item): - data = self.list.LGetCell(1000, (0, item)) - self.list.LDelRow(1, item) - return data - - def do_listhit(self, event): - (what, message, when, where, modifiers) = event - Qd.SetPort(self.wid) - where = Qd.GlobalToLocal(where) - if self.list.LClick(where, modifiers): - self.do_dclick(self.delgetselection()) - - def delgetselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - items.reverse() - for i in items: - values.append(self.delgetitem(i)) - return values - - def do_rawupdate(self, window, event): - Qd.SetPort(window) - Qd.FrameRect(self.listrect) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def do_close(self): - self.close() - - def close(self): - del self.list - DialogWindow.close(self) - - def mycb_add(self, ok, item): - if item: - self.additem(item[0]) - self.cb_add(item) - -class MainListWindow(ListWindow): - """The main window""" - - def open(self, id, cb_check, cb_run, cb_add): - ListWindow.open(self, id, []) - self.dlg.SetDialogDefaultItem(MAIN_INCLUDE) - self.cb_run = cb_run - self.cb_check = cb_check - self.cb_add = cb_add - setwatchcursor() - list = self.cb_check() - self.setlist(list) - setarrowcursor() - - def do_itemhit(self, item, event): - if item == MAIN_LIST: - self.do_listhit(event) - if item == MAIN_MKDISTR: - setwatchcursor() - self.cb_run() - setarrowcursor() - if item == MAIN_CHECK: - setwatchcursor() - list = self.cb_check() - self.setlist(list) - setarrowcursor() - if item == MAIN_INCLUDE: - self.do_dclick(self.delgetselection()) - if item == MAIN_EXCLUDE: - for i in self.delgetselection(): - self.cb_add((i, None)) - - def do_dclick(self, list): - if not list: - list = [''] - for l in list: - w = EditDialogWindow(self.parent) - w.open(ID_INCLUDE, (l, None), self.mycb_add, None) - - def mycb_add(self, ok, item): - if item: - self.cb_add(item) - -class IncListWindow(ListWindow): - """An include/exclude window""" - def open(self, id, editid, contents, cb_add, cb_del, cb_get): - ListWindow.open(self, id, contents) - self.dlg.SetDialogDefaultItem(INCEXC_CHANGE) - self.editid = editid - self.cb_add = cb_add - self.cb_del = cb_del - self.cb_get = cb_get - - def do_itemhit(self, item, event): - if item == MAIN_LIST: - self.do_listhit(event) - if item == INCEXC_DELETE: - old = self.delgetselection() - for i in old: - self.cb_del(i) - if item == INCEXC_CHANGE: - self.do_dclick(self.delgetselection()) - if item == INCEXC_ADD: - w = EditDialogWindow(self.parent) - w.open(self.editid, ('', None), self.mycb_add, None) - - def do_dclick(self, list): - if not list: - list = [''] - for l in list: - old = self.cb_get(l) - self.cb_del(l) - w = EditDialogWindow(self.parent) - w.open(self.editid, old, self.mycb_add, old) - -class MkDistrUI(Application): - def __init__(self, main): - self.main = main - Application.__init__(self) - self.mwin = MainListWindow(self) - self.mwin.open(ID_MAIN, self.main.check, self.main.run, self.main.inc.add) - self.iwin = None - self.ewin = None - - def makeusermenus(self): - self.filemenu = m = Menu(self.menubar, "File") - self.includeitem = MenuItem(m, "Show Include window", "", self.showinc) - self.excludeitem = MenuItem(m, "Show Exclude window", "", self.showexc) - self.saveitem = MenuItem(m, "Save databases", "S", self.save) - self.quititem = MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - if self.main.is_modified(): - rv = EasyDialogs.AskYesNoCancel('Database modified. Save?', -1) - if rv == -1: - return - if rv == 1: - self.main.save() - self._quit() - - def save(self, *args): - self.main.save() - - def showinc(self, *args): - if self.iwin: - if self._windows.has_key(self.iwin): - self.iwin.close() - del self.iwin - self.iwin = IncListWindow(self) - self.iwin.open(ID_INCWINDOW, ID_INCLUDE, self.main.inc.getall(), self.main.inc.add, - self.main.inc.delete, self.main.inc.get) - - def showexc(self, *args): - if self.ewin: - if self._windows.has_key(self.ewin): - self.ewin.close() - del self.ewin - self.ewin = IncListWindow(self) - self.ewin.open(ID_EXCWINDOW, ID_EXCLUDE, self.main.exc.getall(), self.main.exc.add, - self.main.exc.delete, self.main.exc.get) - - def do_about(self, id, item, window, event): - EasyDialogs.Message("Test the MkDistr user interface.") - -def GetType(): - """Ask user for distribution type""" - while 1: - d = Dlg.GetNewDialog(ID_DTYPE, -1) - d.SetDialogDefaultItem(DTYPE_EXIST) - d.SetDialogCancelItem(DTYPE_CANCEL) - while 1: - rv = ModalDialog(None) - if rv in (DTYPE_EXIST, DTYPE_NEW, DTYPE_CANCEL): - break - del d - if rv == DTYPE_CANCEL: - sys.exit(0) - if rv == DTYPE_EXIST: - path = EasyDialogs.AskFileForOpen() - if not path: - sys.exit(0) - basename = os.path.split(path)[-1] - if basename[-8:] <> '.include': - EasyDialogs.Message('That is not a distribution include file') - else: - return basename[:-8] - else: - name = EasyDialogs.AskString('Distribution name:') - if name: - return name - sys.exit(0) - -def InitUI(): - """Initialize stuff needed by UI (a resource file)""" - macresource.need('DLOG', ID_MAIN, 'MkDistr.rsrc', modname=__name__) - -class _testerhelp: - def __init__(self, which): - self.which = which - - def get(self): - return [self.which+'-one', self.which+'-two'] - - def add(self, value): - if value: - print 'ADD', self.which, value - - def delete(self, value): - print 'DEL', self.which, value - -class _test: - def __init__(self): - import sys - InitUI() - self.inc = _testerhelp('include') - self.exc = _testerhelp('exclude') - self.ui = MkDistrUI(self) - self.ui.mainloop() - sys.exit(1) - - def check(self): - print 'CHECK' - return ['rv1', 'rv2'] - - def run(self): - print 'RUN' - -if __name__ == '__main__': - _test() |