【问题标题】:Qooxdoo - how do i create a new theme and use it in the application?Qooxdoo - 我如何创建一个新主题并在应用程序中使用它?
【发布时间】:2013-11-06 18:45:03
【问题描述】:

我是 qooxdoo 的新手,在为我的应用程序创建自定义主题方面需要帮助。

我复制了原生Modern主题并修改了它的一些功能,现在我的问题是如何将它作为新主题添加到qooxdoo以及如何在我的应用程序中使用它?

任何帮助或指导将不胜感激。

【问题讨论】:

    标签: themes qooxdoo


    【解决方案1】:

    您不需要复制它,只需扩展主题即可。如果您使用 create-application.py 帮助程序使用 qooxdoo 桌面框架创建了您的应用程序,那么您应该已经有一个自定义主题运行和扩展现代主题。如果没有,您只需编辑应该位于根项目文件夹中的 config.json 文件并搜索名为 QXTHEME 的键。该键的值是指定主题的类名。将其更改为您的自定义主题类并重新构建应用程序以查看结果。 以下是有关如何使用主题的更多资源:http://manual.qooxdoo.org/current/pages/desktop/ui_custom_themes.html

    【讨论】:

    • 感谢您的回答,但我发现复制文件并修改它们更方便,请查看我的回答并让我知道它是否会导致与api发生任何冲突。
    【解决方案2】:

    补充一点 Martin 的回答:您不复制和修改主题代码,而是扩展覆盖,就像类代码一样。

    如果使用create-application.py创建应用程序骨架,source/class下的默认代码结构已经包含自定义主题类(在source/类//主题/*)。问题是这些主题类从 Modern 主题扩展而来 实际上没有覆盖任何东西,因此您可以有效地获得 Modern 的外观和感觉。

    但是您可以继续充实这些自定义主题类,使用适合您口味的属性,从而创建您自己的主题。

    【讨论】:

    • 感谢您的回答,但我发现复制文件并修改它们更方便,请查看我的回答并让我知道它是否会导致与api发生任何冲突。
    【解决方案3】:

    我发现在不查看源代码的情况下通过扩展现有本机主题之一(经典、现代...等)来创建自定义主题非常困难,而且我不想弄乱原始 API 的文件通过修改它们,我做了以下操作:

    1- 用/qooxdoo-directory/framework/source/class/qx/theme/modern/ 中的文件替换了我的应用程序目录中的文件:myapplication/source/class/myapplication/theme/。一共替换了四个文件(Appearance.js、Decoration.js、Color.js和Font.js)。

    2- 将装饰目录从/qooxdoo-directory/framework/source/resource/qx/decoration/Modern 复制到我的应用程序目录:myapplication/source/recourse/myapplication/decoration

    3- 将图标目录从qooxdoo-directory/framework/source/resource/qx/icon/Tango 复制到我的应用程序目录myapplication/source/resource/myapplication/icon

    4- 将 Tango.jsqooxdoo-directory/framework/source/class/qx/theme/icon/Tango.js 复制到我的应用程序目录 myapplication/source/class/myapplication/theme/icon/Icon.js

    5- 编辑元文件Themes.js 并改为:

    qx.Theme.define("myapplication.theme.Theme", { 元: { 颜色:myapplication.theme.Color, 装饰:myapplication.theme.Decoration, 字体:myapplication.theme.Font, 图标:myapplication.theme.icon.Icon, 外观:myapplication.theme.Appearance } });

    6- 编辑 Icon.js 文件(我在步骤 4 中从 Tango.js 复制)并将其更改为:

    qx.Theme.define("myapplication.theme.icon.Icon", { 标题:“我的图标”, 别名:{ “图标”:“我的应用程序/图标” } });

    7- 编辑 Decoration.jsAppearance.jsColor.jsFont.js我的应用程序的主题目录并更改了类的命名空间:

    qx.Theme.define("qx.theme.modern.<file's name>",
    

    qx.Theme.define("myapplication.theme.<file's name>",
    

    8- 更正了 Decoration.jsAppearance.js 中的资产路径,从原始路径 qx/decoration/Modernqx/icon/Tango 到与我的应用程序相关的路径 @987654334 @ 和myapplication/icon,例如:

        @asset(qx/decoration/Modern/toolbar/toolbar-part.gif)
    

    改为

        @asset(myapplication/decoration/toolbar/toolbar-part.gif)
    

    ps:应用程序中的相对路径为application-name/source/resource,因此您可以通过application-name/folder-name引用此文件夹中的任何目录。

    9- 同样在第 8 步中,我将 decoration.js 中的别名更改为:

        aliases : {
          decoration : "myapplication/decoration"
        },
    

    10 - 在myapplication/source 中运行 generate.py 文件。

    完成了,现在我可以更改我想要的任何内容,而不会导致 API 崩溃:)

    【讨论】:

    • -1 好吧,这有点可悲,因为您现在对主题文件所做的每一次更改都可以复制框架类,只需添加您本地派生的主题。至少您可以不用自己复制图像资源,因为生成器可以跨库查找图标和其他资源。您只是在复制不必要的文件。也许您想重新考虑有一天派生主题的更简洁的方法。
    • 我目前正在学习如何使用装饰器和外观,为此我只复制了文件以便我可以查看源代码并从中学习,一旦我有足够的经验我会扩展像你在你的回答中提到的主题。我还复制了这些图像,因为我替换了很多图像并且我想保留原始图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2021-05-08
    相关资源
    最近更新 更多