Pychecker cleanup, improved icons for reports

svn: r844
This commit is contained in:
Don Allingham 2002-03-16 17:26:58 +00:00
parent b3313bd71b
commit 84f4195b39
14 changed files with 241 additions and 141 deletions

View File

@ -25,7 +25,6 @@ strings as the possible completions.
import string import string
import gtk import gtk
import GDK
cnv = string.lower cnv = string.lower

View File

@ -34,7 +34,6 @@ from gnome.ui import *
# Local modules # Local modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import const
import Utils import Utils
from intl import gettext from intl import gettext
_ = gettext _ = gettext

View File

@ -232,7 +232,7 @@ class ChooseParents:
if self.family: if self.family:
self.family.setRelationship(type) self.family.setRelationship(type)
self.change_family_type(self.family,mother_rel,father_rel) self.change_family_type(self.family,mother_rel,father_rel)
self.family_update(self.family) self.family_update(None)
def add_parent_clicked(self,obj,sex): def add_parent_clicked(self,obj,sex):
self.xml = libglade.GladeXML(const.gladeFile,"addperson") self.xml = libglade.GladeXML(const.gladeFile,"addperson")

View File

@ -1111,7 +1111,6 @@ class EditPerson:
self.pmap[p.get_title()] = p self.pmap[p.get_title()] = p
self.birth.setDate(self.bdate.get_text()) self.birth.setDate(self.bdate.get_text())
bplace = string.strip(self.bplace.get_text())
self.birth.setPlace(self.get_place(self.bplace,1)) self.birth.setPlace(self.get_place(self.bplace,1))
if not self.person.getBirth().are_equal(self.birth): if not self.person.getBirth().are_equal(self.birth):

View File

@ -171,10 +171,7 @@ class EventEditor:
ename = self.name_field.get_text() ename = self.name_field.get_text()
self.date.set(self.date_field.get_text()) self.date.set(self.date_field.get_text())
ecause = self.cause_field.get_text() ecause = self.cause_field.get_text()
eplace = strip(self.place_field.get_text())
eplace_obj = self.get_place(self.place_field,1) eplace_obj = self.get_place(self.place_field,1)
enote = self.note_field.get_chars(0,-1) enote = self.note_field.get_chars(0,-1)
edesc = self.descr_field.get_text() edesc = self.descr_field.get_text()

View File

@ -143,7 +143,6 @@ class Marriage:
self.lds_temple.set_popdown_strings(_temple_names) self.lds_temple.set_popdown_strings(_temple_names)
plist = self.db.getPlaceMap().values()
ord = self.family.getLdsSeal() ord = self.family.getLdsSeal()
if ord: if ord:
if ord.getPlace(): if ord.getPlace():

View File

@ -287,6 +287,7 @@ class MediaView:
for o in p.getPhotoList(): for o in p.getPhotoList():
if o.getReference() == mobj: if o.getReference() == mobj:
return 1 return 1
return 0
def on_drag_data_get(self,w, context, selection_data, info, time): def on_drag_data_get(self,w, context, selection_data, info, time):
if info == 1: if info == 1:

View File

