QWv3 – Dev blog 21

It’s that time again! So I’m now back up to full speed on development. The long detour around Cape RichTextFX is pretty much over and I’ve been able to focus on other things.

Simple stuff first.

Selecting a font for the UI

While, eventually, a user will be able to pick a stylesheet (or multiple stylesheets) to use for the interface, there will be users who you want to override the base UI font choice and use select their own font. So I’ve added a drop down list for that in the Options. End users will be able to override the stylesheet font and font size and select something more suitable for their needs.

Here’s some examples:

More work on Night mode

I’ve done some more work on Night mode, I’ve bound it to the F8 key to toggle it on and off. There is still a lot of work to do on it and I still need to decide how best to switch it on and off. I’m thinking a control in the Project menu. I’ll do some experiments. Here’s what it looks like thus far.

A big issue here is that the chapter editor will also need it’s own “night mode” setting. I’ll add that to the text properties sidebar eventually. I also need to solve the icon issue. At present they are just images from the excellent “Iconic” set. The set does have some white icons but ideally I’d like to use svg images since that would solve the scaling problem as well (at present when you scale the size of the UI the icons aren’t scaling).

Problem Finder config and Problem Finder Sidebar

The rule configuration for the Problem Finder is now done, as is the Problem Finder Sidebar.

Find sidebar

Speaking of sidebars, the Find is now (almost) done.

By the way, it’s not accidental that the sidebars look and behave the same way.

Vertical Layout

JavaFX offers a number of different layouts for “tiles”. The main ones are FlowPane, TilePane and GridPane. But, for my purposes, they all suffer from significant issues. FlowPane sets the height of all components in a row to be the same as the height of the tallest component (for a horizontal layout), thus wasting vertical space. TilePane sets the size of all tiles to be the same, wasting even more space and GridPane is only really useful when you have a fixed number of components to display. Up until now I was using FlowPane for displaying the list of Projects in the “Your Projects” window, i.e.

There are a couple of issues with using FlowPane for this type of data. First it makes everything regimental and it’s difficult to discern between the projects. Second, there is quite a bit of wasted space under some of the projects. Notice the “Monster Summer” and “Mansfield Park” projects.

Currently QW (v2.4) uses what I call a “VerticalLayout” to get around these two issues and I’ve now ported that layout to JavaFX (I’m going to do another post about the layout and its implications later). So now the Projects window looks like this:

There’s a much better use of whitespace here although it doesn’t get rid of the “hard to find” issue completely. No layout can solve that problem. Although I do plan to add a sectioned layout for projects eventually, so you would have a section for “Your Projects”, a section for “Invalid Projects”, a section for “Projects you’re editing” and “Other”. I may add this before release, it depends on time.

Idea Board

I’m currently working on the Idea Board and, as of writing it looks like this:

Still some work to do… But it shouldn’t take long to complete, maybe a day or two.

Multi-line text entry boxes

I’ve given up on using the JavaFX TextArea for editing text. I just couldn’t get it to behave properly, it would constantly show a horizontal scrollbar when it wasn’t wanted and I couldn’t get it to size correctly at all.

Instead I’ve created a text component using the RichTextFX editor, I’m using the same editor as is used for editing chapters so I get a lot of functionality for free), such as spellchecking, synonym lookup and formatting. I still have some work to do on that, not least because I can’t assume that the user is writing text in the same language that the interface is in but it will lead to a better experience, not least because I eventually plan to support Markdown in the text editor.

The end is in sight…

So a lot done but still quite a bit to do, namely:

  1. Finish the Idea Board
  2. Implement viewing/editing/adding Assets
  3. Finish full screen mode
  4. Implement typewriter scrolling (no idea how I’m going to do that yet)
  5. Implement distraction free mode
  6. Finish the Warm-up viewer
  7. Implement the Editor mode stuff
  8. Finish the Charts

Now I’m drawing a line under full screen mode. Once that is done I will then be creating a real alpha build for end users to try. It will be for the v3 supported platforms, Windows, Mac and Linux so if you are interested in being a part of that testing drop me a line at support@quollwriter.com. Be warned though, it won’t be for the faint of heart! Things WILL go wrong and while I’ll do my best to ensure that things work I can’t guarantee it. I’m also not sure when the alpha will be released, Christmas is coming up and my time will be limited.

2 thoughts on “QWv3 – Dev blog 21

  1. alucardnoir

    Glad to hear v3 is finally coming out. I wish I could be one of the alpha testers, but alas, with an unknown timeline for the release and limited linux knowledge on my part, combined with the usage of a non mainstream linux distro I don’t know how much help I could be. Also, congrats on going back to uni. Law can be an interesting and rewarding field of study.

    1. No worries and thank you, I’m looking forward to going back. I wanted to do Law as a kid but wound up in Engineering somehow!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: