Bug 464911

Summary: UI improvement for the software repo tool
Product: [openSUSE] openSUSE 11.1 Reporter: Vincent Untz <vuntz>
Component: YaST2Assignee: Stefan Hundhammer <shundhammer>
Status: RESOLVED INVALID QA Contact: Jiri Srain <jsrain>
Severity: Enhancement    
Priority: P4 - Low CC: dmacvicar, forgotten_h13THG8RK1, lslezak, ma, mmeeks, tgoettlicher
Version: Final   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Vincent Untz 2009-01-09 17:42:38 UTC
(using the yast2-gtk version, but I would think it's valid in other versions)

In this tool, there's a list of repo, and below the list, there are properties of the currently selected repo.

At least in GTK+, it's possible to have the checkboxes and the priority entry directly editable in the list, and I'm pretty sure people would expect this to work. Doing this would also make the UI cleaner.
Comment 1 Duncan Mac-Vicar 2009-01-20 08:56:56 UTC
Technically tricky. because those changes need a kind of restart. It should be possible to do some changes on the fly but we would need to signal from RepoManager to the active pool.
Comment 2 Thomas Göttlicher 2009-01-20 10:54:14 UTC
Reassigning to yast2-gtk maintainer.
Comment 3 Michael Meeks 2009-01-20 12:07:53 UTC
Ricardo is really the maintainer - CC him instead :-)
Comment 4 Forgotten User h13THG8RK1 2009-01-20 20:17:57 UTC
This is a generic UI request: probably to be assigned to Stefan, sh@novell.com .

This particular request seems tricky, but we may want to arrange libyui so that a lot of the convenience stuff at YCP modules is moved there, allowing for more flexibility in the implementation. It seems especially diselegant and unefficient how fallbacks for the optional widgets aren't provided at the libyui level.
Comment 5 Stefan Hundhammer 2009-01-28 17:01:22 UTC
What is this all about? What dialog is this?

In the Qt package selector, there are no properties below the repository list, so comment #4 doesn't apply here.

The YaST2 software repositories module is a YCP module maintained by lslezak.

Comment #4 about generic fallbacks in libyui I don't understand at all. It's way too generic; it's very much like "we should have better software".

If anybody can elaborate to make some sense of all this, please do so and reopen.
Comment 6 Forgotten User h13THG8RK1 2009-01-28 17:39:30 UTC
Stefan, this is about the repositories.ycp standalone tool, not any selector integration. I think Dunanc misunderstood it as well. Vicent is requesting we make the table editable -- at least the check marks be toggled by click.

With regard to my comment, I was just saying what a pain it is to add new widgets because it affects a lot of layers. If we could add a new widget, or extend a widget with new functionality, by just touching libyui, that would be great.

e.g. instead of methods like YOptionalWidgetFactory::hasWizard(), it seems like it would be easier if we simply created a fallback widget on createWizard() at the libyui level. No need for ycp guys to wrap it up in middle men like the Wizard module.

For this request, it seems like adding a table/controls/description widget might be an attractive solution, since this is a combination used widely through yast tools, and so we could easily leverage usability. For the text UI -- and until the GUIs catch up as well -- we would have a fallback that would be a port of the compound widget YCP modules are currently using.
Comment 7 Stefan Hundhammer 2009-01-29 10:35:32 UTC
Changing the enabled/disabled status via double click is there, at least in the Qt UI: A double click on a table item sends an "activated" event which the repositories module uses to toggle that enabled/disabled status.

As for a spreadsheet type table edit widget: The API for YCP for such a widget would be a nightmare. Qt (the Qt4-Lib, not the YaST2 Qt UI) has a widget that could be used. It would have to be written from scratch in the NCurses UI. I don't know about the Gtk UI.

Usability wise, in all my past experienced this would be a step back because this is the kind of widget that is easily misused. Once an editable table is there, there would be little incentive for application developers to provide a proper UI for editing whatever that table displays. Just look at how the wizard tree is currently misused as a (poor, screen space wasting and ugly) replacement for tabs.
Comment 8 Vincent Untz 2009-01-29 11:47:39 UTC
(In reply to comment #7)
> Changing the enabled/disabled status via double click is there, at least in the
> Qt UI: A double click on a table item sends an "activated" event which the
> repositories module uses to toggle that enabled/disabled status.

So it's not possible to edit autorefresh directly in the list. That's why I opened the bug :-) It would be a simple click on the check mark. Sounds really like something I'd want to do.

> Usability wise, in all my past experienced this would be a step back because
> this is the kind of widget that is easily misused. Once an editable table is
> there, there would be little incentive for application developers to provide a
> proper UI for editing whatever that table displays. Just look at how the wizard
> tree is currently misused as a (poor, screen space wasting and ugly)
> replacement for tabs.

Hrm. I don't really agree with this argument. First, I'm pretty sure quite some users are expecting the "click on the check mark in the list should work" point. And second, the fact that people can write bad UI with a feature is orthogonal to providing the feature if it's expected -- just have guidelines and make sure people don't write bad UI.
Comment 9 Duncan Mac-Vicar 2009-01-29 16:40:17 UTC
In any case, refreshing, enabling or disabling would lead either to a very cluncky pool load, unload, sync etc, or complete restart of the package manager.
Comment 10 Vincent Untz 2009-01-29 17:00:25 UTC
(In reply to comment #9)
> In any case, refreshing, enabling or disabling would lead either to a very
> cluncky pool load, unload, sync etc, or complete restart of the package
> manager.

I'm sorry, I don't understand your comment. I'm talking about the Software Repositories tool, where you can already change those options below the list (in the Properties section). The bug is really "make those properties editable from the list".
Comment 11 Duncan Mac-Vicar 2009-01-29 17:56:47 UTC
You can see that if you access the repository editor from within the package selector, it needs to restart the package selector after saving. The same would need to happen after any "in column" editing
Comment 12 Vincent Untz 2009-01-29 18:11:03 UTC
But how is it different from what we have now? Those properties are already editable in the main window.
Comment 13 Ladislav Slezák 2009-01-30 11:11:24 UTC
Vincent is talking about the repo manager (repositories.ycp).

It is possible to change the autorefresh state by clicking the check box below the table. He suggested changing it also by clicking directly on the table item.

The problem is that UI would need to tell more details about the event (which column was clicked in the table).

The current implementation of UI::WaitForEvent() return this map:

$["EventReason":"Activated", "EventSerialNo":8, "EventType":"WidgetEvent", "ID":`table, "WidgetClass":`Table, "WidgetID":`table]

If it would tell e.g. "Column" : 2 the repo manager would be able to detect the correct property to change (Enabled or Autorefresh).