Commit Graph

198 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 1f811d903e
Don't increment the result from GUINT_TO_POINTER
Increment the argument instead.
2016-10-08 09:21:54 +02:00
Přemysl Eric Janouch a7068157f2
Parallelize dictionary loading
It gives me about 2.5 times speed-up on a 4-core CPU.

It could be even better and I mainly blame GLib.
2016-10-08 03:39:06 +02:00
Přemysl Eric Janouch 26155227c7
Simplify the collation mess
Brings a bit worse performance on load since more memory is being
reordered but it seems to be worth it.
2016-10-08 01:20:09 +02:00
Přemysl Eric Janouch 36236955e5
Simplify, optimize terminal output
Finally getting rid off app_add_utf8_string().

Just like in nncmpp, the dependency on ncurses is now a bit narrower.
2016-10-07 18:35:27 +02:00
Přemysl Eric Janouch 0d779d718b
Improve memory usage
By avoiding unnecessary fragmentation in indexes.

With a larger set of dictionaries, I've observed a ~20% improvement.
2016-10-07 17:30:57 +02:00
Přemysl Eric Janouch 930ce8a944
Fix regression in locale support 2016-10-07 17:26:56 +02:00
Přemysl Eric Janouch 3c5eae978d
Update more copyright years 2016-09-28 16:25:19 +02:00
Přemysl Eric Janouch ee37895206
Update documentation 2016-09-28 16:11:56 +02:00
Přemysl Eric Janouch 38b463c883
Move the -w switch to the configuration file
Update README accordingly.

Woo, I get to remove code.
2016-09-28 06:01:13 +02:00
Přemysl Eric Janouch b3458d84a0
Handle mouse clicks on dictionary names 2016-09-28 05:27:53 +02:00
Přemysl Eric Janouch 1f60d096ea
Fix mouse in the search bar 2016-09-28 05:27:22 +02:00
Přemysl Eric Janouch 30345ec8d4
Show all dictionaries in the header
Make the style of the active dictionary's name configurable.
2016-09-28 05:05:24 +02:00
Přemysl Eric Janouch 4f0a47d5f7
Allow loading multiple dictionaries
They can also be specified in the configuration.

They can be switched between using Alt+<number>.
2016-09-28 04:30:15 +02:00
Přemysl Eric Janouch a063328ac8
Fix performance regression
Avoid stepping through the entire dictionary

When looking for the first match with an empty common prefix.
2016-09-28 04:17:08 +02:00
Přemysl Eric Janouch f453b9dd43
Extract get_xdg_config_dirs() 2016-09-28 04:16:00 +02:00
Přemysl Eric Janouch 021fdcc97c
Use GLib booleans 2016-09-28 03:05:39 +02:00
Přemysl Eric Janouch ff0ec60931
Validate encoding in .ifo files 2016-09-28 03:03:42 +02:00
Přemysl Eric Janouch 474bcb518a
Make app_load_config() return any error 2016-09-28 00:14:11 +02:00
Přemysl Eric Janouch db0579b7a0
Improve partial matches 2016-09-27 03:47:36 +02:00
Přemysl Eric Janouch da6c46cba9
Fix common prefix search with no collator 2016-09-27 03:35:14 +02:00
Přemysl Eric Janouch 08fdad56eb
Fix Travis build 2016-09-26 21:14:13 +02:00
Přemysl Eric Janouch 5ee562faf4
Make it possible to disable prefix highlighting 2016-09-26 21:06:51 +02:00
Přemysl Eric Janouch 81d702ed66
Add a configuration file
Now you can have pretty colors w/o having to hardcode them.
The selection is rather limited for now, though.

Search "centering" can now be disabled by default as well.
2016-09-26 21:06:51 +02:00
Přemysl Eric Janouch 4755033781
Fix bottom right corner 2016-09-26 20:50:38 +02:00
Přemysl Eric Janouch a591041912
Highlight the longest matching prefix of entries 2016-09-26 15:59:26 +02:00
Přemysl Eric Janouch a87aca9c76
Refactor app_add_utf8_string() 2016-09-26 14:14:01 +02:00
Přemysl Eric Janouch f1624095f8
Update copyright years 2016-09-25 22:24:35 +02:00
Přemysl Eric Janouch 61f8b134a9 Fix transcoding on OpenBSD 2016-01-14 22:52:46 +01:00
Přemysl Eric Janouch e740854dd2 Center the view on search
A lot of the time a better match is actually before the point
where we expect the entry to be.

