Potential new "Zoom Bar" functionality?

Previous topic - Next topic


I've mentioned my idea of a "Zoom Bar" in a few posts on this forum and thought it might be interesting to try actually creating one instead of just talking about it, so that's what I've started.

See the attached animated GIF for a quick idea of how it works so far.

How I see it working is this:
* The bar is displayed to the right of the main canvas. (This is quite unobtrusive and in many cases it will sit over unused screen space.)
* The blue marker on the left is the current zoom level.
* The red markers on the right are the default zoom levels.
* The numbers show the percentage zoom level.
* The user can left-click anywhere on the zoom bar to change the current zoom level.
* The user can right-click anywhere on the zoom bar to create a new default or right-click on an existing default to remove it.
* The default zoom levels are used to quickly change between user-specified levels (see below).

The icons (I haven't yet got round to creating pictures) below the zoom bar relate to functions as below:
* "I" zooms in to the next largest zoom default (a bit like the current zoom in icon but with more control via the defaults).
* "O" zooms out to the next smallest zoom default (a bit like the current zoom out icon but with more control via the defaults).
* "D" zooms to a box that the user drags out on screen (replaces the zoom icon from the current toolbar).
* "H" zooms to fit to page height (only currently available via a menu or a keyboard shortcut).
* "W" zooms to fit to page width (only currently available via a menu).
* "h" zooms to the height of the currently selected objects (not currently available).
* "w" zooms to the width of the currently selected objects (not currently available).
* "R" resets everything zoom-related back to the default settings.
* "E" allows the user to enter a specific zoom level value (via a pop-up) replacing the existing text entry box. (This could be changed to a text box with spinner instead of an icon.)

The zoom settings could be saved with the document so that each document has its own zoom settings for what is best for that document.

At the moment the working model is very crude and most functions are not implemented.

I think Scribus will be better with something like this as it moves all of the zoom functionality to one place and makes it much easier to zoom quickly.

I aim to be looking to implement features as I get to them but I would like to know what the community feels about his sort of thing. Do you like the idea? Is it something that you think will be useful to you? Are there some changes that you think will help? Can you think of a better way of doing this?

Basically, is it worth me putting time and effort into this or should I just drop it?

P.S. I'm developing it in VS C#.NET (I have my reasons) but I don't think it would be too difficult to port the code over to Qt.

[attachment deleted by admin]


I'm torn. I'd love to see the zoom feature improved and applaud your efforts. I do like the way LibreOffice does it, however. I don't know if that's a widget specific to whatever language they're using or not, though.

I've only run into minor problems with the current zoom situation with Scribus and so far it's been nothing to lose my hair over ;-) Yet!


hi garry,

nice to see you making a running mockup!

what i miss in your proposal is: for whom are you creating the toolbar and what problem is it solving?

i think that starting from the needs of a "specific person" (aka persona: https://www.smashingmagazine.com/2014/08/a-closer-look-at-personas-part-1/ ) would make the proposal better.

from my point of view, once the power users have tasted the ctrl-mouse wheel and got scribus to zoom in and out with + and -, they won't really need a GUI for the zoom (not the current one, nor the one your proposing).
what they probably need is a way to check what is the current zoom and to click on +/-/reset.

but there are user who like to have a more visual approach. for them i'd love something like you are proposing!

i hope it will replace most of the current zoom-GUI.
the widgets currently in the status bar could be reduced to a spin box with a context menu for resetting the level. the action attached to the buttons your are proposing, could also be added to the context menu (the one that popups when you right click on the zoom spin box; btw, the up and down entries should be removed from there!).

and the zoom tool should then be removed from the toolbar.

anyway, the buttons you are proposing seem very sensible and useful to me!

on the other side, the "ruler" approach seems to be a bit overkill to me.
it does not really look intuitive and it eats up lot of space...

it's an interesting start and i don't know how a better widget could look like... i have to think about it...

but i'm curious what other people will be saying!

keep up the good work!


hi garry

it's an interesting approach, but i don't need it...
as long as i can click it away, it's fine. otherwise it looks as a waste of screen space – at least for people who don't use it.



Many thanks for your feedback solaero, a.l.e and utnik. It's much appreciated. I'll try and answer your questions and concerns together.

The main problems I was attempting to solve are as follows:
* There is no currently available "zoom to selected" function as requested here: http://forums.scribus.net/index.php/topic,1679.0.html (It's worth reading the whole thread for more information.) Sometimes it's nice to be able to select something and easily make it fill the screen to work just on that thing.
* There is no way of quickly switching between two user-defined zoom levels. All we have at the moment is the "half or double the existing level" function or the "go up or down by a set amount" function. Sometimes it's nice to be able to quickly switch between two levels that are right for a particular document (see below).
* The zoom GUI is split between the toolbar and the status bar. That just seems silly to me so having everything in the same place sounds better.
* The current "half or double the existing level" function doesn't give the user much fine control. For instance, if you're at 100% and want 300% you have to type the value into a box or use the spinner multiple times which detracts from the work-flow. I'd prefer to just make one click.

Who it's for

Basically, it's for me (and people who do the same sort of work as me). The zoom functions of Scribus are, for the work I do, not nearly nice enough to use. I frequently want to switch between two or three zoom levels - close-up, full page, from a distance - and with the current tools I have to keep messing around entering values or using the spinner multiple times to get where I want to be.

It's also for beginners and other people who prefer to be able to make things happen with the minimum of fuss. Just click to set the zoom level that you want, it's as simple as that.

(A "previous" zoom level button would be no use as I work on three levels, normally switching between two levels but occasionally going to another for an overview. Once you switch to a third level the "previous" button no longer works properly and you have to mess around "putting things right" again.)

For power users

I do not propose that the shortcuts or power-user functions would change or be removed. People who are used to using mouse wheel zooms or Ctrl+0 etc. would not be affected. There's absolutely no reason for people to lose anything they've already got.

The zoom bar would, of course, be removable if someone didn't want it. I just didn't get round to putting a "Close" icon on it yet. Please remember this is a very crude first version.

For screen space

I've only been learning C#.NET for a couple of days so my expertise with the form designer is very limited. This is the only reason why the zoom bar is so large at the moment. I envisage the final thing would be no larger than a vertical scroll bar (see http://forums.scribus.net/index.php/topic,1679.msg7507.html#msg7507 for an example).

Given the space taken up by the align and layers dialogs that I always have open - as there's no other way of quickly aligning things or switching layers on/off (as I frequently want to do) - the space that an extra scroll bar would use is, in my opinion, not excessive. (And, as said above, you can close it if you don't want it.)