@ -496,8 +496,8 @@ def compare_people(p1,p2):
name2 = p2.getPrimaryName() name2 = p2.getPrimaryName()
chance = name_match(name1,name2) chance = name_match(name1,name2)
if chance == -1 : if chance == -1.0 :
return -1 return -1.0
birth1 = p1.getBirth() birth1 = p1.getBirth()
death1 = p1.getDeath() death1 = p1.getDeath()
@ -505,34 +505,34 @@ def compare_people(p1,p2):
death2 = p2.getDeath() death2 = p2.getDeath()
value = date_match(birth1.getDateObj(),birth2.getDateObj()) value = date_match(birth1.getDateObj(),birth2.getDateObj())
if value == -1 : if value == -1.0 :
return -1 return -1.0
chance = chance + value chance = chance + value
value = date_match(death1.getDateObj(),death2.getDateObj()) value = date_match(death1.getDateObj(),death2.getDateObj())
if value == -1 : if value == -1.0 :
return -1 return -1.0
chance = chance + value chance = chance + value
value = place_match(birth1.getPlace(),birth2.getPlace()) value = place_match(birth1.getPlace(),birth2.getPlace())
if value == -1 : if value == -1.0 :
return -1 return -1.0
chance = chance + value chance = chance + value
value = place_match(death1.getPlace(),death2.getPlace()) value = place_match(death1.getPlace(),death2.getPlace())
if value == -1 : if value == -1.0 :
return -1 return -1.0
chance = chance + value chance = chance + value
ancestors = [] ancestors = []
ancestors_of(p1,ancestors) ancestors_of(p1,ancestors)
if p2 in ancestors: if p2 in ancestors:
return -1 return -1.0
ancestors = [] ancestors = []
ancestors_of(p2,ancestors) ancestors_of(p2,ancestors)
if p1 in ancestors: if p1 in ancestors:
return -1 return -1.0
f1 = p1.getMainFamily() f1 = p1.getMainFamily()
f2 = p2.getMainFamily() f2 = p2.getMainFamily()
@ -549,8 +549,8 @@ def compare_people(p1,p2):
value = name_match(dad1,dad2) value = name_match(dad1,dad2)
if value == -1: if value == -1.0:
return -1 return -1.0
chance = chance + value chance = chance + value
@ -565,8 +565,8 @@ def compare_people(p1,p2):
mom2 = None mom2 = None
value = name_match(mom1,mom2) value = name_match(mom1,mom2)
if value == -1: if value == -1.0:
return -1 return -1.0
chance = chance + value chance = chance + value
@ -577,24 +577,24 @@ def compare_people(p1,p2):
father2 = f2.getFather() father2 = f2.getFather()
if father1 and father2: if father1 and father2:
if father1 == father2: if father1 == father2:
chance = chance + 1 chance = chance + 1.0
else: else:
fname1 = GrampsCfg.nameof(father1) fname1 = GrampsCfg.nameof(father1)
fname2 = GrampsCfg.nameof(father2) fname2 = GrampsCfg.nameof(father2)
value = name_match(fname1,fname2) value = name_match(fname1,fname2)
if value != -1: if value != -1.0:
chance = chance + value chance = chance + value
else: else:
mother1 = f1.getMother() mother1 = f1.getMother()
mother2 = f2.getMother() mother2 = f2.getMother()
if mother1 and mother2: if mother1 and mother2:
if mother1 == mother2: if mother1 == mother2:
chance = chance + 1 chance = chance + 1.0
else: else:
mname1 = GrampsCfg.nameof(mother1) mname1 = GrampsCfg.nameof(mother1)
mname2 = GrampsCfg.nameof(mother2) mname2 = GrampsCfg.nameof(mother2)
value = name_match(mname1,mname2) value = name_match(mname1,mname2)
if value != -1: if value != -1.0:
chance = chance + value chance = chance + value
return chance return chance
@ -615,9 +615,9 @@ def name_compare(s1,s2):
#----------------------------------------------------------------- #-----------------------------------------------------------------
def date_match(date1,date2): def date_match(date1,date2):
if date1.getDate() == "" or date2.getDate() == "": if date1.getDate() == "" or date2.getDate() == "":
return 0 return 0.0
if date1.getDate() == date2.getDate(): if date1.getDate() == date2.getDate():
return 1 return 1.0
if date1.isRange() or date2.isRange(): if date1.isRange() or date2.isRange():
return range_compare(date1,date2) return range_compare(date1,date2)
@ -631,9 +631,9 @@ def date_match(date1,date2):
if not date1.getMonthValid() or not date2.getMonthValid(): if not date1.getMonthValid() or not date2.getMonthValid():
return 0.75 return 0.75
else: else:
return -1 return -1.0
else: else:
return -1 return -1.0
#----------------------------------------------------------------- #-----------------------------------------------------------------
# #
@ -652,19 +652,19 @@ def range_compare(date1,date2):
date2.get_stop_date() <= date1.get_stop_date(): date2.get_stop_date() <= date1.get_stop_date():
return 0.5 return 0.5
else: else:
return -1 return -1.0
elif date2.isRange(): elif date2.isRange():
if date1.get_start_date() >= date2.get_start_date() and \ if date1.get_start_date() >= date2.get_start_date() and \
date1.get_start_date() <= date2.get_stop_date(): date1.get_start_date() <= date2.get_stop_date():
return 0.5 return 0.5
else: else:
return -1 return -1.0
else: else:
if date2.get_start_date() >= date1.get_start_date() and \ if date2.get_start_date() >= date1.get_start_date() and \
date2.get_start_date() <= date1.get_stop_date(): date2.get_start_date() <= date1.get_stop_date():
return 0.5 return 0.5
else: else:
return -1 return -1.0
def name_match(name,name1): def name_match(name,name1):