Can be turned off with Alt-C.
2015-07-25 17:01:42 +02:00
Přemysl Eric Janouch 1b15b52087 Formatting: leftovers 2015-02-28 21:21:21 +01:00
Přemysl Eric Janouch 25366d369b Refactoring 2015-02-27 23:50:32 +01:00
Přemysl Eric Janouch 6fb83a4043 Don't let GLib/GTK+ draw messages over curses 2015-02-27 23:42:24 +01:00
Přemysl Eric Janouch 7db828f62b Handle SIGINT/SIGTERM properly 2015-02-27 23:36:56 +01:00
Přemysl Eric Janouch 10240c716a Formatting 2015-02-26 23:29:45 +01:00
Přemysl Eric Janouch 2f0852ec05 Handle search field overflow a bit better
Make sure the cursor doesn't overflow where it doesn't belong.
2015-02-24 23:52:36 +01:00
Přemysl Eric Janouch f4b29a980c Add a near-useless bar on top with bookname 2015-02-24 23:42:15 +01:00
Přemysl Eric Janouch 9f8af6c27b Fix build with ICU versions < 50
I'll try to describe my feelings with this excerpt from
David Firth's video "Take This Pill":

  PAIN.

  *oooowww...*

  Hurts, doesn't it?

  *...wwwwwww*
2015-02-24 21:39:45 +01:00
Přemysl Eric Janouch ccfa92ba2a Fix reporting of unknown .ifo keys 2015-02-24 09:27:38 +01:00
Přemysl Eric Janouch 2abbe7017f Add a custom collation mechanism
A lot better than that StarDict shitfuckery.
2015-02-24 09:27:38 +01:00
Přemysl Eric Janouch d93b241a65 Silence a warning
We don't care if we read a byte from the pipe.
2015-02-14 06:16:17 +01:00
Přemysl Eric Janouch 61ad99b611 Make more use of xstrtoul() 2015-02-07 22:11:53 +01:00
Přemysl Eric Janouch 99116d0f70 Update information texts and copyrights 2015-02-07 21:38:27 +01:00
Přemysl Eric Janouch e1643289c5 Cancel selection confirmation when following the selection 2015-02-07 21:13:34 +01:00
Přemysl Eric Janouch a9bc1d8751 Add support for watching the primary selection
Depends on GTK+, which should make it work with all of X11, Wayland, and Mir.
2015-02-07 21:05:32 +01:00
Přemysl Eric Janouch 627248bd1f React to mouse wheel scrolling 2015-02-07 20:36:45 +01:00
Přemysl Eric Janouch 4730cc47e1 Hide the help in app_search_for_entry() 2015-02-07 20:35:09 +01:00
Přemysl Eric Janouch 6e42b07d20 Or let's rather do it like this 2015-02-01 22:44:16 +01:00
Přemysl Eric Janouch 08ed996fe1 Tell termo to convert DEL to Backspace
Now backspace works in tmux.
2015-02-01 22:32:49 +01:00
Přemysl Eric Janouch bb9802f83d resize_term -> resizeterm
Apparently we do need to call the "outer-level" function.
2015-01-20 23:56:29 +01:00
Přemysl Eric Janouch a5e0c0ea71 Update termo 2014-11-19 03:31:47 +01:00
Přemysl Eric Janouch 2562d108fa Avoid some overhead with iconv()
Now, in theory, terminal output could actually be a bit faster.
2014-11-19 03:31:47 +01:00
Přemysl Eric Janouch da3a4842f1 Get rid of wchar_t for good 2014-11-19 03:31:47 +01:00
Přemysl Eric Janouch b8dc6bb3cc Avoid flicker while resizing 2014-11-19 03:31:47 +01:00
Přemysl Eric Janouch b352a0fc8d Rewrite to use termo
Also get rid of some silliness that I'm only able to see now.
2014-11-19 03:31:46 +01:00
Přemysl Eric Janouch a3348d888b I've been enlightened
Now responding to C-p, C-n, C-b, C-f and C-h as expected.
2014-02-11 23:28:02 +01:00
Přemysl Eric Janouch d7114f0634 Don't apply the bold attribute to padding.
It looked awful when it caused a change in the colour of underlining.
2013-10-09 02:54:19 +02:00
Přemysl Eric Janouch adce15243a Add a querying tool for use in e.g. IRC bots
Now the tools don't get built on `make all' but instead have their
own target called `tools'.  It might be reasonable to move them into
their own directory sometime, instead of cluttering `src'.
2013-10-02 02:17:38 +02:00
Přemysl Eric Janouch 1955343857 Add a workaround for GLib < 2.33.1
I wanted to have it working in Wheezy and this was standing in the way,
so I went for the quick fix that I'd made available to myself.
2013-10-02 02:11:57 +02:00
Přemysl Eric Janouch 190c21eabb Clarify some behaviour in comments 2013-10-02 02:11:10 +02:00
Přemysl Eric Janouch 8d586931e0 Thanks, Coverity 2013-07-25 07:42:43 +02:00
Přemysl Eric Janouch f8a8395114 Fix another error path 2013-07-18 19:47:07 +02:00
Přemysl Eric Janouch 1df7021276 Fix the dictionary loading error path 2013-07-18 00:16:57 +02:00
Přemysl Eric Janouch 852667350b Actually use DictzipInputStream in sdtui 2013-07-18 00:16:50 +02:00
Přemysl Eric Janouch 270539c72e Move private data into StardictDictPrivate 2013-07-18 00:16:50 +02:00
Přemysl Eric Janouch 15f62b7054 Add a class to handle dictzip files
Provides pseudo-random access to dictionary files compressed using dictzip.

