|
Instead of a bunch of complicated functions that implicitly pass values
around in slot bindings and manage memory awkwardly, we now have two
"manager" objects that store a bunch of widgets and handle their signals.
One deals with managing the widget to enter a search (colorizing it,
showing errors, parsing the pattern, etc), and the other one embeds that
object and uses it to manage a list of search results.
|
|
correct, and handle searches for invalid patterns better.
Before we would just treat an invalid pattern as a command to show every
package in the repository. Now a small message is displayed with the parse
error. Still to do:
(a) make the implementation cleaner; packagestab.cc is getting quite
messy. Probably we need to create an object that represents the
whole "search view plus entry box" aggregate; it can be an element
of the various tabs that contain these aggregates.
Among other things, this will eliminate the duplication of code
between the two places where we set the limit text (there are two
places that have to check for parse exceptions and display the
error).
(b) Give the dashboard's search bar the same abilities. Perhaps we
could create one object to represent a search bar where patterns
are typed (would aggregate the entry with the error label and the
Find button), and then make that a sub-part of an object
representing a search bar plus a package view with a limit filter
in between.
(c) Somehow indicate which part of the text the user entered is related
to the error message. e.g., the exception could be a
MatchingSyntaxException that carries a range of string iterators
(or just offsets from the start of the string), and we could
highlight the offending text in the entry.
|