View File

@ -242,7 +242,6 @@ class PluginStatus:
if error[0:11] == "exceptions.": if error[0:11] == "exceptions.":
error = error[11:] error = error[11:]
msg = msgs[1] msg = msgs[1]
trc = msgs[2]
info.write("%s\n\t%s: %s\n\n" % (file,error,msg) ) info.write("%s\n\t%s: %s\n\n" % (file,error,msg) )
info.seek(0) info.seek(0)
@ -315,7 +314,7 @@ def reload_plugins(obj):
try: try:
reload(plugin) reload(plugin)
except: except:
_failmsg.append((file,sys.exc_info())) _failmsg.append((plugin,sys.exc_info()))
# attempt to load the plugins that have failed in the past # attempt to load the plugins that have failed in the past
@ -323,7 +322,7 @@ def reload_plugins(obj):
try: try:
__import__(plugin) __import__(plugin)
except: except:
_failmsg.append((file,sys.exc_info())) _failmsg.append((plugin,sys.exc_info()))
# attempt to load any new files found # attempt to load any new files found
for dir in _loaddir: for dir in _loaddir:

View File

@ -106,6 +106,7 @@ def importData(database, filename, callback):
return 0 return 0
xml_file.close() xml_file.close()
return 1
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #

View File

@ -23,8 +23,6 @@
import RelLib import RelLib
import const import const
import os import os
import re
import sort
import string import string
import Utils import Utils
import intl import intl
@ -412,8 +410,6 @@ class ReportDialog:
"""Set up the title bar of the dialog. This function relies """Set up the title bar of the dialog. This function relies
on the get_title() customization function for what the title on the get_title() customization function for what the title
should be.""" should be."""
title = self.get_title()
self.name = self.person.getPrimaryName().getRegularName() self.name = self.person.getPrimaryName().getRegularName()
self.window.set_title(self.get_title()) self.window.set_title(self.get_title())

View File

@ -178,7 +178,8 @@ class RcsVersionControl(VersionControl):
slog = 0 slog = 0
sname = 0 sname = 0
v = None v = None
l = None l = []
o = None
d = None d = None
r,w = popen2.popen2("rlog %s" % self.vfile) r,w = popen2.popen2("rlog %s" % self.vfile)
@ -188,7 +189,7 @@ class RcsVersionControl(VersionControl):
if sname == 1: if sname == 1:
if line[0:3] == "key": if line[0:3] == "key":
sname = 0 sname = 0
continue; continue
else: else:
s = string.split(string.strip(line),":") s = string.split(string.strip(line),":")
print "%s - %s" % (s[0],s[1]) print "%s - %s" % (s[0],s[1])
@ -213,7 +214,7 @@ class RcsVersionControl(VersionControl):
o = g.group(2) o = g.group(2)
slog = 1 slog = 1
l = [] l = []
w.close() w.close()
r.close() r.close()
return rlist return rlist
@ -240,8 +241,7 @@ class RcsVersionControl(VersionControl):
status = proc.wait() status = proc.wait()
del proc del proc
os.remove(self.tfile) os.remove(self.tfile)
if status != 0: return status
return status
def set_tag(self,tag): def set_tag(self,tag):
"""Sets the tag to the symbolic string""" """Sets the tag to the symbolic string"""

View File

