All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bean <bean123ch@gmail.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: [GITGRUB] New menu interface (implementation)
Date: Fri, 25 Sep 2009 16:00:02 +0800	[thread overview]
Message-ID: <ca0f59980909250100w1069383dw9c0cbef2a63a5216@mail.gmail.com> (raw)
In-Reply-To: <a5d587fb0909241500wed0bdadi21f9fa711b7347cf@mail.gmail.com>

On Fri, Sep 25, 2009 at 6:00 AM, Michal Suchanek <hramrach@centrum.cz> wrote:
> Certainly an element that does not have any parent is special.
> Inventing a new element only for the purpose of not having a parent
> seems over the board, though.
>
> There is certainly some check necessary for this situation but there
> is no need to force the user to implement the check in the
> configuration. What if the screen element is omitted and a panel or
> label is created without any enclosing screen? Would it fail in some
> way ? Crash even?

Hi,

Actually the config file format is designed to work with things other
than graphic menu. Tree structure is quite common and can be used by
other modules. Currently the loading is separated into two steps,
first loadcfg /menu/theme.txt to load the config tree, and menutest
search the config tree for a screen root node and interpret its
children as widgets. If there are more than one screen node, the
content is merged together.

Another example for possible usage of tree structure is pxe config, we
can load different config file based on current ip/mac address. So a
config file may look like this:

screen
{
  panel {}
  panel {}
}

pxe
{
  config = "a1.cfg"
  192.168.2
  {
    config = "a2.cfg"
    10 { config = "a3.cfg" }
    20 { config = "a4.cfg" }
  }
}

graphic menu only uses the screen tree, it won't conflict with pxe module.

This is somewhat similar to the structure of xorg.conf. It has many
sections like "Files", "InputDevice", "Device", "Screen". Different
module would inspect the sections it needs to find config information.

>
>> to cover the screen:
>>
>> screen
>> {
>>  panel
>>  {
>>    x = 0
>>    y = 0
>>    width = 100%
>>    height = 100%
>>  }
>> }
>>
>>>
>>>>
>>>> As for menu, it's better to move it to a different tree, and reference
>>>> it in the menu widget, perhaps something like this:
>>>
>>> What is a menu widget, and how does it relate to the other menu widget(s)?
>>>
>>> I do not see the connection.
>>>
>>> I also do not see why the panel cannot be specified completely at the
>>> very start.
>>>
>>> If need be it could be done like
>>>
>>> panel top_menu{
>>> }
>>>
>>> # add to the panel
>>> panel top_menu{
>>> #these don't have a name
>>> álabel {
>>> átext = Ubuntu Linux
>>> áIcon = ubuntu.png
>>> }}
>>>
>>> panel top_menu{
>>> álabel {
>>> átext = Debian GNU/Linux
>>> áicon = debian.png
>>> }}
>>>
>>> show top_menu
>>>
>>> Adding to an already created object should be possible
>>> programatically, and it is possible even in configuration. However,
>>> this method is quite error-prone in case you mistype the element name.
>>>
>>> Defining the element tree all at once either succeeds or fails visibly.
>>>
>>
>> Consider submenu, for example, in the first level, it shows three
>> label aa, bb, cc, after clicking aa, it change to label dd, ee,ff. In
>> this case, label can be set directly in panel, otherwise we need
>> complex mechanism to add/remove them on the air.
>>
>> menu is a special widget that handles these for us. It reads the menu
>> from another place and generate the labels inside a panel.
>>
>
> I don't see submenus as a vital part of the system.
>
> If you start with submenus you have to solve the problem of opening a
> submenu so that it fits on the screen and does not obscure the item
> with which you activated it so that you know what you are doing. All
> desktops I have seen so far fail miserably at this task and sometimes
> manage to get around their failure with mouse navigation, sometimes
> not.

We can use in-place replacement, the sub menu would occupied space of
original menu, This would avoid popups.

