masghar / yet-another-music-application

Automatically exported from code.google.com/p/yet-another-music-application
0 stars 0 forks source link

Add custom fixed GUI parameters #134

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Resize Navigation Pane to a non-default size.
2. Close and reopen Stoffi.
3. Stoffi opens at the default size first and then resizes itself to the size 
that was previously chosen.

What is the expected output? What do you see instead?
Stoffi should read the size of the Navigation Pane before drawing the UI, so 
that it loads at the correct size immediately.

What release of Stoffi are you using?
1.29.753.3559

Original issue reported on code.google.com by wic...@gmail.com on 19 Feb 2011 at 11:21

GoogleCodeExporter commented 9 years ago
When optimizing the startup we had two options:

1) Delay the start of Stoffi and paint only when everything is calculated and 
initialized. This will give you a large delay when you sit and wait for Stoffi 
to start, starting to wonder if maybe you didn't click hard enough...

2) Paint Stoffi NOW, and fix small stuff like shuffle-state and pane-size 
later...

We went with option #2. :)

Original comment by ephracis on 22 Feb 2011 at 10:07

GoogleCodeExporter commented 9 years ago
I hear you :)

What I would like you to consider is the following:

KDE had a bad reputation for a while where people complained about the load 
times of the applications. One way that the developers attempted to solve this 
problem was to paint the UI first, even before the rest of the application had 
a chance to initialise. In this way, the user saw the UI appear immediately, 
and by the time they had moved their mouse to what they wanted to do, the rest 
of the program should have had a chance to catch up and be ready.

I know this sounds the same as what you have already explained, but what I mean 
is: Isn't it possible to read settings from a file first that would list things 
like: x,y co-ordinates of window, x,y size of window, pane width of window and 
then paint the initial UI from those setting before initialising anything else? 
Then Stoffi would load immediately, with the correct pane size, while the rest 
initialises into that window?

Original comment by wic...@gmail.com on 24 Feb 2011 at 6:47

GoogleCodeExporter commented 9 years ago
The problem here is how .NET handles reading the settings.

First we have the fact that reading from harddrive is EXTREMELY slow when 
compared to working with the CPU or even reading from memory. When we ask .NET 
for a specific setting it reads the data from disk. Any requests to that 
settings later is faster since .NET will cache the setting in memory. However, 
reading any other setting will result in another read from disk.

So, right now this is the best I can give you if you don't want to wait for a 
number of disk reads until the GUI is drawn.

However, I will optimize the startup later by putting all settings that are 
needed to draw the GUI into ONE single settings that can be read once by .NET. 
This way we get ONE disk read and we can paint the GUI. This will give us a 
fast GUI startup and eliminate all the "fixes" that you see now.

Since this requires a lot of reorganizing the internal settings it will be 
prone to some new bugs and errors. I will try to fix it for the Shang release.

Original comment by ephracis on 24 Feb 2011 at 7:12

GoogleCodeExporter commented 9 years ago
Great, thank you for the explanation. 

For your reference, here are the settings that I would appreciate if Stoffi 
could read at startup:

Window width: (set inside Preferences)
Window height: (set inside preferences) 
Window position left: (set inside preferences)
Window position top: (set inside preferences)
Navigation Pane width: (hidden from user, remember automatically)
Details Pane height: (hidden from user, remember automatically) [See 
enhancement #23]

Original comment by wic...@gmail.com on 24 Feb 2011 at 7:50

GoogleCodeExporter commented 9 years ago
I think that the window position, state (maximized/normal) and size also should 
be as it is now: remembered, not set explicitly.

But I will go through all the settings that are read during startup and put 
them all in a single data structure. :)

Original comment by ephracis on 24 Feb 2011 at 8:04

GoogleCodeExporter commented 9 years ago
Why do you think these options are available in the Command Prompt? Because 
people want to set these things explicitly :)

Why do you think commercial window managers exist for Windows? For the same 
reason. People do want to set these thing explicitly. 

It drives me crazy that Explorer always opens up at a random spot on the screen.

With explicit co-ordinates, Stoffi can be resized and moved however the user 
wants and still start up in the familiar position.