@ -323,56 +323,137 @@ def report(database,person):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_xpm_image(): def get_xpm_image():
return [ return [
"48 48 4 1", "48 48 85 1",
" c None", " c None",
". c #FFFFFF", ". c #887D6C",
"+ c #C0C0C0", "+ c #8C8A87",
"@ c #000000", "@ c #787775",
"# c #766D5F",
"$ c #67655F",
"% c #5E5A54",
"& c #55524C",
"* c #BBBAB8",
"= c #B7AFA2",
"- c #A9A5A0",
"; c #99948A",
"> c #FAFAFA",
", c #F8F6F2",
"' c #F6F2EC",
") c #E6E5E5",
"! c #D2CCBF",
"~ c #C7C6C3",
"{ c #413F3F",
"] c #DCD9D4",
"^ c #322E2B",
"/ c #4F4E4C",
"( c #908F8D",
"_ c #989897",
": c #8A8986",
"< c #898885",
"[ c #F5EEE5",
"} c #F5F5F5",
"| c #979695",
"1 c #888784",
"2 c #8B8A87",
"3 c #1A1A1A",
"4 c #858582",
"5 c #949390",
"6 c #858480",
"7 c #92918E",
"8 c #8F8E8B",
"9 c #8E8D8A",
"0 c #797773",
"a c #7B7975",
"b c #81807C",
"c c #817F7C",
"d c #989796",
"e c #807E7B",
"f c #8C8B88",
"g c #E3CAA5",
"h c #F2EADF",
"i c #DDCDB4",
"j c #8E8E8B",
"k c #888785",
"l c #EFE4D2",
"m c #969694",
"n c #9F9F9D",
"o c #E6D4B7",
"p c #A5967E",
"q c #8A8987",
"r c #EBDCC4",
"s c #878683",
"t c #9B9995",
"u c #9A9892",
"v c #807F7B",
"w c #7E7C79",
"x c #8E8C88",
"y c #8F8E8C",
"z c #8D8B88",
"A c #B59871",
"B c #878581",
"C c #8E8B87",
"D c #848480",
"E c #898785",
"F c #8A8886",
"G c #7D7B77",
"H c #8D8C89",
"I c #8B8A86",
"J c #918F8B",
"K c #989795",
"L c #BBA382",
"M c #8D8B86",
"N c #868480",
"O c #8E8C87",
"P c #8E8B86",
"Q c #8A8985",
"R c #807F7A",
"S c #8D8A84",
"T c #898884",
" ", " ",
" ", " ",
" ", " .+....@@#####$$$%$%&$@ ",
" ++++++++++++++++++++++++++++++++++ ", " .**************=*-;+%%@ ",
" +................................+ ", " .*>>,>>>>>>,>>>>')!*..;& ",
" +....................@@@@@@......+ ", " .*>>>>>>>>>>>>>>>,)!=@~;{ ",
" +.................@@@@@@@@@......+ ", " .*,>>>>>>>>>>>>>>>,]]%)~+^ ",
" +.................@..............+ ", " .*>>>>>>>>>>>>>>>>>))/>)~+^ ",
" +.............@@@@@@.............+ ", " .*>>>>>>>>>>>>>>>>>(_/>>)~+^ ",
" +...........@@@@@@@@.............+ ", " .*>>>>>>>>>>>>>>>>>:>/)>>)~+{ ",
" +...........@.....@..............+ ", " @*>>>>>>>>>>>>>>>>><>/]'>>)~;& ",
" +...........@.....@@@@@@@@@......+ ", " @*>>>>>>>>>>>>>>>>>:>/~][>>)~;$ ",
" +...........@........@@@@@@......+ ", " #*>>>>>>>>>}}|1<<2>:>/33^{{%$@$@ ",
" +.......@@@@@@...................+ ", " .*>>>>>>>>>4:<<<<<56>)~*-;+@$%{$ ",
" +.....@@@@@@@@...................+ ", " #*>>>>>>>>><>|<1<7>8>>)!~=-;+@&{ ",
" +.....@.....@........@@@@@@......+ ", " #*>>>>>>>>><>>>>>>>9>>,]!~*-;+${ ",
" +.....@.....@.....@@@@@@@@@......+ ", " #*>>>>>>>>><>>>>>>>8>>,))~~*-;@^ ",
" +.....@.....@.....@..............+ ", " #*>>>>>>>>><>>>>>>>:>(000a!~*-@^ ",
" +.....@.....@@@@@@@@.............+ ", " #*>>>>>>>>>1>>>>>>>b2<<<1c]~~*.^ ",
" +.....@.......@@@@@@.............+ ", " #*>>>>>>>>><>>>>>>>,>de<<f]g~*+^ ",
" +.....@...........@..............+ ", " #*>>>>>>>>><>>>>>>,,,''[h]]ii~+^ ",
" +.....@...........@@@@@@@@@......+ ", " $*>>jkkkkj><>>>>>,>'''[[hl]]ig;^ ",
" +.....@..............@@@@@@......+ ", " $*>>mkkkkjn<>>>>>,,'''h[hl]o!!p^ ",
" +.@@@@@@.........................+ ", " $*>>jkkkkq><>>>>,'''[)[hhll]i!p^ ",
" +.@@@@@@.........................+ ", " $*>>>>>>>>><>>>,,'),[hh)llrro!p^ ",
" +.....@..............@@@@@@......+ ", " $*>>>>>>>>><>>,,'''h[hhhllrriip^ ",
" +.....@...........@@@@@@@@@......+ ", " $*>>>>>>>>><>,'''h[hhlllllrroip^ ",
" +.....@...........@..............+ ", " %*>>>>>>>>><,''''[[hh|<s<2rroip^ ",
" +.....@.......@@@@@@.............+ ", " %*>>>>>>>>><'''hhh)tu<<v0wrroip^ ",
" +.....@.....@@@@@@@@.............+ ", " $*>>>>>>>>,<''['[[hxly<<<zroooA^ ",
" +.....@.....@.....@..............+ ", " %*>>>>>>>,,<'hh)hhlxllrrrrrroiA^ ",
" +.....@.....@.....@@@@@@@@@......+ ", " %*>>>>>>,''1[[[[hllxlrlrroooooA^ ",
" +.....@.....@........@@@@@@......+ ", " %*>>>>>,,''<hqk<<BlClrrrrrooooA^ ",
" +.....@@@@@@@@...................+ ", " %*>>>>,'''hDEF<<<GHIrrrroooogiA^ ",
" +.......@@@@@@...................+ ", " %*>>>,,'''h)hJ<1<KrCrrorooooggL^ ",
" +...........@........@@@@@@......+ ", " &*>>,''[[h[[hllllrlCroroooggogA^ ",
" +...........@.....@@@@@@@@@......+ ", " &*>,,''[h[hlhllrlrrCroooooggggA^ ",
" +...........@.....@..............+ ", " &=,''[[[[hlhllllrrrMoqkk1NogggL^ ",
" +...........@@@@@@@@.............+ ", " &*''''h)hhlllrrrrrrOPQ<ksRggggA^ ",
" +.............@@@@@@.............+ ", " /=''h[[[h)llrllrrrooo2STE6ggggA^ ",
" +.................@..............+ ", " &=''h)hlhlllrrrrorooooggggggggA^ ",
" +.................@@@@@@@@@......+ ", " /=[[[[hhllrrlrroroooogggggg*ggA^ ",
" +....................@@@@@@......+ ", " /=hhhllllllrrrroooogogggggggggA^ ",
" +................................+ ", " /=*=======LLLLLLLLLLLLAAAAAAAAA^ ",
" ++++++++++++++++++++++++++++++++++ ", " ^^^^^^^^^^^^^^^^^^^^^^^^^^3^^3^^ ",
" ", " ",
" ", " ",
" "] " "]