The LibreOffice way

Personally I don't like the LibreOffice zoom widget. I can never get the zoom level I want first time. Maybe I'm just not using it right but it's not clear to me.

In use

I think this is the sort of thing that can only really be understood properly by actually using it. A single click to zoom to the exact level you want really is so much easier than having to negotiate spin boxes, half/double functions and value entry.

I think it could be a case of knowing how to get by with what's available versus getting used to a new way that could be much easier once you've seen what it can do.

If I knew how to package the whole thing up so that people could install it and have a go then I'm sure the whole experience would become much more understandable. (That's probably much more complicated than I think it should be.)

Back to the community

I hope I've managed to explain myself - and the proposal - a bit clearer now. Just tell me if I haven't.

If anyone has any questions or ideas or comments then please speak up.

If you're a Scribus beginner then I'd love to hear what you think about it. Power users have their own way of doing things but it's the beginners that can better see the limitations of software and get frustrated when something doesn't work the way they want it to. It's easy to become a power user, you just keep using the software; it's way more difficult being a beginner and not knowing what to do.

P.S. If there's no real enthusiasm for this then I've no problem in just dropping it. It's been a nice way of learning some C#.NET basics and I've got other things I could be working on. I'm not really all that bothered either way, it's just an experiment.


he he, sorry, despite the lengthy post, my first question was not clear enough :-)

it should have been: what problem are you solving for the user?
(not what's problem in scribus...)

... but you mostly answered the question in the rest of your post...

i'll try to summarize my point of view on the results after  this first round:

- the scribus zoom UI needs improvements.
- this proposal is for creating a toolbar for the "beginners" and for people doing single page design (mostly vector drawing)
- the power user should be able to hide the toolbar.
- the current UI should be simplified and leave only three visible control points: the menu, the status bar; and the new zoom toolbar.
- the zoom widget in the status bar should be optimized for the power users. (my proposal: see the inkscape one, with some of the entries in the libreoffice context menu)

personally, i believe that the zoom in scribus needs improvements for both the power users and the "insecure" ones...
and you work goes in the good direction. for the ones who are no pros yet.

just one last remark for now: for your own needs, i fear that you should work on improving the power user way of zooming... :-) ... but that's a different topic...


Thanks for getting back to me a.l.e.

As for "what problem are you solving for the user? (not what's problem in scribus...)" I see that as being all part of the same thing. Scribus is missing some zoom functions and, in my opinion, some of the existing functions are improperly placed or not quite implemented to give enough user precision. If these things were fixed then that would solve the user problems. I don't really know how else to say it. One thing fixes the other.

I probably didn't explain myself well enough but, I believe my zoom bar proposal would give everyone - beginners, intermediate and power users - benefits. I created it because it's what I'd want but it can be used by all. How many pages you're using or what level you're at is irrelevant, it works the same for everyone.

With this proposal you don't need the zoom tools on the status bar (see caveat below), the zoom bar has everything you need (or it will if it gets finished). The "-" & "+" magnifiers are replaced by the in and out zoom buttons with the added extra that the user can set the in and out zoom factors by placing the defaults (red markers) where they want them rather than having just half/double current value as it is now. Clicking on the 100% level replaces the "1" magnifier, so that's gone too (it can be made easier to select it somehow if needed).