>
> A very good replacement for submenu is the option to make another
> panel the toplevel panel.
> This mechanism can be used for other tasks as well (ie messages, help
> texts). The same mechanisms that works for message should work for
> submenu.
>
> If you want something more cool consider
>
> panel main {
>  direction = horizontal
>  panel distro_choice {
>  direction =vertical
>  label {
>   text = Debian GNU/Linux
>   action {
>    # a simple general command is needed to manipulate the component tree
>    parent[2] = debian
>   }
>  }
>  label {
>   text = Gentoo Linux
>   action {
>    parent[2] = gentoo
>   }
>  }
>  }
>  panel debian {}
> }
>
> panel debian {
>  direction = vertical
>  label {
>  text = Debian GNU/Linux kernel version 2.6.30
>  action {
>   ...
>
> panel gentoo
>  direction = vertical
>  label {
>   text = Gentoo Linux kernel version 2.6.31
>  ...

Actually I'd prefer to separate model and view. We can uses two config
sections, menu section define the menu content, and a menu widget
loads them and display the labels, something like this:

# screen section
screen
{
  panel
  {
    menu {}
  }
}

# menu section
menu
{
  "Boot Windows"
  {
    class = windows
    command = "chainload +1\nboot"
  }
  "Tools"
  {
    "Shutdown"
    {
      class = tool
      command = "halt"
    }
    "Reboot"
     {
       class = tool
       command = "reboot"
     }
  }
}

The theme file is provided system wide, but users have to fill in the
menu content, it's better to keep it as simple as possible, also the
structure of menu is not depended on the gui system, we can change the
widget interface without requires users to change the menu section.

>
> You should not need to specify anything in this case. The space should
> be divided by the toplevel panel, and you may possibly tune one or two
> values.
>
> panel {
>  direction = vertical
>  panel {}
>  panel ()
>  panel {}
> }
>
> should suffice to divide the screen in thirds.
>
> They would probably not be exact thirds, if one of the panels has more
> content it should get more space but that's usually what you want.

I'm currently working on a new layout manager uses the following
properties to control the position of children widgets:

max_columns - maximum number of widgets per row (default 1)
hspace - minimum horizontal space between widgets
vspace - minimum vertical space between widgets
halign - horizontal alignment, can be left, center and right
valign - vertical alignment, can be top, center and bottom

-- 
Bean

gitgrub home: http://github.com/grub/grub/
my fork page: http://github.com/bean123/grub/



  reply	other threads:[~2009-09-25  8:00 UTC|newest]

Thread overview: 175+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-16 20:55 [GITGRUB] New menu interface (implementation) Bean
2009-09-17 10:06 ` Bean
2009-09-19 14:38 ` Michal Suchanek
2009-09-19 20:48   ` Bean
2009-09-20  8:21     ` Michal Suchanek
2009-09-20  8:30     ` Michal Suchanek
2009-09-20 18:17       ` Bean
2009-09-21  9:16         ` Michal Suchanek
2009-09-21 14:56           ` Bean
2009-09-23 11:29             ` Michal Suchanek
2009-09-23 12:11               ` Bean
2009-09-23 17:10                 ` Bean
2009-09-23 19:26                   ` Bean
2009-09-24  7:20                     ` Michal Suchanek
2009-09-24  8:51                       ` Bean
2009-09-24  9:40                         ` Michal Suchanek
2009-09-24 10:31                           ` Bean
2009-09-24 22:00                             ` Michal Suchanek
2009-09-25  8:00                               ` Bean [this message]
2009-09-25  9:00                                 ` Michal Suchanek
2009-09-25  9:12                                   ` Bean
2009-09-25  9:46                                     ` Michal Suchanek
2009-09-25 10:02                                       ` Bean
2009-09-25 10:13                                         ` Michal Suchanek
2009-09-25 10:19                                           ` Bean
2009-09-25 10:37                                             ` Michal Suchanek
2009-09-25 15:45                                               ` Bean
2009-09-27 16:12                                                 ` Michal Suchanek
2009-09-27 18:33                                                   ` Bean
2009-09-27 20:46                                                     ` Michal Suchanek
2009-09-28  3:48                                                       ` Bean
2009-09-28  9:47                                                         ` Michal Suchanek
2009-09-28 10:48                                                           ` Bean
2009-09-28 11:44                                                             ` Michal Suchanek
2009-09-30 19:52                                                               ` Bean
2009-09-30 23:21                                                                 ` Michal Suchanek
2009-10-01  5:06                                                                   ` Bean
2009-10-01  8:41                                                                     ` Michal Suchanek
2009-10-01  9:17                                                                       ` Bean
2009-10-01 10:02                                                                         ` Bean
2009-10-01 12:19                                                                           ` Bean
2009-10-01 12:44                                                                         ` Michal Suchanek
2009-10-01 13:33                                                                           ` Bean
2009-10-01 14:53                                                                             ` Michal Suchanek
2009-10-01 16:22                                                                               ` Bean
2009-10-02  9:16                                                                                 ` Bean
2009-10-02 10:42                                                                                 ` Michal Suchanek
2009-10-03 15:25                                                                                   ` Bean
2009-10-03 22:34                                                                                     ` Michal Suchanek
2009-10-04  4:27                                                                                       ` Bean
2009-10-04 11:22                                                                                         ` Michal Suchanek
2009-10-04 13:54                                                                                           ` Bean
2009-10-04 16:06                                                                                             ` richardvoigt
2009-10-04 16:16                                                                                               ` Bean
2009-10-04 20:05                                                                                                 ` Bean
2009-10-04 20:16                                                                                                   ` Bean
2009-10-04 22:20                                                                                                     ` Michal Suchanek
2009-10-04 22:21                                                                                                       ` Michal Suchanek
2009-10-05  4:45                                                                                                       ` Bean
2009-10-05  9:07                                                                                                         ` Michal Suchanek
2009-10-05 10:35                                                                                                           ` Bean
2009-10-05 13:40                                                                                                             ` Michal Suchanek
2009-10-06  6:10                                                                                                               ` Bean
2009-10-06  6:25                                                                                                                 ` richardvoigt
2009-10-05 17:52                                                                                                             ` richardvoigt
2009-10-06  5:35                                                                                                               ` Bean
2009-10-05 12:24                                                                                                           ` Bean
2009-10-05 13:33                                                                                                             ` Michal Suchanek
2009-10-06  5:33                                                                                                               ` Bean
2009-10-06  9:50                                                                                                                 ` Michal Suchanek
2009-10-06 11:08                                                                                                                   ` Bean
2009-10-06 11:46                                                                                                                     ` Michal Suchanek
2009-10-06 13:14                                                                                                                       ` Bean
2009-10-06 15:18                                                                                                                         ` Michal Suchanek
2009-10-06 16:14                                                                                                                           ` Bean
2009-10-06 16:35                                                                                                                           ` Bean
2009-10-06 18:41                                                                                                                             ` Michal Suchanek
2009-10-06 22:16                                                                                                                             ` Michal Suchanek
2009-10-07  6:05                                                                                                                               ` Bean
2009-10-07  8:54                                                                                                                                 ` Michal Suchanek
2009-10-07 10:54                                                                                                                                   ` Bean
2009-10-07 10:57                                                                                                                                   ` Bean
2009-10-07 13:05                                                                                                                                     ` Michal Suchanek
2009-10-07 21:13                                                                                                                                       ` Michal Suchanek
2009-10-08  4:20                                                                                                                                         ` Bean
2009-10-08  5:21                                                                                                                                           ` Bean
2009-10-08 11:26                                                                                                                                             ` Michal Suchanek
2009-10-08 13:26                                                                                                                                               ` Bean
2009-10-08 21:34                                                                                                                                                 ` Michal Suchanek
2009-10-09  3:45                                                                                                                                                   ` Bean
2009-10-09 11:52                                                                                                                                                     ` Michal Suchanek
2009-10-09 12:48                                                                                                                                                       ` Bean
2009-10-09 14:20                                                                                                                                                         ` Michal Suchanek
2009-10-09 14:54                                                                                                                                                           ` Bean
2009-10-09 15:57                                                                                                                                                             ` Michal Suchanek
2009-10-09 16:17                                                                                                                                                               ` Bean
2009-10-09 16:29                                                                                                                                                                 ` Michal Suchanek
2009-10-09 16:48                                                                                                                                                                   ` Bean
2009-10-09 17:27                                                                                                                                                                     ` Michal Suchanek
2009-10-09 18:32                                                                                                                                                                       ` Bean
2009-10-09 20:41                                                                                                                                                                         ` Michal Suchanek
2009-10-10  3:43                                                                                                                                                                           ` Bean
2009-10-10 11:22                                                                                                                                                                             ` Michal Suchanek
2009-10-10 19:21                                                                                                                                                                               ` Bean
2009-10-10 22:54                                                                                                                                                                                 ` Michal Suchanek
2009-10-11  3:58                                                                                                                                                                                   ` Bean
2009-10-11 10:03                                                                                                                                                                                     ` Michal Suchanek
2009-10-16 20:47                                                                                                                                                                                       ` Bean
2009-10-17 20:01                                                                                                                                                                                         ` Bean
2009-10-18 17:01                                                                                                                                                                                           ` Bean
2009-10-20 14:52                                                                                                                                                                                             ` Bean
2009-10-20 19:31                                                                                                                                                                                               ` Michal Suchanek
2009-10-21  1:01                                                                                                                                                                                                 ` Peter Cros
2009-10-21  4:07                                                                                                                                                                                                 ` Bean
2009-10-21 20:55                                                                                                                                                                                                   ` Michal Suchanek
2009-10-22  3:47                                                                                                                                                                                                     ` Bean
2009-10-20 19:20                                                                                                                                                                                             ` Michal Suchanek
2009-10-21  3:45                                                                                                                                                                                               ` Bean
2009-10-21 20:47                                                                                                                                                                                                 ` Michal Suchanek
2009-10-22  4:34                                                                                                                                                                                                   ` Bean
2009-10-22  7:41                                                                                                                                                                                                     ` Michal Suchanek
2009-10-22  8:15                                                                                                                                                                                                       ` Bean
2009-10-23  5:59                                                                                                                                                                                                         ` Peter Cros
2009-10-23  7:31                                                                                                                                                                                                           ` Bean
2009-10-24  8:04                                                                                                                                                                                                             ` Peter Cros
2009-10-25 14:27                                                                                                                                                                                                               ` Peter Cros
2009-10-26 18:24                                                                                                                                                                                                                 ` Bean
2009-10-27 17:34                                                                                                                                                                                                                   ` Bean
2009-10-28 20:29                                                                                                                                                                                                                     ` Bean
2009-10-28 21:12                                                                                                                                                                                                                       ` Vladimir 'phcoder' Serbinenko
2009-10-29  3:24                                                                                                                                                                                                                         ` Bean
2009-10-29  9:10                                                                                                                                                                                                                           ` Vladimir 'phcoder' Serbinenko
2009-10-29  9:25                                                                                                                                                                                                                             ` Bean
2009-10-29  9:33                                                                                                                                                                                                                               ` Vladimir 'phcoder' Serbinenko
2009-10-29  9:52                                                                                                                                                                                                                                 ` Bean
2009-10-30 12:07                                                                                                                                                                                                                                   ` Bean
2009-11-01 17:16                                                                                                                                                                                                                                     ` Bean
2009-11-09 15:55                                                                                                                                                                                                                                       ` Bean
2009-11-09 16:16                                                                                                                                                                                                                                         ` mingw32 compile fixes (Re: [GITGRUB] New menu interface (implementation)) Robert Millan
2009-11-09 16:46                                                                                                                                                                                                                                           ` Bean
2009-11-09 20:03                                                                                                                                                                                                                                             ` Robert Millan
2009-11-10 13:51                                                                                                                                                                                                                                               ` Bean
2009-11-09 20:04                                                                                                                                                                                                                                             ` warn_unused_result attribute (Re: mingw32 compile fixes (Re: [GITGRUB] New menu interface (implementation))) Robert Millan
2009-11-09 20:10                                                                                                                                                                                                                                               ` Felix Zielcke
2009-11-09 21:07                                                                                                                                                                                                                                                 ` Robert Millan
2009-11-09 20:20                                                                                                                                                                                                                                               ` Colin Watson
2009-10-20 19:06                                                                                                                                                                                           ` [GITGRUB] New menu interface (implementation) Michal Suchanek
2009-10-21  3:21                                                                                                                                                                                             ` Bean
2009-10-09 16:56                                                                                                                                                               ` richardvoigt
2009-10-09 17:09                                                                                                                                                                 ` Michal Suchanek
2009-10-09 18:28                                                                                                                                                                   ` richardvoigt
2009-10-09 18:49                                                                                                                                                                     ` Bean
2009-10-09 20:22                                                                                                                                                                     ` Michal Suchanek
2009-10-09 15:58                                                                                                                                                             ` Bean
2009-10-08 11:18                                                                                                                                           ` Michal Suchanek
2009-10-08 13:07                                                                                                                                             ` Bean
2009-10-08 21:46                                                                                                                                               ` Michal Suchanek
2009-10-09  3:34                                                                                                                                                 ` Bean
2009-10-09 11:48                                                                                                                                                   ` Michal Suchanek
2009-10-09 12:34                                                                                                                                                     ` Bean
2009-10-06 22:59                                                                                                                             ` Michal Suchanek
2009-10-04 21:24                                                                                                 ` Michal Suchanek
2009-10-04 21:57                                                                                             ` Michal Suchanek
2009-10-05  5:01                                                                                               ` Bean
2009-10-05  9:12                                                                                                 ` Michal Suchanek
2009-10-04 12:03                                                                                         ` Peter Cros
2009-10-04 13:26                                                                                           ` Bean
2009-09-27 23:01                                                     ` Michal Suchanek
2009-09-28  2:59                                                       ` Bean
2009-09-28  9:32                                                         ` Michal Suchanek
2009-09-19 18:45 ` Michal Suchanek
2009-09-19 18:55   ` richardvoigt
2009-09-20  8:31     ` Michal Suchanek
2009-09-20 18:51       ` richardvoigt
2009-09-21  9:23         ` Michal Suchanek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ca0f59980909250100w1069383dw9c0cbef2a63a5216@mail.gmail.com \
    --to=bean123ch@gmail.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.