Release 0.3 Build 562

There have been a fair amount of core changes to this version. If you use WordTsar on a daily basis, make sure you keep the old version around… just in case.

Fixed Ticket #57 ^KP implemented to ^OP

NEW

Implemented menus. These menus closely match Wordstar's. It should make things easier for people not familiar with Wordstar.

NOTES

0.3.562 has not been extensively tested on MacOS. Linux and Windows use has been medium.
I am personally putting it into daily use (eat your own dog food).
I haven’t had a crash lately, but it can still happen. BE CAREFUL!
A backup of your file is made every 1 minute (not when opening DOCX files).
The initial page/paper size is 8.5" x 11"
Download the implemented.xlsx file to see what’s done and what’s next (slightly out of date).
the 0.3.x releases use UTF8 for all in-memory storage of the document. This required some large changes in the backend (dropping the gapbuffer document storage for a paragraph based storage system, as well as a ton of changes in layout and document management. That's why this is labeled pre-alpha instead of alpha.

Release 0.3 Build 409

This is marked as pre-alpha because of the Unicode backend changes… it is stable for me, but I don’t do a lot of Unicode work. RTF and DOCX File IO isn’t unicode aware yet either.

It’s been awhile since I made a release… I was exceedingly busy finishing a novel I had under contract, so it took precedence over any other work.

Fixed Bugs
– Fixed Ticket #46 (Regression) “Save” should “Save as” if the file has not been saved before
– Fixed Ticket #47 WordTsar seems to be unable to print only one line of text.
– Fixed Ticket #49 ^KD and ^KQ not working correctly on edited document
– Fixed Ticket #50 backup file not path-joined
– Fixed Ticket #52 Deleting pages does not lower page count in the status bar
– Fixed Ticket #53 File Save quietly fails

Note on Wordstar fonts

Switching from WxWidgets to QT lost us some granularity on fonts. With WxWdigets, I was able to find out if a font was serif or san serif, proportional or monospaced, and even what codepage it was from. I haven’t figured out how (or if) I can do that in Qt yet.
Any Wordstar file loaded with font information will saved with that font information intact. If you insert new fonts during editing and save, those new fonts will be converted to Courier or Times New Roman, since the only information Qt gives me is proportional or monospaced. Ugh.

Release 0.3 build 313

This is marked as pre-alpha because of the Unicode backend changes… it is stable for me, but I don’t do a lot of Unicode work. RTF and DOCX File IO isn’t unicode aware yet either.

This is a bug fix only release, and all users are recommended to update.

Fixed Tickets #37 RTF files not saving
Fixed Tickets #36 Catch Window close to possibly save file
Fixed Tickets #35 DOCX incorrectly says it can save files
Fixed Tickets #34 Wordstar save fonts failing
Fixed Tickets #32 Crash on macOS when exiting
Fixed Tickets #30 page break spacing while editing


Note on Wordstar fonts

Switching from WxWidgets to QT lost us some granularity on fonts. With WxWdigets, I was able to find out is a font was serif or san serif, proportional or monospaced, and even what codepage it was from. I haven’t figiured out how (or if) I can do that in Qt yet.
Any Wordstar file loaded with font information will saved with that font information intact. If you insert new fonts during editing and save, those new fonts will be converted to Courier or Times New Roman, since the only information Qt gives me is proportional or monospaced. Ugh.


What happened to 03..312?

I released it with RTF file saving turned off, so I deleted the release and did a quick update to 0.3.313 with that error fixed.

Release 0.3 build 276

This is another large release. This is the first stable release with a complete UTF-8 based backend. I’m still calling it pre-alpha because I’ve only really run it on Linux (quite extensively).

In this Release:

  • UTF-8 Backend (see below for tech details)
  • New RTF loader (less complete, but more robust)
  • New DOCX loader (incomplete, but not bad)

Bug Fixes:

  • Yeah, a lot of corner-cases from moving to UTF-8
  • Actual UTF-8 data entry from keyboard has not been tested, just copy from web to WordTsar.
  • I reset the build number for this release. Don’t ask me why, I can’t remember.

Tech Details

Every version of WordTsar has been using a gapbuffer for it’s underlying document buffer. Adding UTF-8 support added created issues with the single buffer issue. We now use a plain buffer per paragraph, and have seen some slow downs because of it. We’ve added caching that should get around that.

Carat movement is all grapheme based. If a grapheme is made up of multiple codepoints, deleting will remove the entire grapheme.

The File save and load routines don’t fully understand UTF-8 yet. Wordstar file save and load most likely never will.

I’m a Canadian English writer. All of this UTF-8 stuff needs more testing than I was able to give it.

WordTsar 0.2.2073 Released

I’ve used and am using this version extensively on Windows and Linix. There has been minimal testing under MacOS.

In this Release:

  • Fixed Ticket 18 (MacOS)
  • Fixed Ticket 17 (MacOS)
  • Fixed Ticket 15 (MacOS)
  • Fixed Ticket 16
  • Added full justification of text .ojon

Known Issues:

  • ^KP not implemented, use ^OP
  • .pt command can only be used once per document
  • See Ticket System at Sourceforge

Goodbye wxWidgets, hello Qt!

I’ve been developing various pieces of software in wxWidgets (back when it was called wxWindows!) for a long time. But recently, I’ve made the switch to Qt.

WordTsar under wxWidgets was stable, and I used it to write quite a few novels (http://geraldbrandt.com), so why the switch? Well, it seems that I always had to do something just a little different based on what platform the software was running on. Don’t get me wrong, 99.9% of the code was cross platform and worked well, but there always seemed to be corner cases.

Qt version, Windows and Linux

The last straw for me was when I tried to get WordTsar running under MacOS. I tweaked here and there. Keyboard input was a pain, but then it was under Qt as well. It was just easier under Qt because I’d already fixed the issue under wxWidgets. So, what was it that I couldn’t get working?

wxTimers.

I use timers to update WordTsar’s status bar, do word counting, and flash the carat. None of it worked under MacOS. Again, I tweaked here and tweaked there, but I just couldn’t get timers to work. Really, timers are a pretty basic function. They should Just Work.

About two years back, I did a test port to Qt to help me find an elusive bug. I moved over just enough code to help track down the bug, and stopped. This time around, I didn’t.

QT Version – MacOS

WordTsar is now 100% Qt based, with all the functionality of version 0.1 Release 1977. Well, almost. The Linux version of WordTsar had spell check working, using Hunspell. Non of the other ports did. I’ve decided to leave spell check out since I want to do it in a more cross-platform way.

What differences will you see with the Qt port? Some of the dialogs look different. Yup, that’s pretty much it.

Well, except for one thing.

Speed.

The Qt version is SIGNIFICANTLY faster than the wxWidgets version. Why? Two things in particular:

  1. Measuring of text under Qt just flies. Under Linux, measuring the widths of 605,814 characters took roughly 1800 ms. With the code optimized to measure strings instead of characters, I got that down to 460 ms. Under Qt, which can only measure individual character widths* the speed is 138 ms. That is a massive speed improvement.
  2. QString vs wxString is the second big increase. I do a lot of parsing of strings using .Mid(), .BeforeFirst(), .Left(), etc. I do no in string indexing (i.e. string[x]). Parsing WordTsar dot commands (string heavy) on a 111,000 word novel took 1060 ms under wxWidgets. With Qt, that process took 348 ms. I was planning to optimize the dot command routines to speed things up, and I still will (via some form of caching), but I can postpone that work now.

What this all comes out to, is under wxWidgets, laying out a 111,000 word document took 1670 ms. Not bad, really. Under Qt, the same process takes 576 ms. That’s a very noticeable difference.

I’ll be testing the Qt version over the next week by editing a 92,000 word novel and bringing that up to 100,000 words or so. Not a bad stress test. If all works out, there will be a WordTsar 0.2 Release xxxx happening next week for Linux, Windows, and MacOS.

* wxWidgets has GetPartialTextExtents() which, when passed in a string, will return an array of character widths. Qt has no such function. You can get the width of an entire string, but not the characters in that string. So, with Qt, I must measure each character.

WordTsar 0.1.1977 Released

I’ve used and am using this version extensively on Windows and Linux.

OSX version is being worked on.

Windows and Linux versions only.

In this Release:

Fixed Ticket 11
Fixed ticket 12
Added RTF export for subscript, superscript, and strikethrough
Added RTF export of columns
Changed RTF right margin to use /ri and not /margr
Added RTF export headers and footers
Added RTF export save hyphenation
Added RTF export margin settings
Added RTF export of indexes
Added RTF export of kerning on or off
Added RTF export save top, bottom, and paragraph margins
Added RTF export save page offset ((for odd and even pages, we use .poo to set RTF gutter (RTF only allows one setting))
Added RTF export save tabs
Added RTF paragraph alignment
Corrected Wordstar .mb usage
Fixed Windows scrollwheel use
Corrected RTF export unicode character support
Sped up RTF saving
Removed use of fontcache
Fixed wrong display of pagebreak at top of window
Fixed layout speed, especially under Linux
Corrected Linux layout to better match Word and LibreOffice

Features

Nothing on the WordTsar side really.
Improved RTF export
Faster Layout

Bugs Fixed

Ticket 11 and 12

Known Issues

RTF support for many dot commands is not implemented (see implemented.xlsx)
^KP not implemented, use ^OP
.pt command can only be used once per document, all others are ignored. (wxWidgets doesn't let you change paper type on the fly)
OSX keyboard input does not work
See Ticket System

WordTsar 0.1.1571 Released

UPDATED TO 1572: 1571 had an intermittent hanging bug when moving the cursor up or down and dot commands not displayed. Sorry for the bad release.

This is the first release I’ve made that I have not tested extensively (through daily use). What is not tested is pretty much all functionality when not displaying dot commands. If something breaks, turn dot command display on and everything should work as expected again.

OSX version is being worked on.

Windows and Linux versions only.

In this Release:

  • Cleaned up the code a bit by getting rid of uneccesary debug
  • Added preferences dialog for screen color, etc
  • Center, left, right, and justify status indicators now work

Features

  • Count of lines per page in status bar
  • Vertical Line height in status bar
  • Color Selection Dialog for text (^P-) (any color chosen get brought down to Wordstar’s 16 color palette)
  • Preferences dialog (via F1)
  • Show and Hide Scroll Bar, Ruler, Top Status Line, Bottom Status Bar (via Preferences)
  • Show/Hide dot commands (via Preferences)
  • Show/Hide flag column (via Preferences)

Bugs Fixed

  • Got rid of debug log messages
  • fixed .LM 0 command

Known Issues

  • RTF support for many dot commands is not implemented (see implemented.xlsx)
  • ^KP not implemented, use ^OP
  • GTK print preview displays a black page. Printing still works fine. This is a wxWidgets issue.
  • .pt command can only be used once per document, all others are ignored. (wxWidgets doesn’t let you change paper type on the fly)
  • OSX keyboard input does not work
  • If WordTsar starts with Control Codes not showing, you will not see a cursor until you have some text entered.
  • ^OB setting not implemented, set them via F1 Preferences

Upcoming

I got tired of working on RTF, so threw in some of the dialogs (color and preferences), Now back to RTF.

I’d like to move RTF import and export into a first class citizen so it can be a native file format for WordTsar right beside Wordstar files.

In the background, I’m thinking of adding column support and how to add table support (Comments welcome. Wordstar never had the concept of tables, really).

WordTsar 0.1.1314 Released

Most of the work in this version was done to support different paper sizes.

In this Release:

  • Work on the caret to make it the same across platforms
  • added a page layout dialog ^OY
  • completed .po .poe .poo .mt .mb .hm .fm commands
  • added new command .pt to specify paper type (auto added by ^OY)
  • moved RTF code to make it easier to work on
  • sped up loading LibreOffice’s bloated RTF

Features

  • .pt command (a non Wordstar dot command) specifies paper type/size. You can use ^OY to specify the paper. Wordstar doesn’t really care about paper size, it uses whatever is in the printer and the .rm .pl, etc commands to print on that paper. Modern printers can have multiple paper bins, and auto select the bin based on paper size.
  • Is no longer hard coded to 8.5″ x 11″ paper size
  • .po .poe .poo .mt .mb .hm and .fm are all implemented
  • bad dot commands are highlighted in a different color as well as having the ‘?’ in the right margin

Bugs Fixed

  • more work on the carat.

Known Issues

  • RTF support for many dot commands is not implemented (see implemented.xlsx)
  • ^KP not implemented, use ^OP
  • GTK print preview displays a black page. Printing still works fine. This is a wxWidgets issue.
  • .pt command can only be used once per document, all others are ignored. (wxWidgets doesn’t let you change paper type on the fly)
  • OSX keyboard input does not work
  • See Ticket System

Upcoming

It’s time for a bit of code cleanup. Don’t expect any new command or key sequences in the next release. After the code cleanup, I’d like to move RTF import and export into a first class citizen so it can be a native file format for WordTsar right beside Wordstar files.

In the background, I’m thinking of adding column support and how to add table support (Comments welcome. Wordstar never had the concept of tables, really).