Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 1 | # Module 'gwin' |
| 2 | # Generic stdwin windows |
| 3 | |
| 4 | # This is used as a base class from which to derive other window types. |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame^] | 5 | # XXX DON'T USE THIS CODE ANY MORE! It is ages old! |
Guido van Rossum | 61f9d0d | 1991-12-26 13:04:16 +0000 | [diff] [blame] | 6 | |
Guido van Rossum | 0b74480 | 1991-08-16 13:24:58 +0000 | [diff] [blame] | 7 | import stdwin, stdwinq |
Guido van Rossum | a4ddbd8 | 1990-12-26 15:37:05 +0000 | [diff] [blame] | 8 | from stdwinevents import * |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame^] | 9 | from mainloop import mainloop, register, unregister, windows |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 10 | |
| 11 | # Open a window |
| 12 | |
| 13 | def open(title): # Open a generic window |
| 14 | w = stdwin.open(title) |
| 15 | stdwin.setdefwinsize(0, 0) |
| 16 | # Set default event handlers |
| 17 | w.draw = nop |
| 18 | w.char = nop |
| 19 | w.mdown = nop |
| 20 | w.mmove = nop |
| 21 | w.mup = nop |
| 22 | w.m2down = m2down |
| 23 | w.m2up = m2up |
| 24 | w.size = nop |
| 25 | w.move = nop |
| 26 | w.activate = w.deactivate = nop |
| 27 | w.timer = nop |
| 28 | # default command handlers |
| 29 | w.close = close |
| 30 | w.tab = tab |
| 31 | w.enter = enter |
| 32 | w.backspace = backspace |
| 33 | w.arrow = arrow |
| 34 | w.kleft = w.kup = w.kright = w.kdown = nop |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame^] | 35 | w.dispatch = treatevent |
| 36 | register(w) |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 37 | return w |
| 38 | |
| 39 | |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 40 | def treatevent(e): # Handle a stdwin event |
| 41 | type, w, detail = e |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 42 | if type == WE_DRAW: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 43 | w.draw(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 44 | elif type == WE_MENU: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 45 | m, item = detail |
| 46 | m.action[item](w, m, item) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 47 | elif type == WE_COMMAND: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 48 | treatcommand(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 49 | elif type == WE_CHAR: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 50 | w.char(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 51 | elif type == WE_MOUSE_DOWN: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 52 | if detail[1] > 1: w.m2down(w, detail) |
| 53 | else: w.mdown(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 54 | elif type == WE_MOUSE_MOVE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 55 | w.mmove(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 56 | elif type == WE_MOUSE_UP: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 57 | if detail[1] > 1: w.m2up(w, detail) |
| 58 | else: w.mup(w, detail) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 59 | elif type == WE_SIZE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 60 | w.size(w, w.getwinsize()) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 61 | elif type == WE_ACTIVATE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 62 | w.activate(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 63 | elif type == WE_DEACTIVATE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 64 | w.deactivate(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 65 | elif type == WE_MOVE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 66 | w.move(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 67 | elif type == WE_TIMER: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 68 | w.timer(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 69 | elif type == WE_CLOSE: |
Guido van Rossum | a4ddbd8 | 1990-12-26 15:37:05 +0000 | [diff] [blame] | 70 | w.close(w) |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 71 | |
| 72 | def treatcommand(w, type): # Handle a we_command event |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 73 | if type == WC_CLOSE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 74 | w.close(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 75 | elif type == WC_RETURN: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 76 | w.enter(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 77 | elif type == WC_TAB: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 78 | w.tab(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 79 | elif type == WC_BACKSPACE: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 80 | w.backspace(w) |
Guido van Rossum | 61f9d0d | 1991-12-26 13:04:16 +0000 | [diff] [blame] | 81 | elif type in (WC_LEFT, WC_UP, WC_RIGHT, WC_DOWN): |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 82 | w.arrow(w, type) |
| 83 | |
| 84 | |
| 85 | # Methods |
| 86 | |
| 87 | def close(w): # Close method |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame^] | 88 | unregister(w) |
| 89 | del w.close # Delete our close function |
| 90 | w.close() # Call the close method |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 91 | |
| 92 | def arrow(w, detail): # Arrow key method |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 93 | if detail == WC_LEFT: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 94 | w.kleft(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 95 | elif detail == WC_UP: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 96 | w.kup(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 97 | elif detail == WC_RIGHT: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 98 | w.kright(w) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 99 | elif detail == WC_DOWN: |
Guido van Rossum | c636014 | 1990-10-13 19:23:40 +0000 | [diff] [blame] | 100 | w.kdown(w) |
| 101 | |
| 102 | |
| 103 | # Trivial methods |
| 104 | |
| 105 | def tab(w): w.char(w, '\t') |
| 106 | def enter(w): w.char(w, '\n') # 'return' is a Python reserved word |
| 107 | def backspace(w): w.char(w, '\b') |
| 108 | def m2down(w, detail): w.mdown(w, detail) |
| 109 | def m2up(w, detail): w.mup(w, detail) |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame^] | 110 | def nop(*args): pass |