That leaves the Text Entry field with the spinner. The text entry part of it is replaced by the "E" button which will pop-up a little dialog. However, I don't think this will really be used by someone who has got used to using the bar. In my experience I very rarely need to see something at an exact percentage zoom level (e.g. 85%). It just needs to be whatever size makes it look right to work on; I really couldn't care what the actual percentage value is.

By way of example: When you want to see the whole page do you think about zooming to page height or do think about zooming to 61.73%? It's what you can see that's important, not the percentage zoom value.

The spinner could be replaced by mouse-wheeling over the bar or right-clicking the up/down arrows or something else. There are probably any number of ways to do that but the bar can be clicked on a bit lower or higher than what it currently is. It's one click traded for another so I can't see it being a problem.

So that gets rid of the need for the status bar zoom tools. The toolbar zoom tool is replaced by the "drag" icon on the zoom bar, so that's gone too. Everything in one place.

Having said all of that however (and here's the caveat mentioned earlier), if someone closes the zoom bar then they will indeed need the other tools but I really think that people won't want to close it once they get used to it. Even though the zoom bar replaces all of the existing GUI zoom tools there's no reason to lose the existing ones. Existing users can just use what they're used to and people just starting can use whichever they prefer. I'm not trying to force existing users to work a different way, I'm just saying that there's another way. (Keyboard shortcuts won't need to change or be removed, they will work as they do now.)

I realise that it probably sounds like I'm preaching from a pulpit here but I really do think that - once the creases have been ironed out - people would find it much easier to zoom around using the zoom bar. One click gets you to where you want to be, it really couldn't be simpler.

It's just a case of looking at things from a different angle.

As for the current tools - and this is definitely more important than this silly zoom bar stuff - I agree that they need improvement.

The toolbar zoom icon should be moved down to the status bar. There's no point having it anywhere else.

The "-" and "+" magnifiers have drop down menus that only let you do what the button lets you do in the first place. That's just silly and I've had problems with the menus popping up when I've not wanted them to. Just make them simple buttons.

I also agree that the text entry field (with the spinner) needs better entries in its contextual menu (such as, as you say, in Inkscape). Why does it have Undo, Select All, etc? Again, silly.

Anyway - and I don't expect this will be the last long post I add to this thread - I hope I've explained things properly this time. (If not just tell me and I'll try again.)

Looking forward to hearing everyone's comments...


GarryP, I like how the variable zoom function works in LibreOffice. You just move the slider left or right, to vary the zoom.

What I don't like in the current zoom function in Scribus is that, if I set a zoom range of 50 to 100 % and what if I needed a 40% or 25% zoom? Well then,  that means I have to go into Document Preferences and change it.

Not very good in that way. Zoom should be like the slider, but also unlimited, from 1% to 1000%
Linux (Fedora 22 i686_64). Scribus 1.5.3svn. MATE / GNOME 3.16 evince.


Thanks for the feedback LilZebra.

I like the idea of a slider - which LibreOffice has - but I don't think that the way it is implemented in LibreOffice is right for Scribus.

For a start I think it's way too small for page layout purposes. Secondly, in my experience, it seems to add default markers at odd places. (I've just loaded a document and one of the markers is set to 85% and I've no idea why. Maybe if I put in the effort to find out why I'd know.)

One thing I do like about it is the ability to drag/slide while zooming. That's something that I wanted to look at when I first came up with my idea but I've a feeling that "drag zooming" would put too much strain on low-powered machines with complex documents. Still, it's something to look at as not everyone's machine is low-powered and you can always not drag-zoom if your machine can't handle it. If the zoom bar allows both then the user can choose.

I agree with you that the way Scribus currently handles zooming needs to be enhanced and that's why I came up with the idea of the zoom bar. As you say, having to go into Preferences to change settings is a pain and most people won't bother. However, with the zoom bar you can very easily right-click where you want your zoom "tab stops" to be and zoom in and out quickly using the in/out buttons (or keyboard shortcuts but I've not got to that yet).

One other thing that you mentioned is the zoom range. This is an interesting area. What should be the maximum zoom level? I've used 800% but you've suggested 1000%. Other people might expect 1600% as a maximum and others might want even higher.

Should the zoom bar have a maximum or should itself be zoomable? Should the user be able to make the scale in the zoom bar larger/smaller to give them more control? Should the scale be linear, as it is currently, or should it be something else (exponential, for example, or the way LibreOffice does it)? Should that be a user choice?

These are all things that I'd be very interested in getting more feedback about. Everyone will have their own ideas about how they want things to be and not everyone will be totally happy but you can't please all of the people all of the time. It would be nice to please most of the people most of the time though.