功能区 GUI 指南 [英] Ribbon GUI Guidelines

查看:47
本文介绍了功能区 GUI 指南的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在考虑在我的一个应用程序中实现一个功能区 GUI,当然希望遵守 MS 指南,所以它感觉就像一个普通的功能区等.但我正在努力弄清楚如何解决一个特定的问题在动态更改功能区.

我正在创建一个概念游戏编辑器,请不要质疑为什么使用功能区,因为这纯粹是一个概念想法,但该应用程序将有许多编辑器(2D、3D、代码等),并且对于每个编辑器,GUI 都应该调整和显示相关控件,即在 2D 编辑器中可能是画笔,在 3D 上有许多平移和旋转工具.

鉴于功能区指南,主页菜单包含最常用的工具是有意义的,但仅适用于正在编辑的对象类型(旋转对 2D 或代码毫无意义!).

我最初认为每个编辑器可以有一个窗口,但这真的很混乱,我宁愿有很多选项卡式编辑器,这样您就可以像在 Eclipse 等中一样快速浏览它们.此外,所有编辑器都保存回一个文件中有一个应用程序窗口来为用户保留这个比喻是有意义的.

我想我可以根据用户打开的编辑器类型动态更改功能区选项卡(选项卡可能会出现/消失,主页选项卡上的内容等会发生变化)但是这打破了 MS 的指导方针:

组中显示的控件不得因选择而改变.如果控件未处于活动状态,则该控件必须变灰,而不是从组中删除"

功能区上选择的选项卡不得因用户在 177 文档中的选择而自动切换(除非在上下文选项卡部分中注明)."

我了解指南背后的原因,但我不太确定如何让功能区在这种情况下感觉正确:

  • 更改选项卡的内容取决于编辑器类型(去违反指南)
  • 有一个标签每个编辑器类型(但如果我最终有 15 种编辑器类型!)
  • 有一个非常通用功能区和移动特定编辑器操作到侧栏或一些东西(不是最好的 GUI 设计)
  • 为每种类型使用上下文选项卡编辑器(更好的解决方案,但意味着你始终打开一个上下文选项卡!)

任何其他想法/解决方案将不胜感激,因为我必须使用功能区并且必须将其用于此类应用程序!

解决方案

如果您提供特定于编辑器的选项卡,我想您可以按照最适合该特定编辑器的方式进行布局.这意味着如果您为其他编辑器使用相同的选项卡,控件会偶尔移动.将不适用于任何特定编辑器的控件灰显似乎不切实际,如果这会导致很多混乱.

另一方面,使控件变灰确实有利于将每个控件保持在选项卡上完全相同的物理位置.不要低估这种力量.没有什么比期望控制一个地方,并让它突然移动到其他地方(或完全消失)更令人恼火的了.变灰清楚地表明灰色控件不适用于此上下文.

因此,根据每个编辑器的控件有何不同,您必须决定哪种方法破坏性较小:将不需要的控件灰显,或为每个编辑器提供新的布局.

为每个打开的编辑器都打开一个选项卡似乎不太可行,因为当用户在特定编辑器中时,会有许多选项卡没用.

如果可能,请寻求一些志愿者或 Beta 测试人员的帮助,并与他们一起制作一些纸质原型,看看哪种方法更能引起他们的共鸣.

I am thinking of implementing a ribbon GUI in one of my apps and of course want to adhere to the MS Guidelines so it feels like a normal ribbon, etc. But I'm trying to figure out how to solve a specific problem in dynamically changing the ribbon.

I'm creating a concept game editor, please no question on why a ribbon as this is purely a concept idea, but the application will have many editors (2D, 3D, Code, etc) and for each one the GUI should adapt and display relevant controls i.e. in the 2D editor maybe a paintbrush, on the 3D many pan and rotate tools.

Given the ribbon guidelines it makes sense to the Home menu to contain the most common tools, but only for the type of object being edited (rotate makes no sense for 2D or Code!).

I initially thought it could have one window per editor but this makes a real mess and I'd rather have lots of tabbed editors so you can flick through them fast like in eclipse etc. Also all editors save back into one file so it makes sense to have one application window to keep this metaphor for the user.

I was thinking I could dynamically change the ribbon tabs depending on what type of editor the user had open (tabs may appear/disappear, content on the Home tab etc would change) but then this breaks the MS guidelines of:

"Controls displayed in a group MUST NOT change as a result of selection. If a control is not active, then the control MUST be grayed out, rather than removed from the group"

"The tab selected on the Ribbon MUST NOT automatically switch as a result of user selections made in the 177 document (except as noted in the Contextual Tabs section)."

I understand the reasoning behind the guidelines but im not really sure how to get the ribbon to feel right in this situation:

  • Change the content of the tabs depending on editor type (goes against the guidelines)
  • Have a tab per editor type (but what if i end up with 15 editor types!)
  • Have a very generic ribbon and move specific editor operations to a side bar or something (not the best GUI design)
  • Use contextual tabs for each type of editor (better solution but means you always have one contextual tab open!)

Any other ideas/solutions would be greatly appreciated as I must use a ribbon and must use it for this type of application!

解决方案

If you are providing a tab that is editor-specific, I suppose you could lay it out in the way that is best for that particular editor. That means that controls are going to move around occasionally, if you use the same tab for the other editors. It doesn't seem practical to gray out the controls that don't apply to any particular editor, if it's going to cause a lot of clutter.

On the other hand, graying out controls does have the benefit of keeping each control in exactly the same physical place on the tab. Do not underestimate the power of this. There's nothing more aggravating than expecting a control one place, and having it suddenly move someplace else (or disappear altogether). The graying out is a clear indication that the grayed control does not apply in this context.

So depending on how different the controls are for each editor, you will have to decide which approach is less disruptive: to gray out the unneeded controls, or to provide a fresh layout for each editor.

It doesn't seem workable to open a tab for every editor that's open, since there will be many tabs that are useless when the user is in a specific editor.

If possible, enlist the help of some volunteers or beta testers, and do some paper prototyping with them to see which approach resonates better with them.

这篇关于功能区 GUI 指南的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