It doesn't implement a cache, it just loads missing chunks until it has the
whole file.  I'm not sure if discarding not recently used chunks is really
a useful feature.  If there _was_ a way to get noticed when system memory
is low, I think the best way to handle that event would be to simply release
it all.

All in all, this is pretty useless.  But it was interesting to write.

This has yet to be integrated into the application proper.
2013-07-18 00:16:43 +02:00
Přemysl Eric Janouch 0c2a603a21 Add support for transposition with Ctrl-T 2013-07-09 07:50:17 +02:00
Přemysl Eric Janouch 1cc91a4b17 Fix double- and zero-wide characters
It's not perfect but seems to work well enough.
2013-06-02 00:04:43 +02:00
Přemysl Eric Janouch d3b966a93f Fix a 100% CPU usage bug 2013-05-19 20:06:29 +02:00
Přemysl Eric Janouch ce3b2c80a1 Use a little bit more straight-forward detection 2013-05-19 19:28:08 +02:00
Přemysl Eric Janouch ebc482b8fd Indicate with ellipsis that text is too long 2013-05-19 18:42:38 +02:00
Přemysl Eric Janouch c38f1046f3 Don't abort() on setlocale() failure 2013-05-19 05:26:20 +02:00
Přemysl Eric Janouch 5225c6117b Initialise GError's 2013-05-19 05:04:47 +02:00
Přemysl Eric Janouch 46083b1e7d Internationalisation 2013-05-19 05:04:37 +02:00
Přemysl Eric Janouch c430b6d7f8 Don't do case-sensitive searches 2013-05-19 01:29:04 +02:00
Přemysl Eric Janouch 110f2523d3 Fix window resizing 2013-05-19 01:07:08 +02:00
Přemysl Eric Janouch caac68a3ed Fix characters not representable in LC_CTYPE 2013-05-19 00:12:52 +02:00
Přemysl Eric Janouch c09e3dcc96 Show some help/about information 2013-05-18 23:48:53 +02:00
Přemysl Eric Janouch ec57f2d806 Extend key code handling 2013-05-18 23:47:57 +02:00
Přemysl Eric Janouch 583b19c6e4 Add Ctrl-L to repaint everything
Any serious application has it, so why not this one.
2013-05-18 03:06:35 +02:00
Přemysl Eric Janouch de2a576ba5 Allow mouse clicks within the search field 2013-05-18 01:14:49 +02:00
Přemysl Eric Janouch c017d5b569 Don't redraw the top line to restore the cursor
Consider this a rather temporary solution.
2013-05-18 00:38:18 +02:00
Přemysl Eric Janouch 9c024a57cd Add CMake infrastructure 2013-05-17 18:41:14 +02:00
Přemysl Eric Janouch 5cb6a2e506 New functionality
Ctrl-Up/Down skips whole entries
Alt-Left/Right moves the division line
Enter confirms the entry for overwriting

The modified arrow keys aren't going to work everywhere,
e.g. the Linux terminal doesn't support them.
2013-05-16 23:56:01 +02:00
Přemysl Eric Janouch d07f80c051 Support Ctrl-A/E shortcuts 2013-05-16 20:46:33 +02:00
Přemysl Eric Janouch 11c16cc173 Add Pango parsing. 2013-05-15 20:58:40 +02:00
Přemysl Eric Janouch b8c4d29233 Store search input in UCS4. 2013-05-15 19:30:47 +02:00
Přemysl Eric Janouch 421d87b7c0 Refactoring. 2013-05-15 17:26:39 +02:00
Přemysl Eric Janouch 776cebe535 Begone, bug. 2013-05-15 13:19:36 +02:00
Přemysl Eric Janouch e054f21ad5 Add simple mouse support. 2013-05-15 13:03:54 +02:00
Přemysl Eric Janouch a7a85a8e55 Use GIConv to get rid of encoding issues 2013-05-15 12:53:50 +02:00
Přemysl Eric Janouch bdff36bbce Add basic functionality
The bugs are there but the program is usable now.
2013-05-14 23:17:03 +02:00
Přemysl Eric Janouch 6db153b1e2 Start working on sdtui; implement line editing 2013-05-12 05:58:24 +02:00
Přemysl Eric Janouch 8ab74e16d7 Rename the project 2013-05-11 04:17:39 +02:00
Přemysl Eric Janouch e783f31de9 Finish the add-pronunciation tool 2013-05-11 04:03:05 +02:00
Přemysl Eric Janouch bcf933fb9e Move dictionary generation to its own module 2013-05-10 02:06:27 +02:00
Přemysl Eric Janouch 28321b72e9 Ignore deprecation 2013-05-09 00:46:59 +02:00
Přemysl Eric Janouch 5b7af35cfa Create a private header 2013-05-08 20:59:40 +02:00
Přemysl Eric Janouch febff16ed4 Move sources into their own directory 2013-05-08 20:54:06 +02:00