View File

@ -360,56 +360,85 @@ def report(database,person):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_xpm_image(): def get_xpm_image():
return [ return [
"48 48 4 1", "48 48 33 1",
" c None", " c None",
". c #FFFFFF", ". c #1A1A1A",
"+ c #C0C0C0", "+ c #7E7C76",
"@ c #000000", "@ c #918E8A",
"# c #B6AEA2",
"$ c #E2CAA6",
"% c #E6D6B6",
"& c #322E2A",
"* c #423E3E",
"= c #EADEC6",
"- c #F2EADE",
"; c #4E4E4E",
"> c #56524E",
", c #5E5A56",
"' c #F6EEE6",
") c #9A968A",
"! c #66665E",
"~ c #F6F2EE",
"{ c #C6C6C1",
"] c #A6967E",
"^ c #8D8A86",
"/ c #736D62",
"( c #E6E6E6",
"_ c #FAFAF9",
": c #DEDAD6",
"< c #AAA6A2",
"[ c #EEE6D2",
"} c #BABABA",
"| c #878680",
"1 c #8A7E6E",
"2 c #78756F",
"3 c #B89D78",
"4 c #D9CEB9",
" ", " ",
" ", " ",
" ", " 1^111122/////!!!,!,>!2 ",
" +++++++++++++++++++++++++++++++++++++ ", " 1}}}}}}}}}}}}}}#}<)^,,2 ",
" +...................................+ ", " 1}__~___________~(4}11)> ",
" +..@@@@@@.......@@@@@@......@@@@@@..+ ", " 1}_______________~(4#+{)* ",
" +..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..+ ", " 1}~_______________~::,({^& ",
" +..@@@@@@...@...@@@@@@...@..@@@@@@..+ ", " 1}_________________((;_({^& ",
" +...........@............@..........+ ", " 1}__|++++___+2//2___+;__({^& ",
" +...........@............@..........+ ", " 1}__++++2|||///2/|2|2;(__({^* ",
" +...........@............@..@@@@@@..+ ", " +}__|++++_@_+2/22_^_+;:~__({)> ",
" +...........@............@@@@@@@@@..+ ", " 2}________@_______|__;{:'__({)! ",
" +...........@...............@@@@@@..+ ", " /}________@_______|__;..&**,!2!2 ",
" +...........@.......................+ ", " 1}________@_______|__({}<)^2!,*! ",
" +...........@.......................+ ", " /}________@_______|_|222+#<)^2>* ",
" +...........@...@@@@@@......@@@@@@..+ ", " /}________@_______^^|+22/{}<)@!* ",
" +...........@@@@@@@@@@@@@@@@@@@@@@..+ ", " /}________@_________|++++{{}<)+& ",
" +...........@...@@@@@@...@..@@@@@@..+ ", " /}________@___________~'(:4{}<2& ",
" +...........@............@..........+ ", " /}________@__________~~((::{{}1& ",
" +...........@............@..........+ ", " /}________^_|+2++__~_~_--%:${}^& ",
" +...........@............@..@@@@@@..+ ", " /}________+@2++++__~_~~'-::44{^& ",
" +...........@............@@@@@@@@@..+ ", " !}________@_+++++~_~~~''-=::$$)& ",
" +...........@...............@@@@@@..+ ", " !}________@_______~~~~-'-[:%{4]& ",
" +...........@.......................+ ", " !}________@_____~~~~'('--=[:4{]& ",
" +...........@.......................+ ", " !}________@_____~~(~'--([[==%4]& ",
" +...........@...@@@@@@..............+ ", " !}________@~+++++~~'++2+2===$4]& ",
" +...........@@@@@@@@@@..............+ ", " !}________2@+++++||)2+|2/[==%4]& ",
" +...........@...@@@@@@..............+ ", " ,}________+_2++2|''[+222+=%=%$]& ",
" +...........@.......... ............+ ", " ,}________+~~'~---(-[[[=[==%%4]& ",
" +...........@.......................+ ", " !}________+~~~'~''-=[[===%=%%%3& ",
" +...........@...@@@@@@..............+ ", " ,}_______~+~~--(--[[{=====%=%$]& ",
" +...........@@@@@@@@@@..............+ ", " ,}_______~+~|+222[[=+1222%%$%%3& ",
" +...........@...@@@@@@..............+ ", " ,}_____~_~++/+++/+/+/222/=%%%$3& ",
" +...........@.......................+ ", " ,}_____~~~-'+2221[2=2212/%%%$$3& ",
" +...........@.......................+ ", " ,}___~_~~~-('-[[[=+=%=%%%%%%$$3& ",
" +...........@...@@@@@@.....@@@@@@...+ ", " >}___~~''-''-=[=[=2==%=%%%$$%$3& ",
" +...........@@@@@@@@@@@@@@@@@@@@@...+ ", " >}_~_~~'-'-[-[[===2==%$%$%$$$$3& ",
" +...............@@@@@@..@..@@@@@@...+ ", " >#_~~-'''-[-[[=[==2%22+22$$$$$3& ",
" +.......................@...........+ ", " >}~~~~-(--[[======12/2/2/$$$$$3& ",
" +.......................@...........+ ", " ;#~~-'''-(=[=[==%=%%2+2//$$$$$]& ",
" +.......................@..@@@@@@...+ ", " >#~~-(-=-[[[====%%%%%%$$$$$$$$3& ",
" +.......................@@@@@@@@@...+ ", " ;#-~''--[===[==$=%%$%$$$$$$}$$3& ",
" +..........................@@@@@@...+ ", " ;#---[[[[[==%==%%$%$%$$$$$$$$$3& ",
" +...................................+ ", " ;#}#######3333333333333333333]3& ",
" +++++++++++++++++++++++++++++++++++++ ", " &&&&&&&&&*&&*&&*&*&&&&&&&&.&&.&& ",
" ", " ",
" ", " ",
" "] " "]