htmltext crashes because of images
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller
htmltext crashes because of images
Hi,
I wrote an email sender/receiver in IMAP (using cURL if anyone is curious). I parse the email received and decompose it into its different parts but when I try to show its body with "set the htmltext...", if the email has any img tags, it will very often crash or starts running forever. The reason is that Livecode doesn't give enough time to download the src and can't close properly the connexion. I can get read of the img and then it works but that's obviously not a super satisfying answer...
I still have to investigate to understand exatly the "mecanism" of htmltext before maybe reporting a bug but has anyone experienced somthing similar ? Any suggestions/solutions ?
Thanks !
I wrote an email sender/receiver in IMAP (using cURL if anyone is curious). I parse the email received and decompose it into its different parts but when I try to show its body with "set the htmltext...", if the email has any img tags, it will very often crash or starts running forever. The reason is that Livecode doesn't give enough time to download the src and can't close properly the connexion. I can get read of the img and then it works but that's obviously not a super satisfying answer...
I still have to investigate to understand exatly the "mecanism" of htmltext before maybe reporting a bug but has anyone experienced somthing similar ? Any suggestions/solutions ?
Thanks !
Re: htmltext crashes because of images
The problem could also be in the image reference. Can you post an example of some htmltext that fails?
Jacqueline Landman Gay | jacque at hyperactivesw dot com
HyperActive Software | http://www.hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
Re: htmltext crashes because of images
Thanks for the reply Jacque. Sorry for taking so long to answer back... I am trying to refine my test to understand what is going on.
First, you have to know that I have had this problem with many different email body in html form but that it doesn't happen every time (for one email). It seems to depend on the quality of the connection...
Also, the thing happens too when I reopen a card containing a field already set to htmltext.
When you ask for an example do you mean an actual html file that causes the problem ? If yes, I can't because my upload is rejected ("identifie as possible attack"). Otherwise, for the code itstelf, I simply do a
inside a command in a button.
But the whole program is pretty complex because its an OS interface for blind people, so there are constantly observations and changes of fields, properties and variable via the idle so the person can be informed.
Thanks again for your help !
First, you have to know that I have had this problem with many different email body in html form but that it doesn't happen every time (for one email). It seems to depend on the quality of the connection...
Also, the thing happens too when I reopen a card containing a field already set to htmltext.
When you ask for an example do you mean an actual html file that causes the problem ? If yes, I can't because my upload is rejected ("identifie as possible attack"). Otherwise, for the code itstelf, I simply do a
Code: Select all
set the html of field "texte" to bodyHtml
inside a command in a button.
But the whole program is pretty complex because its an OS interface for blind people, so there are constantly observations and changes of fields, properties and variable via the idle so the person can be informed.
Thanks again for your help !
Re: htmltext crashes because of images
I was mainly wondering if there was something unusual in the html, in either the image references or some other formatting. You could copy a short section of a text file that you know fails and paste it into a reply here.
But the real issue may be that the script is using the wrong property name. It should be "htmltext" rather than "html" .
Edit: I'd think it shouldn't crash because setting "the html" of a field should just create a custom property of the field rather than display the text. I wonder if "html" is an undocumented reserved word that sends the engine into an infinite loop. At any rate, a crash is always a bug so it should be reported.
But the real issue may be that the script is using the wrong property name. It should be "htmltext" rather than "html" .
Edit: I'd think it shouldn't crash because setting "the html" of a field should just create a custom property of the field rather than display the text. I wonder if "html" is an undocumented reserved word that sends the engine into an infinite loop. At any rate, a crash is always a bug so it should be reported.
Jacqueline Landman Gay | jacque at hyperactivesw dot com
HyperActive Software | http://www.hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
Re: htmltext crashes because of images
Ok first of all, sorry for calling you Jacque.. Jacqueline. Secondly, my mistake, I wrote too fast : the code is indeed and not the html...
Also, here is an example of email body in html format that causes problems :
Code: Select all
set the htmltext
Also, here is an example of email body in html format that causes problems :
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"text/css">
<!--
body {
margin: 0px;
padding: 0px;
background-color:rgb(190,190,190);
}
-->
</style>
</head>
<body link="#003476" vlink="#bebebe" alink="#003476" style="background-color:rgb(190,210,255);"><div style="background-color:0,52,118; margin:0; padding:10px 10px 300px 10px;"><!--avert-->
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; color:rgb(64,64,64); font-size: 10px; text-align: center; margin: 10px 0 0 0; padding-bottom:10px; border-bottom:1px rgb(255,255,255) solid;">Si vous ne pouvez lire ce message, consultez la <a color:rgb="" href="http://p9tre.emv3.com/HM?b=nZXuic3hVjxP0gaZmvmNgjOwgVQPF20voUk2b1Q9qCt2o3FWVXwnRsaGEBe7kuHM&c=nV5FdztekLfqQUMcCmmKeA" style="?text-decoration:underline;">version en ligne</a>.</p>
<!--/avert-->
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:rgb(215,225,240);" width="860">
<tbody>
<tr align="left" valign="top">
<td align="left" colspan="5" height="65" style="background-color:rgb(0,52,118);"><a href="http://www.institut.capgemini.fr" target="_blank"><img border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1975995623.png" /></a></td>
</tr>
<tr>
<td align="center" rowspan="4" style="background-color:rgb(0,52,118)" valign="top" width="140">
<table border="0" cellpadding="0" cellspacing="0" style="margin:0;">
<tbody>
<tr>
<td align="center" style="padding:0px 10px 5px 10px;" valign="middle"><img height="120" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/481815586.jpg" width="120" /></td>
</tr>
<tr>
<td align="center" style="padding:0px 10px 5px 10px;" valign="middle"><img height="120" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/214117992.jpg" width="120" /></td>
</tr>
<tr>
<td align="center" style="padding:0px 10px 5px 10px;" valign="middle"><img height="120" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/82632434.jpg" width="120" /></td>
</tr>
<tr>
<td align="center" style="padding:0px 10px 5px 10px;" valign="middle"><img height="120" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1691502205.jpg" width="120" /></td>
</tr>
<tr>
<td align="center" style="padding:0px 10px 5px 10px;" valign="middle"><img height="120" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1150461399.jpg" width="120" /></td>
</tr>
</tbody>
</table>
</td>
<td align="left" style="background-color:rgb(0,50,140); padding:0;" valign="top" width="720"><!-- MENU -->
<table align="center" border="0" cellpadding="0" cellspacing="0" style="padding:0;" width="720">
<tbody>
<tr>
<td height="30" style="background-color:rgb(0,52,118); padding:0; height:30px;" width="30"><img src="http://p9tre.emv3.com/IL/0/0/1/1101057001/56324879.png" style="margin:0; padding:0;" /></td>
<td align="left" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight:bold; background-color:rgb(215,225,240); padding:0; height:26px;" valign="middle" width="200"><a href="http://www.institut.capgemini.fr/index.php?p_m=icg&p_a=sem&utm_source=infos&utm_medium=email&utm_campaign=A15S44" style=" color:rgb(0,52,118); text-decoration: none; margin:0; padding:0;" target="_blank">Tous nos séminaires</a></td>
<td align="left" style="padding:0px 0px 0px 20px; height:30px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight:bold; background-color:rgb(215,225,240); border-left:1px solid rgb(255,255,255);" valign="middle"><a href="http://www.institut.capgemini.fr/index.php?p_id=82/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style=" color:rgb(0,52,118); text-decoration: none; margin:0; padding:0;" target="_blank">Informations pratiques</a></td>
</tr>
</tbody>
</table>
<!-- / MENU --></td>
</tr>
<tr>
<td align="left" colspan="4" style="background-color:rgb(0,52,118)" valign="top" width="720">
<p id="cgiemkaltitre" style="font-family: Georgia, 'Times New Roman', Times, serif; font-weight:lighter; font-size: 40px; line-height: 44px; margin: 25px 0px 20px 40px; color:rgb(167,163,195);">Cloud :<br />
l'état de l'art</p>
</td>
</tr>
<tr>
<td align="left" colspan="3" height="?20?" style="background-color:rgb(0,52,118);" valign="middle" width="550"><img src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1950459465.png" /></td>
</tr>
<tr>
<td align="left" colspan="4" style="padding-top: 0px; padding-bottom: 25px;; background-color: rgb(215,225,240);" valign="top" width="720">
<p style="font-family: Georgia, 'Times New Roman', Times, serif; font-size: 17px; line-height:23px; color: #003082; font-style: italic; margin: 0px 0px 10px 60px; padding:5px; ">Neuf séminaires, indépendants les uns des autres,<br />
pour faire le point en 2015.</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=103/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Cloud : la synthèse <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">5-6 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />3-4 décembre 2015</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=249/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Virtualisation des réseaux SDN, NV, NFV <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/259707993.jpg" title="Nouveau séminaire" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">5-6 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />23-24 juin 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=34/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Externalisation : l'état de l'art 2015 <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">5-6 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />30-31 mai 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=243/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Cloud Networking : réseaux et mobilité <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/566437626.png" title="Nouveau programme" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">12-13 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />9-10 juin 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=245/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Cloud Broker et gouvernance du SI hybride <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/259707993.jpg" title="Nouveau séminaire" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">12-13 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />19-20 mai 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=123/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Virtualisation de Postes de Travail : l'état de l'art <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">19-20 novembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />23-24 juin 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=241/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Cloud Privé et Hybride : l'état de l'art <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/566437626.png" title="Nouveau programme" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">1-2 décembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />30-31 mai 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=242/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> PaaS : l'état de l'art <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/259707993.jpg" title="Nouveau séminaire" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">10-11 décembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />13-14 juin 2016</p>
<p class="cgiemkalprogr" style="margin: 10px 20px 0 50px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold; line-height: 18,px;"><a href="http://www.institut.capgemini.fr/index.php?p_id=240/?utm_source=infos&utm_medium=email&utm_campaign=A15S44" style="text-decoration: none; color:rgb(0,52,118);" target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1213594796.png" /> Architectures Cloud Ready : l'état de l'art <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/566437626.png" title="Nouveau programme" /> <img align="absbottom" border="0" height="15" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/503501374.png" width="18" /></a></p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height:14px; color:rgb(70,70,70); text-indent:15px; margin:3px 0px 0 50px;">14-16 décembre 2015<img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/1559383233.png" />6-8 juin 2016</p>
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; line-height:10px; color:rgb(70,70,70); margin:20px 0px 0px 50px;"><img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/259707993.jpg" title="Nouveau séminaire" /> Nouveaux séminaires <img align="absmiddle" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/566437626.png" title="Nouveau programme" /> Séminaires remaniés</p>
</td>
</tr>
<tr>
<td align="center" rowspan="2" style="background-color:rgb(0,52,118)" valign="top" width="140"><img src="http://p9tre.emv3.com/IL/0/0/1/1101057001/685630088.png" style="margin-top:35px; margin-bottom:15px;" /></td>
<td align="left" colspan="4" height="30" valign="middle" width="720">
<table border="0" cellpadding="0" cellspacing="0" style="margin:0; padding:0; height:28px;" width="720">
<tbody>
<tr>
<td align="right" border="0" style="background-color:rgb(215,225,240);" valign="middle" width="55"><a href="http://www.institut.capgemini.fr/index.php?p_m=icg&p_a=sem" style="text-decoration: none; " target="_blank"><img align="absmiddle" border="0" src="http://p9tre.emv3.com/IL/0/0/1/1101057001/39477314.png" /></a></td>
<td align="left" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight:bold; background-color:rgb(255,255,255);" valign="middle" width="505"><a href="http://www.institut.capgemini.fr/index.php?p_m=icg&p_a=sem&utm_source=infos&utm_medium=email&utm_campaign=A15S44" style=" color:rgb(0,52,118); text-decoration: none; margin:0; padding:0;" target="_blank"> Tous les programmes détaillés Capgemini Institut</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="left" colspan="$colspan2$" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 14px; color:rgb(0,50,130); text-align: left; font-weight: normal; background-color:rgb(215,225,240);" valign="top">
<p style="margin:20px 20px 30px 50px;">Renseignements et inscriptions :<br />
Véronique Groud - tél. : 01 44 74 24 10<br />
<a alink="#787878" href="mailto:veronique.groud@capgemini.com" link="#003476" style="text-decoration:none; color:rgb(0,52,118); ; " vlink="#003476">institut@capgemini.com</a><br />
<br />
<a href="http://www.institut.capgemini.fr/" style="text-decoration: none; color:rgb(0,52,118); ; " target="_blank"><strong>www.institut.capgemini.fr</strong></a></p>
</td>
</tr>
</tbody>
</table>
<!--desabo-->
<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color:rgb(64,64,64); text-align: center; margin: 0px 0; padding-top:10px; border-top:1px rgb(255,255,255) solid;">Si vous ne voulez plus recevoir de messages de Capgemini Institut, vous pouvez <a alink="#787878" color:rgb="" href="http://p9tre.emv3.com/HD?b=O9ZlZyVIlmrn_QryLdSdATRnJG3bk9p5yweaxCIfrHKRvphHqP2RO9kabmPY64VR&c=4wXhi0FhDwfDaYEfsFbbkQ" link="#003476" style="?text-decoration:underline;" vlink="#003476">vous désabonner</a>.</p>
<!--/desabo--></div>
<img src="http://p9tre.emv3.com/HO?JytrbZtoZxGcyl-YUDZmHJqQc9iZk3Muw-EUSStovu_wXRwFyYq7dn3jwMKiLKmq/FWgnRuhJ_7ZaQcgTkm4rxg.gif" border="0" alt="" width="1" height="1" /></body>
</html>
Re: htmltext crashes because of images
Hi godot,
just made a quick test:
Where field 1 contains the html source you posted here.
No images in the field, but also no crashes!
OS X 10.11.1 and LC 7.1.1RC3
Best
Klaus
just made a quick test:
Code: Select all
on mouseUp
set the htmltext of fld 2 to the text of fld 1
end mouseUp
No images in the field, but also no crashes!
OS X 10.11.1 and LC 7.1.1RC3
Best
Klaus
Re: htmltext crashes because of images
LC 6.7.6 is getting the images.
But watch out, they end up at the top not down the left side.
Simon
But watch out, they end up at the top not down the left side.
Simon
I used to be a newbie but then I learned how to spell teh correctly and now I'm a noob!