+1. This is über cool..

Regards,

Nate

On Jan 11, 2012, at 6:09 PM, Paul McNett <[email protected]> wrote:

> dabo Commit
> Revision 7049
> Date: 2012-01-11 15:09:16 -0800 (Wed, 11 Jan 2012)
> Author: Paul
> Trac: http://trac.dabodev.com/changeset/7049
> 
> Changed:
> U   trunk/dabo/ui/uiwx/dHtmlBox.py
> 
> Log:
> Enhanced dHtmlBox to allow link hrefs to refer to application or
> form methods. For instance, I have this html in the dHtmlBox, 
> which is a listing of orders and payments:
> 
>  <li><a href="app://showOrder?11234">Order 11234</a></li>
>  <li><a href="app://showOrder?11235">Order 11235</a></li>
>  <li><a href="app://showPayment?9932">Payment 9932</a></li>
> 
> When the user clicks on the first link ("Order 11234"), the following
> code will be executed:
> 
>  self.Application.showOrder("11234")
> 
> This is basically allowing me to make html drill-down reports.
> 
> 
> Diff:
> Modified: trunk/dabo/ui/uiwx/dHtmlBox.py
> ===================================================================
> --- trunk/dabo/ui/uiwx/dHtmlBox.py    2012-01-05 22:18:36 UTC (rev 7048)
> +++ trunk/dabo/ui/uiwx/dHtmlBox.py    2012-01-11 23:09:16 UTC (rev 7049)
> @@ -59,13 +59,43 @@
> 
>    def __onLinkClicked(self, evt):
>        if self.RespondToLinks:
> -            if wb and self.OpenLinksInBrowser:
> +            if evt.href.startswith("app://") or 
> evt.href.startswith("form://"):
> +                # query string contains method to call and optional 
> arguments.
> +                self._processInternalLink(evt.href)
> +                evt.stop()
> +            elif wb and self.OpenLinksInBrowser:
>                wb.open(evt.href, new=True)
>            else:
>                # Open in the control itself
>                self.Page = evt.href
> 
> 
> +    def _processInternalLink(self, queryString):
> +        # Note that all arguments are string
> +        if queryString.startswith("app://"):
> +            obj = self.Application
> +        elif queryString.startswith("form://"):
> +            obj = self.Form
> +        else:
> +            raise ValueError, _("Internal link must resolve to Form or 
> Application.")
> +        queryString = queryString[queryString.index("//") + 2:]
> +        try:
> +            meth, args = queryString.split("?")
> +            qsargs = args.split("&")
> +        except ValueError:
> +            meth = queryString
> +            qsargs = []
> +        args = []
> +        kwargs = {}
> +        for qsarg in qsargs:
> +            try:
> +                name, value = qsarg.split("=", 1)
> +                kwargs[name] = value
> +            except ValueError:
> +                args.append(qsarg)
> +        getattr(obj, meth)(*args, **kwargs) 
> +        
> +
>    def copy(self):
>        """Implement the plain text version of copying"""
>        return self.SelectionToText()
> 
> 
> 
[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to