- Some providers return weirdly escaped data; strip out useless
escaping before splitting (there are no characters in correct
time zone names that need escaping)
- Add some tests for TZ splitting
- In GeoIP handler constructors that take a string (to configure the
selector to use), interpret the empty string (which generally isn't
a meaningful selector) as meaning "use the default".
- Drop the no-argument constructors in favor of a default-argument
which is empty.
- GeoIP gets a string selector; the interpretation is up to derived classes.
- GeoIPXML and GeoIPJSON use the selector to select an element by tag
or an attribute, respectively.
- The handler for JSON data should be called that, not named
specially after the original provider it was implemented for.
- Make filename and classname consistent, GeoIPJSON.
- The screenshot stays one size, but different ThemeWidgets may overlap
partially when you shrink the screen or have more than three / four
themes listed.
- Probably needs work in the surrounding container and overall better
page-scrollbar support.
- Unchanged config files will continue to use the weird addition
of /json, and interpret JSON data.
- Allow to specify full URL with data format through one of
geoipStyle: json
geoipStyle: xml
- XML support is optional
- Make the BCP47 value explicitly lower-case.
- Add some constness and encapsulation.
- Fix up documentation in the packages module explaining the
format of the ${LOCALE} replacement (now forced to lower-case,
but it is also only the language part, not e.g. en-UK).
FIXES#922
- Count only the packages that will be changed, given the current
locale settings.
- Preserve global storage unchanged (don't remove any locale-packages).
- Use DebugRow for one-row-at-a-time output with continuations.
- Use DebugList for one-item-per-line with continuations.
- Use DebugMap for one-row-at-a-time output of a QVariantMap.
- This enables working in three modes:
- No themes listed; all are shown without screenshots,
- Themes listed, showAll false; only those are shown,
- Themes listed, showAll true; the installed-but-not-listed
themes are shown after the listed ones, and have limited info.
- Although it's not necessarily accurate for an extensively-modified
Plasma configuration, we can read the Look-and-Feel from the
configuration files. Allows auto-detection.
- For OEM modes where there is already a theme, add a preselect:
key to pick a specific theme and have that one come up as already-
selected in the list.
- Don't re-run the lnftool if an already-selected theme is clicked
again. Use toggled() instead of clicked().
It is the distro's responsibility to produce screenshots that look
good; previously I chose to preserve the aspect ratio on the grounds
that this would keep the look of the screenshot even if the distro
had done one in a weird size. This makes the screenshot part
of the LNF selection look weird, though, since then you get
blank parts.
Switch to ignoring the aspect ration; distro's should produce
screenshots in a 12x8 (i.e. 3:2) aspect ratio, preferrably at
least 120x80 pixels -- but keep in mind hiDPI and the default
font sizes of the distro, which may make other sizes look better.
(this follows discussion with BlueStar Linux)
the original code does not distinguish the document comments inside the locale.gen file from the real locale list. The language was then enabled from the header comments of the file instead of the correct value in the list.
The new code verify tha the complete locale string is just after the first character of the string, enablig only the correct value of the locale list.
An example:
# en_US.UTF-8 UTF-8 --> document header, should not be enabled
#en_US.UTF-8 UTF-8 --> correct section to enable
Related to this request:
https://code.chakralinux.org/tools/calamares-chakra/issues/2
- ValueCheck shouldn't own the pointer, since it's just a QPair
and there are temporary copies made (e.g. in
ContextualProcessBinding::append() ) and we get double-deletes.
- Do deletion by hand; going full unique_ptr would be a bit overkill.
- Re-build the structures for doing value-checks, is now more tree-like.
- Document pointer ownership.
- Introduce wildcard matches ("*")
- Don't drop empty command-lists, since they can be used to avoid
wildcard matches. (E.g. "in this case, do nothing, but don't
fall through to wildcard").
- Since the image size isn't known a priori (due to sizing based on fonts),
load the image and then resize in all code paths.
- Use the right resizing flags.
- .. and actually use the resulting scaled pixmap.
Thanks to Jeff Hodd.
These additional pointers were introduced for translations,
and needed their own tricks to get lupdate to recognize the
strings. Using QCoreApplication::translate() removes the
need to a QObject to provide context. Drop the now-unneeded
parameters.
Instead of using tr and some macro hacks to get lupdate to
recognize the translation, instead use QCoreApplication::translate()
which takes its own context for translation.
- For both shellprocess and contextualprocess, add a top-level key
"timeout" that defaults to 10 seconds (which it already did).
- Allows setting "global" timeout for command-lists, while still
allowing individual timeouts per-command.
- Setting timeout per global variable in contextualprocess is not
supported; that would restrict the possible space of comparisions,
while not supporting a global setting timeout seems reasonable enough.
Use instances if you need wildly variable timeouts and don't want to
set them individually.
- add license file from libpwquality for provenance
- translate pwquality_strerror() into the PWSettingsHolder convenience class
- use Qt translations, since we'd otherwise also have to wire up, and
wire in, libpwquality gettext translations.
- Use shared_ptr and a helper class to hide away raw pointer use
from libpwquality. Provide a convenience C++ API.
- Simplify configuration through helper class.
- Issue asks to make the setting more visible, which seems sensible to
me. It **is** kind of hidden away for those distro's that make
the setting visible (not everyone does).
- While here, add a tooltip explaining what it does.
FIXES#893
Allow running one or more commands based on the value of
a global configuration variable. This could, of course,
be done in a Python module with some custom code,
but for simple cases this is more straightforward
to configure through module instances.
Uses the CommandList developed for the ShellProcess
module to do the actual work.
FIXES#874
- Move CommandList so it can be used from more modules than
just ShellProcess
- Allow a CommandList to run itself. This centralizes
code for executing one or more commands and simplifies
the ShellProcess module.
Various small cleanups:
- mention instance id in log message
- code formatting / style
- This turns off the space-available check in the welcome module;
without libparted, always fail that check.
- Allows running the welcome module on OS without libparted.
- Also allow a single string instead of a list
- Add count() method to CommandList
- Drop over-engineering, add more logging
- Expand tests with some more examples
This is basically dummyprocess, except with an expanded configuration
interface so you can run 1 or more shell commands in the live
or target system with a suitable configuration file and instance
of shellprocess in settings.conf.
It can replace downstream modules that implement their own
process modules with a command, by an instance of shellprocess.
Make a function out of explaining-skipped-modules, and call it
not only after collecting all the modules, but also after
the feature summary, so that it's quite clear which modules
are skipped.
Scenario is this: you have no suitable installation devices on
your system (everything is mounted, or HDD has died), click through
to partition page, where you have all the buttons available, but no
devices in the list. The following actions then cause a crash:
- clicking "back"
- clicking any button
Prevent that:
- you can click "back", but if there is no device selected
nothing happens to the device state (no nullptr deref,
and no crash)
- button code is now more resilient to this scenario
- buttons are hidden until a device is available, so you
can't even click on them to trigger the code.
Modules may be skipped for different reasons: SKIP_MODULES
is the traditional approach to suppress some, but other modules
may have unmet build requirements (e.g. Plasma Look-and-Feel,
or the Partitioning module) and should be able to opt-out
of being built. For all those skipped, log it explicitly after
all the modules have been examined.
Only CMake-based (e.g. C++) modules support opting-out in this way.