您的位置:首页 > 编程语言

Nuva 示例代码(每日一帖)之 简单浏览器

2006-08-26 17:52 274 查看
<..========================================================
==                                                       ==
==                Macrobject Nuva Samples                ==
==                                                       ==
==      Copyright (c) 2004-2006 Macrobject Software      ==
==                                                       ==
==                  ALL RIGHTS RESERVED                  ==
==                                                       ==
==               http://www.macrobject.com               ==
==                                                       ==
========================================================..>
<.
class MainForm = System.UI.LayoutForm()
Caption = '世界上最简单的浏览器'
function Create().>
<Layout Direction="V" Resizable="true" Width="800" Height="600">
<Panel Name="Toolbar" Resizable="True" Size="60" />
<Panel Name="Browser" Resizable="True" Size="*" />
</Layout>
<.end function
end class

class Toolbar = System.UI.HtmlForm()
Scroll = false
var url = 'http://www.macrobject.com'

function CreateBody().>
<table width="100%"><tr>
<td width="20">Url:</td><td><input type="text" style="width:100%"
mo:binddata="[.=this.@url.]" mo:bindattr="value"></td>
<td width="40"><input type="button" value=" GO " mo:onclick="Go"></td>
</tr></table>
<.end function

function Go()
this.SaveBindData()
browser.Navigate(url)
end function
end class

var main = MainForm()
main.Show()

var tool = Toolbar()
tool.DockTo(main, 'Toolbar')
tool.LoadBindData()

var browser = System.UI.HtmlForm()
browser.DockTo(main, 'Browser')
tool.Go()

System.App.Run()
.>

<..
【简介】
本例是一简单的浏览器程序,根据输入的 url 地址,点击 go 按钮,能够浏览相应的网页。

【看点】
1、本例演示了 Nuva 语言的 GUI 应用
Nuva 语言支持基于 Html/Xml 的界面引擎,如果需要编写 GUI 应用,仅需熟悉 Html/Xml 语言即可。

为了便于 GUI 的编写,Nuva 提供了一个 UI 的库(位于 Library\System.UI),本例中使用了其中的两个类:System.UI.LayoutForm,System.UI.HtmlForm。具体信息请参考 System.UI.nuva。

System.UI.LayoutForm 是一个框架窗口,可以将其他窗口 dock 在其上,本例中的 MainForm 类就是一个框架窗口。
MainForm 重载了基类的 Create 函数,这个函数的目的是创建窗口的内容,在框架窗口中则是创建一个框架。
Nuva UI 中的框架采用横竖两种布局,分别用“H”和“V”表示,布局可以相互嵌套,布局内可以放置多个 Panel,每个分别命名,指出其相应属性,如 Size 等。参见本例中 MainForm 的 Create 函数代码。

System.UI.HtmlForm 是一个 Html/Xml 窗口,可以在其上放入 Html/Xml 代码,从而生成窗口的内容。
本例中的 Toolbar 就是一个 HtmlForm,重载了基类的 CreateBody 函数,该函数创建 Html 窗口的 Body。

本例中的 UI 类还在构造函数中对基类的某些属性进行初始化,如 MainForm 初始化了 Caption 属性,Toolbar 初始化了 Scroll 属性。

2、本例演示了 Nuva 语言面向对象编程的方法
在 Nuva 语言中,可以支持面向对象编程,目前 Nuva 语言的面向对象具体采用了类继承的组织方式。

本例中的两个类分别继承 UI 库中的两个类,并且都重载了其基类的一些方法。

在 Nuva 语言中,类体就是构造函数,在每个类对象构造的时候将执行类体的 Nuva 代码(这有点类似 JavaScript)。在本例中的两个类,分别在其构造函数中初始化了基类的某些属性。

Nuva 语言中的类属性和成员函数目前都没有访问修饰符,即所有属性和方法都可以访问,子类也可以重载基类的所有方法,不加以限制。

3、本例也演示了事件驱动的编程方法
Toolbar 类的 CreateBody 函数在创建 Go 按钮的时候,给其增加了一个 mo:onclick 属性,该属性声明了一个 Nuva 事件,并且指定其执行 Go 函数。

4、本例也演示了 Nuva 语言中的数据绑定实现
Toolbar 类的 CreateBody 函数在创建 Url 输入框的时候,给其增加了 mo:binddata="[.=this.@url.]" mo:bindattr="value" 的两个属性,这两个属性一起声明了一个数据绑定接口,即将 binddata 的 Nuva 属性绑定到 bindattr 的 Html/Xml 元素属性上。

本例中绑定了 this.@url,@ 是绑定用语法。

另外 Nuva 语言的 UI 库也提供了多种绑定操作接口,本例中用到了 LoadBindData 和 SaveBindData 两个函数,分别表示加载绑定数据和保存绑定数据。

5、本例最后的 System.App.Run() 执行一个消息循环,这是 Nuva 事件驱动编程的起点。

【扩展】
本例可以进一步扩展以增强其实用性,比如可以增加收藏夹、Tab 分页等,从而实现一个真正的浏览器。
..>

注:本例的程序运行如下:(需要最新的 Nuva 虚拟机或者开发环境, 请到网站上下载)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: