Don't worry about TWBT support, I saw it coming. I thought about it and it's mostly doing the same with multiple tilesets at once. I would need to de-hardcode the tileset size for creature graphics since they are not always 16×16.
I thought a way to group settings would be required for more complex assemblers. Tabs are okay but I was thinking to use them only on the left half (previews already have their tabs) and maybe vertical tabs would fit better.
Did you have a look at the configuration files (they are not XML in the last version)? Is the unicode-art okay for previews? Making them with ASCII only would need a CSV-like format containing the tile numbers (or ASCII characters when possible), that would be easier to type but less readable.
I'll try to explain the files. The main configuration file is "tileset-assembler.ini", it must be in the working directory. It is the only file with a fixed path, all the other can have whatever name you want.
tileset-assembler.ini use Qt's ini format. "title" sets the window title, it is only decorative. "output" is where to save the tileset, with multiple tilesets it would become a per tileset value.
The "tileset" section defines how to assemble the tileset. It requires the tile size and a list of layers. The layers are drawn in order may offer a choice. The ini part only references external text files describing the layers. The layer file begins with a tile list, only those tiles will be drawn in the tileset, this list is also used for highlighting the tiles in the previews. The next lines are all colon separated values (similar to DF raws/init but without the brackets). You can create one or more alternatives (the choices you can make from the GUI), the first parameter is the alternative name (displayed in the GUI). Each alternative can have several sources, the first parameter is the image file, the second is option and is the composition mode (see
Qt doc, the name is the part after CompositionMode_, RasterOp modes are not accepted). Adding no source will simply draw nothing (useful for disabling a layer). You can specify a tile number (and optionally a source number) for the icon displayed in the combo box, if not specified the first tile in the first source is used.
Back to the ini, the "configuration" section gives the list of choices displayed in the GUI, this let you have a different configuration order from the drawing order. This will need to be extended for grouping settings in tabs.
"previews" section is the list of preview files and tab names. The preview files begin with the preview size and then optional keywords. "nocoloring" (used in tileset_preview.txt) change the drawing mode, the tiles are directly copied without coloring. "tiles" introduce the unicode tiles (I am using the unicode equivalent to CP437 as given
here, except for 0, I use U+2400 ␀), it must be followed by a number of lines equal to the height given on the first line. "foreground" and "background" are similar but with hexadecimal digits for the colors. In the future I may add more sections like this for tileset source (for overrides/creatures support) and multiple layers (for showcasing TWBT transparency).
The last "colors" section are the colors you can change from the previews context menu. Palettes use DF colors.txt files, background and outline use
Qt color names.
After writing this, I realize that unicode tiles won't work for creature tiles.