eyeos2中文开发手册(编辑修改稿)内容摘要:

args) { var app = new (checknum, pid, args)。 ()。 } (39。 39。 , { extend: , construct: function(checknum, pid, args) { (this, 39。 notepad39。 , checknum, pid)。 }, members: { drawGUI: function() { // code to create the GUI is here. } } }。 第一个代码块定义了一个名为 notepad_application的函数,这个函数是应用程序的入口,在程序运行时被调用。 下面定义的那个类代表该应用程序,他是 eyeOS的一个应用程序,它继承自。 notepad_application函数定义和执行了 drawGUI方法。 drawGUI用其中的代码来创建应用程序的图形用户界面( GUI)。 PHP文件中最少的代码是 ... ?php Abstract class NotepadApplication extends EyeosApplicationExecutable{} ? 在这里,我们定义一个抽象类(它不能被实例化)称为 NotepadApplication,他继承了 EyeosApplicationExecutable。 在 execmodules一章,你会知道,应用程序可以从这个类扩展。 如果您想添加一个函数到 PHP文件中且 JavaScript可以调用它,将关键字“ public”和“ static”放在函数名前面。 该函数必须放置在类定义中,如下 ... ?php abstract class NotepadApplication extends EyeosApplicationExecutable { public static function myFunction() { return Hello World。 } } ? 现在“ myfunction”是可以使用的函数名,可以在您的应用程序的 JavaScript端通过callMessage调用,如同前面看到的那样。 需要注意的是,在应用程序目录中没有提及的 ,在原来的开发手册中有说明。 这是用来指定应用程序的名称,图标,描述,作者,和其他应用程序的元数据。 实践可以解释一切,我们将开发一个应用程序,它从服务器显示当前的日期和时间,当按下“ Get server time”按钮时。 apps目录下创建一个名为 servertime的目录。 servertime目录下创建一个名为 JavaScript文件 ... // Create main function. function servertime_application(checknum, pid, args) { var app = new (checknum, pid, args)。 ()。 } // Define class for this application. (39。 39。 , { extend: , construct: function(checknum, pid, args) { (this, 39。 servertime39。 , checknum, pid)。 }, members: { drawGUI: function() { // Create the window. var mainWindow = new (this, tr(Server Time))。 // Set the layout manager the window is to use to Vertical Box. (new ())。 // Create label to display the time and add it to the main window. var timeLabel = new (Press the button below to see the Server Time.)。 (timeLabel)。 // Create button to call the PHP function to get the time. var aButton = new (Get Server Time)。 // Add listener to do something when the button is clicked. (39。 click39。 , function() { ((), 39。 getTimeFromServer39。 , null, function(theTime) { (The time is : + theTime)。 }, this)。 }, this)。 // Add the button to the main window. (aButton)。 // Set min width and height of the window to stop it being too small. (300)。 (150)。 (false)。 // Remember to open the window, otherwise nothing will show on the screen. ()。 } } })。 ... ... ?php abstract class ServertimeApplication extends EyeosApplicationExecutable { public static function getTimeFromServer() { return date(39。 Ymd h:i:s39。 )。 } } ? 在 eyeOS桌面上运行应用程序,您需要沿着屏幕上方找到“ Application”菜单 /选项卡,然后选择“添加应用程序”,并点击列表 中 servertime下面的绿色加号( +)按钮。 添加后你可以通过点击它运行该程序。 所以,像前面的章节中说明的那样,程序是由两个文件组成,。 在 JavaScript文件中的代码用来创建用户界面,并包含一个事件监听器在按钮被点击时做一些事情。 PHP文件包含的代码从服务器获取日期和时间。 在 JavaScript文件中的事件监听器使用 callMessage的 API来调用 PHP文件的 getTimeFromServer函数并获取返回值。 这样做使用 AJAX, 没有页面刷新。 在 JavaScript中使用 qooxdoo(简称“ QX”)的图形库。 Qooxdoo允许你开发一个 GUI,通过使用 JavaScript,而不是 XHTML和 CSS。 在 qooxdoo里,您通过窗口工作,按钮和其他元素被添加到窗口。 正如我们在前面的章节中看到的, qooxdoo是一个图形库 ,用 来创建用户界面,如同你使用 QT, GTK,或 Swing库。 Qooxdoo独立 于 eyeOS, 是一个自由软件项目,它的网站 是 eyeOS已经包括 Qooxdoo,因此开发人员不必下载或添加任何东西。 eyeOS上的所有应用程序都是用 QX图形库 开发的。 阅读教程或 qooxdoo API文档 是至关重要的 , 这 使你能理解 并使用 QX库进行开发。 Qooxdoo是完全面向对象,并允许您定义类,做继承,和 做 所有典型的面向对象的 事情。 API和其他文件可以在这里找到 使用 的 Qooxdoo类 虽然 eyeOS大多采用标准 Qooxdoo类,例如 用 ,也有一些 eyeOS扩展 qooxdoo类 的 特殊情况,创建我们自己的附加功能。 例如 是 扩展。 问题是,作为一个应用程序开发人员,你会 使用 MyWindow = new ()获取一个窗口 ,但需要插入某个地方,因为qooxdoo架构中 , 所有 要显示的 部件 (widgets)必须插入 上层部件中。 但是, 桌面上 的 窗口 的上级是什么部件。 事实上,这 确实 有点复杂。 为了 让 开发人员不必担心这一点,我们创建 ,实例化并调用 Open方法时,窗口 会 自动插入到桌面 上 显示,而 开发人员 无需知道谁是该窗口的 上级 部件。 目前 , 开发 者做正常的应用程序时,无需 担心比 创建 ,因为剩余的扩展类用于 eyeOS内部。 ( execmodules) 我们已经看到了,您可以在 PHP应用程序中添加静态公共方法,从 JavaScript由callMessage调用。 不过,所有的 应用都有很多方法,例如, PHP中应该有一个“关闭”函数用来关闭应用程序。 当你开发一个全新的应用程序时,每次都重新写这个函数将是一件痛苦的事,这就是为什么应用已经有一些这样的函数定义在 PHP父类 EyeosApplicationExecutable。 这些函数都可以使用 callMessage的 JavaScript调用,就像由开发人员定义的任何其他函数。 这意味着,应用程序现在已经有一些可以执行的 PHP函数,虽然开发者没有在 PHP应用程序中定义任何东西。 在 eyeOS的默认函数位于 eyeos/system/Frameworks/Applications/Executables/EyeosModuIes/ 例如,如果您打开eyeos/system/Frameworks/Applications/Executables/EyeosModules/ContactsExecModul,在里面你会发现一系列的功能,可在你的应用程序中通过 callMessage执行。 例如: public static function getAllContacts($params) 如果你想在你的程序中通过 JavaScript运 行它,你需要写如下代码 ... (checknum, 39。 __Contacts_getAllContacts39。 , params, function())。 callMessage只是像正常的,但通过 PHP函数的名称来运行,因为它在ContactsExecModule里,你必须在函数名前的加入包的名称。 包的名称必须有两个下划线在它的前面。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。