使用protoApp而不是newtApplication时如何设置自定义按钮?

时间:2013-08-07 18:35:36

标签: newtonscript

我正在使用NewtonScript开发一个Newton OS应用程序,而protoApp proto比newtApplication proto(即NewtApp)更适合应用程序类型。 protoApp提供标题&状态栏有关闭框,但如何在状态栏中插入自定义按钮(因为它只显示时钟)?

2 个答案:

答案 0 :(得分:1)

我在this thread上找到NewtonTalk,其中Paul Guyot说:

  

您不需要使用protoApp。您可以改用protoFloater。您   然后可以添加一个更好的NewtonOS 2.x状态栏来取代丑陋   protoApp的时钟/电池选择器,并将关闭框放在此栏上。   诀窍是窃取NewtApp框架的标准,即使用   newtStatusBarNoClose。我为几个项目做了这个,很可能   记录在文档中(您可以使用的事实)   newtStatusBar [NoClose]而不是protoStatusBar),你可以采取   按钮处理代码的优点(自动对齐它们)   在左边和右边)。

事实证明,第7-19页的牛顿程序员指南(2.0)中记录了使用newtStatusBar代替protoStatus 的建议:

  

注意
  新状态栏protos newtStatusBarNoClose和   newtStatusBar是添加状态栏的首选方式   你的申请。这些原型,描述于   “NewtApp应用程序”(第4-1页),简化了添加按钮和   移动应用程序时自动隐藏关闭框   进入后台。

而且,保罗建议使用protoFloater代替protoApp,但实际上我最终使用的是protoDragger。我不得不手动添加protoTitle& protoStatusBar

mainView := {
    _proto: protoDragger,
    viewflags: vApplication + vVisible + vClickable,
    appSymbol: kAppSymbol,
    viewJustify: vjParentFullH + vjParentFullV,
    viewBounds: {left: 16, top: 16, right: -16, bottom: -16},
    stepChildren: [
        {
            _proto: protoTitle,
            title: kAppTitle
        },
        {
            _proto: newtStatusBar,
            menuLeftButtons: [],
            menuRightButtons: []
        },
    ],
};

答案 1 :(得分:1)

牛顿原型和视图框架非常灵活,所以虽然像NewtApp这样的东西在幕后做了很多魔术很好,但我发现它可以根据需要直接编码布局。在下面的示例中,我只是创建一个按钮作为应用程序的子视图,并将其移动到正确的位置。我不需要对protos进行大量更改,因此像素值可以固定为:)

mainView := {
    _proto: protoApp,
    title: "App Title",
    appSymbol: 'appSymbol,

    stepChildren: [
        {
            _proto: protoTextButton,
            text: "Custom",
            viewJustify: vjParentRightH + vjParentBottomV + vjCenterH,
            viewBounds: {left: -70, top: -16, right: -26, bottom: -3}
        },
    ],

    viewJustify: vjParentFullH + vjParentFullV,
    viewBounds: {left: 16, top: 16, right: -16, bottom: -16},
};