Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArtActivity.py
blob: 7d945d65c7ed7626e892c32f3592ca4d4e84f5b1 (plain)
ofshex dumpascii
0000 23 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 37 2c 20 50 6c 61 79 66 75 6c 20 49 6e 76 #Copyright.(c).2007,.Playful.Inv
0020 65 6e 74 69 6f 6e 20 43 6f 6d 70 61 6e 79 0a 23 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 ention.Company.#Copyright.(c).20
0040 30 38 2d 31 30 2c 20 57 61 6c 74 65 72 20 42 65 6e 64 65 72 0a 23 43 6f 70 79 72 69 67 68 74 20 08-10,.Walter.Bender.#Copyright.
0060 28 63 29 20 32 30 30 39 2c 31 30 20 52 61 75 6c 20 47 75 74 69 65 72 72 65 7a 20 53 65 67 61 6c (c).2009,10.Raul.Gutierrez.Segal
0080 65 73 0a 0a 23 50 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 68 65 72 65 62 79 20 67 72 61 6e 74 65 es..#Permission.is.hereby.grante
00a0 64 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65 2c 20 74 6f 20 61 6e 79 20 70 65 72 73 6f 6e d,.free.of.charge,.to.any.person
00c0 20 6f 62 74 61 69 6e 69 6e 67 20 61 20 63 6f 70 79 0a 23 6f 66 20 74 68 69 73 20 73 6f 66 74 77 .obtaining.a.copy.#of.this.softw
00e0 61 72 65 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e are.and.associated.documentation
0100 20 66 69 6c 65 73 20 28 74 68 65 20 22 53 6f 66 74 77 61 72 65 22 29 2c 20 74 6f 20 64 65 61 6c .files.(the."Software"),.to.deal
0120 0a 23 69 6e 20 74 68 65 20 53 6f 66 74 77 61 72 65 20 77 69 74 68 6f 75 74 20 72 65 73 74 72 69 .#in.the.Software.without.restri
0140 63 74 69 6f 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 77 69 74 68 6f 75 74 20 6c 69 6d 69 74 61 74 ction,.including.without.limitat
0160 69 6f 6e 20 74 68 65 20 72 69 67 68 74 73 0a 23 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20 6d 6f ion.the.rights.#to.use,.copy,.mo
0180 64 69 66 79 2c 20 6d 65 72 67 65 2c 20 70 75 62 6c 69 73 68 2c 20 64 69 73 74 72 69 62 75 74 65 dify,.merge,.publish,.distribute
01a0 2c 20 73 75 62 6c 69 63 65 6e 73 65 2c 20 61 6e 64 2f 6f 72 20 73 65 6c 6c 0a 23 63 6f 70 69 65 ,.sublicense,.and/or.sell.#copie
01c0 73 20 6f 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 74 6f 20 70 65 72 6d 69 74 s.of.the.Software,.and.to.permit
01e0 20 70 65 72 73 6f 6e 73 20 74 6f 20 77 68 6f 6d 20 74 68 65 20 53 6f 66 74 77 61 72 65 20 69 73 .persons.to.whom.the.Software.is
0200 0a 23 66 75 72 6e 69 73 68 65 64 20 74 6f 20 64 6f 20 73 6f 2c 20 73 75 62 6a 65 63 74 20 74 6f .#furnished.to.do.so,.subject.to
0220 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e 73 3a 0a 0a 23 54 68 65 .the.following.conditions:..#The
0240 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 20 61 6e 64 20 74 68 69 73 .above.copyright.notice.and.this
0260 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 20 73 68 61 6c 6c 20 62 65 20 69 6e 63 6c .permission.notice.shall.be.incl
0280 75 64 65 64 20 69 6e 0a 23 61 6c 6c 20 63 6f 70 69 65 73 20 6f 72 20 73 75 62 73 74 61 6e 74 69 uded.in.#all.copies.or.substanti
02a0 61 6c 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 2e 00 0a 0a 23 al.portions.of.the.Software....#
02c0 54 48 45 20 53 4f 46 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 53 20 49 53 22 THE.SOFTWARE.IS.PROVIDED."AS.IS"
02e0 2c 20 57 49 54 48 4f 55 54 20 57 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 20 ,.WITHOUT.WARRANTY.OF.ANY.KIND,.
0300 45 58 50 52 45 53 53 20 4f 52 0a 23 49 4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 20 42 EXPRESS.OR.#IMPLIED,.INCLUDING.B
0320 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 20 54 48 45 20 57 41 52 52 41 4e 54 49 45 53 UT.NOT.LIMITED.TO.THE.WARRANTIES
0340 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 2c 0a 23 46 49 54 4e 45 53 53 20 46 4f .OF.MERCHANTABILITY,.#FITNESS.FO
0360 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e 49 4e R.A.PARTICULAR.PURPOSE.AND.NONIN
0380 46 52 49 4e 47 45 4d 45 4e 54 2e 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 48 FRINGEMENT..IN.NO.EVENT.SHALL.TH
03a0 45 0a 23 41 55 54 48 4f 52 53 20 4f 52 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 52 53 20 E.#AUTHORS.OR.COPYRIGHT.HOLDERS.
03c0 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 43 4c 41 49 4d 2c 20 44 41 4d 41 47 45 53 BE.LIABLE.FOR.ANY.CLAIM,.DAMAGES
03e0 20 4f 52 20 4f 54 48 45 52 0a 23 4c 49 41 42 49 4c 49 54 59 2c 20 57 48 45 54 48 45 52 20 49 4e .OR.OTHER.#LIABILITY,.WHETHER.IN
0400 20 41 4e 20 41 43 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 54 2c 20 54 4f 52 54 20 4f 52 20 .AN.ACTION.OF.CONTRACT,.TORT.OR.
0420 4f 54 48 45 52 57 49 53 45 2c 20 41 52 49 53 49 4e 47 20 46 52 4f 4d 2c 0a 23 4f 55 54 20 4f 46 OTHERWISE,.ARISING.FROM,.#OUT.OF
0440 20 4f 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 57 49 54 48 20 54 48 45 20 53 4f 46 54 57 .OR.IN.CONNECTION.WITH.THE.SOFTW
0460 41 52 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f 52 20 4f 54 48 45 52 20 44 45 41 4c 49 4e 47 53 ARE.OR.THE.USE.OR.OTHER.DEALINGS
0480 20 49 4e 0a 23 54 48 45 20 53 4f 46 54 57 41 52 45 2e 0a 0a 69 6d 70 6f 72 74 20 70 79 67 74 6b .IN.#THE.SOFTWARE...import.pygtk
04a0 0a 70 79 67 74 6b 2e 72 65 71 75 69 72 65 28 27 32 2e 30 27 29 0a 69 6d 70 6f 72 74 20 67 74 6b .pygtk.require('2.0').import.gtk
04c0 0a 69 6d 70 6f 72 74 20 67 6f 62 6a 65 63 74 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a .import.gobject..import.logging.
04e0 5f 6c 6f 67 67 65 72 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 72 28 27 74 75 72 _logger.=.logging.getLogger('tur
0500 74 6c 65 61 72 74 2d 61 63 74 69 76 69 74 79 27 29 0a 0a 66 72 6f 6d 20 73 75 67 61 72 2e 61 63 tleart-activity')..from.sugar.ac
0520 74 69 76 69 74 79 20 69 6d 70 6f 72 74 20 61 63 74 69 76 69 74 79 0a 74 72 79 3a 20 23 20 30 2e tivity.import.activity.try:.#.0.
0540 38 36 20 74 6f 6f 6c 62 61 72 20 77 69 64 67 65 74 73 0a 20 20 20 20 66 72 6f 6d 20 73 75 67 61 86.toolbar.widgets.....from.suga
0560 72 2e 61 63 74 69 76 69 74 79 2e 77 69 64 67 65 74 73 20 69 6d 70 6f 72 74 20 41 63 74 69 76 69 r.activity.widgets.import.Activi
0580 74 79 54 6f 6f 6c 62 61 72 42 75 74 74 6f 6e 2c 20 53 74 6f 70 42 75 74 74 6f 6e 2c 5c 0a 20 20 tyToolbarButton,.StopButton,\...
05a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
05c0 20 20 20 20 20 45 64 69 74 54 6f 6f 6c 62 61 72 0a 20 20 20 20 66 72 6f 6d 20 73 75 67 61 72 2e .....EditToolbar.....from.sugar.
05e0 67 72 61 70 68 69 63 73 2e 74 6f 6f 6c 62 61 72 62 6f 78 20 69 6d 70 6f 72 74 20 54 6f 6f 6c 62 graphics.toolbarbox.import.Toolb
0600 61 72 42 6f 78 2c 20 54 6f 6f 6c 62 61 72 42 75 74 74 6f 6e 0a 20 20 20 20 4e 45 57 5f 53 55 47 arBox,.ToolbarButton.....NEW_SUG
0620 41 52 5f 53 59 53 54 45 4d 20 3d 20 54 72 75 65 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 AR_SYSTEM.=.True.except.ImportEr
0640 72 6f 72 3a 0a 20 20 20 20 4e 45 57 5f 53 55 47 41 52 5f 53 59 53 54 45 4d 20 3d 20 46 61 6c 73 ror:.....NEW_SUGAR_SYSTEM.=.Fals
0660 65 0a 66 72 6f 6d 20 73 75 67 61 72 2e 67 72 61 70 68 69 63 73 2e 74 6f 6f 6c 62 75 74 74 6f 6e e.from.sugar.graphics.toolbutton
0680 20 69 6d 70 6f 72 74 20 54 6f 6f 6c 42 75 74 74 6f 6e 0a 66 72 6f 6d 20 73 75 67 61 72 2e 64 61 .import.ToolButton.from.sugar.da
06a0 74 61 73 74 6f 72 65 20 69 6d 70 6f 72 74 20 64 61 74 61 73 74 6f 72 65 0a 0a 69 6d 70 6f 72 74 tastore.import.datastore..import
06c0 20 74 65 6c 65 70 61 74 68 79 0a 66 72 6f 6d 20 64 62 75 73 2e 73 65 72 76 69 63 65 20 69 6d 70 .telepathy.from.dbus.service.imp
06e0 6f 72 74 20 73 69 67 6e 61 6c 0a 66 72 6f 6d 20 64 62 75 73 2e 67 6f 62 6a 65 63 74 5f 73 65 72 ort.signal.from.dbus.gobject_ser
0700 76 69 63 65 20 69 6d 70 6f 72 74 20 45 78 70 6f 72 74 65 64 47 4f 62 6a 65 63 74 0a 66 72 6f 6d vice.import.ExportedGObject.from
0720 20 73 75 67 61 72 2e 70 72 65 73 65 6e 63 65 20 69 6d 70 6f 72 74 20 70 72 65 73 65 6e 63 65 73 .sugar.presence.import.presences
0740 65 72 76 69 63 65 0a 66 72 6f 6d 20 73 75 67 61 72 2e 70 72 65 73 65 6e 63 65 2e 74 75 62 65 63 ervice.from.sugar.presence.tubec
0760 6f 6e 6e 20 69 6d 70 6f 72 74 20 54 75 62 65 43 6f 6e 6e 65 63 74 69 6f 6e 0a 0a 66 72 6f 6d 20 onn.import.TubeConnection..from.
0780 73 75 67 61 72 20 69 6d 70 6f 72 74 20 70 72 6f 66 69 6c 65 0a 66 72 6f 6d 20 67 65 74 74 65 78 sugar.import.profile.from.gettex
07a0 74 20 69 6d 70 6f 72 74 20 67 65 74 74 65 78 74 20 61 73 20 5f 0a 69 6d 70 6f 72 74 20 6f 73 2e t.import.gettext.as._.import.os.
07c0 70 61 74 68 0a 69 6d 70 6f 72 74 20 74 61 72 66 69 6c 65 0a 0a 66 72 6f 6d 20 74 61 63 6f 6e 73 path.import.tarfile..from.tacons
07e0 74 61 6e 74 73 20 69 6d 70 6f 72 74 20 50 41 4c 45 54 54 45 5f 4e 41 4d 45 53 2c 20 4f 56 45 52 tants.import.PALETTE_NAMES,.OVER
0800 4c 41 59 5f 4c 41 59 45 52 2c 20 48 45 4c 50 5f 53 54 52 49 4e 47 53 0a 66 72 6f 6d 20 74 61 65 LAY_LAYER,.HELP_STRINGS.from.tae
0820 78 70 6f 72 74 68 74 6d 6c 20 69 6d 70 6f 72 74 20 73 61 76 65 5f 68 74 6d 6c 0a 66 72 6f 6d 20 xporthtml.import.save_html.from.
0840 74 61 65 78 70 6f 72 74 6c 6f 67 6f 20 69 6d 70 6f 72 74 20 73 61 76 65 5f 6c 6f 67 6f 0a 66 72 taexportlogo.import.save_logo.fr
0860 6f 6d 20 74 61 75 74 69 6c 73 20 69 6d 70 6f 72 74 20 64 61 74 61 5f 74 6f 5f 66 69 6c 65 2c 20 om.tautils.import.data_to_file,.
0880 64 61 74 61 5f 74 6f 5f 73 74 72 69 6e 67 2c 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 data_to_string,.data_from_string
08a0 2c 20 67 65 74 5f 70 61 74 68 0a 66 72 6f 6d 20 74 61 77 69 6e 64 6f 77 20 69 6d 70 6f 72 74 20 ,.get_path.from.tawindow.import.
08c0 54 75 72 74 6c 65 41 72 74 57 69 6e 64 6f 77 0a 66 72 6f 6d 20 74 61 74 75 72 74 6c 65 20 69 6d TurtleArtWindow.from.taturtle.im
08e0 70 6f 72 74 20 54 75 72 74 6c 65 0a 0a 53 45 52 56 49 43 45 20 3d 20 27 6f 72 67 2e 6c 61 70 74 port.Turtle..SERVICE.=.'org.lapt
0900 6f 70 2e 54 75 72 74 6c 65 41 72 74 41 63 74 69 76 69 74 79 27 0a 49 46 41 43 45 20 3d 20 53 45 op.TurtleArtActivity'.IFACE.=.SE
0920 52 56 49 43 45 0a 50 41 54 48 20 3d 20 27 2f 6f 72 67 2f 6c 61 70 74 6f 70 2f 54 75 72 74 6c 65 RVICE.PATH.=.'/org/laptop/Turtle
0940 41 72 74 41 63 74 69 76 69 74 79 27 0a 0a 63 6c 61 73 73 20 54 75 72 74 6c 65 41 72 74 41 63 74 ArtActivity'..class.TurtleArtAct
0960 69 76 69 74 79 28 61 63 74 69 76 69 74 79 2e 41 63 74 69 76 69 74 79 29 3a 0a 0a 20 20 20 20 64 ivity(activity.Activity):......d
0980 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 61 6e 64 6c 65 29 3a 0a 20 20 20 20 20 ef.__init__(self,.handle):......
09a0 20 20 20 22 22 22 20 41 63 74 69 76 69 74 79 20 73 75 62 63 6c 61 73 73 20 66 6f 72 20 54 75 72 ...""".Activity.subclass.for.Tur
09c0 74 6c 65 20 41 72 74 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 54 75 72 74 6c 65 tle.Art.""".........super(Turtle
09e0 41 72 74 41 63 74 69 76 69 74 79 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 68 61 6e 64 ArtActivity,.self).__init__(hand
0a00 6c 65 29 0a 0a 20 20 20 20 20 20 20 20 64 61 74 61 70 61 74 68 20 3d 20 67 65 74 5f 70 61 74 68 le)..........datapath.=.get_path
0a20 28 61 63 74 69 76 69 74 79 2c 20 27 64 61 74 61 27 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 (activity,.'data')..............
0a40 20 20 20 20 73 65 6c 66 2e 5f 73 65 74 75 70 5f 76 69 73 69 62 69 6c 69 74 79 5f 68 61 6e 64 6c ....self._setup_visibility_handl
0a60 65 72 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 65 77 5f 73 75 67 61 72 5f 73 79 73 er()..........self.new_sugar_sys
0a80 74 65 6d 20 3d 20 4e 45 57 5f 53 55 47 41 52 5f 53 59 53 54 45 4d 0a 20 20 20 20 20 20 20 20 73 tem.=.NEW_SUGAR_SYSTEM.........s
0aa0 65 6c 66 2e 5f 73 65 74 75 70 5f 74 6f 6f 6c 62 61 72 28 29 0a 0a 20 20 20 20 20 20 20 20 63 61 elf._setup_toolbar()..........ca
0ac0 6e 76 61 73 20 3d 20 73 65 6c 66 2e 5f 73 65 74 75 70 5f 73 63 72 6f 6c 6c 65 64 5f 77 69 6e 64 nvas.=.self._setup_scrolled_wind
0ae0 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 76 65 72 5f 63 68 ow()..........self._check_ver_ch
0b00 61 6e 67 65 28 64 61 74 61 70 61 74 68 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 ange(datapath)..........self._se
0b20 74 75 70 5f 63 61 6e 76 61 73 28 63 61 6e 76 61 73 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 tup_canvas(canvas)..........self
0b40 2e 5f 6c 6f 61 64 5f 70 79 74 68 6f 6e 5f 63 6f 64 65 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 ._load_python_code()..........se
0b60 6c 66 2e 5f 73 65 74 75 70 5f 73 68 61 72 69 6e 67 28 29 0a 0a 0a 20 20 20 20 23 20 41 63 74 69 lf._setup_sharing().......#.Acti
0b80 76 69 74 79 20 74 6f 6f 6c 62 61 72 20 63 61 6c 6c 62 61 63 6b 73 0a 0a 20 20 20 20 64 65 66 20 vity.toolbar.callbacks......def.
0ba0 64 6f 5f 73 61 76 65 5f 61 73 5f 68 74 6d 6c 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 do_save_as_html_cb(self,.button)
0bc0 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 57 72 69 74 65 20 68 74 6d 6c 20 6f 75 74 20 74 6f 20 :.........""".Write.html.out.to.
0be0 64 61 74 61 73 74 6f 72 65 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 datastore..""".........self.save
0c00 5f 61 73 5f 68 74 6d 6c 2e 73 65 74 5f 69 63 6f 6e 28 22 68 74 6d 6c 6f 6e 22 29 0a 20 20 20 20 _as_html.set_icon("htmlon").....
0c20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 73 61 76 69 6e 67 20 68 74 6d 6c 20 63 ...._logger.debug("saving.html.c
0c40 6f 64 65 22 29 0a 20 20 20 20 20 20 20 20 23 20 75 6e 74 69 6c 20 77 65 20 68 61 76 65 20 55 52 ode").........#.until.we.have.UR
0c60 4c 73 20 66 6f 72 20 64 61 74 61 73 74 6f 72 65 20 6f 62 6a 65 63 74 73 2c 20 61 6c 77 61 79 73 Ls.for.datastore.objects,.always
0c80 20 65 6d 62 65 64 20 69 6d 61 67 65 73 0a 20 20 20 20 20 20 20 20 65 6d 62 65 64 5f 66 6c 61 67 .embed.images.........embed_flag
0ca0 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 23 20 67 72 61 62 20 63 6f 64 65 20 66 72 6f .=.True..........#.grab.code.fro
0cc0 6d 20 73 74 61 63 6b 73 0a 20 20 20 20 20 20 20 20 68 74 6d 6c 20 3d 20 73 61 76 65 5f 68 74 6d m.stacks.........html.=.save_htm
0ce0 6c 28 73 65 6c 66 2c 20 73 65 6c 66 2e 74 77 2c 20 65 6d 62 65 64 5f 66 6c 61 67 29 0a 20 20 20 l(self,.self.tw,.embed_flag)....
0d00 20 20 20 20 20 69 66 20 6c 65 6e 28 68 74 6d 6c 29 20 3d 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 .....if.len(html).==.0:.........
0d20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 20 20 20 23 20 73 61 76 65 20 74 68 65 20 68 ....return..........#.save.the.h
0d40 74 6d 6c 20 63 6f 64 65 20 74 6f 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 64 69 72 65 63 74 6f tml.code.to.the.instance.directo
0d60 72 79 0a 20 20 20 20 20 20 20 20 64 61 74 61 70 61 74 68 20 3d 20 67 65 74 5f 70 61 74 68 28 61 ry.........datapath.=.get_path(a
0d80 63 74 69 76 69 74 79 2c 20 27 69 6e 73 74 61 6e 63 65 27 29 0a 0a 20 20 20 20 20 20 20 20 73 61 ctivity,.'instance')..........sa
0da0 76 65 5f 74 79 70 65 20 3d 20 27 2e 68 74 6d 6c 27 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e ve_type.=.'.html'.........if.len
0dc0 28 73 65 6c 66 2e 74 77 2e 73 61 76 65 64 5f 70 69 63 74 75 72 65 73 29 20 3e 20 30 3a 0a 20 20 (self.tw.saved_pictures).>.0:...
0de0 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 73 61 76 65 64 5f 70 69 63 74 75 ..........if.self.tw.saved_pictu
0e00 72 65 73 5b 30 5d 2e 65 6e 64 73 77 69 74 68 28 28 27 2e 73 76 67 27 29 29 3a 0a 20 20 20 20 20 res[0].endswith(('.svg')):......
0e20 20 20 20 20 20 20 20 20 20 20 20 73 61 76 65 5f 74 79 70 65 20 3d 20 27 2e 78 6d 6c 27 0a 0a 20 ...........save_type.=.'.xml'...
0e40 20 20 20 20 20 20 20 68 74 6d 6c 5f 66 69 6c 65 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 .......html_file.=.os.path.join(
0e60 64 61 74 61 70 61 74 68 2c 20 22 70 6f 72 74 66 6f 6c 69 6f 22 20 2b 20 73 61 76 65 5f 74 79 70 datapath,."portfolio".+.save_typ
0e80 65 29 0a 20 20 20 20 20 20 20 20 66 20 3d 20 66 69 6c 65 28 68 74 6d 6c 5f 66 69 6c 65 2c 20 22 e).........f.=.file(html_file,."
0ea0 77 22 29 0a 20 20 20 20 20 20 20 20 66 2e 77 72 69 74 65 28 68 74 6d 6c 29 0a 20 20 20 20 20 20 w").........f.write(html).......
0ec0 20 20 66 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 65 6d 62 65 64 5f 66 6c ..f.close()..........if.embed_fl
0ee0 61 67 20 3d 3d 20 46 61 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 23 20 6e 65 65 64 20 74 6f 20 6d ag.==.False:.........#.need.to.m
0f00 61 6b 65 20 61 20 74 61 72 62 61 6c 6c 20 74 68 61 74 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 ake.a.tarball.that.includes.the.
0f20 69 6d 61 67 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 5f 70 61 74 68 20 3d 20 6f 73 images.............tar_path.=.os
0f40 2e 70 61 74 68 2e 6a 6f 69 6e 28 64 61 74 61 70 61 74 68 2c 20 27 70 6f 72 74 66 6f 6c 69 6f 2e .path.join(datapath,.'portfolio.
0f60 74 61 72 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 5f 66 64 20 3d 20 74 61 72 66 69 tar').............tar_fd.=.tarfi
0f80 6c 65 2e 6f 70 65 6e 28 74 61 72 5f 70 61 74 68 2c 20 27 77 27 29 0a 20 20 20 20 20 20 20 20 20 le.open(tar_path,.'w')..........
0fa0 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 5f 66 64 2e 61 ...try:.................tar_fd.a
0fc0 64 64 28 68 74 6d 6c 5f 66 69 6c 65 2c 20 22 70 6f 72 74 66 6f 6c 69 6f 2e 68 74 6d 6c 22 29 0a dd(html_file,."portfolio.html").
0fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 67 6c 6f 62 0a 20 20 20 20 ................import.glob.....
1000 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 61 67 65 5f 6c 69 73 74 20 3d 20 67 6c 6f 62 2e 67 6c ............image_list.=.glob.gl
1020 6f 62 28 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 64 61 74 61 70 61 74 68 2c 20 27 69 6d 61 67 65 ob(os.path.join(datapath,.'image
1040 2a 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 69 6d *')).................for.i.in.im
1060 61 67 65 5f 6c 69 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 age_list:.....................ta
1080 72 5f 66 64 2e 61 64 64 28 69 2c 20 6f 73 2e 70 61 74 68 2e 62 61 73 65 6e 61 6d 65 28 69 29 29 r_fd.add(i,.os.path.basename(i))
10a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 .............finally:...........
10c0 20 20 20 20 20 20 74 61 72 5f 66 64 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 ......tar_fd.close()..........#.
10e0 43 72 65 61 74 65 20 61 20 64 61 74 61 73 74 6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 Create.a.datastore.object.......
1100 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 2e 63 72 65 61 74 65 28 29 0a ..dsobject.=.datastore.create().
1120 0a 20 20 20 20 20 20 20 20 23 20 57 72 69 74 65 20 61 6e 79 20 6d 65 74 61 64 61 74 61 20 28 68 .........#.Write.any.metadata.(h
1140 65 72 65 20 77 65 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 74 69 74 6c ere.we.specifically.set.the.titl
1160 65 20 6f 66 20 74 68 65 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 73 70 65 63 e.of.the.file.........#.and.spec
1180 69 66 79 20 74 68 61 74 20 74 68 69 73 20 69 73 20 61 20 70 6c 61 69 6e 20 74 65 78 74 20 66 69 ify.that.this.is.a.plain.text.fi
11a0 6c 65 29 2e 20 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b le)...........dsobject.metadata[
11c0 27 74 69 74 6c 65 27 5d 20 3d 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c 65 27 'title'].=.self.metadata['title'
11e0 5d 20 2b 20 22 20 22 20 2b 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ].+.".".+.\.....................
1200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 22 70 72 65 73 65 6e 74 61 74 69 6f 6e ................._("presentation
1220 22 29 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 69 63 ").........dsobject.metadata['ic
1240 6f 6e 2d 63 6f 6c 6f 72 27 5d 20 3d 20 70 72 6f 66 69 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 on-color'].=.profile.get_color()
1260 2e 74 6f 5f 73 74 72 69 6e 67 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 65 6d 62 65 64 5f 66 6c .to_string().........if.embed_fl
1280 61 67 20 3d 3d 20 54 72 75 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 61 76 65 5f ag.==.True:.............if.save_
12a0 74 79 70 65 20 3d 3d 20 27 2e 78 6d 6c 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 type.==.'.xml':.................
12c0 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 6d 69 6d 65 5f 74 79 70 65 27 5d 20 3d dsobject.metadata['mime_type'].=
12e0 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 6d 6c 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 .'application/xml'.............e
1300 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 lse:.................dsobject.me
1320 74 61 64 61 74 61 5b 27 6d 69 6d 65 5f 74 79 70 65 27 5d 20 3d 20 27 74 65 78 74 2f 68 74 6d 6c tadata['mime_type'].=.'text/html
1340 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 73 65 74 5f 66 69 6c 65 5f '.............dsobject.set_file_
1360 70 61 74 68 28 68 74 6d 6c 5f 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 path(html_file).........else:...
1380 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 6d 69 6d ..........dsobject.metadata['mim
13a0 65 5f 74 79 70 65 27 5d 20 3d 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 74 61 72 27 0a 20 e_type'].=.'application/x-tar'..
13c0 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 73 65 74 5f 66 69 6c 65 5f 70 61 74 ...........dsobject.set_file_pat
13e0 68 28 74 61 72 5f 70 61 74 68 29 0a 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 h(tar_path)..........dsobject.me
1400 74 61 64 61 74 61 5b 27 61 63 74 69 76 69 74 79 27 5d 20 3d 20 27 6f 72 67 2e 6c 61 70 74 6f 70 tadata['activity'].=.'org.laptop
1420 2e 57 65 62 41 63 74 69 76 69 74 79 27 0a 20 20 20 20 20 20 20 20 64 61 74 61 73 74 6f 72 65 2e .WebActivity'.........datastore.
1440 77 72 69 74 65 28 64 73 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 write(dsobject).........dsobject
1460 2e 64 65 73 74 72 6f 79 28 29 0a 20 20 20 20 20 20 20 20 67 6f 62 6a 65 63 74 2e 74 69 6d 65 6f .destroy().........gobject.timeo
1480 75 74 5f 61 64 64 28 32 35 30 2c 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 2e 73 65 ut_add(250,.self.save_as_html.se
14a0 74 5f 69 63 6f 6e 2c 20 22 68 74 6d 6c 6f 66 66 22 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 t_icon,."htmloff")..........self
14c0 2e 74 77 2e 73 61 76 65 64 5f 70 69 63 74 75 72 65 73 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 .tw.saved_pictures.=.[].........
14e0 72 65 74 75 72 6e 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 5f return......def.do_save_as_logo_
1500 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 57 72 cb(self,.button):.........""".Wr
1520 69 74 65 20 6c 6f 67 6f 20 63 6f 64 65 20 6f 75 74 20 74 6f 20 64 61 74 61 73 74 6f 72 65 2e 20 ite.logo.code.out.to.datastore..
1540 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 73 65 """.........self.save_as_logo.se
1560 74 5f 69 63 6f 6e 28 22 6c 6f 67 6f 2d 73 61 76 65 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 23 20 t_icon("logo-saveon").........#.
1580 67 72 61 62 20 63 6f 64 65 20 66 72 6f 6d 20 73 74 61 63 6b 73 0a 20 20 20 20 20 20 20 20 6c 6f grab.code.from.stacks.........lo
15a0 67 6f 63 6f 64 65 20 3d 20 73 61 76 65 5f 6c 6f 67 6f 28 73 65 6c 66 2e 74 77 29 0a 20 20 20 20 gocode.=.save_logo(self.tw).....
15c0 20 20 20 20 69 66 20 6c 65 6e 28 6c 6f 67 6f 63 6f 64 65 29 20 3d 3d 20 30 3a 0a 20 20 20 20 20 ....if.len(logocode).==.0:......
15e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 66 69 6c 65 6e 61 6d 65 20 3d .......return.........filename.=
1600 20 22 6c 6f 67 6f 73 65 73 73 69 6f 6e 2e 6c 67 22 0a 0a 20 20 20 20 20 20 20 20 23 20 43 72 65 ."logosession.lg"..........#.Cre
1620 61 74 65 20 61 20 64 61 74 61 73 74 6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 64 ate.a.datastore.object.........d
1640 73 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 2e 63 72 65 61 74 65 28 29 0a 0a 20 20 sobject.=.datastore.create()....
1660 20 20 20 20 20 20 23 20 57 72 69 74 65 20 61 6e 79 20 6d 65 74 61 64 61 74 61 20 28 68 65 72 65 ......#.Write.any.metadata.(here
1680 20 77 65 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 74 69 74 6c 65 20 6f .we.specifically.set.the.title.o
16a0 66 20 74 68 65 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 73 70 65 63 69 66 79 f.the.file.........#.and.specify
16c0 20 74 68 61 74 20 74 68 69 73 20 69 73 20 61 20 70 6c 61 69 6e 20 74 65 78 74 20 66 69 6c 65 29 .that.this.is.a.plain.text.file)
16e0 2e 20 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 ...........dsobject.metadata['ti
1700 74 6c 65 27 5d 20 3d 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c 65 27 5d 20 2b tle'].=.self.metadata['title'].+
1720 20 22 2e 6c 67 22 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 .".lg".........dsobject.metadata
1740 5b 27 6d 69 6d 65 5f 74 79 70 65 27 5d 20 3d 20 27 74 65 78 74 2f 70 6c 61 69 6e 27 0a 20 20 20 ['mime_type'].=.'text/plain'....
1760 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 69 63 6f 6e 2d 63 6f 6c .....dsobject.metadata['icon-col
1780 6f 72 27 5d 20 3d 20 70 72 6f 66 69 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 or'].=.profile.get_color().to_st
17a0 72 69 6e 67 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 73 61 76 65 20 74 68 65 20 4c 6f 67 6f 20 ring()..........#.save.the.Logo.
17c0 63 6f 64 65 20 74 6f 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 64 69 72 65 63 74 6f 72 79 0a 20 code.to.the.instance.directory..
17e0 20 20 20 20 20 20 20 64 61 74 61 70 61 74 68 20 3d 20 67 65 74 5f 70 61 74 68 28 61 63 74 69 76 .......datapath.=.get_path(activ
1800 69 74 79 2c 20 27 69 6e 73 74 61 6e 63 65 27 29 0a 0a 20 20 20 20 20 20 20 20 23 20 57 72 69 74 ity,.'instance')..........#.Writ
1820 65 20 74 68 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 64 61 74 61 20 64 69 72 65 63 74 6f 72 79 e.the.file.to.the.data.directory
1840 20 6f 66 20 74 68 69 73 20 61 63 74 69 76 69 74 79 27 73 20 72 6f 6f 74 2e 20 0a 20 20 20 20 20 .of.this.activity's.root........
1860 20 20 20 66 69 6c 65 5f 70 61 74 68 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 64 61 74 61 ...file_path.=.os.path.join(data
1880 70 61 74 68 2c 20 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 66 20 3d 20 6f 70 65 6e path,.filename).........f.=.open
18a0 28 66 69 6c 65 5f 70 61 74 68 2c 20 27 77 27 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 (file_path,.'w').........try:...
18c0 20 20 20 20 20 20 20 20 20 20 66 2e 77 72 69 74 65 28 6c 6f 67 6f 63 6f 64 65 29 0a 20 20 20 20 ..........f.write(logocode).....
18e0 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 63 6c 6f 73 65 ....finally:.............f.close
1900 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 53 65 74 20 74 68 65 20 66 69 6c 65 5f 70 61 74 68 20 ()..........#.Set.the.file_path.
1920 69 6e 20 74 68 65 20 64 61 74 61 73 74 6f 72 65 2e 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 in.the.datastore..........dsobje
1940 63 74 2e 73 65 74 5f 66 69 6c 65 5f 70 61 74 68 28 66 69 6c 65 5f 70 61 74 68 29 0a 0a 20 20 20 ct.set_file_path(file_path).....
1960 20 20 20 20 20 64 61 74 61 73 74 6f 72 65 2e 77 72 69 74 65 28 64 73 6f 62 6a 65 63 74 29 0a 20 .....datastore.write(dsobject)..
1980 20 20 20 20 20 20 20 67 6f 62 6a 65 63 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 32 35 30 2c 20 .......gobject.timeout_add(250,.
19a0 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 73 65 74 5f 69 63 6f 6e 2c 20 22 6c 6f 67 self.save_as_logo.set_icon,."log
19c0 6f 2d 73 61 76 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 o-saveoff").........return......
19e0 64 65 66 20 64 6f 5f 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 5f 63 62 28 73 65 6c 66 2c 20 def.do_load_ta_project_cb(self,.
1a00 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 4c 6f 61 64 20 61 20 70 72 6f 6a button):.........""".Load.a.proj
1a20 65 63 74 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 72 6e 61 6c 20 22 22 22 0a 20 20 20 20 20 20 20 ect.from.the.Journal."""........
1a40 20 66 72 6f 6d 20 73 75 67 61 72 2e 67 72 61 70 68 69 63 73 2e 6f 62 6a 65 63 74 63 68 6f 6f 73 .from.sugar.graphics.objectchoos
1a60 65 72 20 69 6d 70 6f 72 74 20 4f 62 6a 65 63 74 43 68 6f 6f 73 65 72 0a 20 20 20 20 20 20 20 20 er.import.ObjectChooser.........
1a80 63 68 6f 6f 73 65 72 20 3d 20 4f 62 6a 65 63 74 43 68 6f 6f 73 65 72 28 5f 28 22 50 72 6f 6a 65 chooser.=.ObjectChooser(_("Proje
1aa0 63 74 22 29 2c 20 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ct"),.self,.....................
1ac0 20 20 20 20 20 20 20 20 20 20 67 74 6b 2e 44 49 41 4c 4f 47 5f 4d 4f 44 41 4c 20 7c 20 67 74 6b ..........gtk.DIALOG_MODAL.|.gtk
1ae0 2e 44 49 41 4c 4f 47 5f 44 45 53 54 52 4f 59 5f 57 49 54 48 5f 50 41 52 45 4e 54 29 0a 20 20 20 .DIALOG_DESTROY_WITH_PARENT)....
1b00 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 63 .....try:.............result.=.c
1b20 68 6f 6f 73 65 72 2e 72 75 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 75 hooser.run().............if.resu
1b40 6c 74 20 3d 3d 20 67 74 6b 2e 52 45 53 50 4f 4e 53 45 5f 41 43 43 45 50 54 3a 0a 20 20 20 20 20 lt.==.gtk.RESPONSE_ACCEPT:......
1b60 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 63 68 6f 6f 73 65 72 2e 67 65 ...........dsobject.=.chooser.ge
1b80 74 5f 73 65 6c 65 63 74 65 64 5f 6f 62 6a 65 63 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t_selected_object().............
1ba0 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f ....try:....................._lo
1bc0 67 67 65 72 2e 64 65 62 75 67 28 22 6f 70 65 6e 69 6e 67 20 25 73 20 22 20 25 20 64 73 6f 62 6a gger.debug("opening.%s.".%.dsobj
1be0 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ect.file_path)..................
1c00 20 20 20 73 65 6c 66 2e 72 65 61 64 5f 66 69 6c 65 28 64 73 6f 62 6a 65 63 74 2e 66 69 6c 65 5f ...self.read_file(dsobject.file_
1c20 70 61 74 68 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 path,.False).................exc
1c40 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 ept:....................._logger
1c60 2e 64 65 62 75 67 28 22 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 25 73 22 20 25 20 64 73 6f 62 .debug("couldn't.open.%s".%.dsob
1c80 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ject.file_path).................
1ca0 64 73 6f 62 6a 65 63 74 2e 64 65 73 74 72 6f 79 28 29 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c dsobject.destroy().........final
1cc0 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 6f 6f 73 65 72 2e 64 65 73 74 72 6f 79 28 ly:.............chooser.destroy(
1ce0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 63 68 6f 6f 73 65 72 0a 20 20 20 20 20 20 ).............del.chooser.......
1d00 20 20 72 65 74 75 72 6e 20 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 6c 6f 61 64 5f 70 79 74 68 6f ..return.......def.do_load_pytho
1d20 6e 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 n_cb(self,.button):.........""".
1d40 4c 6f 61 64 20 50 79 74 68 6f 6e 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 72 6e 61 Load.Python.code.from.the.Journa
1d60 6c 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 70 79 74 68 6f 6e 2e l..""".........self.load_python.
1d80 73 65 74 5f 69 63 6f 6e 28 22 70 69 70 70 79 2d 6f 70 65 6e 6f 6e 22 29 0a 20 20 20 20 20 20 20 set_icon("pippy-openon")........
1da0 20 73 65 6c 66 2e 69 6d 70 6f 72 74 5f 70 79 28 29 0a 20 20 20 20 20 20 20 20 67 6f 62 6a 65 63 .self.import_py().........gobjec
1dc0 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 32 35 30 2c 20 73 65 6c 66 2e 6c 6f 61 64 5f 70 79 74 t.timeout_add(250,.self.load_pyt
1de0 68 6f 6e 2e 73 65 74 5f 69 63 6f 6e 2c 20 22 70 69 70 70 79 2d 6f 70 65 6e 6f 66 66 22 29 0a 20 hon.set_icon,."pippy-openoff")..
1e00 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 64 65 66 20 69 6d 70 6f 72 74 5f 70 79 .......return......def.import_py
1e20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 49 6d 70 6f 72 74 20 50 79 74 68 6f (self):.........""".Import.Pytho
1e40 6e 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 72 6e 61 6c 20 74 6f 20 6c 6f 61 64 20 n.code.from.the.Journal.to.load.
1e60 69 6e 74 6f 20 27 6d 79 62 6c 6f 63 6b 27 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 66 72 6f 6d into.'myblock'..""".........from
1e80 20 73 75 67 61 72 2e 67 72 61 70 68 69 63 73 2e 6f 62 6a 65 63 74 63 68 6f 6f 73 65 72 20 69 6d .sugar.graphics.objectchooser.im
1ea0 70 6f 72 74 20 4f 62 6a 65 63 74 43 68 6f 6f 73 65 72 0a 20 20 20 20 20 20 20 20 63 68 6f 6f 73 port.ObjectChooser.........choos
1ec0 65 72 20 3d 20 4f 62 6a 65 63 74 43 68 6f 6f 73 65 72 28 27 50 79 74 68 6f 6e 20 63 6f 64 65 27 er.=.ObjectChooser('Python.code'
1ee0 2c 20 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.self,.........................
1f00 20 20 20 20 20 20 67 74 6b 2e 44 49 41 4c 4f 47 5f 4d 4f 44 41 4c 20 7c 20 67 74 6b 2e 44 49 41 ......gtk.DIALOG_MODAL.|.gtk.DIA
1f20 4c 4f 47 5f 44 45 53 54 52 4f 59 5f 57 49 54 48 5f 50 41 52 45 4e 54 29 0a 20 20 20 20 20 20 20 LOG_DESTROY_WITH_PARENT)........
1f40 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 63 68 6f 6f 73 .try:.............result.=.choos
1f60 65 72 2e 72 75 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 20 3d er.run().............if.result.=
1f80 3d 20 67 74 6b 2e 52 45 53 50 4f 4e 53 45 5f 41 43 43 45 50 54 3a 0a 20 20 20 20 20 20 20 20 20 =.gtk.RESPONSE_ACCEPT:..........
1fa0 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 63 68 6f 6f 73 65 72 2e 67 65 74 5f 73 65 .......dsobject.=.chooser.get_se
1fc0 6c 65 63 74 65 64 5f 6f 62 6a 65 63 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lected_object().................
1fe0 73 65 6c 66 2e 5f 6c 6f 61 64 5f 70 79 74 68 6f 6e 28 64 73 6f 62 6a 65 63 74 29 0a 20 20 20 20 self._load_python(dsobject).....
2000 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 6f 6f 73 65 72 ....finally:.............chooser
2020 2e 64 65 73 74 72 6f 79 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 63 68 6f 6f 73 .destroy().............del.choos
2040 65 72 0a 0a 20 20 20 20 64 65 66 20 5f 6c 6f 61 64 5f 70 79 74 68 6f 6e 28 73 65 6c 66 2c 20 64 er......def._load_python(self,.d
2060 73 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 52 65 61 64 20 74 68 65 20 50 sobject):.........""".Read.the.P
2080 79 74 68 6f 6e 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 72 6e 61 6c 20 6f 62 6a 65 ython.code.from.the.Journal.obje
20a0 63 74 20 22 22 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ct.""".........try:.............
20c0 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 6f 70 65 6e 69 6e 67 20 25 73 20 22 20 25 20 64 73 _logger.debug("opening.%s.".%.ds
20e0 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 object.file_path).............fi
2100 6c 65 5f 68 61 6e 64 6c 65 20 3d 20 6f 70 65 6e 28 64 73 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 le_handle.=.open(dsobject.file_p
2120 61 74 68 2c 20 22 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6d 79 ath,."r").............self.tw.my
2140 62 6c 6f 63 6b 20 3d 20 66 69 6c 65 5f 68 61 6e 64 6c 65 2e 72 65 61 64 28 29 0a 20 20 20 20 20 block.=.file_handle.read()......
2160 20 20 20 20 20 20 20 66 69 6c 65 5f 68 61 6e 64 6c 65 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 .......file_handle.close()......
2180 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 74 5f 75 73 65 72 64 65 66 69 6e 65 64 28 29 .......self.tw.set_userdefined()
21a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 61 76 65 20 72 65 66 65 72 65 6e 63 65 20 74 6f .............#.save.reference.to
21c0 20 50 79 74 68 69 6e 20 63 6f 64 65 20 69 6e 20 74 68 65 20 70 72 6f 6a 65 63 74 20 6d 65 74 61 .Pythin.code.in.the.project.meta
21e0 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 data.............self.metadata['
2200 70 79 74 68 6f 6e 20 63 6f 64 65 27 5d 20 3d 20 64 73 6f 62 6a 65 63 74 2e 6f 62 6a 65 63 74 5f python.code'].=.dsobject.object_
2220 69 64 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f id.........except:............._
2240 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 25 73 22 20 logger.debug("couldn't.open.%s".
2260 25 20 64 73 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 64 73 %.dsobject.file_path).........ds
2280 6f 62 6a 65 63 74 2e 64 65 73 74 72 6f 79 28 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 73 61 76 object.destroy()......def.do_sav
22a0 65 5f 61 73 5f 69 6d 61 67 65 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 e_as_image_cb(self,.button):....
22c0 20 20 20 20 20 22 22 22 20 53 61 76 65 20 74 68 65 20 63 61 6e 76 61 73 20 74 6f 20 74 68 65 20 .....""".Save.the.canvas.to.the.
22e0 4a 6f 75 72 6e 61 6c 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 Journal..""".........self.save_a
2300 73 5f 69 6d 61 67 65 2e 73 65 74 5f 69 63 6f 6e 28 22 69 6d 61 67 65 2d 73 61 76 65 6f 6e 22 29 s_image.set_icon("image-saveon")
2320 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 73 61 76 69 6e 67 20 69 ........._logger.debug("saving.i
2340 6d 61 67 65 20 74 6f 20 6a 6f 75 72 6e 61 6c 22 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e mage.to.journal")..........self.
2360 74 77 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 28 29 0a 20 20 20 20 20 20 20 20 67 6f 62 6a 65 tw.save_as_image().........gobje
2380 63 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 32 35 30 2c 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 ct.timeout_add(250,.self.save_as
23a0 5f 69 6d 61 67 65 2e 73 65 74 5f 69 63 6f 6e 2c 20 22 69 6d 61 67 65 2d 73 61 76 65 6f 66 66 22 _image.set_icon,."image-saveoff"
23c0 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 6b 65 65 ).........return......def.do_kee
23e0 70 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 p_cb(self,.button):.........""".
2400 53 61 76 65 20 61 20 73 6e 61 70 73 68 6f 74 20 6f 66 20 74 68 65 20 70 72 6f 6a 65 63 74 20 74 Save.a.snapshot.of.the.project.t
2420 6f 20 74 68 65 20 4a 6f 75 72 6e 61 6c 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 64 61 74 61 70 o.the.Journal..""".........datap
2440 61 74 68 20 3d 20 67 65 74 5f 70 61 74 68 28 61 63 74 69 76 69 74 79 2c 20 27 69 6e 73 74 61 6e ath.=.get_path(activity,.'instan
2460 63 65 27 29 0a 20 20 20 20 20 20 20 20 74 61 66 69 6c 65 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f ce').........tafile.=.os.path.jo
2480 69 6e 28 64 61 74 61 70 61 74 68 2c 22 74 6d 70 66 69 6c 65 2e 74 61 22 29 0a 20 20 20 20 20 20 in(datapath,"tmpfile.ta").......
24a0 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5f 74 6f 5f 66 69 6c 65 28 ..try:.............data_to_file(
24c0 73 65 6c 66 2e 74 77 2e 61 73 73 65 6d 62 6c 65 5f 64 61 74 61 5f 74 6f 5f 73 61 76 65 28 29 2c self.tw.assemble_data_to_save(),
24e0 20 74 61 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 .tafile).........except:........
2500 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 63 6f 75 6c 64 6e 27 74 20 73 61 76 ....._logger.debug("couldn't.sav
2520 65 20 73 6e 61 70 73 68 6f 74 20 74 6f 20 6a 6f 75 72 6e 61 6c 22 29 0a 0a 20 20 20 20 20 20 20 e.snapshot.to.journal").........
2540 20 23 20 43 72 65 61 74 65 20 61 20 64 61 74 61 73 74 6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 .#.Create.a.datastore.object....
2560 20 20 20 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 2e 63 72 65 61 74 65 .....dsobject.=.datastore.create
2580 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 57 72 69 74 65 20 61 6e 79 20 6d 65 74 61 64 61 74 61 ()..........#.Write.any.metadata
25a0 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c .........dsobject.metadata['titl
25c0 65 27 5d 20 3d 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c 65 27 5d 20 2b 20 22 e'].=.self.metadata['title'].+."
25e0 20 22 20 2b 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .".+.\..........................
2600 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 22 73 6e 61 70 73 68 6f 74 22 29 0a 20 20 20 20 20 20 ............_("snapshot").......
2620 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 69 63 6f 6e 2d 63 6f 6c 6f 72 27 ..dsobject.metadata['icon-color'
2640 5d 20 3d 20 70 72 6f 66 69 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 72 69 6e ].=.profile.get_color().to_strin
2660 67 28 29 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 6d g().........dsobject.metadata['m
2680 69 6d 65 5f 74 79 70 65 27 5d 20 3d 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 74 75 72 74 ime_type'].=.'application/x-turt
26a0 6c 65 2d 61 72 74 27 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 le-art'.........dsobject.metadat
26c0 61 5b 27 61 63 74 69 76 69 74 79 27 5d 20 3d 20 27 6f 72 67 2e 6c 61 70 74 6f 70 2e 54 75 72 74 a['activity'].=.'org.laptop.Turt
26e0 6c 65 41 72 74 41 63 74 69 76 69 74 79 27 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e leArtActivity'.........dsobject.
2700 73 65 74 5f 66 69 6c 65 5f 70 61 74 68 28 74 61 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 64 61 set_file_path(tafile).........da
2720 74 61 73 74 6f 72 65 2e 77 72 69 74 65 28 64 73 6f 62 6a 65 63 74 29 0a 0a 20 20 20 20 20 20 20 tastore.write(dsobject).........
2740 20 23 20 43 6c 65 61 6e 20 75 70 0a 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 64 65 73 .#.Clean.up.........dsobject.des
2760 74 72 6f 79 28 29 0a 20 20 20 20 20 20 20 20 6f 73 2e 72 65 6d 6f 76 65 28 74 61 66 69 6c 65 29 troy().........os.remove(tafile)
2780 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 23 20 4d 61 69 6e 20 74 6f 6f 6c .........return......#.Main.tool
27a0 62 61 72 20 62 75 74 74 6f 6e 20 63 61 6c 6c 62 61 63 6b 73 20 0a 0a 20 20 20 20 64 65 66 20 64 bar.button.callbacks.......def.d
27c0 6f 5f 70 61 6c 65 74 74 65 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 o_palette_cb(self,.button):.....
27e0 20 20 20 20 22 22 22 20 53 68 6f 77 2f 68 69 64 65 20 70 61 6c 65 74 74 65 20 22 22 22 0a 20 20 ....""".Show/hide.palette."""...
2800 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 70 61 6c 65 74 74 65 20 3d 3d 20 54 72 75 65 ......if.self.tw.palette.==.True
2820 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 68 69 64 65 73 68 6f 77 5f 70 :.............self.tw.hideshow_p
2840 61 6c 65 74 74 65 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 alette(False).............self.p
2860 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c 65 74 74 65 6f alette_button.set_icon("paletteo
2880 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 n").............self.palette_but
28a0 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 68 6f 77 20 70 61 6c 65 74 74 65 27 ton.set_tooltip(_('Show.palette'
28c0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 6e 65 77 5f 73 75 67 61 72 )).............if.self.new_sugar
28e0 5f 73 79 73 74 65 6d 20 61 6e 64 20 73 65 6c 66 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 70 61 6c _system.and.self.tw.selected_pal
2900 65 74 74 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ette.is.not.None:...............
2920 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 73 65 6c 66 2e 74 77 2e 73 ..self.palette_buttons[self.tw.s
2940 65 6c 65 63 74 65 64 5f 70 61 6c 65 74 74 65 5d 2e 73 65 74 5f 69 63 6f 6e 28 0a 20 20 20 20 20 elected_palette].set_icon(......
2960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 41 4c 45 54 54 45 5f 4e 41 4d 45 53 5b 73 65 6c ...............PALETTE_NAMES[sel
2980 66 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 70 61 6c 65 74 74 65 5d 2b 27 6f 66 66 27 29 0a 20 20 f.tw.selected_palette]+'off')...
29a0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e ......else:.............self.tw.
29c0 68 69 64 65 73 68 6f 77 5f 70 61 6c 65 74 74 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 hideshow_palette(True)..........
29e0 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 ...self.palette_button.set_icon(
2a00 22 70 61 6c 65 74 74 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 "paletteoff").............self.p
2a20 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 alette_button.set_tooltip(_('Hid
2a40 65 20 70 61 6c 65 74 74 65 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 e.palette')).............if.self
2a60 2e 6e 65 77 5f 73 75 67 61 72 5f 73 79 73 74 65 6d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .new_sugar_system:..............
2a80 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 30 5d 2e 73 65 74 5f 69 ...self.palette_buttons[0].set_i
2aa0 63 6f 6e 28 50 41 4c 45 54 54 45 5f 4e 41 4d 45 53 5b 30 5d 2b 27 6f 6e 27 29 0a 0a 20 20 20 20 con(PALETTE_NAMES[0]+'on')......
2ac0 64 65 66 20 64 6f 5f 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5f 63 62 28 73 65 6c 66 2c 20 def.do_palette_buttons_cb(self,.
2ae0 62 75 74 74 6f 6e 2c 20 69 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 50 61 6c 65 74 74 65 20 button,.i):.........""".Palette.
2b00 73 65 6c 65 63 74 6f 72 20 62 75 74 74 6f 6e 73 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 selector.buttons.""".........if.
2b20 73 65 6c 66 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 70 61 6c 65 74 74 65 20 69 73 20 6e 6f 74 20 self.tw.selected_palette.is.not.
2b40 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 73 65 6c None:.............if.self.tw.sel
2b60 65 63 74 65 64 5f 70 61 6c 65 74 74 65 20 21 3d 20 69 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ected_palette.!=.i:.............
2b80 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 73 65 6c 66 2e 74 77 ....self.palette_buttons[self.tw
2ba0 2e 73 65 6c 65 63 74 65 64 5f 70 61 6c 65 74 74 65 5d 2e 73 65 74 5f 69 63 6f 6e 28 0a 20 20 20 .selected_palette].set_icon(....
2bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 41 4c 45 54 54 45 5f 4e 41 4d 45 53 5b 73 .................PALETTE_NAMES[s
2be0 65 6c 66 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 70 61 6c 65 74 74 65 5d 2b 27 6f 66 66 27 29 0a elf.tw.selected_palette]+'off').
2c00 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 69 5d 2e ........self.palette_buttons[i].
2c20 73 65 74 5f 69 63 6f 6e 28 50 41 4c 45 54 54 45 5f 4e 41 4d 45 53 5b 69 5d 2b 27 6f 6e 27 29 0a set_icon(PALETTE_NAMES[i]+'on').
2c40 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 68 6f 77 5f 70 61 6c 65 74 74 65 28 69 29 0a ........self.tw.show_palette(i).
2c60 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f ........self.palette_button.set_
2c80 69 63 6f 6e 28 22 70 61 6c 65 74 74 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e icon("paletteoff").........self.
2ca0 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 palette_button.set_tooltip(_('Hi
2cc0 64 65 20 70 61 6c 65 74 74 65 27 29 29 0a 0a 20 20 20 20 23 20 54 68 65 73 65 20 6d 65 74 68 6f de.palette'))......#.These.metho
2ce0 64 73 20 61 72 65 20 63 61 6c 6c 65 64 20 62 6f 74 68 20 66 72 6f 6d 20 62 75 74 74 6f 6e 73 20 ds.are.called.both.from.buttons.
2d00 61 6e 64 20 70 61 6c 65 74 74 65 2e 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 68 69 64 65 70 61 6c and.palette.......def.do_hidepal
2d20 65 74 74 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 48 69 64 65 20 74 68 65 ette(self):.........""".Hide.the
2d40 20 70 61 6c 65 74 74 65 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 .palette..""".........self.palet
2d60 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c 65 74 74 65 6f 6e 22 29 0a te_button.set_icon("paletteon").
2d80 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f ........self.palette_button.set_
2da0 74 6f 6f 6c 74 69 70 28 5f 28 27 53 68 6f 77 20 70 61 6c 65 74 74 65 27 29 29 0a 0a 20 20 20 20 tooltip(_('Show.palette'))......
2dc0 64 65 66 20 64 6f 5f 73 68 6f 77 70 61 6c 65 74 74 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 def.do_showpalette(self):.......
2de0 20 20 22 22 22 20 53 68 6f 77 20 74 68 65 20 70 61 6c 65 74 74 65 2e 20 22 22 22 0a 20 20 20 20 ..""".Show.the.palette..""".....
2e00 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e ....self.palette_button.set_icon
2e20 28 22 70 61 6c 65 74 74 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 ("paletteoff").........self.pale
2e40 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 70 tte_button.set_tooltip(_('Hide.p
2e60 61 6c 65 74 74 65 27 29 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 68 69 64 65 73 68 6f 77 5f 63 alette'))......def.do_hideshow_c
2e80 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 54 6f 67 b(self,.button):.........""".Tog
2ea0 67 6c 65 20 76 69 73 69 62 69 6c 69 74 79 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 gle.visibility..""".........self
2ec0 2e 74 77 2e 68 69 64 65 73 68 6f 77 5f 62 75 74 74 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 69 66 .tw.hideshow_button().........if
2ee0 20 73 65 6c 66 2e 74 77 2e 68 69 64 65 20 3d 3d 20 54 72 75 65 3a 20 23 20 77 65 20 6a 75 73 74 .self.tw.hide.==.True:.#.we.just
2f00 20 68 69 64 20 74 68 65 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 .hid.the.blocks.............self
2f20 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 68 69 64 65 73 68 6f .blocks_button.set_icon("hidesho
2f40 77 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 won").............self.blocks_bu
2f60 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 68 6f 77 20 62 6c 6f 63 6b 73 27 tton.set_tooltip(_('Show.blocks'
2f80 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c )).........else:.............sel
2fa0 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 68 69 64 65 73 68 f.blocks_button.set_icon("hidesh
2fc0 6f 77 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f owoff").............self.blocks_
2fe0 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 62 6c 6f 63 6b button.set_tooltip(_('Hide.block
3000 73 27 29 29 0a 20 20 20 20 20 20 20 20 23 20 75 70 64 61 74 65 20 70 61 6c 65 74 74 65 20 62 75 s')).........#.update.palette.bu
3020 74 74 6f 6e 73 20 74 6f 6f 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 70 61 6c ttons.too.........if.self.tw.pal
3040 65 74 74 65 20 3d 3d 20 46 61 6c 73 65 3a 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ette.==.False:..............self
3060 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c 65 74 74 .palette_button.set_icon("palett
3080 65 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 eon").............self.palette_b
30a0 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 68 6f 77 20 70 61 6c 65 74 74 utton.set_tooltip(_('Show.palett
30c0 65 27 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 e')).........else:.............s
30e0 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c elf.palette_button.set_icon("pal
3100 65 74 74 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 etteoff").............self.palet
3120 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 70 61 te_button.set_tooltip(_('Hide.pa
3140 6c 65 74 74 65 27 29 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 68 69 64 65 28 73 65 6c 66 29 3a lette'))......def.do_hide(self):
3160 0a 20 20 20 20 20 20 20 20 22 22 22 20 48 69 64 65 20 62 6c 6f 63 6b 73 2e 20 22 22 22 0a 20 20 .........""".Hide.blocks.."""...
3180 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f ......self.blocks_button.set_ico
31a0 6e 28 22 68 69 64 65 73 68 6f 77 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f n("hideshowon").........self.blo
31c0 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 68 6f 77 20 62 cks_button.set_tooltip(_('Show.b
31e0 6c 6f 63 6b 73 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 locks')).........self.palette_bu
3200 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c 65 74 74 65 6f 6e 22 29 0a 20 20 20 20 20 tton.set_icon("paletteon")......
3220 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 ...self.palette_button.set_toolt
3240 69 70 28 5f 28 27 53 68 6f 77 20 70 61 6c 65 74 74 65 27 29 29 0a 0a 20 20 20 20 64 65 66 20 64 ip(_('Show.palette'))......def.d
3260 6f 5f 73 68 6f 77 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 53 68 6f 77 20 62 o_show(self):.........""".Show.b
3280 6c 6f 63 6b 73 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 locks..""".........self.blocks_b
32a0 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 68 69 64 65 73 68 6f 77 6f 66 66 22 29 0a 20 20 utton.set_icon("hideshowoff")...
32c0 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f ......self.blocks_button.set_too
32e0 6c 74 69 70 28 5f 28 27 48 69 64 65 20 62 6c 6f 63 6b 73 27 29 29 0a 20 20 20 20 20 20 20 20 73 ltip(_('Hide.blocks')).........s
3300 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 70 61 6c elf.palette_button.set_icon("pal
3320 65 74 74 65 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 etteoff").........self.palette_b
3340 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 70 61 6c 65 74 74 utton.set_tooltip(_('Hide.palett
3360 65 27 29 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 65 72 61 73 65 72 5f 63 62 28 73 65 6c 66 2c e'))......def.do_eraser_cb(self,
3380 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 6c 65 61 72 20 74 68 65 20 .button):.........""".Clear.the.
33a0 73 63 72 65 65 6e 20 61 6e 64 20 72 65 63 65 6e 74 65 72 2e 20 22 22 22 0a 20 20 20 20 20 20 20 screen.and.recenter.."""........
33c0 20 73 65 6c 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 65 72 .self.eraser_button.set_icon("er
33e0 61 73 65 72 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 63 65 6e 74 65 72 28 aseroff").........self.recenter(
3400 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 28 ).........self.tw.eraser_button(
3420 29 0a 20 20 20 20 20 20 20 20 67 6f 62 6a 65 63 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 32 35 ).........gobject.timeout_add(25
3440 30 2c 20 73 65 6c 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 2c 20 0,.self.eraser_button.set_icon,.
3460 22 65 72 61 73 65 72 6f 6e 22 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 72 75 6e 5f 63 62 28 73 "eraseron")......def.do_run_cb(s
3480 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 61 6c 6c 62 61 elf,.button):.........""".Callba
34a0 63 6b 20 66 6f 72 20 72 75 6e 20 62 75 74 74 6f 6e 20 28 72 61 62 62 69 74 29 2e 20 22 22 22 0a ck.for.run.button.(rabbit)..""".
34c0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e ........self.run_button.set_icon
34e0 28 22 72 75 6e 2d 66 61 73 74 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6c ("run-faston").........self.tw.l
3500 63 2e 74 72 61 63 65 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 72 75 6e 5f c.trace.=.0.........self.tw.run_
3520 62 75 74 74 6f 6e 28 30 29 0a 20 20 20 20 20 20 20 20 67 6f 62 6a 65 63 74 2e 74 69 6d 65 6f 75 button(0).........gobject.timeou
3540 74 5f 61 64 64 28 31 30 30 30 2c 20 73 65 6c 66 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f t_add(1000,.self.run_button.set_
3560 69 63 6f 6e 2c 20 22 72 75 6e 2d 66 61 73 74 6f 66 66 22 29 0a 0a 20 20 20 20 64 65 66 20 64 6f icon,."run-fastoff")......def.do
3580 5f 73 74 65 70 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 _step_cb(self,.button):.........
35a0 22 22 22 20 43 61 6c 6c 62 61 63 6b 20 66 6f 72 20 73 74 65 70 20 62 75 74 74 6f 6e 20 28 74 75 """.Callback.for.step.button.(tu
35c0 72 74 6c 65 29 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 rtle)..""".........self.step_but
35e0 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 72 75 6e 2d 73 6c 6f 77 6f 6e 22 29 0a 20 20 20 20 20 ton.set_icon("run-slowon")......
3600 20 20 20 73 65 6c 66 2e 74 77 2e 6c 63 2e 74 72 61 63 65 20 3d 20 30 0a 20 20 20 20 20 20 20 20 ...self.tw.lc.trace.=.0.........
3620 73 65 6c 66 2e 74 77 2e 72 75 6e 5f 62 75 74 74 6f 6e 28 33 29 0a 20 20 20 20 20 20 20 20 67 6f self.tw.run_button(3).........go
3640 62 6a 65 63 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 31 30 30 30 2c 20 73 65 6c 66 2e 73 74 65 bject.timeout_add(1000,.self.ste
3660 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 2c 20 22 72 75 6e 2d 73 6c 6f 77 6f 66 66 22 p_button.set_icon,."run-slowoff"
3680 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 64 65 62 75 67 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 )......def.do_debug_cb(self,.but
36a0 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 61 6c 6c 62 61 63 6b 20 66 6f 72 20 64 ton):.........""".Callback.for.d
36c0 65 62 75 67 20 62 75 74 74 6f 6e 20 28 62 75 67 29 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 ebug.button.(bug)..""".........s
36e0 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 64 65 62 75 67 elf.debug_button.set_icon("debug
3700 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6c 63 2e 74 72 61 63 65 20 3d 20 on").........self.tw.lc.trace.=.
3720 31 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 72 75 6e 5f 62 75 74 74 6f 6e 28 36 29 0a 1.........self.tw.run_button(6).
3740 20 20 20 20 20 20 20 20 67 6f 62 6a 65 63 74 2e 74 69 6d 65 6f 75 74 5f 61 64 64 28 31 30 30 30 ........gobject.timeout_add(1000
3760 2c 20 73 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 2c 20 22 64 ,.self.debug_button.set_icon,."d
3780 65 62 75 67 6f 66 66 22 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 73 74 6f 70 5f 63 62 28 73 65 ebugoff")......def.do_stop_cb(se
37a0 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 61 6c 6c 62 61 63 lf,.button):.........""".Callbac
37c0 6b 20 66 6f 72 20 73 74 6f 70 20 62 75 74 74 6f 6e 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 k.for.stop.button..""".........s
37e0 65 6c 66 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 73 74 6f 70 69 74 elf.stop_button.set_icon("stopit
3800 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 74 6f 70 5f 62 75 74 74 6f off").........self.tw.stop_butto
3820 6e 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e 73 65 74 n().........self.step_button.set
3840 5f 69 63 6f 6e 28 22 72 75 6e 2d 73 6c 6f 77 6f 66 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c _icon("run-slowoff").........sel
3860 66 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 72 75 6e 2d 66 61 73 74 6f f.run_button.set_icon("run-fasto
3880 66 66 22 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 73 61 6d 70 6c 65 73 5f 63 62 28 73 65 6c 66 ff")......def.do_samples_cb(self
38a0 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 53 61 6d 70 6c 65 20 70 72 ,.button):.........""".Sample.pr
38c0 6f 6a 65 63 74 73 20 6f 70 65 6e 20 64 69 61 6c 6f 67 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 ojects.open.dialog.""".........#
38e0 20 46 49 58 4d 45 3a 20 65 6e 63 61 70 73 75 6c 61 74 69 6f 6e 21 0a 20 20 20 20 20 20 20 20 73 .FIXME:.encapsulation!.........s
3900 65 6c 66 2e 74 77 2e 6c 6f 61 64 5f 66 69 6c 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 23 elf.tw.load_file(True).........#
3920 20 72 75 6e 20 74 68 65 20 61 63 74 69 76 69 74 79 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 .run.the.activity.........self.s
3940 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 73 74 6f 70 69 74 6f 6e 22 29 0a top_button.set_icon("stopiton").
3960 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 72 75 6e 5f 62 75 74 74 6f 6e 28 30 29 0a 0a 20 ........self.tw.run_button(0)...
3980 20 20 20 64 65 66 20 72 65 63 65 6e 74 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 ...def.recenter(self):........."
39a0 22 22 20 52 65 63 65 6e 74 65 72 20 73 63 72 6f 6c 6c 65 64 20 77 69 6e 64 6f 77 20 61 72 6f 75 "".Recenter.scrolled.window.arou
39c0 6e 64 20 63 61 6e 76 61 73 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 68 61 64 6a 20 3d 20 73 65 nd.canvas..""".........hadj.=.se
39e0 6c 66 2e 73 77 2e 67 65 74 5f 68 61 64 6a 75 73 74 6d 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20 lf.sw.get_hadjustment().........
3a00 68 61 64 6a 2e 73 65 74 5f 76 61 6c 75 65 28 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 hadj.set_value(0).........self.s
3a20 77 2e 73 65 74 5f 68 61 64 6a 75 73 74 6d 65 6e 74 28 68 61 64 6a 29 0a 20 20 20 20 20 20 20 20 w.set_hadjustment(hadj).........
3a40 76 61 64 6a 20 3d 20 73 65 6c 66 2e 73 77 2e 67 65 74 5f 76 61 64 6a 75 73 74 6d 65 6e 74 28 29 vadj.=.self.sw.get_vadjustment()
3a60 0a 20 20 20 20 20 20 20 20 76 61 64 6a 2e 73 65 74 5f 76 61 6c 75 65 28 30 29 0a 20 20 20 20 20 .........vadj.set_value(0)......
3a80 20 20 20 73 65 6c 66 2e 73 77 2e 73 65 74 5f 76 61 64 6a 75 73 74 6d 65 6e 74 28 76 61 64 6a 29 ...self.sw.set_vadjustment(vadj)
3aa0 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 66 75 6c 6c 73 63 72 65 65 6e 5f 63 62 28 73 65 6c 66 2c ......def.do_fullscreen_cb(self,
3ac0 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 48 69 64 65 20 74 68 65 20 53 .button):.........""".Hide.the.S
3ae0 75 67 61 72 20 74 6f 6f 6c 62 61 72 73 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ugar.toolbars..""".........self.
3b00 66 75 6c 6c 73 63 72 65 65 6e 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 63 65 6e 74 fullscreen().........self.recent
3b20 65 72 28 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 72 65 73 69 7a 65 5f 62 6c 6f 63 6b 73 5f 63 er()......def.do_resize_blocks_c
3b40 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 2c 20 73 63 61 6c 65 5f 66 61 63 74 6f 72 29 3a 0a 20 b(self,.button,.scale_factor):..
3b60 20 20 20 20 20 20 20 22 22 22 20 53 63 61 6c 65 20 74 68 65 20 62 6c 6f 63 6b 73 2e 20 22 22 22 .......""".Scale.the.blocks.."""
3b80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 62 6c 6f 63 6b 5f 73 63 61 6c 65 20 2a 3d 20 .........self.tw.block_scale.*=.
3ba0 73 63 61 6c 65 5f 66 61 63 74 6f 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 72 65 73 scale_factor.........self.tw.res
3bc0 69 7a 65 5f 62 6c 6f 63 6b 73 28 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 63 61 72 74 65 73 69 ize_blocks()......def.do_cartesi
3be0 61 6e 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 an_cb(self,.button):........."""
3c00 20 44 69 73 70 6c 61 79 20 43 61 72 74 65 73 69 61 6e 20 63 6f 6f 72 64 69 6e 61 74 65 20 67 72 .Display.Cartesian.coordinate.gr
3c20 69 64 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 63 61 72 74 65 id..""".........if.self.tw.carte
3c40 73 69 61 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 74 5f 63 61 sian:.............self.tw.set_ca
3c60 72 74 65 73 69 61 6e 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 rtesian(False).........else:....
3c80 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 74 5f 63 61 72 74 65 73 69 61 6e 28 54 .........self.tw.set_cartesian(T
3ca0 72 75 65 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 70 6f 6c 61 72 5f 63 62 28 73 65 6c 66 2c 20 rue)......def.do_polar_cb(self,.
3cc0 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 44 69 73 70 6c 61 79 20 50 6f 6c button):.........""".Display.Pol
3ce0 61 72 20 63 6f 6f 72 64 69 6e 61 74 65 20 67 72 69 64 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 ar.coordinate.grid..""".........
3d00 69 66 20 73 65 6c 66 2e 74 77 2e 70 6f 6c 61 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 if.self.tw.polar:.............se
3d20 6c 66 2e 74 77 2e 73 65 74 5f 70 6f 6c 61 72 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 lf.tw.set_polar(False).........e
3d40 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 74 5f 70 6f 6c lse:.............self.tw.set_pol
3d60 61 72 28 54 72 75 65 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 72 65 73 63 61 6c 65 5f 63 62 28 ar(True)......def.do_rescale_cb(
3d80 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 52 65 73 63 61 self,.button):.........""".Resca
3da0 6c 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 73 79 73 74 65 6d 20 28 31 30 30 3d 3d 68 65 69 67 68 le.coordinate.system.(100==heigh
3dc0 74 2f 32 20 6f 72 20 31 30 30 20 70 69 78 65 6c 73 29 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 t/2.or.100.pixels)..""".........
3de0 69 66 20 73 65 6c 66 2e 74 77 2e 63 6f 6f 72 64 5f 73 63 61 6c 65 20 3d 3d 20 31 3a 0a 20 20 20 if.self.tw.coord_scale.==.1:....
3e00 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 6f 6f 72 64 5f 73 63 61 6c 65 20 3d 20 73 .........self.tw.coord_scale.=.s
3e20 65 6c 66 2e 74 77 2e 68 65 69 67 68 74 2f 32 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 elf.tw.height/200.............se
3e40 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 63 6f 6e 74 lf.rescale_button.set_icon("cont
3e60 72 61 63 74 2d 63 6f 6f 72 64 69 6e 61 74 65 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ract-coordinates").............s
3e80 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f elf.rescale_button.set_tooltip(_
3ea0 28 27 52 65 73 63 61 6c 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 64 6f 77 6e 27 29 29 0a 20 20 ('Rescale.coordinates.down'))...
3ec0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 28 ..........self.tw.eraser_button(
3ee0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 77 2e 63 61 72 74 65 73 69 ).............if.self.tw.cartesi
3f00 61 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6f 76 65 72 an:.................self.tw.over
3f20 6c 61 79 5f 73 68 61 70 65 73 5b 27 43 61 72 74 65 73 69 61 6e 5f 6c 61 62 65 6c 65 64 27 5d 2e lay_shapes['Cartesian_labeled'].
3f40 68 69 64 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6f hide().................self.tw.o
3f60 76 65 72 6c 61 79 5f 73 68 61 70 65 73 5b 27 43 61 72 74 65 73 69 61 6e 27 5d 2e 73 65 74 5f 6c verlay_shapes['Cartesian'].set_l
3f80 61 79 65 72 28 4f 56 45 52 4c 41 59 5f 4c 41 59 45 52 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 ayer(OVERLAY_LAYER).........else
3fa0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 6f 6f 72 64 5f 73 63 61 6c :.............self.tw.coord_scal
3fc0 65 20 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 e.=.1.............self.rescale_b
3fe0 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 65 78 70 61 6e 64 2d 63 6f 6f 72 64 69 6e 61 74 utton.set_icon("expand-coordinat
4000 65 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 es").............self.rescale_bu
4020 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 52 65 73 63 61 6c 65 20 63 6f 6f 72 tton.set_tooltip(_('Rescale.coor
4040 64 69 6e 61 74 65 73 20 75 70 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 dinates.up')).............self.t
4060 77 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 w.eraser_button().............if
4080 20 73 65 6c 66 2e 74 77 2e 63 61 72 74 65 73 69 61 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .self.tw.cartesian:.............
40a0 20 20 20 20 73 65 6c 66 2e 74 77 2e 6f 76 65 72 6c 61 79 5f 73 68 61 70 65 73 5b 27 43 61 72 74 ....self.tw.overlay_shapes['Cart
40c0 65 73 69 61 6e 27 5d 2e 68 69 64 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 esian'].hide().................s
40e0 65 6c 66 2e 74 77 2e 6f 76 65 72 6c 61 79 5f 73 68 61 70 65 73 5b 27 43 61 72 74 65 73 69 61 6e elf.tw.overlay_shapes['Cartesian
4100 5f 6c 61 62 65 6c 65 64 27 5d 2e 73 65 74 5f 6c 61 79 65 72 28 0a 20 20 20 20 20 20 20 20 20 20 _labeled'].set_layer(...........
4120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 56 45 52 4c 41 59 5f 4c 41 59 45 ....................OVERLAY_LAYE
4160 52 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 64 6f 63 75 6d 65 6e 74 5f 70 61 74 68 28 73 65 R)......def.get_document_path(se
4180 6c 66 2c 20 61 73 79 6e 63 5f 63 62 2c 20 61 73 79 6e 63 5f 65 72 72 5f 63 62 29 3a 0a 20 20 20 lf,.async_cb,.async_err_cb):....
41a0 20 20 20 20 20 22 22 22 20 20 56 69 65 77 20 4c 6f 67 6f 20 63 6f 64 65 20 61 73 20 70 61 72 74 ....."""..View.Logo.code.as.part
41c0 20 6f 66 20 76 69 65 77 20 73 6f 75 72 63 65 2e 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6c 6f .of.view.source...""".........lo
41e0 67 6f 5f 63 6f 64 65 5f 70 61 74 68 20 3d 20 73 65 6c 66 2e 5f 64 75 6d 70 5f 6c 6f 67 6f 5f 63 go_code_path.=.self._dump_logo_c
4200 6f 64 65 28 29 0a 20 20 20 20 20 20 20 20 61 73 79 6e 63 5f 63 62 28 6c 6f 67 6f 5f 63 6f 64 65 ode().........async_cb(logo_code
4220 5f 70 61 74 68 29 0a 0a 20 20 20 20 64 65 66 20 5f 64 75 6d 70 5f 6c 6f 67 6f 5f 63 6f 64 65 28 _path)......def._dump_logo_code(
4240 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 20 53 61 76 65 20 4c 6f 67 6f 20 63 6f self):........."""..Save.Logo.co
4260 64 65 20 74 6f 20 4a 6f 75 72 6e 61 6c 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 64 61 74 61 70 de.to.Journal..""".........datap
4280 61 74 68 20 3d 20 67 65 74 5f 70 61 74 68 28 61 63 74 69 76 69 74 79 2c 20 27 69 6e 73 74 61 6e ath.=.get_path(activity,.'instan
42a0 63 65 27 29 0a 20 20 20 20 20 20 20 20 74 61 66 69 6c 65 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f ce').........tafile.=.os.path.jo
42c0 69 6e 28 64 61 74 61 70 61 74 68 2c 22 74 6d 70 66 69 6c 65 2e 74 61 22 29 0a 20 20 20 20 20 20 in(datapath,"tmpfile.ta").......
42e0 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 73 61 76 65 5f 6c ..try:.............code.=.save_l
4300 6f 67 6f 28 73 65 6c 66 2e 74 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 20 3d 20 66 69 6c ogo(self.tw).............f.=.fil
4320 65 28 74 61 66 69 6c 65 2c 20 22 77 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 77 72 69 e(tafile,."w").............f.wri
4340 74 65 28 63 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 63 6c 6f 73 65 28 29 0a 20 te(code).............f.close()..
4360 20 20 20 20 20 20 20 65 78 63 65 70 74 20 45 78 63 65 70 74 69 6f 6e 2c 20 65 3a 0a 20 20 20 20 .......except.Exception,.e:.....
4380 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 65 72 72 6f 72 28 22 43 6f 75 6c 64 6e 27 74 20 ........_logger.error("Couldn't.
43a0 64 75 6d 70 20 63 6f 64 65 20 74 6f 20 76 69 65 77 20 73 6f 75 72 63 65 3a 20 22 20 2b 20 73 74 dump.code.to.view.source:.".+.st
43c0 72 28 65 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 66 69 6c 65 0a 0a 20 20 20 r(e)).........return.tafile.....
43e0 20 23 20 53 68 61 72 69 6e 67 2d 72 65 6c 61 74 65 64 20 63 61 6c 6c 62 61 63 6b 73 0a 0a 20 20 .#.Sharing-related.callbacks....
4400 20 20 64 65 66 20 5f 73 68 61 72 65 64 5f 63 62 28 73 65 6c 66 2c 20 61 63 74 69 76 69 74 79 29 ..def._shared_cb(self,.activity)
4420 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 45 69 74 68 65 72 20 73 65 74 20 75 70 20 69 6e 69 74 :.........""".Either.set.up.init
4440 69 61 6c 20 73 68 61 72 65 2e 2e 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 ial.share....""".........if.self
4460 2e 5f 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 ._shared_activity.is.None:......
4480 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 65 72 72 6f 72 28 22 46 61 69 6c 65 64 20 74 6f 20 ......._logger.error("Failed.to.
44a0 73 68 61 72 65 20 6f 72 20 6a 6f 69 6e 20 61 63 74 69 76 69 74 79 20 2e 2e 2e 20 5c 0a 20 20 20 share.or.join.activity.....\....
44c0 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 20 69 73 ............._shared_activity.is
44e0 20 6e 75 6c 6c 20 69 6e 20 5f 73 68 61 72 65 64 5f 63 62 28 29 22 29 0a 20 20 20 20 20 20 20 20 .null.in._shared_cb()").........
4500 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 69 74 69 61 74 ....return..........self.initiat
4520 69 6e 67 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 61 69 74 69 6e 67 5f ing.=.True.........self.waiting_
4540 66 6f 72 5f 74 75 72 74 6c 65 73 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 for_turtles.=.False.........self
4560 2e 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 72 79 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 .turtle_dictionary.=.\..........
4580 20 20 20 7b 70 72 6f 66 69 6c 65 2e 67 65 74 5f 6e 69 63 6b 5f 6e 61 6d 65 28 29 3a 70 72 6f 66 ...{profile.get_nick_name():prof
45a0 69 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 72 69 6e 67 28 29 7d 0a 20 20 20 ile.get_color().to_string()}....
45c0 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 27 49 20 61 6d 20 73 68 61 72 69 6e 67 ....._logger.debug('I.am.sharing
45e0 2e 2e 2e 27 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6e 6e 20 3d 20 73 65 6c 66 2e ...')..........self.conn.=.self.
4600 5f 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 63 6f 6e 6e 0a _shared_activity.telepathy_conn.
4620 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 75 62 65 73 5f 63 68 61 6e 20 3d 20 73 65 6c 66 2e 5f ........self.tubes_chan.=.self._
4640 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 74 75 62 65 73 5f shared_activity.telepathy_tubes_
4660 63 68 61 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 78 74 5f 63 68 61 6e 20 3d 20 73 65 chan.........self.text_chan.=.se
4680 6c 66 2e 5f 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 74 65 lf._shared_activity.telepathy_te
46a0 78 74 5f 63 68 61 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 63 61 6c 6c 20 xt_chan..................#.call.
46c0 62 61 63 6b 20 66 6f 72 20 22 4e 65 77 54 75 62 65 22 20 73 69 67 6e 61 6c 0a 20 20 20 20 20 20 back.for."NewTube".signal.......
46e0 20 20 73 65 6c 66 2e 74 75 62 65 73 5f 63 68 61 6e 5b 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e ..self.tubes_chan[telepathy.CHAN
4700 4e 45 4c 5f 54 59 50 45 5f 54 55 42 45 53 5d 2e 63 6f 6e 6e 65 63 74 5f 74 6f 5f 73 69 67 6e 61 NEL_TYPE_TUBES].connect_to_signa
4720 6c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 27 4e 65 77 54 75 62 65 27 2c 20 73 65 6c 66 l.\.............('NewTube',.self
4740 2e 5f 6e 65 77 5f 74 75 62 65 5f 63 62 29 0a 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e ._new_tube_cb).........._logger.
4760 64 65 62 75 67 28 27 54 68 69 73 20 69 73 20 6d 79 20 61 63 74 69 76 69 74 79 3a 20 6d 61 6b 69 debug('This.is.my.activity:.maki
4780 6e 67 20 61 20 74 75 62 65 2e 2e 2e 27 29 0a 20 20 20 20 20 20 20 20 69 64 20 3d 20 73 65 6c 66 ng.a.tube...').........id.=.self
47a0 2e 74 75 62 65 73 5f 63 68 61 6e 5b 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e 4e 45 4c 5f 54 59 .tubes_chan[telepathy.CHANNEL_TY
47c0 50 45 5f 54 55 42 45 53 5d 2e 4f 66 66 65 72 44 42 75 73 54 75 62 65 28 0a 20 20 20 20 20 20 20 PE_TUBES].OfferDBusTube(........
47e0 20 20 20 20 20 53 45 52 56 49 43 45 2c 20 7b 7d 29 0a 0a 20 20 20 20 64 65 66 20 5f 6a 6f 69 6e .....SERVICE,.{})......def._join
4800 65 64 5f 63 62 28 73 65 6c 66 2c 20 61 63 74 69 76 69 74 79 29 3a 0a 20 20 20 20 20 20 20 20 22 ed_cb(self,.activity):........."
4820 22 22 20 2e 2e 2e 6f 72 20 6a 6f 69 6e 20 61 6e 20 65 78 69 73 69 74 69 6e 67 20 73 68 61 72 65 ""....or.join.an.exisiting.share
4840 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 73 68 61 72 65 64 5f 61 63 ..""".........if.self._shared_ac
4860 74 69 76 69 74 79 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 tivity.is.None:............._log
4880 67 65 72 2e 65 72 72 6f 72 28 22 46 61 69 6c 65 64 20 74 6f 20 73 68 61 72 65 20 6f 72 20 6a 6f ger.error("Failed.to.share.or.jo
48a0 69 6e 20 61 63 74 69 76 69 74 79 20 2e 2e 2e 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.activity.....\...............
48c0 20 20 5f 73 68 61 72 65 64 5f 61 63 74 69 76 69 74 79 20 69 73 20 6e 75 6c 6c 20 69 6e 20 5f 73 .._shared_activity.is.null.in._s
48e0 68 61 72 65 64 5f 63 62 28 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a hared_cb()").............return.
4900 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 69 74 69 61 74 69 6e 67 20 3d 20 46 61 6c 73 65 .........self.initiating.=.False
4920 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6e 6e 20 3d 20 73 65 6c 66 2e 5f 73 68 61 72 65 .........self.conn.=.self._share
4940 64 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 63 6f 6e 6e 0a 20 20 20 20 20 20 d_activity.telepathy_conn.......
4960 20 20 73 65 6c 66 2e 74 75 62 65 73 5f 63 68 61 6e 20 3d 20 73 65 6c 66 2e 5f 73 68 61 72 65 64 ..self.tubes_chan.=.self._shared
4980 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 74 75 62 65 73 5f 63 68 61 6e 0a 20 _activity.telepathy_tubes_chan..
49a0 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 78 74 5f 63 68 61 6e 20 3d 20 73 65 6c 66 2e 5f 73 68 .......self.text_chan.=.self._sh
49c0 61 72 65 64 5f 61 63 74 69 76 69 74 79 2e 74 65 6c 65 70 61 74 68 79 5f 74 65 78 74 5f 63 68 61 ared_activity.telepathy_text_cha
49e0 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 63 61 6c 6c 20 62 61 63 6b 20 66 n..................#.call.back.f
4a00 6f 72 20 22 4e 65 77 54 75 62 65 22 20 73 69 67 6e 61 6c 0a 20 20 20 20 20 20 20 20 73 65 6c 66 or."NewTube".signal.........self
4a20 2e 74 75 62 65 73 5f 63 68 61 6e 5b 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e 4e 45 4c 5f 54 59 .tubes_chan[telepathy.CHANNEL_TY
4a40 50 45 5f 54 55 42 45 53 5d 2e 63 6f 6e 6e 65 63 74 5f 74 6f 5f 73 69 67 6e 61 6c 28 20 5c 0a 20 PE_TUBES].connect_to_signal(.\..
4a60 20 20 20 20 20 20 20 20 20 20 20 27 4e 65 77 54 75 62 65 27 2c 20 73 65 6c 66 2e 5f 6e 65 77 5f ...........'NewTube',.self._new_
4a80 74 75 62 65 5f 63 62 29 0a 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 tube_cb).........._logger.debug(
4aa0 27 49 20 61 6d 20 6a 6f 69 6e 69 6e 67 20 61 6e 20 61 63 74 69 76 69 74 79 3a 20 77 61 69 74 69 'I.am.joining.an.activity:.waiti
4ac0 6e 67 20 66 6f 72 20 61 20 74 75 62 65 2e 2e 2e 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ng.for.a.tube...').........self.
4ae0 74 75 62 65 73 5f 63 68 61 6e 5b 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e 4e 45 4c 5f 54 59 50 tubes_chan[telepathy.CHANNEL_TYP
4b00 45 5f 54 55 42 45 53 5d 2e 4c 69 73 74 54 75 62 65 73 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 E_TUBES].ListTubes(.............
4b20 72 65 70 6c 79 5f 68 61 6e 64 6c 65 72 3d 73 65 6c 66 2e 5f 6c 69 73 74 5f 74 75 62 65 73 5f 72 reply_handler=self._list_tubes_r
4b40 65 70 6c 79 5f 63 62 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 5f 68 61 6e 64 eply_cb,..............error_hand
4b60 6c 65 72 3d 73 65 6c 66 2e 5f 6c 69 73 74 5f 74 75 62 65 73 5f 65 72 72 6f 72 5f 63 62 29 0a 0a ler=self._list_tubes_error_cb)..
4b80 20 20 20 20 20 20 20 20 23 20 4a 6f 69 6e 65 72 20 73 68 6f 75 6c 64 20 72 65 71 75 65 73 74 20 ........#.Joiner.should.request.
4ba0 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 66 72 6f 6d 20 73 68 61 72 65 72 2e 0a 20 20 20 20 20 current.state.from.sharer.......
4bc0 20 20 20 73 65 6c 66 2e 77 61 69 74 69 6e 67 5f 66 6f 72 5f 74 75 72 74 6c 65 73 20 3d 20 54 72 ...self.waiting_for_turtles.=.Tr
4be0 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 6c 69 73 74 5f 74 75 62 65 73 5f 72 65 70 6c 79 5f 63 62 ue......def._list_tubes_reply_cb
4c00 28 73 65 6c 66 2c 20 74 75 62 65 73 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 74 75 62 65 5f (self,.tubes):.........for.tube_
4c20 69 6e 66 6f 20 69 6e 20 74 75 62 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e info.in.tubes:.............self.
4c40 5f 6e 65 77 5f 74 75 62 65 5f 63 62 28 2a 74 75 62 65 5f 69 6e 66 6f 29 0a 0a 20 20 20 20 64 65 _new_tube_cb(*tube_info)......de
4c60 66 20 5f 6c 69 73 74 5f 74 75 62 65 73 5f 65 72 72 6f 72 5f 63 62 28 73 65 6c 66 2c 20 65 29 3a f._list_tubes_error_cb(self,.e):
4c80 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 65 72 72 6f 72 28 27 4c 69 73 74 54 75 62 65 ........._logger.error('ListTube
4ca0 73 28 29 20 66 61 69 6c 65 64 3a 20 25 73 27 2c 20 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 6e 65 s().failed:.%s',.e)......def._ne
4cc0 77 5f 74 75 62 65 5f 63 62 28 73 65 6c 66 2c 20 69 64 2c 20 69 6e 69 74 69 61 74 6f 72 2c 20 74 w_tube_cb(self,.id,.initiator,.t
4ce0 79 70 65 2c 20 73 65 72 76 69 63 65 2c 20 70 61 72 61 6d 73 2c 20 73 74 61 74 65 29 3a 0a 20 20 ype,.service,.params,.state):...
4d00 20 20 20 20 20 20 22 22 22 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 74 75 62 65 2e 20 22 22 22 ......""".Create.a.new.tube.."""
4d20 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 27 4e 65 77 20 74 75 62 65 ........._logger.debug('New.tube
4d40 3a 20 49 44 3d 25 64 20 69 6e 69 74 61 74 6f 72 3d 25 64 20 74 79 70 65 3d 25 64 20 73 65 72 76 :.ID=%d.initator=%d.type=%d.serv
4d60 69 63 65 3d 25 73 20 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 70 ice=%s.'......................'p
4d80 61 72 61 6d 73 3d 25 72 20 73 74 61 74 65 3d 25 64 27 2c 20 69 64 2c 20 69 6e 69 74 69 61 74 6f arams=%r.state=%d',.id,.initiato
4da0 72 2c 20 74 79 70 65 2c 20 73 65 72 76 69 63 65 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r,.type,.service,...............
4dc0 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 2c 20 73 74 61 74 65 29 0a 0a 20 20 20 20 20 20 20 20 ........params,.state)..........
4de0 69 66 20 28 74 79 70 65 20 3d 3d 20 74 65 6c 65 70 61 74 68 79 2e 54 55 42 45 5f 54 59 50 45 5f if.(type.==.telepathy.TUBE_TYPE_
4e00 44 42 55 53 20 61 6e 64 20 73 65 72 76 69 63 65 20 3d 3d 20 53 45 52 56 49 43 45 29 3a 0a 20 20 DBUS.and.service.==.SERVICE):...
4e20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 74 65 6c 65 70 61 74 68 79 2e ..........if.state.==.telepathy.
4e40 54 55 42 45 5f 53 54 41 54 45 5f 4c 4f 43 41 4c 5f 50 45 4e 44 49 4e 47 3a 0a 20 20 20 20 20 20 TUBE_STATE_LOCAL_PENDING:.......
4e60 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 75 62 65 73 5f 63 68 61 6e 5b 20 5c 0a 20 20 20 ..........self.tubes_chan[.\....
4e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 6c 65 70 ...........................telep
4ea0 61 74 68 79 2e 43 48 41 4e 4e 45 4c 5f 54 59 50 45 5f 54 55 42 45 53 5d 2e 41 63 63 65 70 74 44 athy.CHANNEL_TYPE_TUBES].AcceptD
4ec0 42 75 73 54 75 62 65 28 69 64 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 75 62 65 5f 63 6f BusTube(id)..............tube_co
4ee0 6e 6e 20 3d 20 54 75 62 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 63 6f 6e 6e 2c 20 0a nn.=.TubeConnection(self.conn,..
4f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 75 62 65 73 5f 63 68 61 6e 5b ................self.tubes_chan[
4f20 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e 4e 45 4c 5f 54 59 50 45 5f 54 55 42 45 53 5d 2c 20 69 telepathy.CHANNEL_TYPE_TUBES],.i
4f40 64 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 72 6f 75 70 5f 69 66 61 63 65 d,.\.................group_iface
4f60 3d 73 65 6c 66 2e 74 65 78 74 5f 63 68 61 6e 5b 74 65 6c 65 70 61 74 68 79 2e 43 48 41 4e 4e 45 =self.text_chan[telepathy.CHANNE
4f80 4c 5f 49 4e 54 45 52 46 41 43 45 5f 47 52 4f 55 50 5d 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 L_INTERFACE_GROUP]).............
4fa0 20 23 20 57 65 27 6c 6c 20 75 73 65 20 61 20 63 68 61 74 20 74 75 62 65 20 74 6f 20 73 65 6e 64 .#.We'll.use.a.chat.tube.to.send
4fc0 20 73 65 72 69 61 6c 69 7a 65 64 20 73 74 61 63 6b 73 20 62 61 63 6b 20 61 6e 64 20 66 6f 72 74 .serialized.stacks.back.and.fort
4fe0 68 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 61 74 74 75 62 65 20 3d 20 43 h..............self.chattube.=.C
5000 68 61 74 54 75 62 65 28 74 75 62 65 5f 63 6f 6e 6e 2c 20 73 65 6c 66 2e 69 6e 69 74 69 61 74 69 hatTube(tube_conn,.self.initiati
5020 6e 67 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 76 65 6e 74 ng,.\.................self.event
5040 5f 72 65 63 65 69 76 65 64 5f 63 62 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 77 _received_cb)..............#.Now
5060 20 74 68 61 74 20 77 65 20 68 61 76 65 20 74 68 65 20 74 75 62 65 2c 20 77 65 20 63 61 6e 20 61 .that.we.have.the.tube,.we.can.a
5080 73 6b 20 66 6f 72 20 74 68 65 20 74 75 72 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 20 sk.for.the.turtle.dictionary....
50a0 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 77 61 69 74 69 6e 67 5f 66 6f 72 5f 74 75 ..........if.self.waiting_for_tu
50c0 72 74 6c 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 rtles:................._logger.d
50e0 65 62 75 67 28 22 53 65 6e 64 69 6e 67 20 61 20 72 65 71 75 65 73 74 20 66 6f 72 20 74 68 65 20 ebug("Sending.a.request.for.the.
5100 74 75 72 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 turtle.dictionary").............
5120 20 20 20 20 23 20 77 65 20 6e 65 65 64 20 74 6f 20 73 65 6e 64 20 6f 75 72 20 6f 77 6e 20 6e 69 ....#.we.need.to.send.our.own.ni
5140 63 6b 20 61 6e 64 20 63 6f 6c 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f ck.and.colors.................co
5160 6c 6f 72 73 20 3d 20 20 70 72 6f 66 69 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 lors.=..profile.get_color().to_s
5180 74 72 69 6e 67 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e tring()................._logger.
51a0 64 65 62 75 67 28 22 74 7c 22 2b 64 61 74 61 5f 74 6f 5f 73 74 72 69 6e 67 28 5b 73 65 6c 66 2e debug("t|"+data_to_string([self.
51c0 74 77 2e 6e 69 63 6b 2c 63 6f 6c 6f 72 73 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tw.nick,colors]))...............
51e0 20 20 73 65 6c 66 2e 73 65 6e 64 5f 65 76 65 6e 74 28 22 74 7c 25 73 22 20 25 20 5c 0a 20 20 20 ..self.send_event("t|%s".%.\....
5200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 .............................(da
5220 74 61 5f 74 6f 5f 73 74 72 69 6e 67 28 5b 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 2c 63 6f 6c 6f 72 ta_to_string([self.tw.nick,color
5240 73 5d 29 29 29 0a 0a 20 20 20 20 64 65 66 20 65 76 65 6e 74 5f 72 65 63 65 69 76 65 64 5f 63 62 s])))......def.event_received_cb
5260 28 73 65 6c 66 2c 20 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 48 61 6e 64 6c 65 (self,.text):.........""".Handle
5280 20 74 68 65 20 72 65 63 65 69 76 69 6e 67 20 6f 66 20 65 76 65 6e 74 73 20 69 6e 20 73 68 61 72 .the.receiving.of.events.in.shar
52a0 65 20 22 22 22 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 74 65 78 74 e."""........._logger.debug(text
52c0 29 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 45 76 65 6e 74 73 20 61 72 )..........""".........Events.ar
52e0 65 20 73 65 6e 74 20 61 73 20 61 20 74 75 70 6c 65 2c 20 6e 69 63 6b 7c 63 6d 64 2c 20 77 68 65 e.sent.as.a.tuple,.nick|cmd,.whe
5300 72 65 20 6e 69 63 6b 20 69 73 20 61 20 74 75 72 6c 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 re.nick.is.a.turle.name.........
5320 61 6e 64 20 63 6d 64 20 69 73 20 61 20 74 75 72 74 6c 65 20 65 76 65 6e 74 2e 20 45 76 65 72 79 and.cmd.is.a.turtle.event..Every
5340 6f 6e 65 20 67 65 74 73 20 74 68 65 20 74 75 72 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 20 66 one.gets.the.turtle.dictionary.f
5360 72 6f 6d 0a 20 20 20 20 20 20 20 20 74 68 65 20 73 68 61 72 65 72 20 61 6e 64 20 77 61 74 63 68 rom.........the.sharer.and.watch
5380 65 73 20 66 6f 72 20 27 74 27 20 65 76 65 6e 74 73 2c 20 77 68 69 63 68 20 69 6e 64 69 63 61 74 es.for.'t'.events,.which.indicat
53a0 65 20 74 68 61 74 20 61 20 6e 65 77 0a 20 20 20 20 20 20 20 20 74 75 72 74 6c 65 20 68 61 73 20 e.that.a.new.........turtle.has.
53c0 6a 6f 69 6e 65 64 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 joined..................."""....
53e0 20 20 20 20 20 23 20 53 61 76 65 20 61 63 74 69 76 65 20 54 75 72 74 6c 65 0a 20 20 20 20 20 20 .....#.Save.active.Turtle.......
5400 20 20 73 61 76 65 5f 61 63 74 69 76 65 5f 74 75 72 74 6c 65 20 3d 20 73 65 6c 66 2e 74 77 2e 61 ..save_active_turtle.=.self.tw.a
5420 63 74 69 76 65 5f 74 75 72 74 6c 65 0a 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 5b 30 5d 20 ctive_turtle.........if.text[0].
5440 3d 3d 20 27 74 27 3a 20 23 20 72 65 71 75 65 73 74 20 66 6f 72 20 74 75 72 74 6c 65 20 64 69 63 ==.'t':.#.request.for.turtle.dic
5460 74 69 6f 6e 61 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c tionary.............e.=.text.spl
5480 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b it("|",.2).............text.=.e[
54a0 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 20 3e 20 30 3a 0a 20 20 20 20 1].............if.text.>.0:.....
54c0 20 20 20 20 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 63 6f 6c 6f 72 73 5d 20 3d 20 64 61 74 ............[nick,.colors].=.dat
54e0 61 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 a_from_string(text).............
5500 20 20 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 ....if.nick.!=.self.tw.nick:....
5520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 68 65 72 65 20 6d 61 79 20 6e 6f 74 .................#.There.may.not
5540 20 62 65 20 61 20 74 75 72 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 20 20 20 20 20 20 .be.a.turtle.dictionary.........
5560 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 22 74 .............if.hasattr(self,."t
5580 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 72 79 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 urtle_dictionary"):.............
55a0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 ............self.turtle_dictiona
55c0 72 79 5b 6e 69 63 6b 5d 20 3d 20 63 6f 6c 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ry[nick].=.colors...............
55e0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......else:.....................
5600 20 20 20 20 73 65 6c 66 2e 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 72 79 20 3d 20 7b 6e 69 ....self.turtle_dictionary.=.{ni
5620 63 6b 3a 63 6f 6c 6f 72 73 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 ck:colors}.....................#
5640 20 41 64 64 20 6e 65 77 20 74 75 72 74 6c 65 20 66 6f 72 20 74 68 65 20 6a 6f 69 6e 65 72 2e 0a .Add.new.turtle.for.the.joiner..
5660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 ....................self.tw.canv
5680 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 2c 20 63 6f 6c 6f 72 73 29 0a 20 20 20 20 as.set_turtle(nick,.colors).....
56a0 20 20 20 20 20 20 20 20 23 20 53 68 61 72 65 72 20 73 68 6f 75 6c 64 20 73 65 6e 64 20 74 75 72 ........#.Sharer.should.send.tur
56c0 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 tle.dictionary..............if.s
56e0 65 6c 66 2e 69 6e 69 74 69 61 74 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elf.initiating:.................
5700 74 65 78 74 20 3d 20 64 61 74 61 5f 74 6f 5f 73 74 72 69 6e 67 28 73 65 6c 66 2e 74 75 72 74 6c text.=.data_to_string(self.turtl
5720 65 5f 64 69 63 74 69 6f 6e 61 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 e_dictionary).................se
5740 6c 66 2e 73 65 6e 64 5f 65 76 65 6e 74 28 22 54 7c 22 20 2b 20 74 65 78 74 29 0a 20 20 20 20 20 lf.send_event("T|".+.text)......
5760 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 54 27 3a 20 23 20 52 65 63 65 69 76 ...elif.text[0].==.'T':.#.Receiv
5780 69 6e 67 20 74 68 65 20 74 75 72 74 6c 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 20 20 20 20 ing.the.turtle.dictionary.......
57a0 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 77 61 69 74 69 6e 67 5f 66 6f 72 5f 74 75 72 74 6c .......if.self.waiting_for_turtl
57c0 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c es:.................e.=.text.spl
57e0 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 it("|",.2).................text.
5800 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 =.e[1].................if.len(te
5820 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c xt).>.0:.....................sel
5840 66 2e 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 72 79 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f f.turtle_dictionary.=.data_from_
5860 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 string(text)....................
5880 20 66 6f 72 20 6e 69 63 6b 20 69 6e 20 73 65 6c 66 2e 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e .for.nick.in.self.turtle_diction
58a0 61 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ary:.........................if.
58c0 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 nick.!=.self.tw.nick:...........
58e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 73 20 3d 20 73 65 6c 66 2e ..................colors.=.self.
5900 74 75 72 74 6c 65 5f 64 69 63 74 69 6f 6e 61 72 79 5b 6e 69 63 6b 5d 0a 20 20 20 20 20 20 20 20 turtle_dictionary[nick].........
5920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 64 64 20 6e 65 77 20 74 75 ....................#.add.new.tu
5940 72 74 6c 65 20 66 6f 72 20 74 68 65 20 6a 6f 69 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 rtle.for.the.joiner.............
5960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 ................self.tw.canvas.s
5980 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 2c 20 63 6f 6c 6f 72 73 29 0a 20 20 20 20 20 20 20 20 et_turtle(nick,.colors).........
59a0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 61 69 74 69 6e 67 5f 66 6f 72 5f 74 75 72 74 6c 65 73 ........self.waiting_for_turtles
59c0 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d .=.False.........elif.text[0].==
59e0 20 27 66 27 3a 20 23 20 6d 6f 76 65 20 61 20 74 75 72 74 6c 65 20 66 6f 72 77 61 72 64 0a 20 20 .'f':.#.move.a.turtle.forward...
5a00 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 ..........e.=.text.split("|",.2)
5a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 .............text.=.e[1]........
5a40 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 .....if.len(text).>.0:..........
5a60 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 78 5d 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 ........[nick,.x].=.data_from_st
5a80 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e ring(text)..................if.n
5aa0 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ick.!=.self.tw.nick:............
5ac0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 ..........self.tw.canvas.set_tur
5ae0 74 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 tle(nick)......................s
5b00 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 66 6f 72 77 61 72 64 28 78 2c 20 46 61 6c 73 65 29 0a elf.tw.canvas.forward(x,.False).
5b20 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 61 27 3a 20 23 20 6d ........elif.text[0].==.'a':.#.m
5b40 6f 76 65 20 61 20 74 75 72 74 6c 65 20 69 6e 20 61 6e 20 61 72 63 0a 20 20 20 20 20 20 20 20 20 ove.a.turtle.in.an.arc..........
5b60 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 ...e.=.text.split("|",.2).......
5b80 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ......text.=.e[1].............if
5ba0 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .len(text).>.0:.................
5bc0 20 5b 6e 69 63 6b 2c 20 5b 61 2c 20 72 5d 5d 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 .[nick,.[a,.r]].=.data_from_stri
5be0 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 69 63 ng(text)..................if.nic
5c00 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 k.!=.self.tw.nick:..............
5c20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c ........self.tw.canvas.set_turtl
5c40 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c e(nick)......................sel
5c60 66 2e 74 77 2e 63 61 6e 76 61 73 2e 61 72 63 28 61 2c 20 72 2c 20 46 61 6c 73 65 29 0a 20 20 20 f.tw.canvas.arc(a,.r,.False)....
5c80 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 72 27 3a 20 23 20 72 6f 74 61 .....elif.text[0].==.'r':.#.rota
5ca0 74 65 20 74 75 72 74 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 te.turtle.............e.=.text.s
5cc0 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 plit("|",.2).............text.=.
5ce0 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 e[1].............if.len(text).>.
5d00 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 68 5d 20 3d 20 0:..................[nick,.h].=.
5d20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 data_from_string(text)..........
5d40 20 20 20 20 20 20 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a ........if.nick.!=.self.tw.nick:
5d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 ......................self.tw.ca
5d80 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 nvas.set_turtle(nick)...........
5da0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 68 28 68 ...........self.tw.canvas.seth(h
5dc0 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d ,.False).........elif.text[0].==
5de0 20 27 78 27 3a 20 23 20 73 65 74 20 74 75 72 74 6c 65 20 78 79 20 70 6f 73 69 74 69 6f 6e 0a 20 .'x':.#.set.turtle.xy.position..
5e00 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 ...........e.=.text.split("|",.2
5e20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 ).............text.=.e[1].......
5e40 20 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 ......if.len(text).>.0:.........
5e60 20 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 5b 78 2c 20 79 5d 5d 20 3d 20 64 61 74 61 5f 66 .........[nick,.[x,.y]].=.data_f
5e80 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rom_string(text)................
5ea0 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 ..if.nick.!=.self.tw.nick:......
5ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 ................self.tw.canvas.s
5ee0 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et_turtle(nick).................
5f00 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 78 79 28 78 2c 20 79 2c 20 .....self.tw.canvas.setxy(x,.y,.
5f20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 False).........elif.text[0].==.'
5f40 63 27 3a 20 23 20 73 65 74 20 74 75 72 74 6c 65 20 70 65 6e 20 63 6f 6c 6f 72 0a 20 20 20 20 20 c':.#.set.turtle.pen.color......
5f60 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 .......e.=.text.split("|",.2)...
5f80 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 ..........text.=.e[1]...........
5fa0 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..if.len(text).>.0:.............
5fc0 20 20 20 20 20 5b 6e 69 63 6b 2c 20 78 5d 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 6e .....[nick,.x].=.data_from_strin
5fe0 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 69 63 6b g(text)..................if.nick
6000 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .!=.self.tw.nick:...............
6020 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 .......self.tw.canvas.set_turtle
6040 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 (nick)......................self
6060 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 63 6f 6c 6f 72 28 78 2c 20 46 61 6c 73 65 29 0a 20 20 .tw.canvas.setcolor(x,.False)...
6080 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 67 27 3a 20 23 20 73 65 74 ......elif.text[0].==.'g':.#.set
60a0 20 74 75 72 74 6c 65 20 70 65 6e 20 67 72 61 79 20 6c 65 76 65 6c 0a 20 20 20 20 20 20 20 20 20 .turtle.pen.gray.level..........
60c0 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 ...e.=.text.split("|",.2).......
60e0 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ......text.=.e[1].............if
6100 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .len(text).>.0:.................
6120 20 5b 6e 69 63 6b 2c 20 78 5d 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 .[nick,.x].=.data_from_string(te
6140 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 xt)..................if.nick.!=.
6160 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 self.tw.nick:...................
6180 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 ...self.tw.canvas.set_turtle(nic
61a0 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e k)......................self.tw.
61c0 63 61 6e 76 61 73 2e 73 65 74 67 72 61 79 28 78 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 canvas.setgray(x,.False)........
61e0 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d 20 27 73 27 3a 20 23 20 73 65 74 20 74 75 72 74 .elif.text[0].==.'s':.#.set.turt
6200 6c 65 20 70 65 6e 20 73 68 61 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 le.pen.shade.............e.=.tex
6220 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 t.split("|",.2).............text
6240 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 .=.e[1].............if.len(text)
6260 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 78 5d .>.0:..................[nick,.x]
6280 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 .=.data_from_string(text).......
62a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 ...........if.nick.!=.self.tw.ni
62c0 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 ck:......................self.tw
62e0 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 .canvas.set_turtle(nick)........
6300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 ..............self.tw.canvas.set
6320 73 68 61 64 65 28 78 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 shade(x,.False).........elif.tex
6340 74 5b 30 5d 20 3d 3d 20 27 77 27 3a 20 23 20 73 65 74 20 74 75 72 74 6c 65 20 70 65 6e 20 77 69 t[0].==.'w':.#.set.turtle.pen.wi
6360 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 dth.............e.=.text.split("
6380 7c 22 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 |",.2).............text.=.e[1]..
63a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 ...........if.len(text).>.0:....
63c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 78 5d 20 3d 20 64 61 74 61 5f 66 ..............[nick,.x].=.data_f
63e0 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rom_string(text)................
6400 20 20 69 66 20 6e 69 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 ..if.nick.!=.self.tw.nick:......
6420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 ................self.tw.canvas.s
6440 65 74 5f 74 75 72 74 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et_turtle(nick).................
6460 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 70 65 6e 73 69 7a 65 28 78 .....self.tw.canvas.setpensize(x
6480 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 74 65 78 74 5b 30 5d 20 3d 3d ,.False).........elif.text[0].==
64a0 20 27 70 27 3a 20 23 20 73 65 74 20 74 75 72 74 6c 65 20 70 65 6e 20 73 74 61 74 65 0a 20 20 20 .'p':.#.set.turtle.pen.state....
64c0 20 20 20 20 20 20 20 20 20 65 20 3d 20 74 65 78 74 2e 73 70 6c 69 74 28 22 7c 22 2c 20 32 29 0a .........e.=.text.split("|",.2).
64e0 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 65 5b 31 5d 0a 20 20 20 20 20 20 20 20 ............text.=.e[1].........
6500 20 20 20 20 69 66 20 6c 65 6e 28 74 65 78 74 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 ....if.len(text).>.0:...........
6520 20 20 20 20 20 20 20 5b 6e 69 63 6b 2c 20 78 5d 20 3d 20 64 61 74 61 5f 66 72 6f 6d 5f 73 74 72 .......[nick,.x].=.data_from_str
6540 69 6e 67 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 69 ing(text)..................if.ni
6560 63 6b 20 21 3d 20 73 65 6c 66 2e 74 77 2e 6e 69 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ck.!=.self.tw.nick:.............
6580 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 .........self.tw.canvas.set_turt
65a0 6c 65 28 6e 69 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 le(nick)......................se
65c0 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 70 65 6e 28 78 2c 20 46 61 6c 73 65 29 0a 20 20 lf.tw.canvas.setpen(x,.False)...
65e0 20 20 20 20 20 20 23 20 52 65 73 74 6f 72 65 20 61 63 74 69 76 65 20 54 75 72 74 6c 65 0a 20 20 ......#.Restore.active.Turtle...
6600 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 63 61 6e 76 61 73 2e 73 65 74 5f 74 75 72 74 6c 65 28 ......self.tw.canvas.set_turtle(
6620 73 65 6c 66 2e 74 77 2e 74 75 72 74 6c 65 73 2e 67 65 74 5f 74 75 72 74 6c 65 5f 6b 65 79 28 0a self.tw.turtles.get_turtle_key(.
6640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 61 76 65 5f ...........................save_
6680 61 63 74 69 76 65 5f 74 75 72 74 6c 65 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 6e 64 5f 65 76 active_turtle))......def.send_ev
66a0 65 6e 74 28 73 65 6c 66 2c 20 65 6e 74 72 79 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 53 65 ent(self,.entry):.........""".Se
66c0 6e 64 20 65 76 65 6e 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 74 75 62 65 2e 20 22 22 22 0a 20 nd.event.through.the.tube.."""..
66e0 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 63 68 61 74 74 75 62 .......if.hasattr(self,.'chattub
6700 65 27 29 20 61 6e 64 20 73 65 6c 66 2e 63 68 61 74 74 75 62 65 20 69 73 20 6e 6f 74 20 4e 6f 6e e').and.self.chattube.is.not.Non
6720 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 61 74 74 75 62 65 2e 53 65 6e e:.............self.chattube.Sen
6740 64 54 65 78 74 28 65 6e 74 72 79 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 76 69 73 69 62 69 6c 69 dText(entry)......def.__visibili
6760 74 79 5f 6e 6f 74 69 66 79 5f 63 62 28 73 65 6c 66 2c 20 77 69 6e 64 6f 77 2c 20 65 76 65 6e 74 ty_notify_cb(self,.window,.event
6780 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 61 6c 6c 62 61 63 6b 20 6d 65 74 68 6f 64 20 66 ):.........""".Callback.method.f
67a0 6f 72 20 77 68 65 6e 20 74 68 65 20 61 63 74 69 76 69 74 79 27 73 20 76 69 73 69 62 69 6c 69 74 or.when.the.activity's.visibilit
67c0 79 20 63 68 61 6e 67 65 73 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 65 76 65 6e 74 2e y.changes..""".........if.event.
67e0 73 74 61 74 65 20 3d 3d 20 67 74 6b 2e 67 64 6b 2e 56 49 53 49 42 49 4c 49 54 59 5f 46 55 4c 4c state.==.gtk.gdk.VISIBILITY_FULL
6800 59 5f 4f 42 53 43 55 52 45 44 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e Y_OBSCURED:.............self.tw.
6820 6c 63 2e 61 67 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 65 76 65 6e 74 2e lc.ag.=.None.........elif.event.
6840 73 74 61 74 65 20 69 6e 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 67 74 6b 2e 67 64 6b 2e state.in.\.............[gtk.gdk.
6860 56 49 53 49 42 49 4c 49 54 59 5f 55 4e 4f 42 53 43 55 52 45 44 2c 20 67 74 6b 2e 67 64 6b 2e 56 VISIBILITY_UNOBSCURED,.gtk.gdk.V
6880 49 53 49 42 49 4c 49 54 59 5f 50 41 52 54 49 41 4c 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ISIBILITY_PARTIAL]:.............
68a0 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 5f 74 69 74 6c 65 5f 63 62 28 73 65 pass......def.update_title_cb(se
68c0 6c 66 2c 20 77 69 64 67 65 74 2c 20 65 76 65 6e 74 2c 20 74 6f 6f 6c 62 6f 78 29 3a 0a 20 20 20 lf,.widget,.event,.toolbox):....
68e0 20 20 20 20 20 22 22 22 20 55 70 64 61 74 65 20 74 68 65 20 74 69 74 6c 65 2e 20 22 22 22 0a 20 .....""".Update.the.title.."""..
6900 20 20 20 20 20 20 20 74 6f 6f 6c 62 6f 78 2e 5f 61 63 74 69 76 69 74 79 5f 74 6f 6f 6c 62 61 72 .......toolbox._activity_toolbar
6920 2e 5f 75 70 64 61 74 65 5f 74 69 74 6c 65 5f 63 62 28 29 0a 20 20 20 20 20 20 20 20 74 6f 6f 6c ._update_title_cb().........tool
6940 62 6f 78 2e 5f 61 63 74 69 76 69 74 79 5f 74 6f 6f 6c 62 61 72 2e 5f 75 70 64 61 74 65 5f 74 69 box._activity_toolbar._update_ti
6960 74 6c 65 5f 73 69 64 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 6b 65 65 70 5f 63 6c tle_sid.=.True......def._keep_cl
6980 69 63 6b 65 64 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 icked_cb(self,.button):.........
69a0 22 22 22 20 4b 65 65 70 20 62 75 74 74 6f 6e 20 63 6c 69 63 6b 65 64 2e 20 22 22 22 0a 20 20 20 """.Keep.button.clicked.."""....
69c0 20 20 20 20 20 73 65 6c 66 2e 6a 6f 62 6a 65 63 74 5f 6e 65 77 5f 70 61 74 63 68 28 29 0a 0a 20 .....self.jobject_new_patch()...
69e0 20 20 20 64 65 66 20 5f 73 65 74 75 70 5f 74 6f 6f 6c 62 61 72 28 73 65 6c 66 29 3a 0a 20 20 20 ...def._setup_toolbar(self):....
6a00 20 20 20 20 20 22 22 22 20 53 65 74 75 70 20 74 6f 6f 6c 62 61 72 20 61 63 63 6f 72 64 69 6e 67 .....""".Setup.toolbar.according
6a20 20 74 6f 20 53 75 67 61 72 20 76 65 72 73 69 6f 6e 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 .to.Sugar.version.""".........if
6a40 20 73 65 6c 66 2e 6e 65 77 5f 73 75 67 61 72 5f 73 79 73 74 65 6d 3a 0a 20 20 20 20 20 20 20 20 .self.new_sugar_system:.........
6a60 20 20 20 20 23 20 55 73 65 20 30 2e 38 36 20 74 6f 6f 6c 62 61 72 20 64 65 73 69 67 6e 0a 20 20 ....#.Use.0.86.toolbar.design...
6a80 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 20 3d 20 54 6f 6f 6c 62 61 72 42 ..........toolbar_box.=.ToolbarB
6aa0 6f 78 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 42 75 74 74 6f 6e 73 20 61 64 64 65 64 ox().............#.Buttons.added
6ac0 20 74 6f 20 74 68 65 20 41 63 74 69 76 69 74 79 20 74 6f 6f 6c 62 61 72 0a 20 20 20 20 20 20 20 .to.the.Activity.toolbar........
6ae0 20 20 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 20 3d 20 41 63 74 69 76 69 74 79 54 .....activity_button.=.ActivityT
6b00 6f 6f 6c 62 61 72 42 75 74 74 6f 6e 28 73 65 6c 66 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 oolbarButton(self)..............
6b20 23 20 53 61 76 65 20 73 6e 61 70 73 68 6f 74 20 69 73 20 6c 69 6b 65 20 4b 65 65 70 2c 20 62 75 #.Save.snapshot.is.like.Keep,.bu
6b40 74 20 69 74 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 61 63 74 69 76 69 74 79 20 69 64 0a 20 t.it.creates.a.new.activity.id..
6b60 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 20 3d 20 54 6f ...........self.keep_button.=.To
6b80 6f 6c 42 75 74 74 6f 6e 28 27 66 69 6c 65 73 61 76 65 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 olButton('filesave')............
6ba0 20 73 65 6c 66 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 .self.keep_button.set_tooltip(_(
6bc0 22 53 61 76 65 20 73 6e 61 70 73 68 6f 74 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 "Save.snapshot")).............se
6be0 6c 66 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 lf.keep_button.connect('clicked'
6c00 2c 20 73 65 6c 66 2e 64 6f 5f 6b 65 65 70 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ,.self.do_keep_cb).............s
6c20 65 6c 66 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 elf.keep_button.show()..........
6c40 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 70 61 67 65 2e 69 6e ...activity_button.props.page.in
6c60 73 65 72 74 28 73 65 6c 66 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 0a 20 20 20 20 sert(self.keep_button,.-1)......
6c80 20 20 20 20 20 20 20 20 23 20 53 61 76 65 20 61 73 20 48 54 4d 4c 0a 20 20 20 20 20 20 20 20 20 ........#.Save.as.HTML..........
6ca0 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 20 3d 20 54 6f 6f 6c 42 75 74 74 6f ...self.save_as_html.=.ToolButto
6cc0 6e 28 27 68 74 6d 6c 6f 66 66 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 n('htmloff').............self.sa
6ce0 76 65 5f 61 73 5f 68 74 6d 6c 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 53 61 76 65 20 61 ve_as_html.set_tooltip(_("Save.a
6d00 73 20 48 54 4d 4c 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f s.HTML")).............self.save_
6d20 61 73 5f 68 74 6d 6c 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e as_html.connect('clicked',.self.
6d40 64 6f 5f 73 61 76 65 5f 61 73 5f 68 74 6d 6c 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 do_save_as_html_cb).............
6d60 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 self.save_as_html.show()........
6d80 20 20 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 70 61 67 65 2e .....activity_button.props.page.
6da0 69 6e 73 65 72 74 28 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 2c 20 2d 31 29 0a 0a 20 insert(self.save_as_html,.-1)...
6dc0 20 20 20 20 20 20 20 20 20 20 20 23 20 53 61 76 65 20 61 73 20 4c 6f 67 6f 0a 20 20 20 20 20 20 ...........#.Save.as.Logo.......
6de0 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 20 3d 20 54 6f 6f 6c 42 75 ......self.save_as_logo.=.ToolBu
6e00 74 74 6f 6e 28 27 6c 6f 67 6f 2d 73 61 76 65 6f 66 66 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 tton('logo-saveoff')............
6e20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f .self.save_as_logo.set_tooltip(_
6e40 28 22 53 61 76 65 20 61 73 20 4c 6f 67 6f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 ("Save.as.Logo")).............se
6e60 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 lf.save_as_logo.connect('clicked
6e80 27 2c 20 73 65 6c 66 2e 64 6f 5f 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 5f 63 62 29 0a 20 20 20 20 ',.self.do_save_as_logo_cb).....
6ea0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 73 68 6f 77 28 29 ........self.save_as_logo.show()
6ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f .............activity_button.pro
6ee0 70 73 2e 70 61 67 65 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f ps.page.insert(self.save_as_logo
6f00 2c 20 2d 31 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 61 76 65 20 61 73 20 69 6d 61 ,.-1)..............#.Save.as.ima
6f20 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 ge.............self.save_as_imag
6f40 65 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 69 6d 61 67 65 2d 73 61 76 65 6f 66 66 27 29 0a e.=.ToolButton('image-saveoff').
6f60 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2e 73 ............self.save_as_image.s
6f80 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 53 61 76 65 20 61 73 20 69 6d 61 67 65 22 29 29 0a 20 et_tooltip(_("Save.as.image"))..
6fa0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2e 63 6f ...........self.save_as_image.co
6fc0 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f 73 61 76 65 5f 61 73 nnect('clicked',.self.do_save_as
6fe0 5f 69 6d 61 67 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 _image_cb).............self.save
7000 5f 61 73 5f 69 6d 61 67 65 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 _as_image.show().............act
7020 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 70 61 67 65 2e 69 6e 73 65 72 74 28 73 ivity_button.props.page.insert(s
7040 65 6c 66 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2c 20 2d 31 29 0a 0a 20 20 20 20 20 20 20 20 elf.save_as_image,.-1)..........
7060 20 20 20 20 23 20 4c 6f 61 64 20 50 79 74 68 6f 6e 20 63 6f 64 65 20 69 6e 74 6f 20 70 72 6f 67 ....#.Load.Python.code.into.prog
7080 72 61 6d 6d 61 62 6c 65 20 62 72 69 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e rammable.brick.............self.
70a0 6c 6f 61 64 5f 70 79 74 68 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 70 69 70 70 79 2d load_python.=.ToolButton('pippy-
70c0 6f 70 65 6e 6f 66 66 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f openoff').............self.load_
70e0 70 79 74 68 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 4c 6f 61 64 20 6d 79 20 62 6c python.set_tooltip(_("Load.my.bl
7100 6f 63 6b 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 70 79 74 ock")).............self.load_pyt
7120 68 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f 6c hon.connect('clicked',.self.do_l
7140 6f 61 64 5f 70 79 74 68 6f 6e 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e oad_python_cb).............self.
7160 6c 6f 61 64 5f 70 79 74 68 6f 6e 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 load_python.show().............a
7180 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 70 61 67 65 2e 69 6e 73 65 72 74 ctivity_button.props.page.insert
71a0 28 73 65 6c 66 2e 6c 6f 61 64 5f 70 79 74 68 6f 6e 2c 20 2d 31 29 0a 0a 20 20 20 20 20 20 20 20 (self.load_python,.-1)..........
71c0 20 20 20 20 23 20 4f 70 65 6e 20 70 72 6f 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 72 ....#.Open.project.from.the.Jour
71e0 6e 61 6c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 74 61 5f 70 72 nal..............self.load_ta_pr
7200 6f 6a 65 63 74 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 6c 6f 61 64 2d 66 72 6f 6d 2d 6a 6f oject.=.ToolButton('load-from-jo
7220 75 72 6e 61 6c 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 74 61 urnal').............self.load_ta
7240 5f 70 72 6f 6a 65 63 74 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5c 0a 20 20 20 20 20 20 20 20 20 _project.set_tooltip(\..........
7260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7280 20 20 5f 28 22 49 6d 70 6f 72 74 20 70 72 6f 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 4a 6f 75 .._("Import.project.from.the.Jou
72a0 72 6e 61 6c 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 74 61 rnal")).............self.load_ta
72c0 5f 70 72 6f 6a 65 63 74 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 _project.connect('clicked',.self
72e0 2e 64 6f 5f 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 5f 63 62 29 0a 20 20 20 20 20 20 20 20 .do_load_ta_project_cb).........
7300 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 2e 73 68 6f 77 28 29 0a ....self.load_ta_project.show().
7320 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 ............activity_button.prop
7340 73 2e 70 61 67 65 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 s.page.insert(self.load_ta_proje
7360 63 74 2c 20 2d 31 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 ct,.-1)..............toolbar_box
7380 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2c .toolbar.insert(activity_button,
73a0 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 69 74 79 5f 62 75 74 74 6f 6e 2e .0).............activity_button.
73c0 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 68 65 20 65 64 69 74 20 74 show()..............#.The.edit.t
73e0 6f 6f 6c 62 61 72 20 2d 2d 20 63 6f 70 79 20 61 6e 64 20 70 61 73 74 65 0a 20 20 20 20 20 20 20 oolbar.--.copy.and.paste........
7400 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 20 3d 20 45 64 69 74 54 6f 6f 6c 62 61 72 28 .....edit_toolbar.=.EditToolbar(
7420 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f ).............edit_toolbar_butto
7440 6e 20 3d 20 54 6f 6f 6c 62 61 72 42 75 74 74 6f 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n.=.ToolbarButton(..............
7460 20 20 20 20 20 20 20 70 61 67 65 3d 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2c 0a 20 20 20 20 20 20 .......page=edit_toolbar,.......
7480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 63 6f 6e 5f 6e 61 6d 65 3d 27 74 6f 6f 6c 62 61 72 ..............icon_name='toolbar
74a0 2d 65 64 69 74 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 -edit').............edit_toolbar
74c0 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e .show().............toolbar_box.
74e0 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 65 64 69 74 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 toolbar.insert(edit_toolbar_butt
7500 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 on,.-1).............edit_toolbar
7520 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 _button.show()............._logg
7540 65 72 2e 64 65 62 75 67 28 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d er.debug("======================
7560 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 63 6f 70 79 ").............edit_toolbar.copy
7580 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 5f 63 6f 70 79 5f 63 .connect('clicked',.self._copy_c
75a0 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 63 6f 70 79 b).............edit_toolbar.copy
75c0 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 43 74 72 6c 3e 63 27 0a 20 .props.accelerator.=.'<Ctrl>c'..
75e0 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 70 61 73 74 65 2e 63 6f ...........edit_toolbar.paste.co
7600 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 5f 70 61 73 74 65 5f 63 62 29 nnect('clicked',.self._paste_cb)
7620 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 63 6f 70 79 2e 70 .............edit_toolbar.copy.p
7640 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 43 74 72 6c 3e 76 27 0a 20 20 20 rops.accelerator.=.'<Ctrl>v'....
7660 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 75 6e 64 6f 2e 70 72 6f 70 73 .........edit_toolbar.undo.props
7680 2e 76 69 73 69 62 6c 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 .visible.=.False.............edi
76a0 74 5f 74 6f 6f 6c 62 61 72 2e 72 65 64 6f 2e 70 72 6f 70 73 2e 76 69 73 69 62 6c 65 20 3d 20 46 t_toolbar.redo.props.visible.=.F
76c0 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 64 69 74 5f 74 6f 6f 6c 62 61 72 2e 73 65 alse.............edit_toolbar.se
76e0 70 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 76 69 73 69 62 6c 65 20 3d 20 46 61 6c 73 65 0a 20 20 parator.props.visible.=.False...
7700 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 3d 3d 3d 3d 3d 3d 3d .........._logger.debug("=======
7720 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 22 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 ===============")..............#
7740 20 54 68 65 20 76 69 65 77 20 74 6f 6f 6c 62 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 .The.view.toolbar.............vi
7760 65 77 5f 74 6f 6f 6c 62 61 72 20 3d 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 28 29 0a 0a 20 20 20 20 ew_toolbar.=.gtk.Toolbar()......
7780 20 20 20 20 20 20 20 20 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c ........fullscreen_button.=.Tool
77a0 42 75 74 74 6f 6e 28 27 76 69 65 77 2d 66 75 6c 6c 73 63 72 65 65 6e 27 29 0a 20 20 20 20 20 20 Button('view-fullscreen').......
77c0 20 20 20 20 20 20 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c ......fullscreen_button.set_tool
77e0 74 69 70 28 5f 28 22 46 75 6c 6c 73 63 72 65 65 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 tip(_("Fullscreen"))............
7800 20 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 .fullscreen_button.props.acceler
7820 61 74 6f 72 20 3d 20 27 3c 41 6c 74 3e 45 6e 74 65 72 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 ator.=.'<Alt>Enter'.............
7840 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b fullscreen_button.connect('click
7860 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f 66 75 6c 6c 73 63 72 65 65 6e 5f 63 62 29 0a 20 20 20 20 ed',.self.do_fullscreen_cb).....
7880 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 66 75 6c 6c ........view_toolbar.insert(full
78a0 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 screen_button,.-1).............f
78c0 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 ullscreen_button.show().........
78e0 20 20 20 20 20 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 .....cartesian_button.=.ToolButt
7900 6f 6e 28 27 76 69 65 77 2d 43 61 72 74 65 73 69 61 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 on('view-Cartesian')............
7920 20 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 .cartesian_button.set_tooltip(_(
7940 22 43 61 72 74 65 73 69 61 6e 20 63 6f 6f 72 64 69 6e 61 74 65 73 22 29 29 0a 20 20 20 20 20 20 "Cartesian.coordinates")).......
7960 20 20 20 20 20 20 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 ......cartesian_button.connect('
7980 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f 63 61 72 74 65 73 69 61 6e 5f 63 62 29 0a clicked',.self.do_cartesian_cb).
79a0 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 ............view_toolbar.insert(
79c0 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 cartesian_button,.-1)...........
79e0 20 20 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 ..cartesian_button.show().......
7a00 20 20 20 20 20 20 20 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e .......polar_button.=.ToolButton
7a20 28 27 76 69 65 77 2d 70 6f 6c 61 72 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 6c 61 72 ('view-polar').............polar
7a40 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 50 6f 6c 61 72 20 63 6f 6f _button.set_tooltip(_("Polar.coo
7a60 72 64 69 6e 61 74 65 73 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 6c 61 72 5f 62 75 rdinates")).............polar_bu
7a80 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f tton.connect('clicked',.self.do_
7aa0 70 6f 6c 61 72 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 polar_cb).............view_toolb
7ac0 61 72 2e 69 6e 73 65 72 74 28 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 ar.insert(polar_button,.-1).....
7ae0 20 20 20 20 20 20 20 20 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 20 20 20 20 ........polar_button.show().....
7b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 .............separator.=.gtk.Sep
7b20 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 aratorToolItem().............sep
7b40 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 64 72 61 77 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 arator.props.draw.=.True........
7b60 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 .....view_toolbar.insert(separat
7b80 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 or,.-1).............separator.sh
7ba0 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 ow()..............self.coordinat
7bc0 65 73 5f 6c 61 62 65 6c 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 74 6b 2e 4c es_label.=.\...............gtk.L
7be0 61 62 65 6c 28 5f 28 22 78 63 6f 72 22 29 20 2b 20 22 20 3d 20 30 20 22 20 2b 20 5f 28 22 79 63 abel(_("xcor").+.".=.0.".+._("yc
7c00 6f 72 22 29 20 2b 20 22 20 3d 20 30 20 22 20 2b 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 or").+.".=.0.".+.\..............
7c20 20 20 20 20 20 20 20 20 20 20 20 5f 28 22 68 65 61 64 69 6e 67 22 29 20 2b 20 22 20 3d 20 30 22 ..........._("heading").+.".=.0"
7c40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c ).............self.coordinates_l
7c60 61 62 65 6c 2e 73 65 74 5f 6c 69 6e 65 5f 77 72 61 70 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 abel.set_line_wrap(True)........
7c80 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c 61 62 65 6c 2e 73 68 6f 77 .....self.coordinates_label.show
7ca0 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f ().............self.coordinates_
7cc0 74 6f 6f 6c 69 74 65 6d 20 3d 20 67 74 6b 2e 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 toolitem.=.gtk.ToolItem().......
7ce0 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c 69 74 65 6d 2e ......self.coordinates_toolitem.
7d00 61 64 64 28 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c 61 62 65 6c 29 0a 20 20 20 20 add(self.coordinates_label).....
7d20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 ........view_toolbar.insert(self
7d40 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c 69 74 65 6d 2c 20 2d 31 29 0a 20 20 20 20 20 .coordinates_toolitem,.-1)......
7d60 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c 69 74 65 6d .......self.coordinates_toolitem
7d80 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d .show()..............separator.=
7da0 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 .gtk.SeparatorToolItem()........
7dc0 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 64 72 61 77 20 3d 20 46 61 6c 73 .....separator.props.draw.=.Fals
7de0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 65 78 70 61 e.............separator.set_expa
7e00 6e 64 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 nd(True).............view_toolba
7e20 72 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 r.insert(separator,.-1).........
7e40 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 ....separator.show()............
7e60 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 ..self.rescale_button.=.ToolButt
7e80 6f 6e 28 27 65 78 70 61 6e 64 2d 63 6f 6f 72 64 69 6e 61 74 65 73 27 29 0a 20 20 20 20 20 20 20 on('expand-coordinates')........
7ea0 20 20 20 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f .....self.rescale_button.set_too
7ec0 6c 74 69 70 28 5f 28 22 52 65 73 63 61 6c 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 75 70 22 29 ltip(_("Rescale.coordinates.up")
7ee0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f ).............self.rescale_butto
7f00 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f 5f 72 65 73 n.connect('clicked',.self.do_res
7f20 63 61 6c 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 cale_cb).............view_toolba
7f40 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2c 20 2d 31 r.insert(self.rescale_button,.-1
7f60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f ).............self.rescale_butto
7f80 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a n.show()..............self.resiz
7fa0 65 5f 75 70 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 72 65 73 69 7a 65 e_up_button.=.ToolButton('resize
7fc0 2b 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 75 70 5f 62 +').............self.resize_up_b
7fe0 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 47 72 6f 77 20 62 6c 6f 63 6b 73 utton.set_tooltip(_("Grow.blocks
8000 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 75 70 5f 62 ")).............self.resize_up_b
8020 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 0a 20 20 20 20 20 20 20 utton.connect('clicked',........
8040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8060 20 20 20 73 65 6c 66 2e 64 6f 5f 72 65 73 69 7a 65 5f 62 6c 6f 63 6b 73 5f 63 62 2c 20 31 2e 35 ...self.do_resize_blocks_cb,.1.5
8080 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 ).............view_toolbar.inser
80a0 74 28 73 65 6c 66 2e 72 65 73 69 7a 65 5f 75 70 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 t(self.resize_up_button,.-1)....
80c0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 75 70 5f 62 75 74 74 6f 6e 2e 73 .........self.resize_up_button.s
80e0 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 64 how()..............self.resize_d
8100 6f 77 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 72 65 73 69 7a 65 2d own_button.=.ToolButton('resize-
8120 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 64 6f 77 6e 5f ').............self.resize_down_
8140 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 53 68 72 69 6e 6b 20 62 6c 6f button.set_tooltip(_("Shrink.blo
8160 63 6b 73 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f 64 cks")).............self.resize_d
8180 6f 77 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 0a 20 20 own_button.connect('clicked',...
81a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
81c0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 6f 5f 72 65 73 69 7a 65 5f 62 6c 6f 63 6b 73 5f ..........self.do_resize_blocks_
81e0 63 62 2c 20 30 2e 36 36 37 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c cb,.0.667).............view_tool
8200 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 72 65 73 69 7a 65 5f 64 6f 77 6e 5f 62 75 74 74 bar.insert(self.resize_down_butt
8220 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 5f on,.-1).............self.resize_
8240 64 6f 77 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 down_button.show()..............
8260 76 69 65 77 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 62 61 72 42 75 74 view_toolbar_button.=.ToolbarBut
8280 74 6f 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 3d 76 69 ton(.....................page=vi
82a0 65 77 5f 74 6f 6f 6c 62 61 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ew_toolbar,.....................
82c0 69 63 6f 6e 5f 6e 61 6d 65 3d 27 74 6f 6f 6c 62 61 72 2d 76 69 65 77 27 29 0a 20 20 20 20 20 20 icon_name='toolbar-view').......
82e0 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 ......view_toolbar.show().......
8300 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 ......toolbar_box.toolbar.insert
8320 28 76 69 65 77 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 (view_toolbar_button,.-1).......
8340 20 20 20 20 20 20 76 69 65 77 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 ......view_toolbar_button.show()
8360 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 61 6c 65 74 74 65 20 74 6f 6f 6c 62 61 72 0a ..............#.palette.toolbar.
8380 20 20 20 20 20 20 20 20 20 20 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 20 3d 20 67 74 ............palette_toolbar.=.gt
83a0 6b 2e 54 6f 6f 6c 62 61 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c k.Toolbar().............self.pal
83c0 65 74 74 65 5f 62 75 74 74 6f 6e 73 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f ette_buttons.=.[].............fo
83e0 72 20 69 2c 20 6e 61 6d 65 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 50 41 4c 45 54 54 45 5f 4e r.i,.name.in.enumerate(PALETTE_N
8400 41 4d 45 53 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3e 20 30 3a AMES):.................if.i.>.0:
8420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 .....................self.palett
8440 65 5f 62 75 74 74 6f 6e 73 2e 61 70 70 65 6e 64 28 54 6f 6f 6c 42 75 74 74 6f 6e 28 6e 61 6d 65 e_buttons.append(ToolButton(name
8460 2b 27 6f 66 66 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 +'off')).................else:..
8480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f ...................self.palette_
84a0 62 75 74 74 6f 6e 73 2e 61 70 70 65 6e 64 28 54 6f 6f 6c 42 75 74 74 6f 6e 28 6e 61 6d 65 2b 27 buttons.append(ToolButton(name+'
84c0 6f 6e 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 on')).................self.palet
84e0 74 65 5f 62 75 74 74 6f 6e 73 5b 69 5d 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 48 45 4c 50 5f 53 te_buttons[i].set_tooltip(HELP_S
8500 54 52 49 4e 47 53 5b 6e 61 6d 65 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 TRINGS[name]).................se
8520 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 69 5d 2e 70 72 6f 70 73 2e 73 65 6e 73 lf.palette_buttons[i].props.sens
8540 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c itive.=.True.................sel
8560 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 69 5d 2e 63 6f 6e 6e 65 63 74 28 27 63 6c f.palette_buttons[i].connect('cl
8580 69 63 6b 65 64 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icked',.........................
85a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 6f 5f ........................self.do_
85c0 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5f 63 62 2c 20 69 29 0a 20 20 20 20 20 20 20 20 20 palette_buttons_cb,.i)..........
85e0 20 20 20 20 20 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 .......palette_toolbar.insert(se
8600 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b 69 5d 2c 20 2d 31 29 0a 20 20 20 20 20 lf.palette_buttons[i],.-1)......
8620 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 73 5b ...........self.palette_buttons[
8640 69 5d 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 i].show()..............separator
8660 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 .=.gtk.SeparatorToolItem()......
8680 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 64 72 61 77 20 3d 20 46 61 .......separator.props.draw.=.Fa
86a0 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 65 78 lse.............separator.set_ex
86c0 70 61 6e 64 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 6c 65 74 74 65 5f 74 pand(True).............palette_t
86e0 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 oolbar.insert(separator,.-1)....
8700 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 .........separator.show().......
8720 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f .......self.palette_button.=.Too
8740 6c 42 75 74 74 6f 6e 28 20 22 70 61 6c 65 74 74 65 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 lButton(."paletteoff".).........
8760 20 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c ....self.palette_button.set_tool
8780 74 69 70 28 5f 28 27 48 69 64 65 20 70 61 6c 65 74 74 65 27 29 29 0a 20 20 20 20 20 20 20 20 20 tip(_('Hide.palette'))..........
87a0 20 20 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e ...self.palette_button.props.sen
87c0 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 sitive.=.True.............self.p
87e0 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c alette_button.connect('clicked',
8800 20 73 65 6c 66 2e 64 6f 5f 70 61 6c 65 74 74 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 .self.do_palette_cb)............
8820 20 73 65 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c .self.palette_button.props.accel
8840 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 70 27 29 0a 20 20 20 20 20 20 20 20 20 20 erator.=._('<Ctrl>p')...........
8860 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 70 61 ..palette_toolbar.insert(self.pa
8880 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 lette_button,.-1).............se
88a0 6c 66 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 lf.palette_button.show()........
88c0 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 ......self.blocks_button.=.ToolB
88e0 75 74 74 6f 6e 28 20 22 68 69 64 65 73 68 6f 77 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 20 utton(."hideshowoff".)..........
8900 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 ...self.blocks_button.set_toolti
8920 70 28 5f 28 27 48 69 64 65 20 62 6c 6f 63 6b 73 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 p(_('Hide.blocks')).............
8940 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 self.blocks_button.props.sensiti
8960 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b ve.=.True.............self.block
8980 73 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 s_button.connect('clicked',.self
89a0 2e 64 6f 5f 68 69 64 65 73 68 6f 77 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .do_hideshow_cb).............sel
89c0 66 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f f.blocks_button.props.accelerato
89e0 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 62 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 6c r.=._('<Ctrl>b').............pal
8a00 65 74 74 65 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 62 6c 6f 63 6b 73 5f ette_toolbar.insert(self.blocks_
8a20 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f button,.-1).............self.blo
8a40 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 cks_button.show()..............p
8a60 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 62 61 72 42 alette_toolbar_button.=.ToolbarB
8a80 75 74 74 6f 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 3d utton(.....................page=
8aa0 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 palette_toolbar,................
8ac0 20 20 20 20 20 69 63 6f 6e 5f 6e 61 6d 65 3d 27 70 61 6c 65 74 74 65 27 29 0a 20 20 20 20 20 20 .....icon_name='palette').......
8ae0 20 20 20 20 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 2e 73 68 6f 77 28 29 0a 20 20 20 ......palette_toolbar.show()....
8b00 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 .........toolbar_box.toolbar.ins
8b20 65 72 74 28 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a ert(palette_toolbar_button,.-1).
8b40 20 20 20 20 20 20 20 20 20 20 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 ............palette_toolbar_butt
8b60 6f 6e 2e 73 65 74 5f 65 78 70 61 6e 64 65 64 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 on.set_expanded(True)...........
8b80 20 20 70 61 6c 65 74 74 65 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a ..palette_toolbar_button.show().
8ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 .............separator.=.gtk.Sep
8bc0 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 aratorToolItem().............sep
8be0 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 arator.set_draw(True)...........
8c00 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 70 ..toolbar_box.toolbar.insert(sep
8c20 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f arator,.-1).............separato
8c40 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 72 61 73 65 72 20 62 r.show()..............#.eraser.b
8c60 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 72 61 73 65 72 5f 62 75 utton.............self.eraser_bu
8c80 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 65 72 61 73 65 72 6f 6e 22 20 29 0a tton.=.ToolButton(."eraseron".).
8ca0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 ............self.eraser_button.s
8cc0 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 43 6c 65 61 6e 27 29 29 0a 20 20 20 20 20 20 20 20 20 et_tooltip(_('Clean'))..........
8ce0 20 20 20 73 65 6c 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 ...self.eraser_button.props.sens
8d00 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 72 itive.=.True.............self.er
8d20 61 73 65 72 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 aser_button.connect('clicked',.s
8d40 65 6c 66 2e 64 6f 5f 65 72 61 73 65 72 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 elf.do_eraser_cb).............se
8d60 6c 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 lf.eraser_button.props.accelerat
8d80 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 65 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f or.=._('<Ctrl>e').............to
8da0 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 65 72 olbar_box.toolbar.insert(self.er
8dc0 61 73 65 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c aser_button,.-1).............sel
8de0 66 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 f.eraser_button.show()..........
8e00 20 20 20 20 23 20 72 75 6e 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ....#.run.button.............sel
8e20 66 2e 72 75 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 72 75 6e 2d f.run_button.=.ToolButton(."run-
8e40 66 61 73 74 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 75 6e 5f fastoff".).............self.run_
8e60 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 52 75 6e 27 29 29 0a 20 20 20 button.set_tooltip(_('Run'))....
8e80 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 .........self.run_button.props.s
8ea0 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ensitive.=.True.............self
8ec0 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 .run_button.connect('clicked',.s
8ee0 65 6c 66 2e 64 6f 5f 72 75 6e 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e elf.do_run_cb).............self.
8f00 72 75 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f run_button.props.accelerator.=._
8f20 28 27 3c 43 74 72 6c 3e 72 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f ('<Ctrl>r').............toolbar_
8f40 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 72 75 6e 5f 62 75 74 74 box.toolbar.insert(self.run_butt
8f60 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 75 6e 5f 62 75 74 on,.-1).............self.run_but
8f80 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 74 65 70 20 62 ton.show()..............#.step.b
8fa0 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 utton.............self.step_butt
8fc0 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 72 75 6e 2d 73 6c 6f 77 6f 66 66 22 20 29 on.=.ToolButton(."run-slowoff".)
8fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e 73 65 .............self.step_button.se
9000 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 74 65 70 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 t_tooltip(_('Step'))............
9020 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 .self.step_button.props.sensitiv
9040 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 e.=.True.............self.step_b
9060 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 6f utton.connect('clicked',.self.do
9080 5f 73 74 65 70 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f _step_cb).............self.step_
90a0 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 button.props.accelerator.=._('<C
90c0 74 72 6c 3e 77 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e trl>w').............toolbar_box.
90e0 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2c toolbar.insert(self.step_button,
9100 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 65 70 5f 62 75 74 74 6f .-1).............self.step_butto
9120 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 62 75 67 20 62 75 n.show()..............#.debug.bu
9140 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 tton.............self.debug_butt
9160 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 64 65 62 75 67 6f 66 66 22 20 29 0a 20 20 on.=.ToolButton(."debugoff".)...
9180 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 73 65 74 5f ..........self.debug_button.set_
91a0 74 6f 6f 6c 74 69 70 28 5f 28 27 44 65 62 75 67 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tooltip(_('Debug')).............
91c0 73 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 self.debug_button.props.sensitiv
91e0 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 62 75 67 5f e.=.True.............self.debug_
9200 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 64 button.connect('clicked',.self.d
9220 6f 5f 64 65 62 75 67 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 62 o_debug_cb).............self.deb
9240 75 67 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 ug_button.props.accelerator.=._(
9260 27 3c 41 6c 74 3e 64 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f '<Alt>d').............toolbar_bo
9280 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 64 65 62 75 67 5f 62 75 74 74 x.toolbar.insert(self.debug_butt
92a0 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 62 75 67 5f 62 on,.-1).............self.debug_b
92c0 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 74 6f 70 utton.show()..............#.stop
92e0 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f 70 5f 62 75 .button.............self.stop_bu
9300 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 73 74 6f 70 69 74 6f 66 66 22 20 29 tton.=.ToolButton(."stopitoff".)
9320 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 65 .............self.stop_button.se
9340 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 74 6f 70 20 74 75 72 74 6c 65 27 29 29 0a 20 20 20 20 t_tooltip(_('Stop.turtle')).....
9360 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 ........self.stop_button.props.s
9380 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ensitive.=.True.............self
93a0 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 .stop_button.connect('clicked',.
93c0 73 65 6c 66 2e 64 6f 5f 73 74 6f 70 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c self.do_stop_cb).............sel
93e0 66 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 f.stop_button.props.accelerator.
9400 3d 20 5f 28 27 3c 43 74 72 6c 3e 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 =._('<Ctrl>s').............toolb
9420 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 73 74 6f 70 5f ar_box.toolbar.insert(self.stop_
9440 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f button,.-1).............self.sto
9460 70 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 p_button.show()..............sep
9480 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 arator.=.gtk.SeparatorToolItem()
94a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 .............separator.set_draw(
94c0 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f True).............toolbar_box.to
94e0 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 olbar.insert(separator,.-1).....
9500 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 ........separator.show()........
9520 20 20 20 20 20 20 23 20 54 68 65 20 48 65 6c 70 20 74 6f 6f 6c 62 61 72 20 2d 2d 20 73 61 6d 70 ......#.The.Help.toolbar.--.samp
9540 6c 65 20 63 6f 64 65 20 61 6e 64 20 68 6f 76 65 72 20 68 65 6c 70 0a 20 20 20 20 20 20 20 20 20 le.code.and.hover.help..........
9560 20 20 20 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 20 3d 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 28 29 0a ...help_toolbar.=.gtk.Toolbar().
9580 20 20 20 20 20 20 20 20 20 20 20 20 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f ............samples_button.=.Too
95a0 6c 42 75 74 74 6f 6e 28 20 22 73 74 6f 63 6b 2d 6f 70 65 6e 22 20 29 0a 20 20 20 20 20 20 20 20 lButton(."stock-open".).........
95c0 20 20 20 20 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f ....samples_button.set_tooltip(_
95e0 28 27 53 61 6d 70 6c 65 73 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 61 6d 70 6c 65 73 ('Samples')).............samples
9600 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e _button.connect('clicked',.self.
9620 64 6f 5f 73 61 6d 70 6c 65 73 5f 63 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 61 6d 70 6c do_samples_cb).............sampl
9640 65 73 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c es_button.show().............hel
9660 70 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2c p_toolbar.insert(samples_button,
9680 20 2d 31 29 0a 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 .-1)..................separator.
96a0 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 =.gtk.SeparatorToolItem().......
96c0 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 64 72 61 77 20 3d 20 54 72 75 ......separator.props.draw.=.Tru
96e0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 e.............help_toolbar.inser
9700 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 t(separator,.-1).............sep
9720 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e arator.show()..............self.
9740 68 6f 76 65 72 5f 68 65 6c 70 5f 6c 61 62 65 6c 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 hover_help_label.=.\............
9760 20 20 20 67 74 6b 2e 4c 61 62 65 6c 28 5f 28 22 4d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 ...gtk.Label(_("Move.the.cursor.
9780 6f 76 65 72 20 74 68 65 20 6f 72 61 6e 67 65 20 70 61 6c 65 74 74 65 20 66 6f 72 20 68 65 6c 70 over.the.orange.palette.for.help
97a0 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 76 65 72 5f 68 65 6c 70 .")).............self.hover_help
97c0 5f 6c 61 62 65 6c 2e 73 65 74 5f 6c 69 6e 65 5f 77 72 61 70 28 54 72 75 65 29 0a 20 20 20 20 20 _label.set_line_wrap(True)......
97e0 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 76 65 72 5f 68 65 6c 70 5f 6c 61 62 65 6c 2e 73 68 6f .......self.hover_help_label.sho
9800 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 w().............self.hover_tooli
9820 74 65 6d 20 3d 20 67 74 6b 2e 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 tem.=.gtk.ToolItem()............
9840 20 73 65 6c 66 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 74 65 6d 2e 61 64 64 28 73 65 6c 66 2e 68 6f .self.hover_toolitem.add(self.ho
9860 76 65 72 5f 68 65 6c 70 5f 6c 61 62 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c 70 ver_help_label).............help
9880 5f 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 _toolbar.insert(self.hover_tooli
98a0 74 65 6d 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 76 65 72 5f tem,.-1).............self.hover_
98c0 74 6f 6f 6c 69 74 65 6d 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c toolitem.show()..............hel
98e0 70 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 62 61 72 42 75 74 74 6f 6e p_toolbar_button.=.ToolbarButton
9900 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 5f 28 22 48 (.....................label=_("H
9920 65 6c 70 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 3d elp"),.....................page=
9940 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 help_toolbar,...................
9960 20 20 69 63 6f 6e 5f 6e 61 6d 65 3d 27 68 65 6c 70 2d 74 6f 6f 6c 62 61 72 27 29 0a 20 20 20 20 ..icon_name='help-toolbar').....
9980 20 20 20 20 20 20 20 20 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 2e 73 68 6f 77 28 29 0a 20 20 20 20 ........help_toolbar.show().....
99a0 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c 62 61 72 2e 69 6e 73 65 ........toolbar_box.toolbar.inse
99c0 72 74 28 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 rt(help_toolbar_button,.-1).....
99e0 20 20 20 20 20 20 20 20 68 65 6c 70 5f 74 6f 6f 6c 62 61 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 ........help_toolbar_button.show
9a00 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e ()..............separator.=.gtk.
9a20 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 SeparatorToolItem().............
9a40 73 65 70 61 72 61 74 6f 72 2e 70 72 6f 70 73 2e 64 72 61 77 20 3d 20 46 61 6c 73 65 0a 20 20 20 separator.props.draw.=.False....
9a60 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 65 78 70 61 6e 64 28 54 72 .........separator.set_expand(Tr
9a80 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c ue).............toolbar_box.tool
9aa0 62 61 72 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 bar.insert(separator,.-1).......
9ac0 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 ......separator.show()..........
9ae0 20 20 20 20 23 20 54 68 65 20 65 76 65 72 2d 70 72 65 73 65 6e 74 20 53 74 6f 70 20 42 75 74 74 ....#.The.ever-present.Stop.Butt
9b00 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6f 70 5f 62 75 74 74 6f 6e 20 3d 20 53 74 6f on.............stop_button.=.Sto
9b20 70 42 75 74 74 6f 6e 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6f 70 5f 62 pButton(self).............stop_b
9b40 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 43 74 72 6c utton.props.accelerator.=.'<Ctrl
9b60 3e 51 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f 78 2e 74 6f 6f 6c >Q'.............toolbar_box.tool
9b80 62 61 72 2e 69 6e 73 65 72 74 28 73 74 6f 70 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 bar.insert(stop_button,.-1).....
9ba0 20 20 20 20 20 20 20 20 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 ........stop_button.show()......
9bc0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 74 6f 6f 6c 62 61 72 5f 62 6f 78 28 74 6f 6f ........self.set_toolbar_box(too
9be0 6c 62 61 72 5f 62 6f 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 62 61 72 5f 62 6f lbar_box).............toolbar_bo
9c00 78 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 x.show()..........else:.........
9c20 20 20 20 20 23 20 55 73 65 20 70 72 65 2d 30 2e 38 36 20 74 6f 6f 6c 62 61 72 20 64 65 73 69 67 ....#.Use.pre-0.86.toolbar.desig
9c40 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 62 6f 78 20 3d 20 61 63 74 n.............self.toolbox.=.act
9c60 69 76 69 74 79 2e 41 63 74 69 76 69 74 79 54 6f 6f 6c 62 6f 78 28 73 65 6c 66 29 0a 20 20 20 20 ivity.ActivityToolbox(self).....
9c80 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 74 6f 6f 6c 62 6f 78 28 73 65 6c 66 2e 74 6f ........self.set_toolbox(self.to
9ca0 6f 6c 62 6f 78 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41 64 64 20 61 64 64 69 74 69 olbox)..............#.Add.additi
9cc0 6f 6e 61 6c 20 70 61 6e 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f onal.panels.............self.pro
9ce0 6a 65 63 74 54 6f 6f 6c 62 61 72 20 3d 20 50 72 6f 6a 65 63 74 54 6f 6f 6c 62 61 72 28 73 65 6c jectToolbar.=.ProjectToolbar(sel
9d00 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 62 6f 78 2e 61 64 64 5f f).............self.toolbox.add_
9d20 74 6f 6f 6c 62 61 72 28 20 5f 28 27 50 72 6f 6a 65 63 74 27 29 2c 20 73 65 6c 66 2e 70 72 6f 6a toolbar(._('Project'),.self.proj
9d40 65 63 74 54 6f 6f 6c 62 61 72 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 69 ectToolbar.).............self.vi
9d60 65 77 54 6f 6f 6c 62 61 72 20 3d 20 56 69 65 77 54 6f 6f 6c 62 61 72 28 73 65 6c 66 29 0a 20 20 ewToolbar.=.ViewToolbar(self)...
9d80 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 62 6f 78 2e 61 64 64 5f 74 6f 6f 6c 62 ..........self.toolbox.add_toolb
9da0 61 72 28 5f 28 27 56 69 65 77 27 29 2c 20 73 65 6c 66 2e 76 69 65 77 54 6f 6f 6c 62 61 72 29 0a ar(_('View'),.self.viewToolbar).
9dc0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 64 69 74 54 6f 6f 6c 62 61 72 20 3d 20 45 ............self.editToolbar.=.E
9de0 64 69 74 54 6f 6f 6c 62 61 72 38 34 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ditToolbar84(self).............s
9e00 65 6c 66 2e 74 6f 6f 6c 62 6f 78 2e 61 64 64 5f 74 6f 6f 6c 62 61 72 28 5f 28 27 45 64 69 74 27 elf.toolbox.add_toolbar(_('Edit'
9e20 29 2c 20 73 65 6c 66 2e 65 64 69 74 54 6f 6f 6c 62 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 ),.self.editToolbar)............
9e40 20 73 65 6c 66 2e 73 61 76 65 61 73 54 6f 6f 6c 62 61 72 20 3d 20 53 61 76 65 41 73 54 6f 6f 6c .self.saveasToolbar.=.SaveAsTool
9e60 62 61 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 62 bar(self).............self.toolb
9e80 6f 78 2e 61 64 64 5f 74 6f 6f 6c 62 61 72 28 20 5f 28 27 49 6d 70 6f 72 74 2f 45 78 70 6f 72 74 ox.add_toolbar(._('Import/Export
9ea0 27 29 2c 20 73 65 6c 66 2e 73 61 76 65 61 73 54 6f 6f 6c 62 61 72 20 29 0a 20 20 20 20 20 20 20 '),.self.saveasToolbar.)........
9ec0 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 70 54 6f 6f 6c 62 61 72 20 3d 20 48 65 6c 70 54 6f 6f 6c .....self.helpToolbar.=.HelpTool
9ee0 62 61 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 62 bar(self).............self.toolb
9f00 6f 78 2e 61 64 64 5f 74 6f 6f 6c 62 61 72 28 5f 28 27 48 65 6c 70 27 29 2c 20 73 65 6c 66 2e 68 ox.add_toolbar(_('Help'),.self.h
9f20 65 6c 70 54 6f 6f 6c 62 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f elpToolbar).............self.too
9f40 6c 62 6f 78 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 65 74 20 74 lbox.show()..............#.Set.t
9f60 68 65 20 70 72 6f 6a 65 63 74 20 74 6f 6f 6c 62 61 72 20 61 73 20 74 68 65 20 69 6e 69 74 69 61 he.project.toolbar.as.the.initia
9f80 6c 20 6f 6e 65 20 73 65 6c 65 63 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e l.one.selected.............self.
9fa0 74 6f 6f 6c 62 6f 78 2e 73 65 74 5f 63 75 72 72 65 6e 74 5f 74 6f 6f 6c 62 61 72 28 31 29 0a 0a toolbox.set_current_toolbar(1)..
9fc0 20 20 20 20 64 65 66 20 5f 73 65 74 75 70 5f 73 63 72 6f 6c 6c 65 64 5f 77 69 6e 64 6f 77 28 73 ....def._setup_scrolled_window(s
9fe0 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 72 65 61 74 65 20 61 20 73 63 72 6f 6c elf):.........""".Create.a.scrol
a000 6c 65 64 20 77 69 6e 64 6f 77 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 74 75 72 74 6c 65 led.window.to.contain.the.turtle
a020 20 63 61 6e 76 61 73 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 77 20 3d 20 67 .canvas..""".........self.sw.=.g
a040 74 6b 2e 53 63 72 6f 6c 6c 65 64 57 69 6e 64 6f 77 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 tk.ScrolledWindow().........self
a060 2e 73 65 74 5f 63 61 6e 76 61 73 28 73 65 6c 66 2e 73 77 29 0a 20 20 20 20 20 20 20 20 73 65 6c .set_canvas(self.sw).........sel
a080 66 2e 73 77 2e 73 65 74 5f 70 6f 6c 69 63 79 28 67 74 6b 2e 50 4f 4c 49 43 59 5f 41 55 54 4f 4d f.sw.set_policy(gtk.POLICY_AUTOM
a0a0 41 54 49 43 2c 20 67 74 6b 2e 50 4f 4c 49 43 59 5f 41 55 54 4f 4d 41 54 49 43 29 0a 20 20 20 20 ATIC,.gtk.POLICY_AUTOMATIC).....
a0c0 20 20 20 20 73 65 6c 66 2e 73 77 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 20 20 63 61 6e 76 61 ....self.sw.show().........canva
a0e0 73 20 3d 20 67 74 6b 2e 44 72 61 77 69 6e 67 41 72 65 61 28 29 0a 20 20 20 20 20 20 20 20 77 69 s.=.gtk.DrawingArea().........wi
a100 64 74 68 20 3d 20 67 74 6b 2e 67 64 6b 2e 73 63 72 65 65 6e 5f 77 69 64 74 68 28 29 20 2a 20 32 dth.=.gtk.gdk.screen_width().*.2
a120 0a 20 20 20 20 20 20 20 20 68 65 69 67 68 74 20 3d 20 67 74 6b 2e 67 64 6b 2e 73 63 72 65 65 6e .........height.=.gtk.gdk.screen
a140 5f 68 65 69 67 68 74 28 29 20 2a 20 32 0a 20 20 20 20 20 20 20 20 63 61 6e 76 61 73 2e 73 65 74 _height().*.2.........canvas.set
a160 5f 73 69 7a 65 5f 72 65 71 75 65 73 74 28 77 69 64 74 68 2c 20 68 65 69 67 68 74 29 20 0a 20 20 _size_request(width,.height)....
a180 20 20 20 20 20 20 73 65 6c 66 2e 73 77 2e 61 64 64 5f 77 69 74 68 5f 76 69 65 77 70 6f 72 74 28 ......self.sw.add_with_viewport(
a1a0 63 61 6e 76 61 73 29 0a 20 20 20 20 20 20 20 20 63 61 6e 76 61 73 2e 73 68 6f 77 28 29 0a 20 20 canvas).........canvas.show()...
a1c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 6e 76 61 73 0a 0a 20 20 20 20 64 65 66 20 5f 63 68 ......return.canvas......def._ch
a1e0 65 63 6b 5f 76 65 72 5f 63 68 61 6e 67 65 28 73 65 6c 66 2c 20 64 61 74 61 70 61 74 68 29 3a 0a eck_ver_change(self,.datapath):.
a200 20 20 20 20 20 20 20 20 22 22 22 20 54 6f 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 ........""".To.be.replaced.with.
a220 64 61 74 65 20 63 68 65 63 6b 69 6e 67 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 43 68 65 date.checking..""".........#.Che
a240 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 76 65 72 73 69 6f 6e 20 68 61 73 20 63 68 61 ck.to.see.if.the.version.has.cha
a260 6e 67 65 64 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 65 nged.........try:.............ve
a280 72 73 69 6f 6e 20 3d 20 6f 73 2e 65 6e 76 69 72 6f 6e 5b 27 53 55 47 41 52 5f 42 55 4e 44 4c 45 rsion.=.os.environ['SUGAR_BUNDLE
a2a0 5f 56 45 52 53 49 4f 4e 27 5d 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 _VERSION'].........except:......
a2c0 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e 20 3d 20 22 20 75 6e 6b 6e 6f 77 6e 22 0a 0a 20 20 20 .......version.=.".unknown".....
a2e0 20 20 20 20 20 66 69 6c 65 6e 61 6d 65 20 3d 20 22 76 65 72 73 69 6f 6e 2e 64 61 74 22 0a 20 20 .....filename.=."version.dat"...
a300 20 20 20 20 20 20 76 65 72 73 69 6f 6e 64 61 74 61 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 6e ......versiondata.=.[].........n
a320 65 77 76 65 72 73 69 6f 6e 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 ewversion.=.True.........try:...
a340 20 20 20 20 20 20 20 20 20 20 46 49 4c 45 20 3d 20 6f 70 65 6e 28 6f 73 2e 70 61 74 68 2e 6a 6f ..........FILE.=.open(os.path.jo
a360 69 6e 28 64 61 74 61 70 61 74 68 2c 20 66 69 6c 65 6e 61 6d 65 29 2c 20 22 72 22 29 0a 20 20 20 in(datapath,.filename),."r")....
a380 20 20 20 20 20 20 20 20 20 69 66 20 46 49 4c 45 2e 72 65 61 64 6c 69 6e 65 28 29 20 3d 3d 20 76 .........if.FILE.readline().==.v
a3a0 65 72 73 69 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 76 65 72 73 69 ersion:.................newversi
a3c0 6f 6e 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 on.=.False.........except:......
a3e0 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 43 72 65 61 74 69 6e 67 20 61 ......._logger.debug("Creating.a
a400 20 74 61 6d 79 62 6c 6f 63 6b 2e 70 79 20 4a 6f 75 72 6e 61 6c 20 65 6e 74 72 79 22 29 0a 0a 20 .tamyblock.py.Journal.entry")...
a420 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 72 65 20 69 73 20 61 20 63 6f .......#.Make.sure.there.is.a.co
a440 70 79 20 6f 66 20 74 61 6d 79 62 6c 6f 63 6b 2e 70 79 20 69 6e 20 74 68 65 20 4a 6f 75 72 6e 61 py.of.tamyblock.py.in.the.Journa
a460 6c 0a 20 20 20 20 20 20 20 20 69 66 20 6e 65 77 76 65 72 73 69 6f 6e 3a 0a 20 20 20 20 20 20 20 l.........if.newversion:........
a480 20 20 20 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 2e 63 72 65 61 74 65 .....dsobject.=.datastore.create
a4a0 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 ().............dsobject.metadata
a4c0 5b 27 74 69 74 6c 65 27 5d 20 3d 20 27 74 61 6d 79 62 6c 6f 63 6b 2e 70 79 27 0a 20 20 20 20 20 ['title'].=.'tamyblock.py'......
a4e0 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 69 63 6f 6e 2d 63 .......dsobject.metadata['icon-c
a500 6f 6c 6f 72 27 5d 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 66 69 olor'].=.\.................profi
a520 6c 65 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 72 69 6e 67 28 29 0a 20 20 20 20 20 le.get_color().to_string()......
a540 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 6d 69 6d 65 5f 74 .......dsobject.metadata['mime_t
a560 79 70 65 27 5d 20 3d 20 27 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 27 0a 20 20 20 20 20 20 20 20 ype'].=.'text/x-python'.........
a580 20 20 20 20 64 73 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 61 63 74 69 76 69 74 79 27 ....dsobject.metadata['activity'
a5a0 5d 20 3d 20 27 6f 72 67 2e 6c 61 70 74 6f 70 2e 50 69 70 70 79 27 0a 20 20 20 20 20 20 20 20 20 ].=.'org.laptop.Pippy'..........
a5c0 20 20 20 64 73 6f 62 6a 65 63 74 2e 73 65 74 5f 66 69 6c 65 5f 70 61 74 68 28 6f 73 2e 70 61 74 ...dsobject.set_file_path(os.pat
a5e0 68 2e 6a 6f 69 6e 28 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 69 h.join(.\.................activi
a600 74 79 2e 67 65 74 5f 62 75 6e 64 6c 65 5f 70 61 74 68 28 29 2c 20 27 74 61 6d 79 62 6c 6f 63 6b ty.get_bundle_path(),.'tamyblock
a620 2e 70 79 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 73 74 6f 72 65 2e 77 72 69 .py')).............datastore.wri
a640 74 65 28 64 73 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 te(dsobject).............dsobjec
a660 74 2e 64 65 73 74 72 6f 79 28 29 0a 0a 20 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e 64 61 74 61 t.destroy()..........versiondata
a680 2e 61 70 70 65 6e 64 28 76 65 72 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 66 69 6c 65 5f 68 61 .append(version).........file_ha
a6a0 6e 64 6c 65 20 3d 20 6f 70 65 6e 28 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 64 61 74 61 70 61 74 ndle.=.open(os.path.join(datapat
a6c0 68 2c 20 66 69 6c 65 6e 61 6d 65 29 2c 20 22 77 22 29 0a 20 20 20 20 20 20 20 20 66 69 6c 65 5f h,.filename),."w").........file_
a6e0 68 61 6e 64 6c 65 2e 77 72 69 74 65 6c 69 6e 65 73 28 76 65 72 73 69 6f 6e 64 61 74 61 29 0a 20 handle.writelines(versiondata)..
a700 20 20 20 20 20 20 20 66 69 6c 65 5f 68 61 6e 64 6c 65 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 .......file_handle.close()......
a720 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 73 65 74 75 70 5f 63 61 ...return..........def._setup_ca
a740 6e 76 61 73 28 73 65 6c 66 2c 20 63 61 6e 76 61 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 nvas(self,.canvas):.........""".
a760 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 74 75 72 74 6c 65 20 61 72 74 20 63 61 6e 76 61 73 Initialize.the.turtle.art.canvas
a780 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 62 75 6e 64 6c 65 5f 70 61 74 68 20 3d 20 61 63 74 69 ..""".........bundle_path.=.acti
a7a0 76 69 74 79 2e 67 65 74 5f 62 75 6e 64 6c 65 5f 70 61 74 68 28 29 0a 20 20 20 20 20 20 20 20 73 vity.get_bundle_path().........s
a7c0 65 6c 66 2e 74 77 20 3d 20 54 75 72 74 6c 65 41 72 74 57 69 6e 64 6f 77 28 63 61 6e 76 61 73 2c elf.tw.=.TurtleArtWindow(canvas,
a7e0 20 62 75 6e 64 6c 65 5f 70 61 74 68 2c 20 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 .bundle_path,.self,.............
a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 66 69 6c 65 2e 67 65 ......................profile.ge
a820 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 72 69 6e 67 28 29 29 0a 20 20 20 20 20 20 20 20 23 t_color().to_string()).........#
a840 20 73 65 6c 66 2e 74 77 2e 61 63 74 69 76 69 74 79 20 3d 20 73 65 6c 66 0a 20 20 20 20 20 20 20 .self.tw.activity.=.self........
a860 20 73 65 6c 66 2e 74 77 2e 77 69 6e 64 6f 77 2e 67 72 61 62 5f 66 6f 63 75 73 28 29 0a 20 20 20 .self.tw.window.grab_focus()....
a880 20 20 20 20 20 70 61 74 68 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 6f 73 2e 65 6e 76 69 .....path.=.os.path.join(os.envi
a8a0 72 6f 6e 5b 27 53 55 47 41 52 5f 41 43 54 49 56 49 54 59 5f 52 4f 4f 54 27 5d 2c 20 27 64 61 74 ron['SUGAR_ACTIVITY_ROOT'],.'dat
a8c0 61 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 61 76 65 5f 66 6f 6c 64 65 72 20 a').........self.tw.save_folder.
a8e0 3d 20 70 61 74 68 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 =.path..........if.self._jobject
a900 20 61 6e 64 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 3a 0a 20 20 .and.self._jobject.file_path:...
a920 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 61 64 5f 66 69 6c 65 28 73 65 6c 66 2e 5f 6a ..........self.read_file(self._j
a940 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 object.file_path).........else:.
a960 23 20 69 66 20 6e 65 77 2c 20 6c 6f 61 64 20 61 20 73 74 61 72 74 20 62 72 69 63 6b 20 6f 6e 74 #.if.new,.load.a.start.brick.ont
a980 6f 20 74 68 65 20 63 61 6e 76 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 o.the.canvas.............self.tw
a9a0 2e 6c 6f 61 64 5f 73 74 61 72 74 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 6c 6f 61 64 5f 70 79 74 .load_start()......def._load_pyt
a9c0 68 6f 6e 5f 63 6f 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 43 68 65 63 hon_code(self):.........""".Chec
a9e0 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 72 65 20 69 73 20 50 79 74 68 6f 6e 20 63 6f 64 65 k.to.see.if.there.is.Python.code
aa00 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a .to.be.loaded..""".........try:.
aa20 20 20 20 20 20 20 20 20 20 20 20 20 64 73 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 ............dsobject.=.datastore
aa40 2e 67 65 74 28 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 70 79 74 68 6f 6e 20 63 6f 64 65 27 .get(self.metadata['python.code'
aa60 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6c 6f 61 64 5f 70 79 74 68 6f 6e ]).............self._load_python
aa80 28 64 73 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 (dsobject).........except:......
aaa0 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 5f 73 65 74 75 70 5f 73 68 61 72 .......pass......def._setup_shar
aac0 69 6e 67 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 41 20 73 69 6d 70 6c 69 73 ing(self):.........""".A.simplis
aae0 74 69 63 20 73 68 61 72 69 6e 67 20 6d 6f 64 65 6c 3a 20 74 68 65 20 73 68 61 72 65 72 20 69 73 tic.sharing.model:.the.sharer.is
ab00 20 74 68 65 20 6d 61 73 74 65 72 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 54 4f 44 4f 3a 20 .the.master.""".........#.TODO:.
ab20 68 61 6e 64 20 6f 66 66 20 72 6f 6c 65 20 6f 66 20 6d 61 73 74 65 72 20 69 73 20 73 68 61 72 65 hand.off.role.of.master.is.share
ab40 72 20 6c 65 61 76 65 73 0a 20 20 20 20 20 20 20 20 23 20 47 65 74 20 74 68 65 20 50 72 65 73 65 r.leaves.........#.Get.the.Prese
ab60 6e 63 65 20 53 65 72 76 69 63 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 73 65 72 76 69 63 nce.Service.........self.pservic
ab80 65 20 3d 20 70 72 65 73 65 6e 63 65 73 65 72 76 69 63 65 2e 67 65 74 5f 69 6e 73 74 61 6e 63 65 e.=.presenceservice.get_instance
aba0 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 69 74 69 61 74 69 6e 67 20 3d 20 4e 6f 6e ().........self.initiating.=.Non
abc0 65 20 23 20 73 68 61 72 69 6e 67 20 28 54 72 75 65 29 20 6f 72 20 6a 6f 69 6e 69 6e 67 20 28 46 e.#.sharing.(True).or.joining.(F
abe0 61 6c 73 65 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41 64 64 20 6d 79 20 62 75 64 64 79 20 6f 62 alse)..........#.Add.my.buddy.ob
ac00 6a 65 63 74 20 74 6f 20 74 68 65 20 6c 69 73 74 0a 20 20 20 20 20 20 20 20 6f 77 6e 65 72 20 3d ject.to.the.list.........owner.=
ac20 20 73 65 6c 66 2e 70 73 65 72 76 69 63 65 2e 67 65 74 5f 6f 77 6e 65 72 28 29 0a 20 20 20 20 20 .self.pservice.get_owner()......
ac40 20 20 20 73 65 6c 66 2e 6f 77 6e 65 72 20 3d 20 6f 77 6e 65 72 0a 20 20 20 20 20 20 20 20 73 65 ...self.owner.=.owner.........se
ac60 6c 66 2e 74 77 2e 62 75 64 64 69 65 73 2e 61 70 70 65 6e 64 28 73 65 6c 66 2e 6f 77 6e 65 72 29 lf.tw.buddies.append(self.owner)
ac80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 68 61 72 65 20 3d 20 22 22 0a 0a 20 20 20 20 20 .........self._share.=."".......
aca0 20 20 20 73 65 6c 66 2e 63 6f 6e 6e 65 63 74 28 27 73 68 61 72 65 64 27 2c 20 73 65 6c 66 2e 5f ...self.connect('shared',.self._
acc0 73 68 61 72 65 64 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6e 6e 65 63 74 28 shared_cb).........self.connect(
ace0 27 6a 6f 69 6e 65 64 27 2c 20 73 65 6c 66 2e 5f 6a 6f 69 6e 65 64 5f 63 62 29 0a 0a 0a 20 20 20 'joined',.self._joined_cb)......
ad00 20 64 65 66 20 5f 73 65 74 75 70 5f 76 69 73 69 62 69 6c 69 74 79 5f 68 61 6e 64 6c 65 72 28 73 .def._setup_visibility_handler(s
ad20 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 4e 6f 74 69 66 79 20 77 68 65 6e 20 74 68 elf):.........""".Notify.when.th
ad40 65 20 76 69 73 69 62 69 6c 69 74 79 20 73 74 61 74 65 20 63 68 61 6e 67 65 73 20 22 22 22 0a 20 e.visibility.state.changes."""..
ad60 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 5f 65 76 65 6e 74 73 28 67 74 6b 2e 67 64 6b 2e 56 .......self.add_events(gtk.gdk.V
ad80 49 53 49 42 49 4c 49 54 59 5f 4e 4f 54 49 46 59 5f 4d 41 53 4b 29 0a 20 20 20 20 20 20 20 20 73 ISIBILITY_NOTIFY_MASK).........s
ada0 65 6c 66 2e 63 6f 6e 6e 65 63 74 28 22 76 69 73 69 62 69 6c 69 74 79 2d 6e 6f 74 69 66 79 2d 65 elf.connect("visibility-notify-e
adc0 76 65 6e 74 22 2c 20 73 65 6c 66 2e 5f 5f 76 69 73 69 62 69 6c 69 74 79 5f 6e 6f 74 69 66 79 5f vent",.self.__visibility_notify_
ade0 63 62 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 66 69 6c 65 28 73 65 6c 66 2c 20 66 69 cb)......def.write_file(self,.fi
ae00 6c 65 5f 70 61 74 68 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 57 72 69 74 65 20 74 68 65 20 le_path):.........""".Write.the.
ae20 70 72 6f 6a 65 63 74 20 74 6f 20 74 68 65 20 4a 6f 75 72 6e 61 6c 2e 20 22 22 22 0a 20 20 20 20 project.to.the.Journal..""".....
ae40 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 57 72 69 74 65 20 66 69 6c 65 3a 20 25 ...._logger.debug("Write.file:.%
ae60 73 22 20 25 20 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 65 74 s".%.file_path).........self.met
ae80 61 64 61 74 61 5b 27 6d 69 6d 65 5f 74 79 70 65 27 5d 20 3d 20 27 61 70 70 6c 69 63 61 74 69 6f adata['mime_type'].=.'applicatio
aea0 6e 2f 78 2d 74 75 72 74 6c 65 2d 61 72 74 27 0a 20 20 20 20 20 20 20 20 64 61 74 61 5f 74 6f 5f n/x-turtle-art'.........data_to_
aec0 66 69 6c 65 28 73 65 6c 66 2e 74 77 2e 61 73 73 65 6d 62 6c 65 5f 64 61 74 61 5f 74 6f 5f 73 61 file(self.tw.assemble_data_to_sa
aee0 76 65 28 29 2c 20 66 69 6c 65 5f 70 61 74 68 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 5f 66 ve(),.file_path)......def.read_f
af00 69 6c 65 28 73 65 6c 66 2c 20 66 69 6c 65 5f 70 61 74 68 2c 20 72 75 6e 5f 69 74 20 3d 20 54 72 ile(self,.file_path,.run_it.=.Tr
af20 75 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 52 65 61 64 20 61 20 70 72 6f 6a 65 63 74 20 ue):.........""".Read.a.project.
af40 69 6e 20 61 6e 64 20 74 68 65 6e 20 72 75 6e 20 69 74 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 in.and.then.run.it..""".........
af60 69 6d 70 6f 72 74 20 74 61 72 66 69 6c 65 2c 20 6f 73 2c 20 74 65 6d 70 66 69 6c 65 2c 20 73 68 import.tarfile,.os,.tempfile,.sh
af80 75 74 69 6c 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 util..........if.hasattr(self,.'
afa0 74 77 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 tw'):............._logger.debug(
afc0 22 52 65 61 64 20 66 69 6c 65 3a 20 25 73 22 20 25 20 20 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 "Read.file:.%s".%..file_path)...
afe0 20 20 20 20 20 20 20 20 20 20 23 20 43 6f 75 6c 64 20 62 65 20 61 20 67 74 61 72 20 28 6e 65 77 ..........#.Could.be.a.gtar.(new
b000 65 72 20 62 75 69 6c 64 73 29 20 6f 72 20 74 61 72 20 28 37 36 37 29 20 66 69 6c 65 0a 20 20 20 er.builds).or.tar.(767).file....
b020 20 20 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 5f 70 61 74 68 5b 2d 35 3a 5d 20 3d 3d 20 22 2e .........if.file_path[-5:].==.".
b040 67 74 61 72 22 20 6f 72 20 66 69 6c 65 5f 70 61 74 68 5b 2d 34 3a 5d 20 3d 3d 20 22 2e 74 61 72 gtar".or.file_path[-4:].==.".tar
b060 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 5f 66 64 20 3d 20 74 61 72 66 ":.................tar_fd.=.tarf
b080 69 6c 65 2e 6f 70 65 6e 28 66 69 6c 65 5f 70 61 74 68 2c 20 27 72 27 29 0a 20 20 20 20 20 20 20 ile.open(file_path,.'r')........
b0a0 20 20 20 20 20 20 20 20 20 74 6d 70 64 69 72 20 3d 20 74 65 6d 70 66 69 6c 65 2e 6d 6b 64 74 65 .........tmpdir.=.tempfile.mkdte
b0c0 6d 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 mp().................try:.......
b0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 27 6c 6c 20 67 65 74 20 27 74 61 5f 63 6f ..............#.We'll.get.'ta_co
b100 64 65 2e 74 61 27 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 61 20 27 74 61 5f 69 6d 61 67 65 2e de.ta'.and.possibly.a.'ta_image.
b120 70 6e 67 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 62 75 74 20 77 png'.....................#.but.w
b140 65 20 77 69 6c 6c 20 69 67 6e 6f 72 65 20 74 68 65 20 2e 70 6e 67 20 66 69 6c 65 0a 20 20 20 20 e.will.ignore.the..png.file.....
b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 66 20 72 75 6e 5f 69 74 20 69 73 20 54 ................#.If.run_it.is.T
b180 72 75 65 2c 20 77 65 20 77 61 6e 74 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 70 72 6f rue,.we.want.to.create.a.new.pro
b1a0 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 5f 66 64 2e ject.....................tar_fd.
b1c0 65 78 74 72 61 63 74 61 6c 6c 28 74 6d 70 64 69 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 extractall(tmpdir)..............
b1e0 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6c 6f 61 64 5f 66 69 6c 65 73 28 6f 73 2e 70 61 74 .......self.tw.load_files(os.pat
b200 68 2e 6a 6f 69 6e 28 74 6d 70 64 69 72 2c 27 74 61 5f 63 6f 64 65 2e 74 61 27 29 2c 20 5c 0a 20 h.join(tmpdir,'ta_code.ta'),.\..
b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
b240 20 20 20 20 20 20 20 72 75 6e 5f 69 74 29 20 23 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 70 72 .......run_it).#.create.a.new.pr
b260 6f 6a 65 63 74 20 66 6c 61 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c oject.flag.................final
b280 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 75 74 69 6c 2e 72 ly:.....................shutil.r
b2a0 6d 74 72 65 65 28 74 6d 70 64 69 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mtree(tmpdir)...................
b2c0 20 20 74 61 72 5f 66 64 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4f ..tar_fd.close().............#.O
b2e0 74 68 65 72 77 69 73 65 2c 20 61 73 73 75 6d 65 20 69 74 20 69 73 20 61 20 2e 74 61 20 66 69 6c therwise,.assume.it.is.a..ta.fil
b300 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.............else:.............
b320 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 74 72 79 69 6e 67 20 74 6f 20 6f 70 65 ...._logger.debug("trying.to.ope
b340 6e 20 61 20 2e 74 61 20 66 69 6c 65 3a 22 20 2b 20 66 69 6c 65 5f 70 61 74 68 29 0a 20 20 20 20 n.a..ta.file:".+.file_path).....
b360 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 6c 6f 61 64 5f 66 69 6c 65 73 28 66 ............self.tw.load_files(f
b380 69 6c 65 5f 70 61 74 68 2c 20 72 75 6e 5f 69 74 29 0a 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 ile_path,.run_it)...............
b3a0 20 23 20 72 75 6e 20 74 68 65 20 61 63 74 69 76 69 74 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 .#.run.the.activity.............
b3c0 69 66 20 72 75 6e 5f 69 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a if.run_it:.................try:.
b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55 73 65 20 30 2e 38 36 20 74 ....................#.Use.0.86.t
b400 6f 6f 6c 62 61 72 20 64 65 73 69 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oolbar.design...................
b420 20 20 73 65 6c 66 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 69 63 6f 6e 28 22 73 74 6f ..self.stop_button.set_icon("sto
b440 70 69 74 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a piton").................except:.
b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55 73 65 20 70 72 65 2d 30 2e ....................#.Use.pre-0.
b480 38 36 20 74 6f 6f 6c 62 61 72 20 64 65 73 69 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 86.toolbar.design...............
b4a0 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 6a 65 63 74 54 6f 6f 6c 62 61 72 2e 73 74 6f 70 2e 73 ......self.projectToolbar.stop.s
b4c0 65 74 5f 69 63 6f 6e 28 22 73 74 6f 70 69 74 6f 6e 22 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 et_icon("stopiton").............
b4e0 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 72 75 6e 5f 62 75 74 74 6f 6e 28 30 29 0a 20 20 20 20 20 .....self.tw.run_button(0)......
b500 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 ...else:............._logger.deb
b520 75 67 28 22 44 65 66 65 72 72 69 6e 67 20 72 65 61 64 69 6e 67 20 66 69 6c 65 20 25 73 22 20 25 ug("Deferring.reading.file.%s".%
b540 20 20 66 69 6c 65 5f 70 61 74 68 29 0a 0a 20 20 20 20 64 65 66 20 6a 6f 62 6a 65 63 74 5f 6e 65 ..file_path)......def.jobject_ne
b560 77 5f 70 61 74 63 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 53 61 76 65 20 w_patch(self):.........""".Save.
b580 69 6e 73 74 61 6e 63 65 20 74 6f 20 4a 6f 75 72 6e 61 6c 2e 20 22 22 22 0a 20 20 20 20 20 20 20 instance.to.Journal.."""........
b5a0 20 6f 6c 64 6a 20 3d 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 73 65 .oldj.=.self._jobject.........se
b5c0 6c 66 2e 5f 6a 6f 62 6a 65 63 74 20 3d 20 64 61 74 61 73 74 6f 72 65 2e 63 72 65 61 74 65 28 29 lf._jobject.=.datastore.create()
b5e0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b .........self._jobject.metadata[
b600 27 74 69 74 6c 65 27 5d 20 3d 20 6f 6c 64 6a 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c 65 27 'title'].=.oldj.metadata['title'
b620 5d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 ].........self._jobject.metadata
b640 5b 27 74 69 74 6c 65 5f 73 65 74 5f 62 79 5f 75 73 65 72 27 5d 20 3d 20 5c 0a 20 20 20 20 20 20 ['title_set_by_user'].=.\.......
b660 20 20 20 20 20 20 6f 6c 64 6a 2e 6d 65 74 61 64 61 74 61 5b 27 74 69 74 6c 65 5f 73 65 74 5f 62 ......oldj.metadata['title_set_b
b680 79 5f 75 73 65 72 27 5d 0a 20 20 20 20 20 20 20 20 23 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 y_user'].........#.self._jobject
b6a0 2e 6d 65 74 61 64 61 74 61 5b 27 61 63 74 69 76 69 74 79 27 5d 20 3d 20 73 65 6c 66 2e 67 65 74 .metadata['activity'].=.self.get
b6c0 5f 73 65 72 76 69 63 65 5f 6e 61 6d 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f _service_name().........self._jo
b6e0 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 61 63 74 69 76 69 74 79 5f 69 64 27 5d 20 3d 20 bject.metadata['activity_id'].=.
b700 73 65 6c 66 2e 67 65 74 5f 69 64 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a self.get_id().........self._jobj
b720 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 6b 65 65 70 27 5d 20 3d 20 27 30 27 0a 20 20 20 20 20 ect.metadata['keep'].=.'0'......
b740 20 20 20 23 20 49 73 20 74 68 69 73 20 74 68 65 20 63 6f 72 72 65 63 74 20 73 79 6e 74 61 78 20 ...#.Is.this.the.correct.syntax.
b760 66 6f 72 20 73 61 76 69 6e 67 20 74 68 65 20 62 75 64 64 69 65 73 20 6c 69 73 74 3f 0a 20 20 20 for.saving.the.buddies.list?....
b780 20 20 20 20 20 23 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 62 .....#.self._jobject.metadata['b
b7a0 75 64 64 69 65 73 27 5d 20 3d 20 73 65 6c 66 2e 74 77 2e 62 75 64 64 69 65 73 0a 20 20 20 20 20 uddies'].=.self.tw.buddies......
b7c0 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 6d 65 74 61 64 61 74 61 5b 27 70 72 65 76 69 ...self._jobject.metadata['previ
b7e0 65 77 27 5d 20 3d 20 27 27 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e ew'].=.''.........self._jobject.
b800 6d 65 74 61 64 61 74 61 5b 27 69 63 6f 6e 2d 63 6f 6c 6f 72 27 5d 20 3d 20 70 72 6f 66 69 6c 65 metadata['icon-color'].=.profile
b820 2e 67 65 74 5f 63 6f 6c 6f 72 28 29 2e 74 6f 5f 73 74 72 69 6e 67 28 29 0a 20 20 20 20 20 20 20 .get_color().to_string()........
b840 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 66 69 6c 65 5f 70 61 74 68 20 3d 20 27 27 0a 20 20 .self._jobject.file_path.=.''...
b860 20 20 20 20 20 20 64 61 74 61 73 74 6f 72 65 2e 77 72 69 74 65 28 73 65 6c 66 2e 5f 6a 6f 62 6a ......datastore.write(self._jobj
b880 65 63 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 79 5f 68 61 6e 64 6c ect,.................reply_handl
b8a0 65 72 3d 73 65 6c 66 2e 5f 69 6e 74 65 72 6e 61 6c 5f 6a 6f 62 6a 65 63 74 5f 63 72 65 61 74 65 er=self._internal_jobject_create
b8c0 5f 63 62 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 5f 68 61 6e 64 6c _cb,.................error_handl
b8e0 65 72 3d 73 65 6c 66 2e 5f 69 6e 74 65 72 6e 61 6c 5f 6a 6f 62 6a 65 63 74 5f 65 72 72 6f 72 5f er=self._internal_jobject_error_
b900 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6a 6f 62 6a 65 63 74 2e 64 65 73 74 72 6f cb).........self._jobject.destro
b920 79 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 63 6f 70 79 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 y()......def._copy_cb(self,.butt
b940 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 63 6c 69 70 42 6f 61 72 64 20 3d 20 67 74 6b 2e 43 6c 69 on):.........clipBoard.=.gtk.Cli
b960 70 62 6f 61 72 64 28 29 0a 20 20 20 20 20 20 20 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 pboard()........._logger.debug("
b980 73 65 72 69 61 6c 69 7a 65 20 74 68 65 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 63 6f 70 79 20 74 serialize.the.project.and.copy.t
b9a0 6f 20 63 6c 69 70 62 6f 61 72 64 22 29 0a 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 73 65 6c o.clipboard").........data.=.sel
b9c0 66 2e 74 77 2e 61 73 73 65 6d 62 6c 65 5f 64 61 74 61 5f 74 6f 5f 73 61 76 65 28 46 61 6c 73 65 f.tw.assemble_data_to_save(False
b9e0 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 20 ,.False).........if.data.is.not.
ba00 5b 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 64 61 74 61 5f 74 6f 5f 73 []:.............text.=.data_to_s
ba20 74 72 69 6e 67 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 70 42 6f 61 72 tring(data).............clipBoar
ba40 64 2e 73 65 74 5f 74 65 78 74 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 d.set_text(text).........self.tw
ba60 2e 70 61 73 74 65 5f 6f 66 66 73 65 74 20 3d 20 32 30 0a 0a 20 20 20 20 64 65 66 20 5f 70 61 73 .paste_offset.=.20......def._pas
ba80 74 65 5f 63 62 28 73 65 6c 66 2c 20 62 75 74 74 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 63 6c 69 te_cb(self,.button):.........cli
baa0 70 42 6f 61 72 64 20 3d 20 67 74 6b 2e 43 6c 69 70 62 6f 61 72 64 28 29 0a 20 20 20 20 20 20 20 pBoard.=.gtk.Clipboard()........
bac0 20 5f 6c 6f 67 67 65 72 2e 64 65 62 75 67 28 22 70 61 73 74 65 20 74 6f 20 74 68 65 20 70 72 6f ._logger.debug("paste.to.the.pro
bae0 6a 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 63 6c 69 70 42 6f 61 72 64 2e ject").........text.=.clipBoard.
bb00 77 61 69 74 5f 66 6f 72 5f 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 20 wait_for_text().........if.text.
bb20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 is.not.None:.............if.self
bb40 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 62 6c 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 .tw.selected_blk.is.not.None.and
bb60 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 6c 65 63 74 65 \................self.tw.selecte
bb80 64 5f 62 6c 6b 2e 6e 61 6d 65 20 3d 3d 20 27 73 74 72 69 6e 67 27 3a 0a 20 20 20 20 20 20 20 20 d_blk.name.==.'string':.........
bba0 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 74 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 ........for.i.in.text:..........
bbc0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 70 72 6f 63 65 73 73 5f 61 6c 70 68 61 ...........self.tw.process_alpha
bbe0 6e 75 6d 65 72 69 63 5f 69 6e 70 75 74 28 69 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 numeric_input(i,.-1)............
bc00 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 73 65 6c 65 63 74 65 64 5f 62 6c 6b 2e 72 65 73 69 7a 65 .....self.tw.selected_blk.resize
bc20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ().............else:............
bc40 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 70 72 6f 63 65 73 73 5f 64 61 74 61 28 64 61 74 61 5f 66 .....self.tw.process_data(data_f
bc60 72 6f 6d 5f 73 74 72 69 6e 67 28 74 65 78 74 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rom_string(text),...............
bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 77 2e 70 .......................self.tw.p
bca0 61 73 74 65 5f 6f 66 66 73 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c aste_offset).................sel
bcc0 66 2e 74 77 2e 70 61 73 74 65 5f 6f 66 66 73 65 74 20 2b 3d 20 32 30 0a 0a 63 6c 61 73 73 20 43 f.tw.paste_offset.+=.20..class.C
bce0 68 61 74 54 75 62 65 28 45 78 70 6f 72 74 65 64 47 4f 62 6a 65 63 74 29 3a 0a 20 0a 20 20 20 20 hatTube(ExportedGObject):.......
bd00 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 75 62 65 2c 20 69 73 5f 69 6e 69 74 def.__init__(self,.tube,.is_init
bd20 69 61 74 6f 72 2c 20 73 74 61 63 6b 5f 72 65 63 65 69 76 65 64 5f 63 62 29 3a 0a 20 20 20 20 20 iator,.stack_received_cb):......
bd40 20 20 20 22 22 22 43 6c 61 73 73 20 66 6f 72 20 73 65 74 74 69 6e 67 20 75 70 20 74 75 62 65 20 ..."""Class.for.setting.up.tube.
bd60 66 6f 72 20 73 68 61 72 69 6e 67 2e 22 22 22 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 43 68 for.sharing.""".........super(Ch
bd80 61 74 54 75 62 65 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 74 75 62 65 2c 20 50 41 54 atTube,.self).__init__(tube,.PAT
bda0 48 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 75 62 65 20 3d 20 74 75 62 65 0a 20 20 20 20 H).........self.tube.=.tube.....
bdc0 20 20 20 20 73 65 6c 66 2e 69 73 5f 69 6e 69 74 69 61 74 6f 72 20 3d 20 69 73 5f 69 6e 69 74 69 ....self.is_initiator.=.is_initi
bde0 61 74 6f 72 20 23 20 41 72 65 20 77 65 20 73 68 61 72 69 6e 67 20 6f 72 20 6a 6f 69 6e 69 6e 67 ator.#.Are.we.sharing.or.joining
be00 20 61 63 74 69 76 69 74 79 3f 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 5f 72 65 .activity?.........self.stack_re
be20 63 65 69 76 65 64 5f 63 62 20 3d 20 73 74 61 63 6b 5f 72 65 63 65 69 76 65 64 5f 63 62 0a 20 20 ceived_cb.=.stack_received_cb...
be40 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 27 27 0a 0a 20 20 20 20 20 20 20 20 73 ......self.stack.=.''..........s
be60 65 6c 66 2e 74 75 62 65 2e 61 64 64 5f 73 69 67 6e 61 6c 5f 72 65 63 65 69 76 65 72 28 73 65 6c elf.tube.add_signal_receiver(sel
be80 66 2e 73 65 6e 64 5f 73 74 61 63 6b 5f 63 62 2c 20 27 53 65 6e 64 54 65 78 74 27 2c 20 49 46 41 f.send_stack_cb,.'SendText',.IFA
bea0 43 45 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 3d 50 41 54 48 2c 20 73 65 6e CE,.\.............path=PATH,.sen
bec0 64 65 72 5f 6b 65 79 77 6f 72 64 3d 27 73 65 6e 64 65 72 27 29 0a 0a 20 20 20 20 64 65 66 20 73 der_keyword='sender')......def.s
bee0 65 6e 64 5f 73 74 61 63 6b 5f 63 62 28 73 65 6c 66 2c 20 74 65 78 74 2c 20 73 65 6e 64 65 72 3d end_stack_cb(self,.text,.sender=
bf00 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6e 64 65 72 20 3d 3d 20 73 65 6c 66 None):.........if.sender.==.self
bf20 2e 74 75 62 65 2e 67 65 74 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 28 29 3a 0a 20 20 20 20 20 20 20 .tube.get_unique_name():........
bf40 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d .....return.........self.stack.=
bf60 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 5f 72 65 63 65 69 76 65 .text.........self.stack_receive
bf80 64 5f 63 62 28 74 65 78 74 29 0a 0a 20 20 20 20 40 73 69 67 6e 61 6c 28 64 62 75 73 5f 69 6e 74 d_cb(text)......@signal(dbus_int
bfa0 65 72 66 61 63 65 3d 49 46 41 43 45 2c 20 73 69 67 6e 61 74 75 72 65 3d 27 73 27 29 0a 20 20 20 erface=IFACE,.signature='s')....
bfc0 20 64 65 66 20 53 65 6e 64 54 65 78 74 28 73 65 6c 66 2c 20 74 65 78 74 29 3a 0a 20 20 20 20 20 .def.SendText(self,.text):......
bfe0 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 74 65 78 74 0a 0a 63 6c 61 73 73 20 56 69 65 77 ...self.stack.=.text..class.View
c000 54 6f 6f 6c 62 61 72 28 67 74 6b 2e 54 6f 6f 6c 62 61 72 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f Toolbar(gtk.Toolbar):.....def.__
c020 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 63 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 56 69 init__(self,.pc):.........""".Vi
c040 65 77 20 74 6f 6f 6c 62 61 72 3a 20 66 75 6c 6c 73 63 72 65 65 6e 2c 20 43 61 72 74 65 73 69 61 ew.toolbar:.fullscreen,.Cartesia
c060 6e 2c 20 70 6f 6c 61 72 2c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 22 22 22 0a 20 20 20 20 20 20 n,.polar,.coordinates.""".......
c080 20 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 ..gtk.Toolbar.__init__(self)....
c0a0 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 20 3d 20 70 63 0a 0a 20 20 20 20 20 20 20 .....self.activity.=.pc.........
c0c0 20 23 20 66 75 6c 6c 20 73 63 72 65 65 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 .#.full.screen.........self.acti
c0e0 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 vity.fullscreen_button.=.ToolBut
c100 74 6f 6e 28 20 22 76 69 65 77 2d 66 75 6c 6c 73 63 72 65 65 6e 22 20 29 0a 20 20 20 20 20 20 20 ton(."view-fullscreen".)........
c120 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e .self.activity.fullscreen_button
c140 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 46 75 6c 6c 73 63 72 65 65 6e 27 29 29 0a 20 20 .set_tooltip(_('Fullscreen'))...
c160 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 ......self.activity.fullscreen_b
c180 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 utton.props.sensitive.=.True....
c1a0 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 .....try:.............self.activ
c1c0 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 ity.fullscreen_button.props.acce
c1e0 6c 65 72 61 74 6f 72 20 3d 20 27 3c 41 6c 74 3e 45 6e 74 65 72 27 0a 20 20 20 20 20 20 20 20 65 lerator.=.'<Alt>Enter'.........e
c200 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 xcept:.............pass.........
c220 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2e self.activity.fullscreen_button.
c240 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 connect('clicked',.\............
c260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c280 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 66 75 6c 6c 73 63 72 65 65 6e .....self.activity.do_fullscreen
c2a0 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 _cb).........self.insert(self.ac
c2c0 74 69 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 tivity.fullscreen_button,.-1)...
c2e0 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 66 75 6c 6c 73 63 72 65 65 6e 5f 62 ......self.activity.fullscreen_b
c300 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 43 61 72 74 65 73 69 61 utton.show()..........#.Cartesia
c320 6e 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 n.coordinates.........self.activ
c340 69 74 79 2e 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f ity.cartesian_button.=.ToolButto
c360 6e 28 20 22 76 69 65 77 2d 43 61 72 74 65 73 69 61 6e 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 n(."view-Cartesian".).........se
c380 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 lf.activity.cartesian_button.set
c3a0 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 43 61 72 74 65 73 69 61 6e 20 63 6f 6f 72 64 69 6e 61 74 65 _tooltip(_('Cartesian.coordinate
c3c0 73 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 61 72 74 65 s')).........self.activity.carte
c3e0 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 sian_button.props.sensitive.=.Tr
c400 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 61 72 74 65 73 69 ue.........self.activity.cartesi
c420 61 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 an_button.connect('clicked',.\..
c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f ...............self.activity.do_
c480 63 61 72 74 65 73 69 61 6e 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 cartesian_cb).........self.inser
c4a0 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 61 72 74 65 73 69 61 6e 5f 62 75 74 74 6f 6e t(self.activity.cartesian_button
c4c0 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 61 72 74 ,.-1).........self.activity.cart
c4e0 65 73 69 61 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 70 esian_button.show()..........#.p
c500 6f 6c 61 72 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 olar.coordinates.........self.ac
c520 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e tivity.polar_button.=.ToolButton
c540 28 20 22 76 69 65 77 2d 70 6f 6c 61 72 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 (."view-polar".).........self.ac
c560 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 tivity.polar_button.set_tooltip(
c580 5f 28 27 50 6f 6c 61 72 20 63 6f 6f 72 64 69 6e 61 74 65 73 27 29 29 0a 20 20 20 20 20 20 20 20 _('Polar.coordinates')).........
c5a0 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 self.activity.polar_button.props
c5c0 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 .sensitive.=.True.........self.a
c5e0 63 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c ctivity.polar_button.connect('cl
c600 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icked',.\.......................
c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 .....................self.activi
c640 74 79 2e 64 6f 5f 70 6f 6c 61 72 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 ty.do_polar_cb).........self.ins
c660 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f 62 75 74 74 6f 6e 2c 20 ert(self.activity.polar_button,.
c680 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 6f 6c 61 72 5f -1).........self.activity.polar_
c6a0 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 button.show()..........separator
c6c0 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 .=.gtk.SeparatorToolItem()......
c6e0 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a 20 20 20 20 ...separator.set_draw(True).....
c700 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 ....self.insert(separator,.-1)..
c720 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 .......separator.show().........
c740 20 23 20 43 6f 6f 72 64 69 6e 61 74 65 73 20 6c 61 62 65 6c 0a 20 20 20 20 20 20 20 20 73 65 6c .#.Coordinates.label.........sel
c760 66 2e 61 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c 61 62 65 6c 20 3d 20 5c f.activity.coordinates_label.=.\
c780 0a 20 20 20 20 20 20 20 20 20 20 67 74 6b 2e 4c 61 62 65 6c 28 5f 28 22 78 63 6f 72 22 29 20 2b ...........gtk.Label(_("xcor").+
c7a0 20 22 3d 20 30 20 22 20 2b 20 5f 28 22 79 63 6f 72 22 29 20 2b 20 22 3d 20 30 20 22 20 2b 20 5c ."=.0.".+._("ycor").+."=.0.".+.\
c7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 22 68 65 61 64 69 6e 67 22 ....................._("heading"
c7e0 29 20 2b 20 22 3d 20 30 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 ).+."=.0").........self.activity
c800 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c 61 62 65 6c 2e 73 68 6f 77 28 29 0a 20 20 20 20 20 20 .coordinates_label.show().......
c820 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c ..self.activity.coordinates_tool
c840 69 74 65 6d 20 3d 20 67 74 6b 2e 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 73 65 item.=.gtk.ToolItem().........se
c860 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c 69 74 65 6d lf.activity.coordinates_toolitem
c880 2e 61 64 64 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 6c .add(self.activity.coordinates_l
c8a0 61 62 65 6c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 abel).........self.insert(self.a
c8c0 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 74 65 73 5f 74 6f 6f 6c 69 74 65 6d 2c 20 2d 31 ctivity.coordinates_toolitem,.-1
c8e0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 63 6f 6f 72 64 69 6e 61 ).........self.activity.coordina
c900 74 65 73 5f 74 6f 6f 6c 69 74 65 6d 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 tes_toolitem.show()..........sep
c920 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 arator.=.gtk.SeparatorToolItem()
c940 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 46 61 6c 73 .........separator.set_draw(Fals
c960 65 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 65 78 70 61 6e 64 28 e).........separator.set_expand(
c980 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 True).........self.insert(separa
c9a0 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 tor,.-1).........separator.show(
c9c0 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f )..........self.activity.resize_
c9e0 75 70 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 72 65 73 69 7a 65 2b 27 up_button.=.ToolButton('resize+'
ca00 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 75 ).........self.activity.resize_u
ca20 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 47 72 6f 77 20 62 6c 6f p_button.set_tooltip(_("Grow.blo
ca40 63 6b 73 22 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 cks")).........self.activity.res
ca60 69 7a 65 5f 75 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c ize_up_button.connect('clicked',
ca80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
caa0 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 72 65 73 69 7a 65 5f 62 .......self.activity.do_resize_b
cac0 6c 6f 63 6b 73 5f 63 62 2c 20 31 2e 35 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 locks_cb,.1.5).........self.inse
cae0 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 75 70 5f 62 75 74 74 6f rt(self.activity.resize_up_butto
cb00 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 n,.-1).........self.activity.res
cb20 69 7a 65 5f 75 70 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 ize_up_button.show()..........se
cb40 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 64 6f 77 6e 5f 62 75 74 74 6f 6e 20 3d lf.activity.resize_down_button.=
cb60 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 72 65 73 69 7a 65 2d 27 29 0a 20 20 20 20 20 20 20 20 73 .ToolButton('resize-').........s
cb80 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 64 6f 77 6e 5f 62 75 74 74 6f 6e 2e elf.activity.resize_down_button.
cba0 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 53 68 72 69 6e 6b 20 62 6c 6f 63 6b 73 22 29 29 0a set_tooltip(_("Shrink.blocks")).
cbc0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 64 6f 77 ........self.activity.resize_dow
cbe0 6e 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 0a 20 20 20 20 n_button.connect('clicked',.....
cc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .............................sel
cc20 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 72 65 73 69 7a 65 5f 62 6c 6f 63 6b 73 5f 63 62 2c 20 f.activity.do_resize_blocks_cb,.
cc40 30 2e 36 36 37 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 0.667).........self.insert(self.
cc60 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 64 6f 77 6e 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 activity.resize_down_button,.-1)
cc80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 69 7a 65 5f 64 6f .........self.activity.resize_do
cca0 77 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 wn_button.show()..........self.a
ccc0 63 74 69 76 69 74 79 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 ctivity.rescale_button.=.ToolBut
cce0 74 6f 6e 28 27 65 78 70 61 6e 64 2d 63 6f 6f 72 64 69 6e 61 74 65 73 27 29 0a 20 20 20 20 20 20 ton('expand-coordinates').......
cd00 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2e 73 ..self.activity.rescale_button.s
cd20 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 22 52 65 73 63 61 6c 65 20 63 6f 6f 72 64 69 6e 61 74 65 et_tooltip(_("Rescale.coordinate
cd40 73 20 75 70 22 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 s.up")).........self.activity.re
cd60 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 scale_button.connect('clicked',.
cd80 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \...............................
cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f ...............self.activity.do_
cdc0 72 65 73 63 61 6c 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 rescale_cb).........self.insert(
cde0 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 63 61 6c 65 5f 62 75 74 74 6f 6e 2c 20 2d 31 self.activity.rescale_button,.-1
ce00 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 65 73 63 61 6c 65 5f ).........self.activity.rescale_
ce20 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 63 6c 61 73 73 20 45 64 69 74 54 6f 6f 6c 62 61 72 button.show()..class.EditToolbar
ce40 38 34 28 67 74 6b 2e 54 6f 6f 6c 62 61 72 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 84(gtk.Toolbar):.....def.__init_
ce60 5f 28 73 65 6c 66 2c 20 70 63 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 45 64 69 74 20 74 6f _(self,.pc):.........""".Edit.to
ce80 6f 6c 62 61 72 3a 20 63 6f 70 79 20 61 6e 64 20 70 61 73 74 65 20 74 65 78 74 20 61 6e 64 20 73 olbar:.copy.and.paste.text.and.s
cea0 74 61 63 6b 73 20 22 22 22 0a 20 20 20 20 20 20 20 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 2e 5f 5f tacks.""".........gtk.Toolbar.__
cec0 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 init__(self).........self.activi
cee0 74 79 20 3d 20 70 63 0a 0a 20 20 20 20 20 20 20 20 23 20 43 6f 70 79 20 62 75 74 74 6f 6e 0a 20 ty.=.pc..........#.Copy.button..
cf00 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 .......self.copy.=.ToolButton(."
cf20 65 64 69 74 2d 63 6f 70 79 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 2e 73 edit-copy".).........self.copy.s
cf40 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 43 6f 70 79 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 et_tooltip(_('Copy')).........se
cf60 6c 66 2e 63 6f 70 79 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 lf.copy.props.sensitive.=.True..
cf80 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 .......self.copy.connect('clicke
cfa0 64 27 2c 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 5f 63 6f 70 79 5f 63 62 29 0a 20 20 20 20 d',.self.activity._copy_cb).....
cfc0 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 2e 70 ....try:.............self.copy.p
cfe0 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 43 74 72 6c 3e 63 27 0a 20 20 20 rops.accelerator.=.'<Ctrl>c'....
d000 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 .....except:.............pass...
d020 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 63 6f 70 79 2c 20 2d 31 29 ......self.insert(self.copy,.-1)
d040 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 .........self.copy.show().......
d060 20 20 20 23 20 50 61 73 74 65 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 ...#.Paste.button.........self.p
d080 61 73 74 65 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 65 64 69 74 2d 70 61 73 74 65 22 20 aste.=.ToolButton(."edit-paste".
d0a0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 74 65 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 ).........self.paste.set_tooltip
d0c0 28 5f 28 27 50 61 73 74 65 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 74 65 2e (_('Paste')).........self.paste.
d0e0 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 props.sensitive.=.True.........s
d100 65 6c 66 2e 70 61 73 74 65 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c elf.paste.connect('clicked',.sel
d120 66 2e 61 63 74 69 76 69 74 79 2e 5f 70 61 73 74 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 f.activity._paste_cb).........tr
d140 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 74 65 2e 70 72 6f 70 73 2e y:.............self.paste.props.
d160 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 43 74 72 6c 3e 76 27 0a 20 20 20 20 20 20 20 20 accelerator.=.'<Ctrl>v'.........
d180 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 except:.............pass........
d1a0 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 70 61 73 74 65 2c 20 2d 31 29 0a 20 20 20 .self.insert(self.paste,.-1)....
d1c0 20 20 20 20 20 73 65 6c 66 2e 70 61 73 74 65 2e 73 68 6f 77 28 29 0a 0a 63 6c 61 73 73 20 48 65 .....self.paste.show()..class.He
d1e0 6c 70 54 6f 6f 6c 62 61 72 28 67 74 6b 2e 54 6f 6f 6c 62 61 72 29 3a 0a 20 20 20 20 64 65 66 20 lpToolbar(gtk.Toolbar):.....def.
d200 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 63 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 __init__(self,.pc):.........""".
d220 48 65 6c 70 20 74 6f 6f 6c 62 61 72 3a 20 4a 75 73 74 20 61 6e 20 69 63 6f 6e 20 61 6e 64 20 61 Help.toolbar:.Just.an.icon.and.a
d240 20 6c 61 62 65 6c 20 66 6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 68 6f 76 65 72 20 68 65 6c 70 .label.for.displaying.hover.help
d260 20 22 22 22 0a 20 20 20 20 20 20 20 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 2e 5f 5f 69 6e 69 74 5f .""".........gtk.Toolbar.__init_
d280 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 20 3d 20 _(self).........self.activity.=.
d2a0 70 63 0a 0a 20 20 20 20 20 20 20 20 23 20 48 65 6c 70 20 69 63 6f 6e 0a 20 20 20 20 20 20 20 20 pc..........#.Help.icon.........
d2c0 73 65 6c 66 2e 68 65 6c 70 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 68 65 6c 70 2d 74 6f self.help.=.ToolButton(."help-to
d2e0 6f 6c 62 61 72 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 70 2e 70 72 6f 70 73 olbar".).........self.help.props
d300 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e .sensitive.=.False.........self.
d320 69 6e 73 65 72 74 28 73 65 6c 66 2e 68 65 6c 70 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 insert(self.help,.-1).........se
d340 6c 66 2e 68 65 6c 70 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 48 65 6c 70 20 6c lf.help.show()..........#.Help.l
d360 61 62 65 6c 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 abel.........self.activity.hover
d380 5f 68 65 6c 70 5f 6c 61 62 65 6c 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 67 74 6b 2e 4c 61 _help_label.=.\...........gtk.La
d3a0 62 65 6c 28 5f 28 22 4d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 20 6f 76 65 72 20 74 68 65 20 bel(_("Move.the.cursor.over.the.
d3c0 6f 72 61 6e 67 65 20 70 61 6c 65 74 74 65 20 66 6f 72 20 68 65 6c 70 2e 22 29 29 0a 20 20 20 20 orange.palette.for.help.")).....
d3e0 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 5f 68 65 6c 70 5f 6c 61 62 ....self.activity.hover_help_lab
d400 65 6c 2e 73 65 74 5f 6c 69 6e 65 5f 77 72 61 70 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 el.set_line_wrap(True).........s
d420 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 5f 68 65 6c 70 5f 6c 61 62 65 6c 2e 73 68 elf.activity.hover_help_label.sh
d440 6f 77 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 ow().........self.activity.hover
d460 5f 74 6f 6f 6c 69 74 65 6d 20 3d 20 67 74 6b 2e 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 _toolitem.=.gtk.ToolItem()......
d480 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 74 65 6d 2e ...self.activity.hover_toolitem.
d4a0 61 64 64 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 5f 68 65 6c 70 5f 6c 61 62 add(self.activity.hover_help_lab
d4c0 65 6c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 el).........self.insert(self.act
d4e0 69 76 69 74 79 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 74 65 6d 2c 20 2d 31 29 0a 20 20 20 20 20 20 ivity.hover_toolitem,.-1).......
d500 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 68 6f 76 65 72 5f 74 6f 6f 6c 69 74 65 6d 2e 73 ..self.activity.hover_toolitem.s
d520 68 6f 77 28 29 0a 0a 63 6c 61 73 73 20 53 61 76 65 41 73 54 6f 6f 6c 62 61 72 28 67 74 6b 2e 54 how()..class.SaveAsToolbar(gtk.T
d540 6f 6f 6c 62 61 72 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 oolbar):.....def.__init__(self,.
d560 70 63 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 20 53 61 76 65 41 73 20 74 6f 6f 6c 62 61 72 20 pc):.........""".SaveAs.toolbar.
d580 22 22 22 0a 20 20 20 20 20 20 20 20 67 74 6b 2e 54 6f 6f 6c 62 61 72 2e 5f 5f 69 6e 69 74 5f 5f """.........gtk.Toolbar.__init__
d5a0 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 20 3d 20 70 (self).........self.activity.=.p
d5c0 63 0a 0a 20 20 20 20 20 20 20 20 23 20 48 54 4d 4c 20 73 61 76 65 20 73 6f 75 72 63 65 20 62 75 c..........#.HTML.save.source.bu
d5e0 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f tton.........self.activity.save_
d600 61 73 5f 68 74 6d 6c 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 68 74 6d 6c 6f 66 66 22 20 as_html.=.ToolButton(."htmloff".
d620 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f ).........self.activity.save_as_
d640 68 74 6d 6c 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 61 76 65 20 61 73 20 48 54 4d 4c html.set_tooltip(_('Save.as.HTML
d660 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 ')).........self.activity.save_a
d680 73 5f 68 74 6d 6c 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 s_html.props.sensitive.=.True...
d6a0 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c ......self.activity.save_as_html
d6c0 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 .connect('clicked',.\...........
d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
d700 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 73 61 76 65 5f 61 73 5f 68 74 6d 6c 5f 63 .self.activity.do_save_as_html_c
d720 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 b).........self.insert(self.acti
d740 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 vity.save_as_html,.-1).........s
d760 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 68 74 6d 6c 2e 73 68 6f 77 28 29 elf.activity.save_as_html.show()
d780 0a 0a 20 20 20 20 20 20 20 20 23 20 42 65 72 6b 65 6c 65 79 20 4c 6f 67 6f 20 73 61 76 65 20 73 ..........#.Berkeley.Logo.save.s
d7a0 6f 75 72 63 65 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 ource.button.........self.activi
d7c0 74 79 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 6c ty.save_as_logo.=.ToolButton(."l
d7e0 6f 67 6f 2d 73 61 76 65 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 ogo-saveoff".).........self.acti
d800 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 vity.save_as_logo.set_tooltip(_(
d820 27 53 61 76 65 20 4c 6f 67 6f 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 'Save.Logo')).........self.activ
d840 69 74 79 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 ity.save_as_logo.props.sensitive
d860 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 .=.True.........self.activity.sa
d880 76 65 5f 61 73 5f 6c 6f 67 6f 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a ve_as_logo.connect('clicked',.\.
d8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
d8c0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 73 61 76 65 ...........self.activity.do_save
d8e0 5f 61 73 5f 6c 6f 67 6f 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 _as_logo_cb).........self.insert
d900 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 6c 6f 67 6f 2c 20 2d 31 29 (self.activity.save_as_logo,.-1)
d920 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 6c .........self.activity.save_as_l
d940 6f 67 6f 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 53 61 76 65 20 61 73 20 69 6d ogo.show()..........#.Save.as.im
d960 61 67 65 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 age.button.........self.activity
d980 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 69 6d .save_as_image.=.ToolButton(."im
d9a0 61 67 65 2d 73 61 76 65 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 age-saveoff".).........self.acti
d9c0 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f vity.save_as_image.set_tooltip(_
d9e0 28 27 53 61 76 65 20 61 73 20 69 6d 61 67 65 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ('Save.as.image')).........self.
da00 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2e 70 72 6f 70 73 2e 73 65 6e activity.save_as_image.props.sen
da20 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 sitive.=.True.........self.activ
da40 69 74 79 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b ity.save_as_image.connect('click
da60 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed',.\..........................
da80 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 73 61 76 65 5f ..........self.activity.do_save_
daa0 61 73 5f 69 6d 61 67 65 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 as_image_cb).........self.insert
dac0 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f 69 6d 61 67 65 2c 20 2d 31 (self.activity.save_as_image,.-1
dae0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 76 65 5f 61 73 5f ).........self.activity.save_as_
db00 69 6d 61 67 65 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 image.show()..........separator.
db20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 =.gtk.SeparatorToolItem().......
db40 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a 20 20 20 20 20 ..separator.set_draw(True)......
db60 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 ...self.insert(separator,.-1)...
db80 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 ......separator.show()..........
dba0 23 20 50 69 70 70 79 20 6c 6f 61 64 20 6d 79 62 6c 6f 63 6b 20 73 6f 75 72 63 65 20 62 75 74 74 #.Pippy.load.myblock.source.butt
dbc0 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f 70 79 on.........self.activity.load_py
dbe0 74 68 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 70 69 70 70 79 2d 6f 70 65 6e 6f 66 thon.=.ToolButton(."pippy-openof
dc00 66 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f f".).........self.activity.load_
dc20 70 79 74 68 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 4c 6f 61 64 20 6d 79 20 62 6c python.set_tooltip(_('Load.my.bl
dc40 6f 63 6b 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 ock')).........self.activity.loa
dc60 64 5f 70 79 74 68 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a d_python.props.sensitive.=.True.
dc80 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f 70 79 74 68 6f ........self.activity.load_pytho
dca0 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 n.connect('clicked',.\..........
dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
dce0 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 6c 6f 61 64 5f 70 79 74 68 6f 6e 5f 63 62 .self.activity.do_load_python_cb
dd00 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 ).........self.insert(self.activ
dd20 69 74 79 2e 6c 6f 61 64 5f 70 79 74 68 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c ity.load_python,.-1).........sel
dd40 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f 70 79 74 68 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 f.activity.load_python.show()...
dd60 20 20 20 20 20 20 20 23 20 4f 70 65 6e 20 54 41 20 70 72 6f 6a 65 63 74 20 66 72 6f 6d 20 74 68 .......#.Open.TA.project.from.th
dd80 65 20 4a 6f 75 72 6e 61 6c 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 e.Journal..........self.activity
dda0 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 27 6c .load_ta_project.=.ToolButton('l
ddc0 6f 61 64 2d 66 72 6f 6d 2d 6a 6f 75 72 6e 61 6c 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e oad-from-journal').........self.
dde0 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 2e 73 65 74 5f 74 6f 6f activity.load_ta_project.set_too
de00 6c 74 69 70 28 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ltip(\..........................
de20 20 20 20 20 20 20 20 20 20 5f 28 22 49 6d 70 6f 72 74 20 70 72 6f 6a 65 63 74 20 66 72 6f 6d 20 ........._("Import.project.from.
de40 74 68 65 20 4a 6f 75 72 6e 61 6c 22 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 the.Journal")).........self.acti
de60 76 69 74 79 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 2e 70 72 6f 70 73 2e 73 65 6e 73 69 vity.load_ta_project.props.sensi
de80 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 tive.=.True.........self.activit
dea0 79 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b y.load_ta_project.connect('click
dec0 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed',.\..........................
dee0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 6c 6f 61 ............self.activity.do_loa
df00 64 5f 74 61 5f 70 72 6f 6a 65 63 74 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e d_ta_project_cb).........self.in
df20 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f 61 64 5f 74 61 5f 70 72 6f 6a 65 sert(self.activity.load_ta_proje
df40 63 74 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6c 6f ct,.-1).........self.activity.lo
df60 61 64 5f 74 61 5f 70 72 6f 6a 65 63 74 2e 73 68 6f 77 28 29 0a 0a 0a 63 6c 61 73 73 20 50 72 6f ad_ta_project.show()...class.Pro
df80 6a 65 63 74 54 6f 6f 6c 62 61 72 28 67 74 6b 2e 54 6f 6f 6c 62 61 72 29 3a 0a 0a 20 20 20 20 64 jectToolbar(gtk.Toolbar):......d
dfa0 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 63 29 3a 0a 20 20 20 20 20 20 20 20 22 ef.__init__(self,.pc):........."
dfc0 22 22 20 50 72 6f 6a 65 63 74 20 74 6f 6f 6c 62 61 72 20 22 22 22 0a 20 20 20 20 20 20 20 20 67 "".Project.toolbar.""".........g
dfe0 74 6b 2e 54 6f 6f 6c 62 61 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 tk.Toolbar.__init__(self).......
e000 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 20 3d 20 70 63 0a 0a 20 20 20 20 20 20 20 20 23 20 ..self.activity.=.pc..........#.
e020 70 61 6c 65 74 74 65 20 62 75 74 74 6f 6e 20 28 62 6c 6f 63 6b 73 29 0a 20 20 20 20 20 20 20 20 palette.button.(blocks).........
e040 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 20 3d 20 54 self.activity.palette_button.=.T
e060 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 70 61 6c 65 74 74 65 6f 66 66 22 20 29 0a 20 20 20 20 20 20 oolButton(."paletteoff".).......
e080 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 ..self.activity.palette_button.s
e0a0 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 70 61 6c 65 74 74 65 27 29 29 0a 20 20 et_tooltip(_('Hide.palette'))...
e0c0 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 ......self.activity.palette_butt
e0e0 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 on.props.sensitive.=.True.......
e100 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 63 ..self.activity.palette_button.c
e120 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 onnect('clicked',.\.............
e140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
e160 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 70 61 6c 65 74 74 65 5f 63 62 29 0a 20 20 .self.activity.do_palette_cb)...
e180 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 ......try:.............self.acti
e1a0 76 69 74 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 vity.palette_button.props.accele
e1c0 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 70 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 rator.=._('<Ctrl>p').........exc
e1e0 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 ept:.............pass.........se
e200 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 70 61 6c 65 74 74 65 5f lf.insert(self.activity.palette_
e220 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 button,.-1).........self.activit
e240 79 2e 70 61 6c 65 74 74 65 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 y.palette_button.show().........
e260 20 23 20 62 6c 6f 63 6b 73 20 62 75 74 74 6f 6e 20 28 68 69 64 65 73 68 6f 77 29 0a 20 20 20 20 .#.blocks.button.(hideshow).....
e280 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 20 ....self.activity.blocks_button.
e2a0 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 68 69 64 65 73 68 6f 77 6f 66 66 22 20 29 0a 20 20 =.ToolButton(."hideshowoff".)...
e2c0 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f ......self.activity.blocks_butto
e2e0 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 48 69 64 65 20 62 6c 6f 63 6b 73 27 29 29 0a n.set_tooltip(_('Hide.blocks')).
e300 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 74 ........self.activity.blocks_but
e320 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 ton.props.sensitive.=.True......
e340 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 63 ...self.activity.blocks_button.c
e360 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 onnect('clicked',.\.............
e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
e3a0 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 68 69 64 65 73 68 6f 77 5f 63 62 29 0a 20 20 self.activity.do_hideshow_cb)...
e3c0 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 ......try:.............self.acti
e3e0 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 vity.blocks_button.props.acceler
e400 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 62 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 ator.=._('<Ctrl>b').........exce
e420 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c pt:.............pass.........sel
e440 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 62 6c 6f 63 6b 73 5f 62 75 f.insert(self.activity.blocks_bu
e460 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e tton,.-1).........self.activity.
e480 62 6c 6f 63 6b 73 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 blocks_button.show()..........se
e4a0 70 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 parator.=.gtk.SeparatorToolItem(
e4c0 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 ).........separator.set_draw(Tru
e4e0 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 e).........self.insert(separator
e500 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a ,.-1).........separator.show()..
e520 20 20 20 20 20 20 20 20 23 20 72 75 6e 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c ........#.run.button.........sel
e540 66 2e 61 63 74 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 f.activity.run_button.=.ToolButt
e560 6f 6e 28 20 22 72 75 6e 2d 66 61 73 74 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 on(."run-fastoff".).........self
e580 2e 61 63 74 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 .activity.run_button.set_tooltip
e5a0 28 5f 28 27 52 75 6e 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 (_('Run')).........self.activity
e5c0 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 .run_button.props.sensitive.=.Tr
e5e0 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 ue.........self.activity.run_but
e600 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 2e 61 63 74 69 ton.connect('clicked',.self.acti
e620 76 69 74 79 2e 64 6f 5f 72 75 6e 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 vity.do_run_cb).........try:....
e640 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 74 6f .........self.activity.run_butto
e660 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 72 n.props.accelerator.=._('<Ctrl>r
e680 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ').........except:.............p
e6a0 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 ass.........self.insert(self.act
e6c0 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 ivity.run_button,.-1).........se
e6e0 6c 66 2e 61 63 74 69 76 69 74 79 2e 72 75 6e 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 lf.activity.run_button.show()...
e700 20 20 20 20 20 20 20 23 20 73 74 65 70 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c .......#.step.button.........sel
e720 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 70 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 f.activity.step_button.=.ToolBut
e740 74 6f 6e 28 20 22 72 75 6e 2d 73 6c 6f 77 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c ton(."run-slowoff".).........sel
e760 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 f.activity.step_button.set_toolt
e780 69 70 28 5f 28 27 53 74 65 70 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 ip(_('Step')).........self.activ
e7a0 69 74 79 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 ity.step_button.props.sensitive.
e7c0 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 =.True.........self.activity.ste
e7e0 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 73 65 6c 66 p_button.connect('clicked',.self
e800 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 73 74 65 70 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 .activity.do_step_cb).........tr
e820 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 y:.............self.activity.ste
e840 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 p_button.props.accelerator.=._('
e860 3c 43 74 72 6c 3e 77 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 <Ctrl>w').........except:.......
e880 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 ......pass.........self.insert(s
e8a0 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 elf.activity.step_button,.-1)...
e8c0 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 65 70 5f 62 75 74 74 6f 6e 2e ......self.activity.step_button.
e8e0 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 64 65 62 75 67 20 62 75 74 74 6f 6e 0a 20 show()..........#.debug.button..
e900 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f .......self.activity.debug_butto
e920 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 64 65 62 75 67 6f 66 66 22 20 29 0a 20 20 20 n.=.ToolButton(."debugoff".)....
e940 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e .....self.activity.debug_button.
e960 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 44 65 62 75 67 27 29 29 0a 20 20 20 20 20 20 20 20 set_tooltip(_('Debug')).........
e980 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 self.activity.debug_button.props
e9a0 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 .sensitive.=.True.........self.a
e9c0 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c ctivity.debug_button.connect('cl
e9e0 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icked',.\.......................
ea00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 .....................self.activi
ea20 74 79 2e 64 6f 5f 64 65 62 75 67 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 ty.do_debug_cb).........try:....
ea40 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 .........self.activity.debug_but
ea60 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c ton.props.accelerator.=._('<Ctrl
ea80 3e 64 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 >d').........except:............
eaa0 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 .pass.........self.insert(self.a
eac0 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 ctivity.debug_button,.-1).......
eae0 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 65 62 75 67 5f 62 75 74 74 6f 6e 2e 73 68 6f ..self.activity.debug_button.sho
eb00 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 73 74 6f 70 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 w()..........#.stop.button......
eb20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 20 3d 20 54 ...self.activity.stop_button.=.T
eb40 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 73 74 6f 70 69 74 6f 66 66 22 20 29 0a 20 20 20 20 20 20 20 oolButton(."stopitoff".)........
eb60 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 .self.activity.stop_button.set_t
eb80 6f 6f 6c 74 69 70 28 5f 28 27 53 74 6f 70 20 74 75 72 74 6c 65 27 29 29 0a 20 20 20 20 20 20 20 ooltip(_('Stop.turtle'))........
eba0 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 .self.activity.stop_button.props
ebc0 2e 73 65 6e 73 69 74 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 .sensitive.=.True.........self.a
ebe0 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 ctivity.stop_button.connect('cli
ec00 63 6b 65 64 27 2c 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f 73 74 6f 70 5f 63 62 29 cked',.self.activity.do_stop_cb)
ec20 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 .........try:.............self.a
ec40 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 ctivity.stop_button.props.accele
ec60 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 73 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 rator.=._('<Ctrl>s').........exc
ec80 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 ept:.............pass.........se
eca0 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 74 6f 70 5f 62 75 74 lf.insert(self.activity.stop_but
ecc0 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 ton,.-1).........self.activity.s
ece0 74 6f 70 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 top_button.show()..........separ
ed00 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 ator.=.gtk.SeparatorToolItem()..
ed20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a .......separator.set_draw(True).
ed40 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d ........self.insert(separator,.-
ed60 31 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 1).........separator.show().....
ed80 20 20 20 20 20 23 20 65 72 61 73 65 72 20 62 75 74 74 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c .....#.eraser.button.........sel
eda0 66 2e 61 63 74 69 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 f.activity.eraser_button.=.ToolB
edc0 75 74 74 6f 6e 28 20 22 65 72 61 73 65 72 6f 6e 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 utton(."eraseron".).........self
ede0 2e 61 63 74 69 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c .activity.eraser_button.set_tool
ee00 74 69 70 28 5f 28 27 43 6c 65 61 6e 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 tip(_('Clean')).........self.act
ee20 69 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 ivity.eraser_button.props.sensit
ee40 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 ive.=.True.........self.activity
ee60 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 .eraser_button.connect('clicked'
ee80 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.\.............................
eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f ................self.activity.do
eec0 5f 65 72 61 73 65 72 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 _eraser_cb).........try:........
eee0 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e .....self.activity.eraser_button
ef00 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 65 27 .props.accelerator.=._('<Ctrl>e'
ef20 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 ).........except:.............pa
ef40 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 69 ss.........self.insert(self.acti
ef60 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 vity.eraser_button,.-1).........
ef80 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 65 72 61 73 65 72 5f 62 75 74 74 6f 6e 2e 73 68 6f 77 self.activity.eraser_button.show
efa0 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d 20 67 74 6b 2e 53 65 70 61 ()..........separator.=.gtk.Sepa
efc0 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f ratorToolItem().........separato
efe0 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e r.set_draw(True).........self.in
f000 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 70 61 sert(separator,.-1).........sepa
f020 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 53 61 76 65 20 73 6e 61 rator.show()..........#.Save.sna
f040 70 73 68 6f 74 20 28 22 6b 65 65 70 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 pshot.("keep").........self.acti
f060 76 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 vity.keep_button.=.ToolButton(."
f080 66 69 6c 65 73 61 76 65 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 filesave".).........self.activit
f0a0 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 27 53 61 76 y.keep_button.set_tooltip(_('Sav
f0c0 65 20 73 6e 61 70 73 68 6f 74 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 e.snapshot')).........self.activ
f0e0 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 20 ity.keep_button.props.sensitive.
f100 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 =.True.........try:.............
f120 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e self.activity.keep_button.props.
f140 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 27 3c 41 6c 74 3e 53 27 0a 20 20 20 20 20 20 20 20 65 accelerator.=.'<Alt>S'.........e
f160 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 xcept:.............pass.........
f180 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 self.activity.keep_button.connec
f1a0 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t('clicked',.\..................
f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 ...................self.activity
f1e0 2e 64 6f 5f 6b 65 65 70 5f 63 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 .do_keep_cb).........self.insert
f200 28 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a (self.activity.keep_button,.-1).
f220 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 6b 65 65 70 5f 62 75 74 74 6f ........self.activity.keep_butto
f240 6e 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 3d 20 67 74 n.show()..........separator.=.gt
f260 6b 2e 53 65 70 61 72 61 74 6f 72 54 6f 6f 6c 49 74 65 6d 28 29 0a 20 20 20 20 20 20 20 20 73 65 k.SeparatorToolItem().........se
f280 70 61 72 61 74 6f 72 2e 73 65 74 5f 64 72 61 77 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 parator.set_draw(True).........s
f2a0 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 70 61 72 61 74 6f 72 2c 20 2d 31 29 0a 20 20 20 20 20 20 elf.insert(separator,.-1).......
f2c0 20 20 73 65 70 61 72 61 74 6f 72 2e 73 68 6f 77 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 70 72 ..separator.show()..........#.pr
f2e0 6f 6a 65 63 74 20 6f 70 65 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 oject.open.........self.activity
f300 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 20 3d 20 54 6f 6f 6c 42 75 74 74 6f 6e 28 20 22 73 .samples_button.=.ToolButton(."s
f320 74 6f 63 6b 2d 6f 70 65 6e 22 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 tock-open".).........self.activi
f340 74 79 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2e 73 65 74 5f 74 6f 6f 6c 74 69 70 28 5f 28 ty.samples_button.set_tooltip(_(
f360 27 53 61 6d 70 6c 65 73 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 'Samples')).........self.activit
f380 79 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2e 70 72 6f 70 73 2e 73 65 6e 73 69 74 69 76 65 y.samples_button.props.sensitive
f3a0 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 .=.True.........self.activity.sa
f3c0 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2e 63 6f 6e 6e 65 63 74 28 27 63 6c 69 63 6b 65 64 27 2c 20 mples_button.connect('clicked',.
f3e0 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \...............................
f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 64 6f 5f ...............self.activity.do_
f420 73 61 6d 70 6c 65 73 5f 63 62 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 samples_cb).........try:........
f440 20 20 20 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f .....self.activity.samples_butto
f460 6e 2e 70 72 6f 70 73 2e 61 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 5f 28 27 3c 43 74 72 6c 3e 6f n.props.accelerator.=._('<Ctrl>o
f480 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ').........except:.............p
f4a0 61 73 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 28 73 65 6c 66 2e 61 63 74 ass.........self.insert(self.act
f4c0 69 76 69 74 79 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2c 20 2d 31 29 0a 20 20 20 20 20 20 ivity.samples_button,.-1).......
f4e0 20 20 73 65 6c 66 2e 61 63 74 69 76 69 74 79 2e 73 61 6d 70 6c 65 73 5f 62 75 74 74 6f 6e 2e 73 ..self.activity.samples_button.s
f500 68 6f 77 28 29 0a 0a 0a 0a how()....