Original comment by wic...@gmail.com on 24 Feb 2011 at 8:22

GoogleCodeExporter commented 9 years ago
Hm.. I still think that settings those parameters explicitly is pretty 
hardcore. I will keep the current way as default but I can add a setting to 
change it explicitly for advanced users later. A lot of "common" people are 
afraid of settings. I want Stoffi to present "common" people with settings that 
are simple and easy to understand.

Still, I acknowledge the need for us übernerds as well, but we are not as many 
and we are way more diverse so we don't get our way by default. Sorry. :P

Original comment by ephracis on 24 Feb 2011 at 8:31

GoogleCodeExporter commented 9 years ago
I agree in principle, however what is common for one person is hieroglyphics 
for another. It depends on where your experience is.

I don't subscribe to the idea of "Advanced" settings. What I believe works is 
good instructions. If you can explain something clearly, then people won't be 
as afraid to try it. Take the fear of the unknown away.

You could add an entry called "Other" under Preferences. Then explain the 
settings under that screen so that people can discover for themselves the 
advanced areas of Stoffi.

Original comment by wic...@gmail.com on 24 Feb 2011 at 8:57

GoogleCodeExporter commented 9 years ago
I was more thinking of under the Appearance section adding a setting for Window 
properties where the default is "Remember" but where advanced users can change 
to "Custom" and set their explicit values. When the drop-down is changed to 
"Custom" some new controls will popup.

Pretty much how the upgrade settings work: simple by default but adaptable for 
advanced users.

Original comment by ephracis on 24 Feb 2011 at 9:45

GoogleCodeExporter commented 9 years ago
That sounds like a good plan.

Original comment by wic...@gmail.com on 24 Feb 2011 at 10:18

GoogleCodeExporter commented 9 years ago

Original comment by ephracis on 29 Sep 2011 at 4:50

GoogleCodeExporter commented 9 years ago
I was just about to start implementing this when I realized that it is one of 
the worst ideas I've ever had. It wouldn't fix anything since these settings 
would still have to be read from file during startup. Setting the values 
manually or by moving the window both ends up the same: we store them on file 
and read them on startup.

And then I think it's better to let users set coordinates by placing the window 
instead of typing them in manually. Startup time will still be the same.

To improve startup there's other measures to be taken. Like moving to SQLite or 
similar.

Closing. :P

Original comment by ephracis on 8 Jan 2012 at 9:35

GoogleCodeExporter commented 9 years ago
After re-reading this bug report, I see that I mixed up two different ideas. 
One was a potential way to help with speeding up the UI and the other was a 
feature request to be able to specify the co-ordinates manually.

Regardless of how you resolve the UI startup, I would really appreciate it if 
you include this feature in Stoffi.

I know this won't matter to many people, but to the small percentage of people 
out there, like me, this is a fantastic feature only seen is a small handful of 
applications.

As mentioned, one of them is the command prompt. I spent a few minutes the 
first time setting up the co-ordinates manually and now, it is a pleasure. I 
can resize it, move it anywhere I need to get it out of the way and close it 
and never have to worry about setting it up again. Each time I open it, it 
faithfully opens to the same size and at the same place on the screen.

For all our users, this will be invisible to them as Stoffi will continue to 
store the values found when Stoffi is shutdown. A side bonus is that the 
shutdown will be slightly quicker because it has one less entry to write to the 
config file.

Finding an application with this feature is rare and highly appreciated.

Please reconsider opening this as a feature request.

Original comment by wic...@gmail.com on 22 Apr 2012 at 6:13

GoogleCodeExporter commented 9 years ago
I'll add a feature in Han where there's a drop down for "startup location". 
Possible values: Last position, Center of screen, Let me specify.
The latter will add two boxes where the user can enter coordinates.

I'll also add "startup size" with possible values: Last size, Let me specify. 
Same thing here with boxes appearing.

Original comment by christof...@stoffiplayer.com on 22 Apr 2012 at 6:30

GoogleCodeExporter commented 9 years ago
Sounds great, thank you!

Original comment by wic...@gmail.com on 22 Apr 2012 at 6:38