Just posting here to say I’m still working on the new version. I didn’t spend as much time on it lately as I could have, but I’ve returned to it a few days ago. I thought that a library like Qt will take off the burden of working on the user interface, but I’m finding myself rewriting simple things like clicking inside a table and selecting multiple rows of words for example. (In case you were wondering why it takes so long, besides it’s being a complex project anyway.)
I’m also spending a lot of time thinking about how to change the old interface. Good design decisions can make a program easier to use… and bad ones can break it. People complained that the old interface was too complex and they couldn’t find anything, but I’m afraid of oversimplifying things. I have made significant changes though, but it’s possible these won’t work well.
For example in the new design, the user is able to open as many windows as they like. The windows only display a single feature (like dictionary only, or word groups only,) but can be docked into the main window anywhere. This has the side effect that resizing the main window resizes the docked interface elements equally. As opposed to the old interface, where the kanji list part (on the left) remained the same width. We will see whether this makes the program harder to use or not.
I wanted to post screenshots but I still don’t have icons for 99.9% of the buttons, and I don’t want to publish an interface design full of buttons of the wrong size and no clear role.
I tried to collect a few specifics about the design changes I have in mind. This is not a complete list and it’s more like a listing of stuff rather than a well thought out blog post.
- Dictionary searches or the general features that can be accessed will stay, though might change a bit.
- I plan to remove study statistics of study groups (not the long-term study).
- I want to add some kind of “learned” status for words and kanji. For that I have to connect the stats of the long-term study and study groups, and the old stats are in the way.
- I want to remove the “kanji card” button, and the custom definitions that you could set there. I think nobody used that feature and there was no point to it.
- You’ll still be able to set custom definitions for words in the long-term study to make them easier to learn. The same definitions will be used in the simpler study groups.
- There will be as many long-term study decks as you like.
- If you finished studying for a day with long-term study, you’ll still be able to add more words and continue studying.
- No more checkboxes for groups, as those didn’t do anything.
- Everything will have its separate window to avoid the cluttered interface zkanji currently has, and I plan to make every dialog non-blocking.This is how zkanji started out originally but the windowing library in c++builder wasn’t really good for many main windows so I scrapped that idea. I hope it’ll work this time.
- As almost everything is re-written from scratch, all the windows will be different and the context-menu might look very different too. It’s kinda hard to make a good looking interface in Qt, so the first version probably won’t look too good.
The list probably goes on. For example I wanted an example sentences browser but it won’t be in the initial version.
I have no idea what to show in the kanji information window and how. It’s a cosmetic feature in my opinion. I sometimes (though rarely) use the “part of” and “parts” panel on it, and ignore the rest. When I was a beginner in Japanese I thought those numbers and the kanji’s meaning are so important for my study, but now I think otherwise. Learning vocabulary (with the correct kanji) is so much more useful than kanji readings and such. I still plan to make such a window (mostly for the stroke order diagram), but the format how the data is presented will probably be very different.
If you find anything wrong with the plans, please comment about it.
With every single feature I rewrite I always think about what should be changed to make it better. There are many decisions to be made, but changing stuff is not easy. I’m sure a lot of people will be angered if something is removed, and many others if things get changed. I could of course keep everything as it is. In a way this is the most appealing choice. It’s not surprising many developers and companies choose this path, but this is also why a lot of programs don’t get better.
Unfortunately there’s nobody I could ask about the changes I intend to make. If I only asked a single person they wouldn’t be able to help as they can’t possibly know the needs of all users either. So in the end changes will be made, features will be removed or completely reworked. People will get angry. This is not what I’m aiming for, but asking everyone on this blog what they want is difficult, as people rarely come to developer blogs. (I never intentionally visit such either.)
When a feature is completely changed, the data stored in user data files is usually changed (or removed) as well. Because of this in most cases there is no going back. I believe everything I change is for the better, but only time can prove that. Still, it will be difficult to change things back if a decision turns out to be wrong.
Basically what I’m trying to say is that if you want something to be in some way you can still get it while I’m working on the new zkanji. But it’ll be late to complain after the release.
Currently I’m planning to make word groups contain every word meaning for a single item, so it won’t be possible to add the same word multiple times to a single word group, nor to only pick some meanings. The idea behind separate items for meanings was that it’s easier to learn only one or two meanings at a time, and it makes printing vocabulary lists easier too, as they fit in a smaller place. The downside is that it’s both harder to implement and didn’t even work too well in my opinion.
So in the future word groups will only contain a word once, and those will have every meaning of the word. To make studying them and printing a vocabulary list useful, the user will be able to enter a custom meaning for the word. (Or to be more precise, words will share their word group and long-term study definition.)
As usual, if you don’t like this idea and have a better one, write a comment.
As I have to rewrite everything, I’m not only trying to achieve the same functionality of zkanji, but add some stuff I always wanted to. I never got to it because there were so many things to change for every small thing. Now that I have to rewrite zkanji anyway, it doesn’t matter anymore so I can do it as well.
For example in the new version, you can look up words with the kana in the middle of a word. There’s also a button to look for the exact kana characters. Before, if you had the button ?+ pressed and then typed あ, the results contained words ending in か or さ etc. Now if you check the “exact kana” button, only words ending in the kana あ will be found.
Another long awaited functionality was to enter kanji or kana directly with the system’s IME. This is finally possible. (But romaji is still converted as usual.)
As the title says, I’m currently working on word groups. In the past zkanji versions, single meanings are added to word groups. If you want to add several meanings of a word to a group, each of them are added as separate items. The change here is that I want the user to be able to select several meanings, and add them as a single item to a group. I still haven’t decided how to handle the case when you try to add a meaning to a group that contains the word already with different meanings. Should it merge the meaning with the existing item or add it as a separate item? I have to think about the reasons why someone would want to do one or the other. Or rather, if there’s a reason to add a separate item. Writing zkanji is a huge task and not adding unnecessary functionality (even if it sounds cool at first) will make it happen faster.
What is your opinion?
As usual, if I get no opinions I’ll just decide one thing and if someone complains later, it’ll be already too late.
You will be able to hide the kanji list, the group list, the dictionary or any combination of two areas by dragging the splitter near the window border, starting from the next version. Just thought I would post about it.
I will take a short brake today in the mini-series I was writing recently. I wanted to write about what the title says, or to put it differently, what would I change on the user interface of zkanji aka. how would it look like if I were to start writing the program today.
This is obviously just a concept image, but if I were to design the program’s main window with the knowledge of the most used features, it would probably look like this. No kanji list nor dictionary part (just groups). Of course the kanji list and dictionary could still be accessed, but not from the main interface. I can’t remember the last time when I used the kanji list seriously, instead of just looking at some characters randomly. The button that looks like +字 on the kanji groups interface would bring up the popup kanji list (which is accessible in the current version as well if you minimize the program), and once you selected the kanji to add, it would disappear again. The same with the + button on the word groups interface. Not added to this concept image, but the handwriting kanji search button could be used to add kanji to the groups as well. Apart from these obvious changes, I would place the long-term study button above the groups part. The button with the + and the arrow pointing down would add the selection to the long-term study.
I haven’t spent much time with the image, and there might be other changes to simplify the whole interface. The buttons for moving around groups, kanji and words could be removed as well, replacing them with simple drag and drop. The one part I’m not sure about is the kanji readings next to the kanji groups. Those are used as a way to filter the example words for the kanji, so selecting them for the long-term study or anything else can be simpler, but there is no place for the example words on the main window in my mind, and I might place the whole readings part and the example words to a separate window that would float above the main interface somehow.
In the future I might change the interface to something similar to this, or to something entirely different. My current plans only include releasing the next version so I can start fixing some issues I have with zkanji, because nothing can be changed until the next release is out. (I could fix stuff in theory, but then I couldn’t release the program anyway because it is currently in a half-ready state.)
Do you have ideas about the interface? If you have an opinion and don’t want me to start changing everything without listening to my users you can post a comment, (or keep it to yourself in which case I will do whatever I like).