# -*- coding: iso-8859-7 -*-
##############################################################################
# ThanCad 0.0.9 "DoesSomething": 2dimensional CAD with raster support for engineers.
#
# Copyright (c) 2001-2009 Thanasis Stamos, August 23, 2009
# URL: http://thancad.sourceforge.net
# e-mail: cyberthanasis@excite.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details (www.gnu.org/licenses/gpl.html).
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
"""\
ThanCad 0.0.9 "DoesSomething": 2dimensional CAD with raster support for engineers.
This module defines a separate windows which shows active error messages. In the
future, if the user doubleclicks an error message, appropriate action will be
carried out, to correct the error (with the user's help).
"""
import Tkinter,tkFont
import p_gtkwid
class ThanTkWinError(Tkinter.Toplevel):
"A window with active error messages."
def __init__(self, master, mes, title, modal=False, hbar=0, vbar=1, width=80, height=25,
font="system 12", background="lightyellow", foreground="black"):
"Implements an Information window."
Tkinter.Toplevel.__init__(self, master)
self.modal = modal
if modal: thanGrabSet(self)
self.title(title)
# self.thanFont = tkFont.Font(family="Thorndale AMT", size=12)
self.thanFont = tkFont.Font(family="DeJavu Sans Mono", size=11)
# self.thanFont = tkFont.Font(family="FreeMono", size=12)
# self.thanFont = tkFont.Font(family="FreeSans", size=12)
self.thanTxtHelp = p_gtkwid.ThanScrolledText(self, hbar=hbar, vbar=vbar, font=self.thanFont,
background=background, foreground=foreground, width=width, height=height)
# self.thanAppend = self.thanTxtHelp.thanAppend
self.thanAppend(mes)
self.thanTxtHelp.grid(sticky="wesn")
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
self.__keysallowed = set(("Up", "Down", "Left", "Right", "Prior", "Next", "Home", "End"))
self.thanTxtHelp.bindte("<Key>", self.__format)
self.thanTkSetFocus()
def thanAppend(self, *args, **kw):
self.thanTxtHelp.thanAppend(*args, **kw)
def thanPrt(self, mes, *args, **kw):
self.thanTxtHelp.thanAppend(mes, *args, **kw)
self.thanTxtHelp.thanAppend("\n")
def thanTkSetFocus(self):
"Sets focus to the text widget."
self.lift()
self.focus_set()
self.thanTxtHelp.focus_set()
def __format(self, evt):
if evt.keysym not in self.__keysallowed: return "break"
def destroy(self):
"Erases circular dependencies."
del self.thanTxtHelp
Tkinter.Toplevel.destroy(self)
def __del__(self):
print "ThanTkWinError", self, "dies.."
if __name__ == "__main__":
root = Tkinter.Tk()
e = ThanTkWinError(root, "xxxx", "dokimi")
e.thanAppend("\n\nAndreas\tStella\n")
e.thanAppend("\tChildren\n")
e.thanAppend("Warning:\txxx\n")
e.thanAppend("\tyyy\n")
e.thanAppend("\n\n\t\n")
e.thanAppend("\t")
e.thanAppend(u"\n\n\t\n")
e.thanAppend(u"\t")
del e
root.mainloop()
|