Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add custom Input/Command lines #4055

Merged
merged 7 commits into from Sep 12, 2020
Merged

Conversation

Edru2
Copy link
Member

@Edru2 Edru2 commented Aug 30, 2020

Brief overview of PR changes/additions

Adds the possibility for creating own custom commandlines and or activating commandlines which are integrated in miniconsoles by using:
createCommandLine([windowname], name, x, y, width, height)

or for the integrated ones miniconsole
enableCommandLine(miniconsole_name)

By this also different commandline functions and resetProfile() needed adjusting to accommodate this.

(adding optional commandlineName parameter)
clearCmdLine([commandlineName])
printCmdLine([commandlineName], text)
appendCmdLine([commandlineName], text)
getCmdLine([commandlineName])

moveWindow, resizeWindow, raiseWindow, lowerWindow, setWindow also works for the not integrated commandLines

For the integrated commandlines the name is just the same as their miniconsole name.

Unaltered this commandlines just work as the main commandline and send the command directly to the game.
It is possible to attach an action to the command similar to the setLabelCallback events by using:
setCmdLineAction(commandLineName, function, args
to reset to the previous state:
resetCmdLineAction(commandLineName)

Geyser wrapper is:
Geyser.CommandLine
with the standard Geyser.Window function and wrapper for:
mycommandline:clear() ---clearCmdLine wrapper
mycommandline:print()
mycommandline:append()
mycommandline:getText()

A Geyser wrapper for setCmdLineAction mycommandline:setAction(func, args) was also added usage is the same as for clickcallbackevents

mycommandline:setAction(function(text) echo("My CommandLine Text:  "..text.."\n") end)

or

function testfunction(myarg, text)
  echo(myarg..text.."\n")
end
mycommandline:setAction("testfunction","My CommandLine Text:")

For direct example usage see below.

Geyser wrapper for MiniConsole is:
myminiconsole:enableCommandLine()
myminiconsole:disableCommandLine()
myminiconsole:setCmdAction()
...

Motivation for adding to Mudlet

fix #1897

Other info (issues closed, discussion etc)

I used the same method what was used for consoles (with different mTypes as SubConsoles) by dividing command line in main command line and sub command lines.

Example code 2 Geyser.MiniConsoles with enabled commandline

testadjustablecontainer = testadjustablecontainer or Adjustable.Container:new({name = "TestContainer"})
testminiconsole = testminiconsole or Geyser.MiniConsole:new({name = "TestMiniconsole", x = 0, y = 0, width = "100%", height = "100%"}, testadjustablecontainer)
testminiconsole:enableCommandLine()
testminiconsole:setCmdAction(function(text) testminiconsole:echo("First CommandLine: "..text.."\n") end)


testadjustablecontainer2 = testadjustablecontainer2 or Adjustable.Container:new({name = "TestContainer2"})
testminiconsole2 = testminiconsole2 or Geyser.MiniConsole:new({name = "TestMiniconsole2", x = 0, y = 0, width = "100%", height = "100%"}, testadjustablecontainer2)
testminiconsole2:enableCommandLine()
testminiconsole2:setCmdAction(function(text) testminiconsole2:echo("Second CommandLine: "..text.."\n") end)

The example above:
commandLine

Another example:
A Geyser.CommandLine in an Geyser.Label the input changes the color of the Label. For example use "red" as input or <100,100,100>

-- use double of calcFontSize height as commandline height
-- Geyser.CommandLines don't resize automatically
local w,h = calcFontSize()
testadjustablecontainer3 = testadjustablecontainer3 or Adjustable.Container:new({name = "TestContainer3"})
testLabel = testLabel or Geyser.Label:new({name = "testLabel", x = 0, y = 0, width = "100%", height = "-"..h*2}, testadjustablecontainer3)
testCommandLine = testCommandLine or Geyser.CommandLine:new({name ="testcommandline" ,x=0, y="-30", width="100%", height = h*2}, testadjustablecontainer3)
testCommandLine:setAction(
function(text)
  if Geyser.Color.parse(text) then 
    testLabel:setColor(text) 
  end
end)

@Edru2 Edru2 requested review from a team as code owners August 30, 2020 17:09
@add-deployment-links
Copy link

add-deployment-links bot commented Aug 30, 2020

Hey there! Thanks for helping Mudlet improve. 🌟

Test versions

You can directly test the changes here:

No need to install anything - just unzip and run.
Let us know if it works well, and if it doesn't, please give details.

setWindow was crashing due to wrong assignment
@Leigheas
Copy link

melts finally!!!

trying to please codefactor.
Geyser doc had a copy/paste fail.
added a workaround for cursor not visible in some situations like if writing to much text in the commandline

Added ConsoleCmdLine to miniconsoles + geyser
@vadi2
Copy link
Member

vadi2 commented Sep 1, 2020

@Leigheas Help test it :)

Copy link
Member

@demonnic demonnic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It all seems to work in my testing. The only things I can think of I might possibly want is the ability to set the bg and fg color of the command lines. But that needn't hold this PR back

@Edru2
Copy link
Member Author

Edru2 commented Sep 6, 2020

It all seems to work in my testing. The only things I can think of I might possibly want is the ability to set the bg and fg color of the command lines.

If this goes in I plan to make a setCommandLineStylesheet function which would take care of that and make https://wiki.mudlet.org/w/Manual:Scripting#How_to_move_the_command_line_over.3F easier

But that's for another/next PR

@demonnic
Copy link
Member

demonnic commented Sep 6, 2020

No agreed, shouldn't hold this PR up but since it was literally the only thing I could think of I thought I'd mention it =)

@Leigheas
Copy link

Leigheas commented Sep 7, 2020

So far so good Havnt really dug super into it but as I've stated applications towards ui creation are plentiful. Plan on playing around with it more

@vadi2 vadi2 merged commit e1cc90c into Mudlet:development Sep 12, 2020
atari2600tim added a commit to atari2600tim/Mudlet that referenced this pull request Oct 1, 2020
* New Crowdin translations (#3859)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* Lua translations able to deal with empty strings (#3878)

* deal with empty strings

* Update src/mudlet-lua/lua/Other.lua

Co-authored-by: Kebap <leckerkebap@gmx.li>

Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* BugFix: prevent crashes from recent Coverity Issue fixup

I was trying to be too clever and return a reference to an object.
I think I might have been able to extend the life-time of the item
concerned if I had made it a `const` but all in all it is simpler just to
use the normal return action that a compiler can use RVO to avoid making a
unneeded copy of the item.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Port QStringRef to QStringView (#3879)

* Fix for case insensitivity in exit line (#3875)

* Enhance: make multiView persistent (#3844)

* Enhance: make multiView persistent & compact input line act on all profiles

Makes the compact input line a toggle (so now it also has constant text).

Makes the multi-view stay active when `<Ctrl>+<Tab>` / `<Ctrl>+Number`
switching between - or clicking on the tab bars.

Also disables the (now a toggle) control for multi-view when there is less
than two profiles active.

This should close #1111 #1831 #3136 #3204 #2400, it may also improve #2099

It also disables dragging the tabs around so will prevent the issue
mentioned in #1456 pending a fix that can also rearrange the main
`TConsole`s to match.

Also improve layout of the Multi-view tool-tip for both the toolbar and
menu instances of the control.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revoke: remove changes disassociated with the multi-view issues

Required to simplify this PR and so they can be moved to a separate
PR.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: improve active tab indication in multi-view

Examining the situations in which clicking on a part of the UI does not
cause the indication of the active tab to reflect the profile that the
widget is part of has shown a few places which are addressed in this
commit:
* 2D Mapper
* 3D Mapper
* Search term entry widget in the commandl ine
* either `TTextEdit` in the Main or User Window `TConsole`
* `TLabels` in any `TConsole`

All of the above will now call a new mudlet::activateProfile(Host*) which
will ensure that the correct tab is selected, and that the member:
`(Host*) mudlet::mpCurrentActiveHost` is updated to also reflect that.

Also, if multi-view is active than there is not need to highlight the
tabs of profiles that have seen any changes - which is just as well as the
code to clear the tab is dependent on the user clicking on the affected
tab to show the tab and clear it - which is less likely to happen when in
the multi-view mode.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3887)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated IRE mapping script to latest upstream (#3885)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update development with 4.9 release (#3897)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>

* Fix crash loading MMP map (#3899)

* Add spairs which iterates over any table in a sorted fashion (#3895)

* Adding spairs function for iterating over tables in a sorted fashion. Also adding tests for same

* Minor test change just to force appveyor to start over

* Add: getClipboardText and setClipboardText Lua functions (#3869)

* Added getClipboardText and setClipboardText functions to allow scripts to interact with the clipboard.

* A little bit of arranging so this code is matching the style of other Lua functions.

* Added references to the function's pages on the wiki.

* Revise: improve Variables icon (#3892)

This adds a white outline around the otherwise entirely black icons so that
they becomes visible when used with a dark desktop theme.

For the record this icon was created from scratch on a 256x256 transparent
background using The G.I.M.P. to draw "X=" in text in black using the
"Serif" or "Sans serif" font at a size of 150 (for two of the text based ones
the third had to be reduced to fit), that image was then redrawn in white four
times and each of them was offset by +/-4 in complimentary X and Y
directions (and the gaps at the ends filled in and blurred) so that they
expanded the background white around the black foreground.

The reason for expanding from the original 48x48 pixel size was to make the
anti-aliasing take up a much smaller proportion of the image - so it will
appear sharper even at higher resolutions.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* [ImgBot] Optimize images (#3910)

*Total -- 150.01kb -> 128.86kb (14.1%)

/src/icons/variables.png -- 15.69kb -> 7.79kb (50.32%)
/src/icons/table.png -- 1.60kb -> 0.85kb (46.89%)
/src/icons/function.png -- 39.66kb -> 31.92kb (19.53%)
/src/icons/variable.png -- 30.14kb -> 26.13kb (13.31%)
/src/icons/mudlet_ptb_256px.png -- 62.92kb -> 62.16kb (1.2%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

* Update development with 4.9.1 release (#3911)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

* Fix crash loading MMP map (#3899)

(cherry picked from commit 510c3be7b7cf421fd7143883bff65763d531de2b)

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

(cherry picked from commit 46320c31355e5a797f57e04d23774caf269cb7cd)

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

(cherry picked from commit a7dc3a22d2928f9b6020ec482bedfa65a8f4c85f)

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

(cherry picked from commit 547c65846c8b4c1b6fc4e45b127cdebda93ea00b)

* 4.9.1 bugfix release

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3919)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Enhance: make compact input line feature act on individual profiles and be saved for each profile (#3866)

This message is an edited compilation of the individual commits that
made up the eventual squashed and merged PR:

Makes the compact input line a toggle (so now it also has constant text).
The previous code only considered the currently active profile which
was contradicted by the fact that the state - which was maintained
between sessions - was stored centrally as an application setting rather
than a per profile one.

This was split out of a larger PR that originally included it:
https://github.com/Mudlet/Mudlet/pull/3844 .

Because of the poor tracking of `(Host*) mudlet::mCurrentActiveHost`
the use of the short-cut or menu item to toggle the state of the input line
did not fully track which profile is active yet. That was improved when
PR 3844  went in.

BugFix: clicking on a different profile needs to update compact input line

Although clicking on the tab bar changed the currently active host and that
would update the compact input line menu item state to match the newly made
active profile the same thing was not happening if the profile was made
active by being clicked on in other places when in multi-view. This was
only discovered after PR 3844 was applied.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin translations (#3894)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* Show an echo when uploading (#3858)

* Fix crash importing custom lines with Qt 5.14+ (#3923)

* Client.Media: Remove Camel Case Package Requirement (#3925)

* Remove Camel Case Requirement from Client.Media

* Remove Camel Case Requirement from Client.Media

* Don't call Lua functions with too many arguments (#3924)

* Don't call Lua functions with too many arguments

* Show a warning when trimming

* Fix bug in parsing MXP tag with = symbol in attribute value (#3933)

* (autocommit) Updated text for translation (#3936)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* More concise tooltip for compact input line (#3937)

* Revise: prevent multiple connection dialogues

This will close Issue: #2706.

Also fix a couple of warnings for the `dlgConnectionProfiles` class:
* an out of order initialisation list
* an unused argument in:
 `(void) dlgConnectionProfiles::slot_update_name(const QString&)`

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Remove Default Host code from IRC (#3927)

* Ensure `dlgIRC::mIsDefaultIrcClient` is set when IRC init from Lua.
This addresses some code that should be removed all together, since we no longer use IRC as a main help-chat in favor of Discord.

* Remove cruft code entirely.

* Forget about mudlet.cpp changes and break the build ;)

* enable/disable IRC client options with host.

* Add the keepColor option to replaceAll and replaceWildcard (#3943)

* Add the keepColor options to replaceAll finally
* Add it to replaceWildcard too

* Donot resize item in HBox/VBox if not dynamic (#3947)

* BugFix: HBoxes and VBoxes should not change height or width if the policy for that constraint is not dynamic
* Only call resize if the value has changed
* Don't forget the % in the comparison
* fixed/dynamic mixed suggestion
* Update GeyserVBox.lua
* Reset contains_fixed at start of organize loop so it changes if all fixed items have been removed
* And for VBox
* Add comment
Co-authored-by: Edru2 <alyven_87@hotmail.com>

* Skip downloading GET response if there's no file path (#3932)

* Enhance: prevent password sniffing from sysDataSendEvent (#3928)

This revises cTelnet::sendData(...) so that it does NOT create a
`sysDataSendRequest` with the password when called from:
`cTelnet::slot_send_pass()` .

Also, in passing also found that similar mudlet class slot methods:
`mudlet::::slot_send_login()` and `mudlet::::slot_send_pass()` are not used
so can be pruned and then three `QQueue<QString>` in that same class are
not used either.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: make date display of profile's history follow selected UI locale (#3917)

* BugFix: make date display of profile's history follow selected UI locale

This PR adds a `QLocale` object to the `mudlet` class that is set to the
user's selection of UI locale (language + country) so that items that need
to return data in a locale aware form can use:
`(const QLocale&) mudlet::getUserLocale()`
in order to present their information in their selected form rather than
using what they or their OS/DE has set system/desktop-wide.

In this PR it is used to format and present in the correct language the
date and time entries for the profile's history but it can be used
elsewhere within the Mudlet application as needed.

Also:
* reorder some items in `dlgConnectionProfile`'s class to be correct.
* mark an unused argument in `dlgConnectionProfile::slot_update_name(...)`
as unused to prevent a warning.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: exclude the display of a time zone in the profile's history

It takes up extra space which is tight in that widget and (apart from the
time around a DST change) does not impart much information to the display.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Removed unwanted ellipses from debug texts...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: remove minute visible name from Connection dialogue icons

We have been trying to hide the text associated with the `QListWidgetItems`
in the connection dialogue by setting the font size to the minimum of `1`
and by setting it's colour to be white. This is not effective when the
background is not white - which is likely for a "Dark" desktop environment.
The only way to successfully hide the text is, I think, to not have any!

However the text was being used programmatically, so the best way to use
a `QListWidget` in this mannar is to store the text elsewhere in each
item's structure. Fortunately Qt provides for this with the user data
functionality which allows multiple data items (based on the `QVariant`
class) to be stored within each `QListWidgetItem` using an integer key to
denote the type of the data. Ironically the text, icon and other details
for each item are ALSO stored in this way - however for non-Qt internal
use the lowest integer key that is to be used is `Qt::UserRole` - which
I have assigned to the `(const int) dlgConnectionProfiles::csmNameRole`
static value. It is quite possible that a redesign of the Connect Profiles
dialogue may use this system to store/cache more details about each profile
in the future!

The only issue with this is the lack of a:
`QListWidget::findData(const QVarient&data, int role = Qt::UserRole ...)`
method (c.f. `QComboBox::findData(...)`) so I have had to provide a:
`(QList<QListWidgetItem*>) findData(const QListWidget&, const QVariant&,
                                      const int role = Qt::UserRole) const;
method to fill in this gap and to replace the previous
`QListWidget::find(...)` that examined each item's text.

Also removed local `(QString) profile` from:
`(void) dlgConnectionProfiles::slot_item_clicked(QListWidgetItem*)` as it
is merely a redundent duplicate of another local `(QString) profile_name`.

Renamed local `(QListWidgetItem*) pM` from:
`(void) dlgConnectionProfiles::fillout_form()` to:
`(QListWidgetItem*) pItem` as that reflects the name used throughout the
rest of the class for this type of variable.

Changed a `(QLabel*)::setText(tr(""))` call to the more explicit and less
stupid `(QLabel*)::clear()`. Similarly changed a
`(QWidget*)::setToolTip("")` to a `(QWidget*)::setToolTip(QString())`.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin updates (#3921)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* (autocommit) Updated text for translation (#3949)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update src/dlgConnectionProfiles.cpp

Remove unneeded command as per peer-review suggestion.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: src/dlgConnectionProfiles.h

CodeFactor says that the `static` keyword should come first (before the `const` one).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#3954)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated edbee-lib submodule to latest in our fork (#3953)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update: add a couple of new dictionaries to the set that Mudlet recognises

This is so that a text is displayed instead of a fall-back of the locale
code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: announce end of replays when run from replay button

I got the logic reversed in the original #1519 for
`(bool) cTelnet::mmIsReplayRunFromLua` so the ending message was not being
displayed when it should have been.

This will close #2793.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Add dummy functions for TTS if Mudlet was compiled with TTS disabled (#3958)

* Update Linux builds to Qt 5.12.9 (#3959)

* Update Linux builds to Qt 5.12.9

* Update .travis.yml

* Bugfix for string.split with too many characters (#3963)

* Allow string.split("my string", "") with strings > 32 characters
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3968)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update discordapp.com to discord.com (#3979)

* Capitalise 'errors' button text (#3987)

* Avoid new ptb if no new commit (#3990)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Update build-mudlet.yml (#3991)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers (#3974)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers
* add apt update back to linux github build runner
* Giving in because too tired to argue

* Server Data Encoding Selection via Telnet CHARSET (#3972)

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* (autocommit) Updated text for translation (#3995)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3996)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Missing files in src/.gitignore (#3997)

* NAWS width handling & reporting (#4002)

* Add Geyser.MiniConsole:display() (#3993)

* Fix typo preventing use of getFg/BgColor on non-main consoles. (#3982)

* (autocommit) Updated autocompletion data (#4006)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Zoom via mouse wheel: keep the position under the cursor in place (#3998)

* Zoom centered on the mouse position

Zooming via the scroll wheel now keeps the position under the curser in
place.

* QT <5.14 compatibility

* Use an exponential factor when zooming

This makes the zoom experience a lot smoother: the step size no longer
depends on how close you're zoomed in.

* Add a separate getHTTP operation and associated events (#4003)

* Add a separate GET operation

Sometimes you just need to read some data from the HTTP server without
going through writing the response to a file.

Also, when a POST redirects to a GET, the reply was lost.

Thus this change introduces a dedicated "getHTTP" function, and a
"sysGetHttpDone" event that contains the actual data.

* Two error messages had the wrong function name

* Bugfix: GET error should receive the URL

Also adds the URL to the download error, as an additional argument

* Grammar and style fix

per comment from SlySven

* bugfix: generic_mapper map config errors (#3971)

* bugfix: Correct help variable for map config

This makes calling `map config` without a specifier work as intended in the trigger.

* Restore map.help.configs to singular

Revert 7b8d532

* bugfix: Point map config alias to correct help

making the #3970 fix in the script broke `map help config`. because the `show_help` function parses the user supplied argument, the script's so-called "help file" needs to have the same singular title as the requested argument. thus, this commit points `map config` to `map.help.config` when the alias is called without argument and also retains the intended `map help config` feature.

* ci: enable sudo apt update

* ci: Re-disable apt update

* Special macOS icons (#3829)

* New macOS .icns icon files

* wire in new macOS icons

Co-authored-by: Kebap <kebap_spam@gmx.net>

* Return table of useful things in HTTP response (#3727)

* Return table of headers in HTTP responses

* Apply code review suggestions

* Make sure to free data stored in lua registry by events

* Try including optional here

* Include optional in both h and cpp files

* Work around OS X limitation https://stackoverflow.com/a/44244070/2197402

* Remove what I now think to be a superfluous include

* Make headerList a const a different way

* Follow the Mudlet convention for how to convert this to const char *

* Put the headers table in a table

* Put the cookies table in a table

* Include QNetworkCookieJar so compiler knows more about the type

* Include QNetworkCookie so compiler knows more about the type

* New Crowdin updates (#3950)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (German)

* (autocommit) Updated autocompletion data (#4011)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Update widechar_width.h to latest upstream (#4010)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: reorder tabs and tab stops in profile preferences (#3929)

Switch some uses of QGridLayout <==> QVBoxLayout depending on whether there
is more or only one column of items.

Moved the "Special options" tab to the last position.

Switch some single columns of items to become two columns so that the
overall vertical size needed for the dialogue can be reduced.

Moved the Discord and IRC options to a new tab "Chat".

These last two are important as they allow the overall dialogue to be
smaller and thus may enable us to close: #3467, #3304.

Removed unused groupBox that has something about deleting map backups. It
is not handled or mentioned in the current code at all and just sits there
as a disabled widget in the mapper tab.

Revise: try to make the preferences dialogue narrower

Set the initial size to be the smallest I can get in use on my Linux
Desktop - others' mileage may vary!

Revise: tweak some texts in accordance with peer-review suggestions

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Support for parsing MXP closing prefixed closing tags used in Materia Magica (#4016)

- Workaround for parsing tags in the format `<scripted_action>x<x/scripted_action>`

* Fixes issue on miniconsoles using link store from the main console (#4017)

* Refactor to create and expose decho2ansi and hecho2ansi functionality (#4019)

* Revise: try and identify profiles and some controls in connection dialog (#3966)

Also convert all `setDisabled(state)` to `setEnabled(!state)` in the
`dlgConnectionProfiles` class - using a single one instead of a mix of the
two is less likely to lead to errors - and it means less effort to search
for the places where something is being enabled or disabled.

Shorten some overlong variable names.

Remove some capitalisations.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: restore L. yellow colour button + insert new control in tab order

Due to a numbering error the button used to set the ANSI colour for Light
Yellow for the profile's console was positioned to be on top of the Light
Green one. This was introduced by my #3929 a few days ago!

Also insert a recently added checkbox (force Telnet CHARSET negotiation
off) did not have a tab order specified so navigating around the
preferences dialog with the tab key would not visit it in the right
sequence.

For consistency the order of the main console font size and anti-aliasing
checkbox needed to be swapped over.

To allow both PRs #3952 and #3832 to merge in where they both add in a new
(different) control into the `gridLayout_groupBox_debug` layout in the
"Special options" tab of the profile preferences dialogue a gap has
been left in row 3 of that layout which will be used by the latter of those
two PRs (the other one will add a new row to the end).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#4025)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated text for translation (#4024)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: minor change post PR #3966

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Making the foreground section of the hex pattern a noncapturing group allows for only setting the background via hecho/etc. (#4027)

* MXP to MSP Tags (#4015)

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* test/CMakeLists.txt update

* test/CMakeLists.txt update backout

* test/CMakeLists.txt update

* Fix bresetProfile() #3692 (#4020)

* fixes resetProfile()

units need to be enabled to be compiled
the order was wrong

* timers were not re-compiled

* TimerUnit compileAll will now really compile all timers

TimerUnit compileAll didn't compile all timers but only the ones in the rootnode what means that timers in a folder weren't compiled at all

* fix eventhandler not loading after resetProfile()

* (autocommit) Updated text for translation (#4033)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Found a typo where rb and gb were not made local (#4036)

* Allow text color manipulation by StyleSheet on Geyser.Labels (#4042)

* Allow text color manipulation by StyleSheet on Geyser Labels

* cosmetic suggestion and rawEcho

* Introduce purgeMediaCache() [MCMP & MSP] (#4041)

* Introduce purgeAllMediaFiles()

* Introduce purgeMediaCache()

* Updating lua-function-list

* Removed TMedia:: prefix (SlySven)

* Enhance: enable builds in a full Windows MSYS2 environment (#3889)

* Enhance: enable builds in a full Windows MSYS2 environment (QMake only)

By defining `WITH_MAIN_BUILD_SYSTEM` to the value `NO` this PR makes enough
changes to the qmake project file to enable Mudlet to be compiled in a full
MSYS2 development environment (in the MSYS2 Qt Creator) - this will enable
easier development by Windows users (particularly those who also have some
familiarity with *nix systems) as I have documented at:
"Compiling on Windows 7+ (MSYS2_Alternative)" but it seems that the URL is
causing GitHub to forget about the PR as it seems to push and is recorded
in my local repository but never actually lands there!

It also makes some changes to the setting up of the LUA package paths for
the lua code formatter so that the paths are all entered with Unix style
directory separators but converted to whatever the Lua package handler is
set to use. In a Windows environment it is not unheard of to get both '\'
and '/' being used within the same path as different parts get generated
in stages - and using the backslash one can produce surprising error
messages if the back slash is not properly escaped when displaying those
messages in the main console or elsewhere (they dissappear entirely or
end up escaping following characters producing misleading information).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Update src/mudlet.pro

BugFix: fix a typo in qmake project file.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: reduce almost duplicate comments

Fix an addition to the `package.cpath` which would not have worked as it
did not specify the file extension which is OS dependent.

Also remove LuaJIT remenent, which we dropped support for a long time back.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Revise: fix an error in a comment.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: take out some pre-processor stuff as run-time code works without it

I was a bit sceptical at first but it *seems* to work.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: modifications to get CMake working on Windows

Revise a Mudlet specific CMake macro to not include the word "module" as
that is not appropriate for all usages now.

Fix an obscure CMake build error caused by the use of:
`LIBRARYNAME::LIBRARYNAME` in `target_link_libraries(...)` which is the
form for an interface usage of a library - this causes a failure of the
build with an error message of the form:
`src/CMakeFiles/mudlet.dir/build.make:1954: *** target pattern contains
no '%'.  Stop.` that line is actually one about one of the libraries
concerned - and it is the first one which shows up in that file with a
LIBRARYNAME-NOTFOUND entry. The fix seems to be to use only a LIBRARYNAME
form.

Fix a problem in `(static QString) mudlet::getShortPathName(const QString&
name)` which is cause by a Windows specific function that takes.returns
template/typedef type arguments which only work if the symbols
`UNICODE` and `_UNICODE` to be defined and which aren't in an MSYS2/
Mingw-w64 environment.

Revise some usages of the APP_BUILD defined value so that they are
handled correctly (using `QStringLiteral`/`QByteArray` wrapppers).

Change the CMake find module for Pugixml so that it uses a variable name in
ALL_UPPER_CASE to remove a developer warning about using a mixed case one.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Edit: fix copy paste issue

I thought something needed to be more conditional than it was but didn't
get it undone in last commit.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: simplify the code to set up the Lua/C additional paths for LCF

Peer-review suggested I needed to shrink the code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shrink some comments

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: implement some changes requested by peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shorten multi-line comment in initIndenterGlobals()

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: further change suggested in peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix recognition of static libraries in own Find modules

Co-authored-by: keneanung <keneanung@googlemail.com>

* BugFix: repair failure to load Lua modules from profile directory (#4051)

This was introduced by PR #3889 which was using a function defined in the
LuaGlobal.lua file before it was loaded! The function definition has been
moved to be within the TLuaInterpreter class C++ code and, as it is now
present in two places, refactored out to a helper method so it can be
loaded into both the main and the lua code formatter Lua interpreters.

This should close #4047.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated text for translation (#4049)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fixed offset and scrollbars nestedLabels (#4043)

offset was calculated wrong for some combinations and the scrollbars didn't work and had a variable leaking to global

* (autocommit) Updated autocompletion data (#4059)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Math in Geyser constraints (#4056)

* get rid of loadstring and more resizing possibilities

* Update GeyserGeyser.lua

* now really working

* function values update on window resize

There was an issue that function values didn't update on window resize but only when the elemen was resized moved.
This is fixed now.

* Fix Geyser HBox/VBox in development (#4057)

* BugFix: TTYPE error

I introduced this error in #3889 and it was reported in, and this PR
will close #4066.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Ignore Qt Creator autosave files (#4068)

* Add custom Input/Command lines (#4055)

* createCommandLine + Geyser.CommandLine

* subcommandline event / Geyser.CommandLine:setAction

* setWindow crash

setWindow was crashing due to wrong assignment

* add ConsoleCmdLine to MiniConsoles

trying to please codefactor.
Geyser doc had a copy/paste fail.
added a workaround for cursor not visible in some situations like if writing to much text in the commandline

Added ConsoleCmdLine to miniconsoles + geyser

* get rid of the event and introduce set/resetCmdLineAction

* code factor

* fix commandline dissapearing on resize

* fix issue with focus and resize of MiniConsoles when using custom command lines (#4073)

* fix focus and resize of MiniConsole command lines

* get it to work also for UserWindows

* Update generic_mapper.xml (#4075)

* Update the port on StickMUD to use TLS (#4072)

* Geyser.Label rightClick menu (#4054)

* Geyser.Label rightClick menu

gives labels the possibility to have a right click menu

* added rightclickmenu to adjustable.container

* darkmode for adjustable.container

* writing docs and got rid of configmenuLabel

* set StyleSheet for UserWindows (border and title area) (#4046)

* setUserWindowStyle (primitive and Geyser)

* fix autoDock

* Revert "fix autoDock"

This reverts commit c0b1b7a3159818fb307e6a09b3e2b928a650dfb1.

* fix autodock (#4048)

* Allow Geyser containers to have height/width 0 (#4078)

* calculated_width 1 if 0

* same for vbox

* calculated size dynamic

* make code cleaner

* allow adjustable container to load in userwindow (#4037)

* Allow attached Adjustable.Containers to behave like a frame  (#4032)

* MainWindow border margin for attached Adjustable.Containers

* add attachedMargin to the docs

* connectToBorder() disconnect() addConnectMenu()

Allows you to connect your attached adjustable.container to a border which means that it behaves like the border is a frame.
Makes very similar GUI to GUIFrame possible.

* better ConnectMenu + localization

use of new right click menu to make the connectMenu better looking and userfriendlier

* Remove mapper click workaround (#4076)

* Allow different save/load directories and slots for Adjustable.Container settings  (#4053)

* add slot and dir to save/load settings of Adjustable.Containers

* save slot in one file + deleteSaveFile + defaultDirectory

* conflict solved changeContainer also working with slots

* check if attached before trying to detach

* BugFix: prevent Segmentation Faults when closing profile with toolbars

I was getting this error when closing one profile with a tool-bar when
multi-playing. Not sure of the exact cause (other than the toolbar did NOT
have a particular {meta}property - but was trying to convert the
non-existent `QVariant` that would represent it to a Boolean value) but
this should prevent a fatal application crash should it occur again...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix PTB build generation (#4081)

* Move commit date logic to earler

* Use commit date instead of author date

* Add background image to mini/main console (#4064)

* first success

* add background image to miniconsole transparency for cecho,decho,hecho

Added ability to add background image to miniconsole.
cecho, hecho, decho support transparency now

* add image also to main console

+ use mpBackground for backgroundcolors
to increase performance

* Update TLuaInterpreter.cpp

* give splitter palette to solve issue with darktheme

darktheme was able to change the background if the splitter had no color set.
this is fixed now

* still darktheme issue

* elements were hidden behind the background (fixed)

* resetBgImage BgImageModes and code suggestions

* change order for :lower as it caused strange issues

* Geyser MiniConsole set/resetBackgroundImage update

* (autocommit) Updated autocompletion data (#4034)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fix links clickable on the whole console width (#4083)

* prevent links to use full console width

prevent links to use full console width by checking if the mouse is out off the right bound

* make isOutOffBound non-optional

* change isOutOffBound to isOutOffbounds

* typo

* Add horizontal scrollbar to error-console (#4063)

* add scrollbar to errorconsole

* add horizontal scrollbar to error console

* hide if not needed

* update horizontal scrollbar on redrawing

* selection works even if scrolled to the right

* added suggestions and selecting is visible now

* add suggested code changes

* Update TTextEdit.cpp

* these are obsolte due to the background-image pr

these are not needed anymore and could cause a performance issue

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated autocompletion data (#4084)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Setup Mudlet for C++ Github Codespaces (#4087)

* Valgrind complained about an uninitialized field. (#4090)

* Improve generic mapper triggers (#4086)

* New Crowdin updates (#4009)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (French)

* New translations mudlet-lua.json (Russian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet.ts (German)

* New translations mudlet-lua.json (English, United Kingdom)

* New translations mudlet-lua.json (Russian)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Open Mudlet remotely using Github Codespaces (#4088)

* Improve codespaces setup

* Added libqt5opengl5-dev

* Forward vnc port 5900 by default

* Install Lua dependencies

* Add script to run Debian UI

* Fix schellcheck warning

* Update Dockerfile with desktop Debian instructions

* Updated devcontainer.json with desktop Debian

* Fix Dockerfile linter

* Fix spelling in the Dockerfile (#4094)

* ansi2string to strip ANSI colours (#4092)

* Install CMake tools as well for Github Codespace (#4096)

* Update Codespaces remote connect password (#4097)

* BugFix: handle floating toolbars with no DockArea set

I discovered I had a problem with this when working on something else with
an existing profile. The result was that the toolbar concerned was not
added to the main window. This PR forces a resolution to this by reapplying
the toolbar to the default left DockWidgetArea if no previous one seemed to
be set.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: handling of Big5 encodings for ambiguous E Asian auto-widening (#4030)

When the preference that controlled the E. Asian widening was set to "Auto"
it was not being correctly detected as the wrong `QByteArray` strings were
being checked against the currently selected Game Server encoding setting.
This would mean that both the variants that Mudlet offered would be using
the "Normal"/"Narrow" wide for such ambiguous graphemes rather than the
"Wide" that was intended.

Also, there were some places in the `TLuaInterpreter` class where the
encoding details were being treated as `QString`s rather than the
`QByteArray` that is used specifically to match up with Qt's own usage,
and avoid the whole `QStringLiteral(...)`/`QObject::tr(...)` wrapper issue
that arises from the use of `QString`...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* fix ctrl crash (#4098)

* Add a global event listener: `*` and Lua interpreter cleanup (#4091)

* pGlobalLua cannot be NULL

* Don't clear the stack

Internal functions should leave the stack as they found it.
Clearing it is not intuitive and in fact causes crashes.

* Clean up MSSP event generation

That loop is obfuscating the code.

* Add a "*" wildcard event subscription.

* Teach the Lua event dispatcher about "*"

This requires registering the Lua dispatcher to "*" instead of every
single event type. Otherwise as soon as somebody wants all events
every dispatcher would be called twice.

* Use a constant string

* Use upper pane height for page scroll (#4099)

* use upperPane for page scrolling

* screenheight was private

* removeAction was missing when parent was deleted (#4101)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Fix right-click menu and image copy (#4102)

* restore old behaviour

restore old behaviour for right click menu and for the
image copy

* add bg color to image copy

bg color was always black in image copy.
Now it's completly the old behaviour

* Fix release version numbers in windows installers

* Fix typo in mapper's area box warning (#4106)

* Fix macOS packaging (#4103)

* Try brew update-reset instead of update

* Use brew-update-reset branch

* Back to brew update

* Revert "Back to brew update"

This reverts commit 84e00b69675bf1f635c50de1776a6a710c51e156.

* Update travis.osx.after_success.sh

* Update travis.osx.before_install.sh

* Update travis.osx.before_install.sh

* One last time, try brew update-reset

* Fix typo (#4110)

* ok

Co-authored-by: mudlet-machine-account <39947211+mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>
Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Eraene <wisps.of.time@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Damian Monogue <3660+demonnic@users.noreply.github.com>
Co-authored-by: Ian Adkins <ieadkins@gmail.com>
Co-authored-by: imgbot[bot] <31301654+imgbot[bot]@users.noreply.github.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: Mike Conley <sousesider@gmail.com>
Co-authored-by: Fae <itsthefae@gmail.com>
Co-authored-by: Jonathan Mohrbacher <johnnymo87@gmail.com>
Co-authored-by: keneanung <keneanung@googlemail.com>
Co-authored-by: Matthias Urlichs <matthias@urlichs.de>
Co-authored-by: Stack <stack@ilpdev.com>
Co-authored-by: Kebap <kebap_spam@gmx.net>
atari2600tim added a commit to atari2600tim/Mudlet that referenced this pull request Oct 1, 2020
* New Crowdin translations (#3859)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* Lua translations able to deal with empty strings (#3878)

* deal with empty strings

* Update src/mudlet-lua/lua/Other.lua

Co-authored-by: Kebap <leckerkebap@gmx.li>

Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* BugFix: prevent crashes from recent Coverity Issue fixup

I was trying to be too clever and return a reference to an object.
I think I might have been able to extend the life-time of the item
concerned if I had made it a `const` but all in all it is simpler just to
use the normal return action that a compiler can use RVO to avoid making a
unneeded copy of the item.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Port QStringRef to QStringView (#3879)

* Fix for case insensitivity in exit line (#3875)

* Enhance: make multiView persistent (#3844)

* Enhance: make multiView persistent & compact input line act on all profiles

Makes the compact input line a toggle (so now it also has constant text).

Makes the multi-view stay active when `<Ctrl>+<Tab>` / `<Ctrl>+Number`
switching between - or clicking on the tab bars.

Also disables the (now a toggle) control for multi-view when there is less
than two profiles active.

This should close #1111 #1831 #3136 #3204 #2400, it may also improve #2099

It also disables dragging the tabs around so will prevent the issue
mentioned in #1456 pending a fix that can also rearrange the main
`TConsole`s to match.

Also improve layout of the Multi-view tool-tip for both the toolbar and
menu instances of the control.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revoke: remove changes disassociated with the multi-view issues

Required to simplify this PR and so they can be moved to a separate
PR.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: improve active tab indication in multi-view

Examining the situations in which clicking on a part of the UI does not
cause the indication of the active tab to reflect the profile that the
widget is part of has shown a few places which are addressed in this
commit:
* 2D Mapper
* 3D Mapper
* Search term entry widget in the commandl ine
* either `TTextEdit` in the Main or User Window `TConsole`
* `TLabels` in any `TConsole`

All of the above will now call a new mudlet::activateProfile(Host*) which
will ensure that the correct tab is selected, and that the member:
`(Host*) mudlet::mpCurrentActiveHost` is updated to also reflect that.

Also, if multi-view is active than there is not need to highlight the
tabs of profiles that have seen any changes - which is just as well as the
code to clear the tab is dependent on the user clicking on the affected
tab to show the tab and clear it - which is less likely to happen when in
the multi-view mode.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3887)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated IRE mapping script to latest upstream (#3885)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update development with 4.9 release (#3897)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>

* Fix crash loading MMP map (#3899)

* Add spairs which iterates over any table in a sorted fashion (#3895)

* Adding spairs function for iterating over tables in a sorted fashion. Also adding tests for same

* Minor test change just to force appveyor to start over

* Add: getClipboardText and setClipboardText Lua functions (#3869)

* Added getClipboardText and setClipboardText functions to allow scripts to interact with the clipboard.

* A little bit of arranging so this code is matching the style of other Lua functions.

* Added references to the function's pages on the wiki.

* Revise: improve Variables icon (#3892)

This adds a white outline around the otherwise entirely black icons so that
they becomes visible when used with a dark desktop theme.

For the record this icon was created from scratch on a 256x256 transparent
background using The G.I.M.P. to draw "X=" in text in black using the
"Serif" or "Sans serif" font at a size of 150 (for two of the text based ones
the third had to be reduced to fit), that image was then redrawn in white four
times and each of them was offset by +/-4 in complimentary X and Y
directions (and the gaps at the ends filled in and blurred) so that they
expanded the background white around the black foreground.

The reason for expanding from the original 48x48 pixel size was to make the
anti-aliasing take up a much smaller proportion of the image - so it will
appear sharper even at higher resolutions.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* [ImgBot] Optimize images (#3910)

*Total -- 150.01kb -> 128.86kb (14.1%)

/src/icons/variables.png -- 15.69kb -> 7.79kb (50.32%)
/src/icons/table.png -- 1.60kb -> 0.85kb (46.89%)
/src/icons/function.png -- 39.66kb -> 31.92kb (19.53%)
/src/icons/variable.png -- 30.14kb -> 26.13kb (13.31%)
/src/icons/mudlet_ptb_256px.png -- 62.92kb -> 62.16kb (1.2%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

* Update development with 4.9.1 release (#3911)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

* Fix crash loading MMP map (#3899)

(cherry picked from commit 510c3be7b7cf421fd7143883bff65763d531de2b)

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

(cherry picked from commit 46320c31355e5a797f57e04d23774caf269cb7cd)

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

(cherry picked from commit a7dc3a22d2928f9b6020ec482bedfa65a8f4c85f)

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

(cherry picked from commit 547c65846c8b4c1b6fc4e45b127cdebda93ea00b)

* 4.9.1 bugfix release

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3919)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Enhance: make compact input line feature act on individual profiles and be saved for each profile (#3866)

This message is an edited compilation of the individual commits that
made up the eventual squashed and merged PR:

Makes the compact input line a toggle (so now it also has constant text).
The previous code only considered the currently active profile which
was contradicted by the fact that the state - which was maintained
between sessions - was stored centrally as an application setting rather
than a per profile one.

This was split out of a larger PR that originally included it:
https://github.com/Mudlet/Mudlet/pull/3844 .

Because of the poor tracking of `(Host*) mudlet::mCurrentActiveHost`
the use of the short-cut or menu item to toggle the state of the input line
did not fully track which profile is active yet. That was improved when
PR 3844  went in.

BugFix: clicking on a different profile needs to update compact input line

Although clicking on the tab bar changed the currently active host and that
would update the compact input line menu item state to match the newly made
active profile the same thing was not happening if the profile was made
active by being clicked on in other places when in multi-view. This was
only discovered after PR 3844 was applied.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin translations (#3894)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* Show an echo when uploading (#3858)

* Fix crash importing custom lines with Qt 5.14+ (#3923)

* Client.Media: Remove Camel Case Package Requirement (#3925)

* Remove Camel Case Requirement from Client.Media

* Remove Camel Case Requirement from Client.Media

* Don't call Lua functions with too many arguments (#3924)

* Don't call Lua functions with too many arguments

* Show a warning when trimming

* Fix bug in parsing MXP tag with = symbol in attribute value (#3933)

* (autocommit) Updated text for translation (#3936)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* More concise tooltip for compact input line (#3937)

* Revise: prevent multiple connection dialogues

This will close Issue: #2706.

Also fix a couple of warnings for the `dlgConnectionProfiles` class:
* an out of order initialisation list
* an unused argument in:
 `(void) dlgConnectionProfiles::slot_update_name(const QString&)`

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Remove Default Host code from IRC (#3927)

* Ensure `dlgIRC::mIsDefaultIrcClient` is set when IRC init from Lua.
This addresses some code that should be removed all together, since we no longer use IRC as a main help-chat in favor of Discord.

* Remove cruft code entirely.

* Forget about mudlet.cpp changes and break the build ;)

* enable/disable IRC client options with host.

* Add the keepColor option to replaceAll and replaceWildcard (#3943)

* Add the keepColor options to replaceAll finally
* Add it to replaceWildcard too

* Donot resize item in HBox/VBox if not dynamic (#3947)

* BugFix: HBoxes and VBoxes should not change height or width if the policy for that constraint is not dynamic
* Only call resize if the value has changed
* Don't forget the % in the comparison
* fixed/dynamic mixed suggestion
* Update GeyserVBox.lua
* Reset contains_fixed at start of organize loop so it changes if all fixed items have been removed
* And for VBox
* Add comment
Co-authored-by: Edru2 <alyven_87@hotmail.com>

* Skip downloading GET response if there's no file path (#3932)

* Enhance: prevent password sniffing from sysDataSendEvent (#3928)

This revises cTelnet::sendData(...) so that it does NOT create a
`sysDataSendRequest` with the password when called from:
`cTelnet::slot_send_pass()` .

Also, in passing also found that similar mudlet class slot methods:
`mudlet::::slot_send_login()` and `mudlet::::slot_send_pass()` are not used
so can be pruned and then three `QQueue<QString>` in that same class are
not used either.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: make date display of profile's history follow selected UI locale (#3917)

* BugFix: make date display of profile's history follow selected UI locale

This PR adds a `QLocale` object to the `mudlet` class that is set to the
user's selection of UI locale (language + country) so that items that need
to return data in a locale aware form can use:
`(const QLocale&) mudlet::getUserLocale()`
in order to present their information in their selected form rather than
using what they or their OS/DE has set system/desktop-wide.

In this PR it is used to format and present in the correct language the
date and time entries for the profile's history but it can be used
elsewhere within the Mudlet application as needed.

Also:
* reorder some items in `dlgConnectionProfile`'s class to be correct.
* mark an unused argument in `dlgConnectionProfile::slot_update_name(...)`
as unused to prevent a warning.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: exclude the display of a time zone in the profile's history

It takes up extra space which is tight in that widget and (apart from the
time around a DST change) does not impart much information to the display.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Removed unwanted ellipses from debug texts...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: remove minute visible name from Connection dialogue icons

We have been trying to hide the text associated with the `QListWidgetItems`
in the connection dialogue by setting the font size to the minimum of `1`
and by setting it's colour to be white. This is not effective when the
background is not white - which is likely for a "Dark" desktop environment.
The only way to successfully hide the text is, I think, to not have any!

However the text was being used programmatically, so the best way to use
a `QListWidget` in this mannar is to store the text elsewhere in each
item's structure. Fortunately Qt provides for this with the user data
functionality which allows multiple data items (based on the `QVariant`
class) to be stored within each `QListWidgetItem` using an integer key to
denote the type of the data. Ironically the text, icon and other details
for each item are ALSO stored in this way - however for non-Qt internal
use the lowest integer key that is to be used is `Qt::UserRole` - which
I have assigned to the `(const int) dlgConnectionProfiles::csmNameRole`
static value. It is quite possible that a redesign of the Connect Profiles
dialogue may use this system to store/cache more details about each profile
in the future!

The only issue with this is the lack of a:
`QListWidget::findData(const QVarient&data, int role = Qt::UserRole ...)`
method (c.f. `QComboBox::findData(...)`) so I have had to provide a:
`(QList<QListWidgetItem*>) findData(const QListWidget&, const QVariant&,
                                      const int role = Qt::UserRole) const;
method to fill in this gap and to replace the previous
`QListWidget::find(...)` that examined each item's text.

Also removed local `(QString) profile` from:
`(void) dlgConnectionProfiles::slot_item_clicked(QListWidgetItem*)` as it
is merely a redundent duplicate of another local `(QString) profile_name`.

Renamed local `(QListWidgetItem*) pM` from:
`(void) dlgConnectionProfiles::fillout_form()` to:
`(QListWidgetItem*) pItem` as that reflects the name used throughout the
rest of the class for this type of variable.

Changed a `(QLabel*)::setText(tr(""))` call to the more explicit and less
stupid `(QLabel*)::clear()`. Similarly changed a
`(QWidget*)::setToolTip("")` to a `(QWidget*)::setToolTip(QString())`.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin updates (#3921)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* (autocommit) Updated text for translation (#3949)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update src/dlgConnectionProfiles.cpp

Remove unneeded command as per peer-review suggestion.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: src/dlgConnectionProfiles.h

CodeFactor says that the `static` keyword should come first (before the `const` one).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#3954)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated edbee-lib submodule to latest in our fork (#3953)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update: add a couple of new dictionaries to the set that Mudlet recognises

This is so that a text is displayed instead of a fall-back of the locale
code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: announce end of replays when run from replay button

I got the logic reversed in the original #1519 for
`(bool) cTelnet::mmIsReplayRunFromLua` so the ending message was not being
displayed when it should have been.

This will close #2793.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Add dummy functions for TTS if Mudlet was compiled with TTS disabled (#3958)

* Update Linux builds to Qt 5.12.9 (#3959)

* Update Linux builds to Qt 5.12.9

* Update .travis.yml

* Bugfix for string.split with too many characters (#3963)

* Allow string.split("my string", "") with strings > 32 characters
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3968)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update discordapp.com to discord.com (#3979)

* Capitalise 'errors' button text (#3987)

* Avoid new ptb if no new commit (#3990)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Update build-mudlet.yml (#3991)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers (#3974)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers
* add apt update back to linux github build runner
* Giving in because too tired to argue

* Server Data Encoding Selection via Telnet CHARSET (#3972)

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* (autocommit) Updated text for translation (#3995)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3996)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Missing files in src/.gitignore (#3997)

* NAWS width handling & reporting (#4002)

* Add Geyser.MiniConsole:display() (#3993)

* Fix typo preventing use of getFg/BgColor on non-main consoles. (#3982)

* (autocommit) Updated autocompletion data (#4006)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Zoom via mouse wheel: keep the position under the cursor in place (#3998)

* Zoom centered on the mouse position

Zooming via the scroll wheel now keeps the position under the curser in
place.

* QT <5.14 compatibility

* Use an exponential factor when zooming

This makes the zoom experience a lot smoother: the step size no longer
depends on how close you're zoomed in.

* Add a separate getHTTP operation and associated events (#4003)

* Add a separate GET operation

Sometimes you just need to read some data from the HTTP server without
going through writing the response to a file.

Also, when a POST redirects to a GET, the reply was lost.

Thus this change introduces a dedicated "getHTTP" function, and a
"sysGetHttpDone" event that contains the actual data.

* Two error messages had the wrong function name

* Bugfix: GET error should receive the URL

Also adds the URL to the download error, as an additional argument

* Grammar and style fix

per comment from SlySven

* bugfix: generic_mapper map config errors (#3971)

* bugfix: Correct help variable for map config

This makes calling `map config` without a specifier work as intended in the trigger.

* Restore map.help.configs to singular

Revert 7b8d532

* bugfix: Point map config alias to correct help

making the #3970 fix in the script broke `map help config`. because the `show_help` function parses the user supplied argument, the script's so-called "help file" needs to have the same singular title as the requested argument. thus, this commit points `map config` to `map.help.config` when the alias is called without argument and also retains the intended `map help config` feature.

* ci: enable sudo apt update

* ci: Re-disable apt update

* Special macOS icons (#3829)

* New macOS .icns icon files

* wire in new macOS icons

Co-authored-by: Kebap <kebap_spam@gmx.net>

* Return table of useful things in HTTP response (#3727)

* Return table of headers in HTTP responses

* Apply code review suggestions

* Make sure to free data stored in lua registry by events

* Try including optional here

* Include optional in both h and cpp files

* Work around OS X limitation https://stackoverflow.com/a/44244070/2197402

* Remove what I now think to be a superfluous include

* Make headerList a const a different way

* Follow the Mudlet convention for how to convert this to const char *

* Put the headers table in a table

* Put the cookies table in a table

* Include QNetworkCookieJar so compiler knows more about the type

* Include QNetworkCookie so compiler knows more about the type

* New Crowdin updates (#3950)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (German)

* (autocommit) Updated autocompletion data (#4011)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Update widechar_width.h to latest upstream (#4010)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: reorder tabs and tab stops in profile preferences (#3929)

Switch some uses of QGridLayout <==> QVBoxLayout depending on whether there
is more or only one column of items.

Moved the "Special options" tab to the last position.

Switch some single columns of items to become two columns so that the
overall vertical size needed for the dialogue can be reduced.

Moved the Discord and IRC options to a new tab "Chat".

These last two are important as they allow the overall dialogue to be
smaller and thus may enable us to close: #3467, #3304.

Removed unused groupBox that has something about deleting map backups. It
is not handled or mentioned in the current code at all and just sits there
as a disabled widget in the mapper tab.

Revise: try to make the preferences dialogue narrower

Set the initial size to be the smallest I can get in use on my Linux
Desktop - others' mileage may vary!

Revise: tweak some texts in accordance with peer-review suggestions

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Support for parsing MXP closing prefixed closing tags used in Materia Magica (#4016)

- Workaround for parsing tags in the format `<scripted_action>x<x/scripted_action>`

* Fixes issue on miniconsoles using link store from the main console (#4017)

* Refactor to create and expose decho2ansi and hecho2ansi functionality (#4019)

* Revise: try and identify profiles and some controls in connection dialog (#3966)

Also convert all `setDisabled(state)` to `setEnabled(!state)` in the
`dlgConnectionProfiles` class - using a single one instead of a mix of the
two is less likely to lead to errors - and it means less effort to search
for the places where something is being enabled or disabled.

Shorten some overlong variable names.

Remove some capitalisations.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: restore L. yellow colour button + insert new control in tab order

Due to a numbering error the button used to set the ANSI colour for Light
Yellow for the profile's console was positioned to be on top of the Light
Green one. This was introduced by my #3929 a few days ago!

Also insert a recently added checkbox (force Telnet CHARSET negotiation
off) did not have a tab order specified so navigating around the
preferences dialog with the tab key would not visit it in the right
sequence.

For consistency the order of the main console font size and anti-aliasing
checkbox needed to be swapped over.

To allow both PRs #3952 and #3832 to merge in where they both add in a new
(different) control into the `gridLayout_groupBox_debug` layout in the
"Special options" tab of the profile preferences dialogue a gap has
been left in row 3 of that layout which will be used by the latter of those
two PRs (the other one will add a new row to the end).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#4025)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated text for translation (#4024)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: minor change post PR #3966

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Making the foreground section of the hex pattern a noncapturing group allows for only setting the background via hecho/etc. (#4027)

* MXP to MSP Tags (#4015)

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* test/CMakeLists.txt update

* test/CMakeLists.txt update backout

* test/CMakeLists.txt update

* Fix bresetProfile() #3692 (#4020)

* fixes resetProfile()

units need to be enabled to be compiled
the order was wrong

* timers were not re-compiled

* TimerUnit compileAll will now really compile all timers

TimerUnit compileAll didn't compile all timers but only the ones in the rootnode what means that timers in a folder weren't compiled at all

* fix eventhandler not loading after resetProfile()

* (autocommit) Updated text for translation (#4033)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Found a typo where rb and gb were not made local (#4036)

* Allow text color manipulation by StyleSheet on Geyser.Labels (#4042)

* Allow text color manipulation by StyleSheet on Geyser Labels

* cosmetic suggestion and rawEcho

* Introduce purgeMediaCache() [MCMP & MSP] (#4041)

* Introduce purgeAllMediaFiles()

* Introduce purgeMediaCache()

* Updating lua-function-list

* Removed TMedia:: prefix (SlySven)

* Enhance: enable builds in a full Windows MSYS2 environment (#3889)

* Enhance: enable builds in a full Windows MSYS2 environment (QMake only)

By defining `WITH_MAIN_BUILD_SYSTEM` to the value `NO` this PR makes enough
changes to the qmake project file to enable Mudlet to be compiled in a full
MSYS2 development environment (in the MSYS2 Qt Creator) - this will enable
easier development by Windows users (particularly those who also have some
familiarity with *nix systems) as I have documented at:
"Compiling on Windows 7+ (MSYS2_Alternative)" but it seems that the URL is
causing GitHub to forget about the PR as it seems to push and is recorded
in my local repository but never actually lands there!

It also makes some changes to the setting up of the LUA package paths for
the lua code formatter so that the paths are all entered with Unix style
directory separators but converted to whatever the Lua package handler is
set to use. In a Windows environment it is not unheard of to get both '\'
and '/' being used within the same path as different parts get generated
in stages - and using the backslash one can produce surprising error
messages if the back slash is not properly escaped when displaying those
messages in the main console or elsewhere (they dissappear entirely or
end up escaping following characters producing misleading information).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Update src/mudlet.pro

BugFix: fix a typo in qmake project file.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: reduce almost duplicate comments

Fix an addition to the `package.cpath` which would not have worked as it
did not specify the file extension which is OS dependent.

Also remove LuaJIT remenent, which we dropped support for a long time back.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Revise: fix an error in a comment.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: take out some pre-processor stuff as run-time code works without it

I was a bit sceptical at first but it *seems* to work.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: modifications to get CMake working on Windows

Revise a Mudlet specific CMake macro to not include the word "module" as
that is not appropriate for all usages now.

Fix an obscure CMake build error caused by the use of:
`LIBRARYNAME::LIBRARYNAME` in `target_link_libraries(...)` which is the
form for an interface usage of a library - this causes a failure of the
build with an error message of the form:
`src/CMakeFiles/mudlet.dir/build.make:1954: *** target pattern contains
no '%'.  Stop.` that line is actually one about one of the libraries
concerned - and it is the first one which shows up in that file with a
LIBRARYNAME-NOTFOUND entry. The fix seems to be to use only a LIBRARYNAME
form.

Fix a problem in `(static QString) mudlet::getShortPathName(const QString&
name)` which is cause by a Windows specific function that takes.returns
template/typedef type arguments which only work if the symbols
`UNICODE` and `_UNICODE` to be defined and which aren't in an MSYS2/
Mingw-w64 environment.

Revise some usages of the APP_BUILD defined value so that they are
handled correctly (using `QStringLiteral`/`QByteArray` wrapppers).

Change the CMake find module for Pugixml so that it uses a variable name in
ALL_UPPER_CASE to remove a developer warning about using a mixed case one.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Edit: fix copy paste issue

I thought something needed to be more conditional than it was but didn't
get it undone in last commit.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: simplify the code to set up the Lua/C additional paths for LCF

Peer-review suggested I needed to shrink the code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shrink some comments

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: implement some changes requested by peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shorten multi-line comment in initIndenterGlobals()

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: further change suggested in peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix recognition of static libraries in own Find modules

Co-authored-by: keneanung <keneanung@googlemail.com>

* BugFix: repair failure to load Lua modules from profile directory (#4051)

This was introduced by PR #3889 which was using a function defined in the
LuaGlobal.lua file before it was loaded! The function definition has been
moved to be within the TLuaInterpreter class C++ code and, as it is now
present in two places, refactored out to a helper method so it can be
loaded into both the main and the lua code formatter Lua interpreters.

This should close #4047.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated text for translation (#4049)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fixed offset and scrollbars nestedLabels (#4043)

offset was calculated wrong for some combinations and the scrollbars didn't work and had a variable leaking to global

* (autocommit) Updated autocompletion data (#4059)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Math in Geyser constraints (#4056)

* get rid of loadstring and more resizing possibilities

* Update GeyserGeyser.lua

* now really working

* function values update on window resize

There was an issue that function values didn't update on window resize but only when the elemen was resized moved.
This is fixed now.

* Fix Geyser HBox/VBox in development (#4057)

* BugFix: TTYPE error

I introduced this error in #3889 and it was reported in, and this PR
will close #4066.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Ignore Qt Creator autosave files (#4068)

* Add custom Input/Command lines (#4055)

* createCommandLine + Geyser.CommandLine

* subcommandline event / Geyser.CommandLine:setAction

* setWindow crash

setWindow was crashing due to wrong assignment

* add ConsoleCmdLine to MiniConsoles

trying to please codefactor.
Geyser doc had a copy/paste fail.
added a workaround for cursor not visible in some situations like if writing to much text in the commandline

Added ConsoleCmdLine to miniconsoles + geyser

* get rid of the event and introduce set/resetCmdLineAction

* code factor

* fix commandline dissapearing on resize

* fix issue with focus and resize of MiniConsoles when using custom command lines (#4073)

* fix focus and resize of MiniConsole command lines

* get it to work also for UserWindows

* Update generic_mapper.xml (#4075)

* Update the port on StickMUD to use TLS (#4072)

* Geyser.Label rightClick menu (#4054)

* Geyser.Label rightClick menu

gives labels the possibility to have a right click menu

* added rightclickmenu to adjustable.container

* darkmode for adjustable.container

* writing docs and got rid of configmenuLabel

* set StyleSheet for UserWindows (border and title area) (#4046)

* setUserWindowStyle (primitive and Geyser)

* fix autoDock

* Revert "fix autoDock"

This reverts commit c0b1b7a3159818fb307e6a09b3e2b928a650dfb1.

* fix autodock (#4048)

* Allow Geyser containers to have height/width 0 (#4078)

* calculated_width 1 if 0

* same for vbox

* calculated size dynamic

* make code cleaner

* allow adjustable container to load in userwindow (#4037)

* Allow attached Adjustable.Containers to behave like a frame  (#4032)

* MainWindow border margin for attached Adjustable.Containers

* add attachedMargin to the docs

* connectToBorder() disconnect() addConnectMenu()

Allows you to connect your attached adjustable.container to a border which means that it behaves like the border is a frame.
Makes very similar GUI to GUIFrame possible.

* better ConnectMenu + localization

use of new right click menu to make the connectMenu better looking and userfriendlier

* Remove mapper click workaround (#4076)

* Allow different save/load directories and slots for Adjustable.Container settings  (#4053)

* add slot and dir to save/load settings of Adjustable.Containers

* save slot in one file + deleteSaveFile + defaultDirectory

* conflict solved changeContainer also working with slots

* check if attached before trying to detach

* BugFix: prevent Segmentation Faults when closing profile with toolbars

I was getting this error when closing one profile with a tool-bar when
multi-playing. Not sure of the exact cause (other than the toolbar did NOT
have a particular {meta}property - but was trying to convert the
non-existent `QVariant` that would represent it to a Boolean value) but
this should prevent a fatal application crash should it occur again...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix PTB build generation (#4081)

* Move commit date logic to earler

* Use commit date instead of author date

* Add background image to mini/main console (#4064)

* first success

* add background image to miniconsole transparency for cecho,decho,hecho

Added ability to add background image to miniconsole.
cecho, hecho, decho support transparency now

* add image also to main console

+ use mpBackground for backgroundcolors
to increase performance

* Update TLuaInterpreter.cpp

* give splitter palette to solve issue with darktheme

darktheme was able to change the background if the splitter had no color set.
this is fixed now

* still darktheme issue

* elements were hidden behind the background (fixed)

* resetBgImage BgImageModes and code suggestions

* change order for :lower as it caused strange issues

* Geyser MiniConsole set/resetBackgroundImage update

* (autocommit) Updated autocompletion data (#4034)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fix links clickable on the whole console width (#4083)

* prevent links to use full console width

prevent links to use full console width by checking if the mouse is out off the right bound

* make isOutOffBound non-optional

* change isOutOffBound to isOutOffbounds

* typo

* Add horizontal scrollbar to error-console (#4063)

* add scrollbar to errorconsole

* add horizontal scrollbar to error console

* hide if not needed

* update horizontal scrollbar on redrawing

* selection works even if scrolled to the right

* added suggestions and selecting is visible now

* add suggested code changes

* Update TTextEdit.cpp

* these are obsolte due to the background-image pr

these are not needed anymore and could cause a performance issue

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated autocompletion data (#4084)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Setup Mudlet for C++ Github Codespaces (#4087)

* Valgrind complained about an uninitialized field. (#4090)

* Improve generic mapper triggers (#4086)

* New Crowdin updates (#4009)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (French)

* New translations mudlet-lua.json (Russian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet.ts (German)

* New translations mudlet-lua.json (English, United Kingdom)

* New translations mudlet-lua.json (Russian)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Open Mudlet remotely using Github Codespaces (#4088)

* Improve codespaces setup

* Added libqt5opengl5-dev

* Forward vnc port 5900 by default

* Install Lua dependencies

* Add script to run Debian UI

* Fix schellcheck warning

* Update Dockerfile with desktop Debian instructions

* Updated devcontainer.json with desktop Debian

* Fix Dockerfile linter

* Fix spelling in the Dockerfile (#4094)

* ansi2string to strip ANSI colours (#4092)

* Install CMake tools as well for Github Codespace (#4096)

* Update Codespaces remote connect password (#4097)

* BugFix: handle floating toolbars with no DockArea set

I discovered I had a problem with this when working on something else with
an existing profile. The result was that the toolbar concerned was not
added to the main window. This PR forces a resolution to this by reapplying
the toolbar to the default left DockWidgetArea if no previous one seemed to
be set.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: handling of Big5 encodings for ambiguous E Asian auto-widening (#4030)

When the preference that controlled the E. Asian widening was set to "Auto"
it was not being correctly detected as the wrong `QByteArray` strings were
being checked against the currently selected Game Server encoding setting.
This would mean that both the variants that Mudlet offered would be using
the "Normal"/"Narrow" wide for such ambiguous graphemes rather than the
"Wide" that was intended.

Also, there were some places in the `TLuaInterpreter` class where the
encoding details were being treated as `QString`s rather than the
`QByteArray` that is used specifically to match up with Qt's own usage,
and avoid the whole `QStringLiteral(...)`/`QObject::tr(...)` wrapper issue
that arises from the use of `QString`...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* fix ctrl crash (#4098)

* Add a global event listener: `*` and Lua interpreter cleanup (#4091)

* pGlobalLua cannot be NULL

* Don't clear the stack

Internal functions should leave the stack as they found it.
Clearing it is not intuitive and in fact causes crashes.

* Clean up MSSP event generation

That loop is obfuscating the code.

* Add a "*" wildcard event subscription.

* Teach the Lua event dispatcher about "*"

This requires registering the Lua dispatcher to "*" instead of every
single event type. Otherwise as soon as somebody wants all events
every dispatcher would be called twice.

* Use a constant string

* Use upper pane height for page scroll (#4099)

* use upperPane for page scrolling

* screenheight was private

* removeAction was missing when parent was deleted (#4101)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Fix right-click menu and image copy (#4102)

* restore old behaviour

restore old behaviour for right click menu and for the
image copy

* add bg color to image copy

bg color was always black in image copy.
Now it's completly the old behaviour

* Fix release version numbers in windows installers

* Fix typo in mapper's area box warning (#4106)

* Fix macOS packaging (#4103)

* Try brew update-reset instead of update

* Use brew-update-reset branch

* Back to brew update

* Revert "Back to brew update"

This reverts commit 84e00b69675bf1f635c50de1776a6a710c51e156.

* Update travis.osx.after_success.sh

* Update travis.osx.before_install.sh

* Update travis.osx.before_install.sh

* One last time, try brew update-reset

* Fix typo (#4110)

* ok

* Revise: add build details in development QApplication::ApplicationVersion (#35)

Also add indication of bitness in QApplication::ApplicationName for Windows
builds.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>

Co-authored-by: mudlet-machine-account <39947211+mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>
Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Eraene <wisps.of.time@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Damian Monogue <3660+demonnic@users.noreply.github.com>
Co-authored-by: Ian Adkins <ieadkins@gmail.com>
Co-authored-by: imgbot[bot] <31301654+imgbot[bot]@users.noreply.github.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: Mike Conley <sousesider@gmail.com>
Co-authored-by: Fae <itsthefae@gmail.com>
Co-authored-by: Jonathan Mohrbacher <johnnymo87@gmail.com>
Co-authored-by: keneanung <keneanung@googlemail.com>
Co-authored-by: Matthias Urlichs <matthias@urlichs.de>
Co-authored-by: Stack <stack@ilpdev.com>
Co-authored-by: Kebap <kebap_spam@gmx.net>
atari2600tim added a commit to atari2600tim/Mudlet that referenced this pull request Oct 1, 2020
* New Crowdin translations (#3859)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* New translations mudlet-lua.json (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Pirate English)

* New translations mudlet-lua.json (Portuguese, Brazilian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Portuguese)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Greek)

* New translations mudlet.ts (Pirate English)

* Lua translations able to deal with empty strings (#3878)

* deal with empty strings

* Update src/mudlet-lua/lua/Other.lua

Co-authored-by: Kebap <leckerkebap@gmx.li>

Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* BugFix: prevent crashes from recent Coverity Issue fixup

I was trying to be too clever and return a reference to an object.
I think I might have been able to extend the life-time of the item
concerned if I had made it a `const` but all in all it is simpler just to
use the normal return action that a compiler can use RVO to avoid making a
unneeded copy of the item.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Port QStringRef to QStringView (#3879)

* Fix for case insensitivity in exit line (#3875)

* Enhance: make multiView persistent (#3844)

* Enhance: make multiView persistent & compact input line act on all profiles

Makes the compact input line a toggle (so now it also has constant text).

Makes the multi-view stay active when `<Ctrl>+<Tab>` / `<Ctrl>+Number`
switching between - or clicking on the tab bars.

Also disables the (now a toggle) control for multi-view when there is less
than two profiles active.

This should close #1111 #1831 #3136 #3204 #2400, it may also improve #2099

It also disables dragging the tabs around so will prevent the issue
mentioned in #1456 pending a fix that can also rearrange the main
`TConsole`s to match.

Also improve layout of the Multi-view tool-tip for both the toolbar and
menu instances of the control.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revoke: remove changes disassociated with the multi-view issues

Required to simplify this PR and so they can be moved to a separate
PR.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: improve active tab indication in multi-view

Examining the situations in which clicking on a part of the UI does not
cause the indication of the active tab to reflect the profile that the
widget is part of has shown a few places which are addressed in this
commit:
* 2D Mapper
* 3D Mapper
* Search term entry widget in the commandl ine
* either `TTextEdit` in the Main or User Window `TConsole`
* `TLabels` in any `TConsole`

All of the above will now call a new mudlet::activateProfile(Host*) which
will ensure that the correct tab is selected, and that the member:
`(Host*) mudlet::mpCurrentActiveHost` is updated to also reflect that.

Also, if multi-view is active than there is not need to highlight the
tabs of profiles that have seen any changes - which is just as well as the
code to clear the tab is dependent on the user clicking on the affected
tab to show the tab and clear it - which is less likely to happen when in
the multi-view mode.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3887)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated IRE mapping script to latest upstream (#3885)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update development with 4.9 release (#3897)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>

* Fix crash loading MMP map (#3899)

* Add spairs which iterates over any table in a sorted fashion (#3895)

* Adding spairs function for iterating over tables in a sorted fashion. Also adding tests for same

* Minor test change just to force appveyor to start over

* Add: getClipboardText and setClipboardText Lua functions (#3869)

* Added getClipboardText and setClipboardText functions to allow scripts to interact with the clipboard.

* A little bit of arranging so this code is matching the style of other Lua functions.

* Added references to the function's pages on the wiki.

* Revise: improve Variables icon (#3892)

This adds a white outline around the otherwise entirely black icons so that
they becomes visible when used with a dark desktop theme.

For the record this icon was created from scratch on a 256x256 transparent
background using The G.I.M.P. to draw "X=" in text in black using the
"Serif" or "Sans serif" font at a size of 150 (for two of the text based ones
the third had to be reduced to fit), that image was then redrawn in white four
times and each of them was offset by +/-4 in complimentary X and Y
directions (and the gaps at the ends filled in and blurred) so that they
expanded the background white around the black foreground.

The reason for expanding from the original 48x48 pixel size was to make the
anti-aliasing take up a much smaller proportion of the image - so it will
appear sharper even at higher resolutions.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* [ImgBot] Optimize images (#3910)

*Total -- 150.01kb -> 128.86kb (14.1%)

/src/icons/variables.png -- 15.69kb -> 7.79kb (50.32%)
/src/icons/table.png -- 1.60kb -> 0.85kb (46.89%)
/src/icons/function.png -- 39.66kb -> 31.92kb (19.53%)
/src/icons/variable.png -- 30.14kb -> 26.13kb (13.31%)
/src/icons/mudlet_ptb_256px.png -- 62.92kb -> 62.16kb (1.2%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

* Update development with 4.9.1 release (#3911)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers (#3890)

* Bugfix: prevent build failure with libzip 1.70.0 with no version numbers

As the Travis MacOs CI builds are using the latest libzip which is
currently the one which doesn't have LIBZIP_MAJOR and other version numbers
they were encountering a #error situation and aborting the build.

This is being fixed upstream so 1.70.1 should be okay.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Check for defines of LIBZIP_VERSION_MINOR

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
(cherry picked from commit bcbf8a0b4739e308d83ae592d98465358b642863)

* 4.9.0 release!

* Back to -dev

* Fix crash loading MMP map (#3899)

(cherry picked from commit 510c3be7b7cf421fd7143883bff65763d531de2b)

* Fixes #3900, bug on MXP SEND tags (#3908)

- Bug was caused by index out of range when processing MXP SEND tags with more commands than associated hints
- The solution uses HREF instead of HINT when the number of available hints is one and smaller than the number of commands

(cherry picked from commit 46320c31355e5a797f57e04d23774caf269cb7cd)

* Fix for Geyser HBox/VBox with width/height at 0 (#3909)

* prevent height/width of 0

* better solution still keeps hbox at 0

* small correction

(cherry picked from commit a7dc3a22d2928f9b6020ec482bedfa65a8f4c85f)

* Fixes bug #3886 with links in miniconsoles (#3904)

- In TTextEdit code was looking for links and tooltips associated to the main console

(cherry picked from commit 547c65846c8b4c1b6fc4e45b127cdebda93ea00b)

* 4.9.1 bugfix release

* Back to -dev

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3919)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Enhance: make compact input line feature act on individual profiles and be saved for each profile (#3866)

This message is an edited compilation of the individual commits that
made up the eventual squashed and merged PR:

Makes the compact input line a toggle (so now it also has constant text).
The previous code only considered the currently active profile which
was contradicted by the fact that the state - which was maintained
between sessions - was stored centrally as an application setting rather
than a per profile one.

This was split out of a larger PR that originally included it:
https://github.com/Mudlet/Mudlet/pull/3844 .

Because of the poor tracking of `(Host*) mudlet::mCurrentActiveHost`
the use of the short-cut or menu item to toggle the state of the input line
did not fully track which profile is active yet. That was improved when
PR 3844  went in.

BugFix: clicking on a different profile needs to update compact input line

Although clicking on the tab bar changed the currently active host and that
would update the compact input line menu item state to match the newly made
active profile the same thing was not happening if the profile was made
active by being clicked on in other places when in multi-view. This was
only discovered after PR 3844 was applied.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin translations (#3894)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Simplified)

* Show an echo when uploading (#3858)

* Fix crash importing custom lines with Qt 5.14+ (#3923)

* Client.Media: Remove Camel Case Package Requirement (#3925)

* Remove Camel Case Requirement from Client.Media

* Remove Camel Case Requirement from Client.Media

* Don't call Lua functions with too many arguments (#3924)

* Don't call Lua functions with too many arguments

* Show a warning when trimming

* Fix bug in parsing MXP tag with = symbol in attribute value (#3933)

* (autocommit) Updated text for translation (#3936)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* More concise tooltip for compact input line (#3937)

* Revise: prevent multiple connection dialogues

This will close Issue: #2706.

Also fix a couple of warnings for the `dlgConnectionProfiles` class:
* an out of order initialisation list
* an unused argument in:
 `(void) dlgConnectionProfiles::slot_update_name(const QString&)`

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Remove Default Host code from IRC (#3927)

* Ensure `dlgIRC::mIsDefaultIrcClient` is set when IRC init from Lua.
This addresses some code that should be removed all together, since we no longer use IRC as a main help-chat in favor of Discord.

* Remove cruft code entirely.

* Forget about mudlet.cpp changes and break the build ;)

* enable/disable IRC client options with host.

* Add the keepColor option to replaceAll and replaceWildcard (#3943)

* Add the keepColor options to replaceAll finally
* Add it to replaceWildcard too

* Donot resize item in HBox/VBox if not dynamic (#3947)

* BugFix: HBoxes and VBoxes should not change height or width if the policy for that constraint is not dynamic
* Only call resize if the value has changed
* Don't forget the % in the comparison
* fixed/dynamic mixed suggestion
* Update GeyserVBox.lua
* Reset contains_fixed at start of organize loop so it changes if all fixed items have been removed
* And for VBox
* Add comment
Co-authored-by: Edru2 <alyven_87@hotmail.com>

* Skip downloading GET response if there's no file path (#3932)

* Enhance: prevent password sniffing from sysDataSendEvent (#3928)

This revises cTelnet::sendData(...) so that it does NOT create a
`sysDataSendRequest` with the password when called from:
`cTelnet::slot_send_pass()` .

Also, in passing also found that similar mudlet class slot methods:
`mudlet::::slot_send_login()` and `mudlet::::slot_send_pass()` are not used
so can be pruned and then three `QQueue<QString>` in that same class are
not used either.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: make date display of profile's history follow selected UI locale (#3917)

* BugFix: make date display of profile's history follow selected UI locale

This PR adds a `QLocale` object to the `mudlet` class that is set to the
user's selection of UI locale (language + country) so that items that need
to return data in a locale aware form can use:
`(const QLocale&) mudlet::getUserLocale()`
in order to present their information in their selected form rather than
using what they or their OS/DE has set system/desktop-wide.

In this PR it is used to format and present in the correct language the
date and time entries for the profile's history but it can be used
elsewhere within the Mudlet application as needed.

Also:
* reorder some items in `dlgConnectionProfile`'s class to be correct.
* mark an unused argument in `dlgConnectionProfile::slot_update_name(...)`
as unused to prevent a warning.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: exclude the display of a time zone in the profile's history

It takes up extra space which is tight in that widget and (apart from the
time around a DST change) does not impart much information to the display.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Removed unwanted ellipses from debug texts...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: remove minute visible name from Connection dialogue icons

We have been trying to hide the text associated with the `QListWidgetItems`
in the connection dialogue by setting the font size to the minimum of `1`
and by setting it's colour to be white. This is not effective when the
background is not white - which is likely for a "Dark" desktop environment.
The only way to successfully hide the text is, I think, to not have any!

However the text was being used programmatically, so the best way to use
a `QListWidget` in this mannar is to store the text elsewhere in each
item's structure. Fortunately Qt provides for this with the user data
functionality which allows multiple data items (based on the `QVariant`
class) to be stored within each `QListWidgetItem` using an integer key to
denote the type of the data. Ironically the text, icon and other details
for each item are ALSO stored in this way - however for non-Qt internal
use the lowest integer key that is to be used is `Qt::UserRole` - which
I have assigned to the `(const int) dlgConnectionProfiles::csmNameRole`
static value. It is quite possible that a redesign of the Connect Profiles
dialogue may use this system to store/cache more details about each profile
in the future!

The only issue with this is the lack of a:
`QListWidget::findData(const QVarient&data, int role = Qt::UserRole ...)`
method (c.f. `QComboBox::findData(...)`) so I have had to provide a:
`(QList<QListWidgetItem*>) findData(const QListWidget&, const QVariant&,
                                      const int role = Qt::UserRole) const;
method to fill in this gap and to replace the previous
`QListWidget::find(...)` that examined each item's text.

Also removed local `(QString) profile` from:
`(void) dlgConnectionProfiles::slot_item_clicked(QListWidgetItem*)` as it
is merely a redundent duplicate of another local `(QString) profile_name`.

Renamed local `(QListWidgetItem*) pM` from:
`(void) dlgConnectionProfiles::fillout_form()` to:
`(QListWidgetItem*) pItem` as that reflects the name used throughout the
rest of the class for this type of variable.

Changed a `(QLabel*)::setText(tr(""))` call to the more explicit and less
stupid `(QLabel*)::clear()`. Similarly changed a
`(QWidget*)::setToolTip("")` to a `(QWidget*)::setToolTip(QString())`.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* New Crowdin updates (#3921)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* (autocommit) Updated text for translation (#3949)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update src/dlgConnectionProfiles.cpp

Remove unneeded command as per peer-review suggestion.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: src/dlgConnectionProfiles.h

CodeFactor says that the `static` keyword should come first (before the `const` one).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#3954)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated edbee-lib submodule to latest in our fork (#3953)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update: add a couple of new dictionaries to the set that Mudlet recognises

This is so that a text is displayed instead of a fall-back of the locale
code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: announce end of replays when run from replay button

I got the logic reversed in the original #1519 for
`(bool) cTelnet::mmIsReplayRunFromLua` so the ending message was not being
displayed when it should have been.

This will close #2793.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Add dummy functions for TTS if Mudlet was compiled with TTS disabled (#3958)

* Update Linux builds to Qt 5.12.9 (#3959)

* Update Linux builds to Qt 5.12.9

* Update .travis.yml

* Bugfix for string.split with too many characters (#3963)

* Allow string.split("my string", "") with strings > 32 characters
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated text for translation (#3968)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Update discordapp.com to discord.com (#3979)

* Capitalise 'errors' button text (#3987)

* Avoid new ptb if no new commit (#3990)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Update build-mudlet.yml (#3991)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers (#3974)

* Add cfeedTriggers, dfeedTriggers, and hfeedTriggers
* add apt update back to linux github build runner
* Giving in because too tired to argue

* Server Data Encoding Selection via Telnet CHARSET (#3972)

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* Add TELOPT_CHARSET (42) Support

* (autocommit) Updated text for translation (#3995)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated autocompletion data (#3996)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Missing files in src/.gitignore (#3997)

* NAWS width handling & reporting (#4002)

* Add Geyser.MiniConsole:display() (#3993)

* Fix typo preventing use of getFg/BgColor on non-main consoles. (#3982)

* (autocommit) Updated autocompletion data (#4006)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Zoom via mouse wheel: keep the position under the cursor in place (#3998)

* Zoom centered on the mouse position

Zooming via the scroll wheel now keeps the position under the curser in
place.

* QT <5.14 compatibility

* Use an exponential factor when zooming

This makes the zoom experience a lot smoother: the step size no longer
depends on how close you're zoomed in.

* Add a separate getHTTP operation and associated events (#4003)

* Add a separate GET operation

Sometimes you just need to read some data from the HTTP server without
going through writing the response to a file.

Also, when a POST redirects to a GET, the reply was lost.

Thus this change introduces a dedicated "getHTTP" function, and a
"sysGetHttpDone" event that contains the actual data.

* Two error messages had the wrong function name

* Bugfix: GET error should receive the URL

Also adds the URL to the download error, as an additional argument

* Grammar and style fix

per comment from SlySven

* bugfix: generic_mapper map config errors (#3971)

* bugfix: Correct help variable for map config

This makes calling `map config` without a specifier work as intended in the trigger.

* Restore map.help.configs to singular

Revert 7b8d532

* bugfix: Point map config alias to correct help

making the #3970 fix in the script broke `map help config`. because the `show_help` function parses the user supplied argument, the script's so-called "help file" needs to have the same singular title as the requested argument. thus, this commit points `map config` to `map.help.config` when the alias is called without argument and also retains the intended `map help config` feature.

* ci: enable sudo apt update

* ci: Re-disable apt update

* Special macOS icons (#3829)

* New macOS .icns icon files

* wire in new macOS icons

Co-authored-by: Kebap <kebap_spam@gmx.net>

* Return table of useful things in HTTP response (#3727)

* Return table of headers in HTTP responses

* Apply code review suggestions

* Make sure to free data stored in lua registry by events

* Try including optional here

* Include optional in both h and cpp files

* Work around OS X limitation https://stackoverflow.com/a/44244070/2197402

* Remove what I now think to be a superfluous include

* Make headerList a const a different way

* Follow the Mudlet convention for how to convert this to const char *

* Put the headers table in a table

* Put the cookies table in a table

* Include QNetworkCookieJar so compiler knows more about the type

* Include QNetworkCookie so compiler knows more about the type

* New Crowdin updates (#3950)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (German)

* (autocommit) Updated autocompletion data (#4011)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Update widechar_width.h to latest upstream (#4010)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: reorder tabs and tab stops in profile preferences (#3929)

Switch some uses of QGridLayout <==> QVBoxLayout depending on whether there
is more or only one column of items.

Moved the "Special options" tab to the last position.

Switch some single columns of items to become two columns so that the
overall vertical size needed for the dialogue can be reduced.

Moved the Discord and IRC options to a new tab "Chat".

These last two are important as they allow the overall dialogue to be
smaller and thus may enable us to close: #3467, #3304.

Removed unused groupBox that has something about deleting map backups. It
is not handled or mentioned in the current code at all and just sits there
as a disabled widget in the mapper tab.

Revise: try to make the preferences dialogue narrower

Set the initial size to be the smallest I can get in use on my Linux
Desktop - others' mileage may vary!

Revise: tweak some texts in accordance with peer-review suggestions

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Support for parsing MXP closing prefixed closing tags used in Materia Magica (#4016)

- Workaround for parsing tags in the format `<scripted_action>x<x/scripted_action>`

* Fixes issue on miniconsoles using link store from the main console (#4017)

* Refactor to create and expose decho2ansi and hecho2ansi functionality (#4019)

* Revise: try and identify profiles and some controls in connection dialog (#3966)

Also convert all `setDisabled(state)` to `setEnabled(!state)` in the
`dlgConnectionProfiles` class - using a single one instead of a mix of the
two is less likely to lead to errors - and it means less effort to search
for the places where something is being enabled or disabled.

Shorten some overlong variable names.

Remove some capitalisations.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* BugFix: restore L. yellow colour button + insert new control in tab order

Due to a numbering error the button used to set the ANSI colour for Light
Yellow for the profile's console was positioned to be on top of the Light
Green one. This was introduced by my #3929 a few days ago!

Also insert a recently added checkbox (force Telnet CHARSET negotiation
off) did not have a tab order specified so navigating around the
preferences dialog with the tab key would not visit it in the right
sequence.

For consistency the order of the main console font size and anti-aliasing
checkbox needed to be swapped over.

To allow both PRs #3952 and #3832 to merge in where they both add in a new
(different) control into the `gridLayout_groupBox_debug` layout in the
"Special options" tab of the profile preferences dialogue a gap has
been left in row 3 of that layout which will be used by the latter of those
two PRs (the other one will add a new row to the end).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated autocompletion data (#4025)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* (autocommit) Updated text for translation (#4024)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Revise: minor change post PR #3966

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Making the foreground section of the hex pattern a noncapturing group allows for only setting the background via hecho/etc. (#4027)

* MXP to MSP Tags (#4015)

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* MXP to MSP Tags

* test/CMakeLists.txt update

* test/CMakeLists.txt update backout

* test/CMakeLists.txt update

* Fix bresetProfile() #3692 (#4020)

* fixes resetProfile()

units need to be enabled to be compiled
the order was wrong

* timers were not re-compiled

* TimerUnit compileAll will now really compile all timers

TimerUnit compileAll didn't compile all timers but only the ones in the rootnode what means that timers in a folder weren't compiled at all

* fix eventhandler not loading after resetProfile()

* (autocommit) Updated text for translation (#4033)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Found a typo where rb and gb were not made local (#4036)

* Allow text color manipulation by StyleSheet on Geyser.Labels (#4042)

* Allow text color manipulation by StyleSheet on Geyser Labels

* cosmetic suggestion and rawEcho

* Introduce purgeMediaCache() [MCMP & MSP] (#4041)

* Introduce purgeAllMediaFiles()

* Introduce purgeMediaCache()

* Updating lua-function-list

* Removed TMedia:: prefix (SlySven)

* Enhance: enable builds in a full Windows MSYS2 environment (#3889)

* Enhance: enable builds in a full Windows MSYS2 environment (QMake only)

By defining `WITH_MAIN_BUILD_SYSTEM` to the value `NO` this PR makes enough
changes to the qmake project file to enable Mudlet to be compiled in a full
MSYS2 development environment (in the MSYS2 Qt Creator) - this will enable
easier development by Windows users (particularly those who also have some
familiarity with *nix systems) as I have documented at:
"Compiling on Windows 7+ (MSYS2_Alternative)" but it seems that the URL is
causing GitHub to forget about the PR as it seems to push and is recorded
in my local repository but never actually lands there!

It also makes some changes to the setting up of the LUA package paths for
the lua code formatter so that the paths are all entered with Unix style
directory separators but converted to whatever the Lua package handler is
set to use. In a Windows environment it is not unheard of to get both '\'
and '/' being used within the same path as different parts get generated
in stages - and using the backslash one can produce surprising error
messages if the back slash is not properly escaped when displaying those
messages in the main console or elsewhere (they dissappear entirely or
end up escaping following characters producing misleading information).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Update src/mudlet.pro

BugFix: fix a typo in qmake project file.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: reduce almost duplicate comments

Fix an addition to the `package.cpath` which would not have worked as it
did not specify the file extension which is OS dependent.

Also remove LuaJIT remenent, which we dropped support for a long time back.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Apply suggestions from code review

Revise: fix an error in a comment.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: take out some pre-processor stuff as run-time code works without it

I was a bit sceptical at first but it *seems* to work.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Enhance: modifications to get CMake working on Windows

Revise a Mudlet specific CMake macro to not include the word "module" as
that is not appropriate for all usages now.

Fix an obscure CMake build error caused by the use of:
`LIBRARYNAME::LIBRARYNAME` in `target_link_libraries(...)` which is the
form for an interface usage of a library - this causes a failure of the
build with an error message of the form:
`src/CMakeFiles/mudlet.dir/build.make:1954: *** target pattern contains
no '%'.  Stop.` that line is actually one about one of the libraries
concerned - and it is the first one which shows up in that file with a
LIBRARYNAME-NOTFOUND entry. The fix seems to be to use only a LIBRARYNAME
form.

Fix a problem in `(static QString) mudlet::getShortPathName(const QString&
name)` which is cause by a Windows specific function that takes.returns
template/typedef type arguments which only work if the symbols
`UNICODE` and `_UNICODE` to be defined and which aren't in an MSYS2/
Mingw-w64 environment.

Revise some usages of the APP_BUILD defined value so that they are
handled correctly (using `QStringLiteral`/`QByteArray` wrapppers).

Change the CMake find module for Pugixml so that it uses a variable name in
ALL_UPPER_CASE to remove a developer warning about using a mixed case one.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Edit: fix copy paste issue

I thought something needed to be more conditional than it was but didn't
get it undone in last commit.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Refactor: simplify the code to set up the Lua/C additional paths for LCF

Peer-review suggested I needed to shrink the code.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shrink some comments

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: implement some changes requested by peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: shorten multi-line comment in initIndenterGlobals()

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Revise: further change suggested in peer-review

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix recognition of static libraries in own Find modules

Co-authored-by: keneanung <keneanung@googlemail.com>

* BugFix: repair failure to load Lua modules from profile directory (#4051)

This was introduced by PR #3889 which was using a function defined in the
LuaGlobal.lua file before it was loaded! The function definition has been
moved to be within the TLuaInterpreter class C++ code and, as it is now
present in two places, refactored out to a helper method so it can be
loaded into both the main and the lua code formatter Lua interpreters.

This should close #4047.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* (autocommit) Updated text for translation (#4049)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fixed offset and scrollbars nestedLabels (#4043)

offset was calculated wrong for some combinations and the scrollbars didn't work and had a variable leaking to global

* (autocommit) Updated autocompletion data (#4059)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Math in Geyser constraints (#4056)

* get rid of loadstring and more resizing possibilities

* Update GeyserGeyser.lua

* now really working

* function values update on window resize

There was an issue that function values didn't update on window resize but only when the elemen was resized moved.
This is fixed now.

* Fix Geyser HBox/VBox in development (#4057)

* BugFix: TTYPE error

I introduced this error in #3889 and it was reported in, and this PR
will close #4066.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Ignore Qt Creator autosave files (#4068)

* Add custom Input/Command lines (#4055)

* createCommandLine + Geyser.CommandLine

* subcommandline event / Geyser.CommandLine:setAction

* setWindow crash

setWindow was crashing due to wrong assignment

* add ConsoleCmdLine to MiniConsoles

trying to please codefactor.
Geyser doc had a copy/paste fail.
added a workaround for cursor not visible in some situations like if writing to much text in the commandline

Added ConsoleCmdLine to miniconsoles + geyser

* get rid of the event and introduce set/resetCmdLineAction

* code factor

* fix commandline dissapearing on resize

* fix issue with focus and resize of MiniConsoles when using custom command lines (#4073)

* fix focus and resize of MiniConsole command lines

* get it to work also for UserWindows

* Update generic_mapper.xml (#4075)

* Update the port on StickMUD to use TLS (#4072)

* Geyser.Label rightClick menu (#4054)

* Geyser.Label rightClick menu

gives labels the possibility to have a right click menu

* added rightclickmenu to adjustable.container

* darkmode for adjustable.container

* writing docs and got rid of configmenuLabel

* set StyleSheet for UserWindows (border and title area) (#4046)

* setUserWindowStyle (primitive and Geyser)

* fix autoDock

* Revert "fix autoDock"

This reverts commit c0b1b7a3159818fb307e6a09b3e2b928a650dfb1.

* fix autodock (#4048)

* Allow Geyser containers to have height/width 0 (#4078)

* calculated_width 1 if 0

* same for vbox

* calculated size dynamic

* make code cleaner

* allow adjustable container to load in userwindow (#4037)

* Allow attached Adjustable.Containers to behave like a frame  (#4032)

* MainWindow border margin for attached Adjustable.Containers

* add attachedMargin to the docs

* connectToBorder() disconnect() addConnectMenu()

Allows you to connect your attached adjustable.container to a border which means that it behaves like the border is a frame.
Makes very similar GUI to GUIFrame possible.

* better ConnectMenu + localization

use of new right click menu to make the connectMenu better looking and userfriendlier

* Remove mapper click workaround (#4076)

* Allow different save/load directories and slots for Adjustable.Container settings  (#4053)

* add slot and dir to save/load settings of Adjustable.Containers

* save slot in one file + deleteSaveFile + defaultDirectory

* conflict solved changeContainer also working with slots

* check if attached before trying to detach

* BugFix: prevent Segmentation Faults when closing profile with toolbars

I was getting this error when closing one profile with a tool-bar when
multi-playing. Not sure of the exact cause (other than the toolbar did NOT
have a particular {meta}property - but was trying to convert the
non-existent `QVariant` that would represent it to a Boolean value) but
this should prevent a fatal application crash should it occur again...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Fix PTB build generation (#4081)

* Move commit date logic to earler

* Use commit date instead of author date

* Add background image to mini/main console (#4064)

* first success

* add background image to miniconsole transparency for cecho,decho,hecho

Added ability to add background image to miniconsole.
cecho, hecho, decho support transparency now

* add image also to main console

+ use mpBackground for backgroundcolors
to increase performance

* Update TLuaInterpreter.cpp

* give splitter palette to solve issue with darktheme

darktheme was able to change the background if the splitter had no color set.
this is fixed now

* still darktheme issue

* elements were hidden behind the background (fixed)

* resetBgImage BgImageModes and code suggestions

* change order for :lower as it caused strange issues

* Geyser MiniConsole set/resetBackgroundImage update

* (autocommit) Updated autocompletion data (#4034)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Fix links clickable on the whole console width (#4083)

* prevent links to use full console width

prevent links to use full console width by checking if the mouse is out off the right bound

* make isOutOffBound non-optional

* change isOutOffBound to isOutOffbounds

* typo

* Add horizontal scrollbar to error-console (#4063)

* add scrollbar to errorconsole

* add horizontal scrollbar to error console

* hide if not needed

* update horizontal scrollbar on redrawing

* selection works even if scrolled to the right

* added suggestions and selecting is visible now

* add suggested code changes

* Update TTextEdit.cpp

* these are obsolte due to the background-image pr

these are not needed anymore and could cause a performance issue

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* (autocommit) Updated autocompletion data (#4084)

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>

* Setup Mudlet for C++ Github Codespaces (#4087)

* Valgrind complained about an uninitialized field. (#4090)

* Improve generic mapper triggers (#4086)

* New Crowdin updates (#4009)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (French)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Spanish)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Greek)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (Dutch)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Portuguese)

* New translations mudlet.ts (Turkish)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Portuguese, Brazilian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Pirate English)

* New translations mudlet.ts (Russian)

* New translations mudlet.ts (French)

* New translations mudlet.ts (Chinese Simplified)

* New translations mudlet.ts (Polish)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (German)

* New translations mudlet.ts (German)

* New translations mudlet.ts (Italian)

* New translations mudlet.ts (English, United Kingdom)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet-lua.json (French)

* New translations mudlet-lua.json (Russian)

* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet-lua.json (Chinese Simplified)

* New translations mudlet-lua.json (Turkish)

* New translations mudlet-lua.json (Spanish)

* New translations mudlet-lua.json (Polish)

* New translations mudlet-lua.json (Dutch)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet-lua.json (Italian)

* New translations mudlet-lua.json (German)

* New translations mudlet.ts (German)

* New translations mudlet-lua.json (English, United Kingdom)

* New translations mudlet-lua.json (Russian)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Open Mudlet remotely using Github Codespaces (#4088)

* Improve codespaces setup

* Added libqt5opengl5-dev

* Forward vnc port 5900 by default

* Install Lua dependencies

* Add script to run Debian UI

* Fix schellcheck warning

* Update Dockerfile with desktop Debian instructions

* Updated devcontainer.json with desktop Debian

* Fix Dockerfile linter

* Fix spelling in the Dockerfile (#4094)

* ansi2string to strip ANSI colours (#4092)

* Install CMake tools as well for Github Codespace (#4096)

* Update Codespaces remote connect password (#4097)

* BugFix: handle floating toolbars with no DockArea set

I discovered I had a problem with this when working on something else with
an existing profile. The result was that the toolbar concerned was not
added to the main window. This PR forces a resolution to this by reapplying
the toolbar to the default left DockWidgetArea if no previous one seemed to
be set.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* Bugfix: handling of Big5 encodings for ambiguous E Asian auto-widening (#4030)

When the preference that controlled the E. Asian widening was set to "Auto"
it was not being correctly detected as the wrong `QByteArray` strings were
being checked against the currently selected Game Server encoding setting.
This would mean that both the variants that Mudlet offered would be using
the "Normal"/"Narrow" wide for such ambiguous graphemes rather than the
"Wide" that was intended.

Also, there were some places in the `TLuaInterpreter` class where the
encoding details were being treated as `QString`s rather than the
`QByteArray` that is used specifically to match up with Qt's own usage,
and avoid the whole `QStringLiteral(...)`/`QObject::tr(...)` wrapper issue
that arises from the use of `QString`...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

* fix ctrl crash (#4098)

* Add a global event listener: `*` and Lua interpreter cleanup (#4091)

* pGlobalLua cannot be NULL

* Don't clear the stack

Internal functions should leave the stack as they found it.
Clearing it is not intuitive and in fact causes crashes.

* Clean up MSSP event generation

That loop is obfuscating the code.

* Add a "*" wildcard event subscription.

* Teach the Lua event dispatcher about "*"

This requires registering the Lua dispatcher to "*" instead of every
single event type. Otherwise as soon as somebody wants all events
every dispatcher would be called twice.

* Use a constant string

* Use upper pane height for page scroll (#4099)

* use upperPane for page scrolling

* screenheight was private

* removeAction was missing when parent was deleted (#4101)

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>

* Fix right-click menu and image copy (#4102)

* restore old behaviour

restore old behaviour for right click menu and for the
image copy

* add bg color to image copy

bg color was always black in image copy.
Now it's completly the old behaviour

* Fix release version numbers in windows installers

* Fix typo in mapper's area box warning (#4106)

* Fix macOS packaging (#4103)

* Try brew update-reset instead of update

* Use brew-update-reset branch

* Back to brew update

* Revert "Back to brew update"

This reverts commit 84e00b69675bf1f635c50de1776a6a710c51e156.

* Update travis.osx.after_success.sh

* Update travis.osx.before_install.sh

* Update travis.osx.before_install.sh

* One last time, try brew update-reset

* Fix typo (#4110)

* ok

* Revise: add build details in development QApplication::ApplicationVersion (#35)

Also add indication of bitness in QApplication::ApplicationName for Windows
builds.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>

Co-authored-by: Stephen Lyons <slysven@virginmedia.com>

Co-authored-by: mudlet-machine-account <39947211+mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Manuel Wegmann <60551052+Edru2@users.noreply.github.com>
Co-authored-by: Kebap <leckerkebap@gmx.li>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
Co-authored-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Gustavo Sousa <gustavocms@gmail.com>
Co-authored-by: Eraene <wisps.of.time@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Co-authored-by: Damian Monogue <3660+demonnic@users.noreply.github.com>
Co-authored-by: Ian Adkins <ieadkins@gmail.com>
Co-authored-by: imgbot[bot] <31301654+imgbot[bot]@users.noreply.github.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: Mike Conley <sousesider@gmail.com>
Co-authored-by: Fae <itsthefae@gmail.com>
Co-authored-by: Jonathan Mohrbacher <johnnymo87@gmail.com>
Co-authored-by: keneanung <keneanung@googlemail.com>
Co-authored-by: Matthias Urlichs <matthias@urlichs.de>
Co-authored-by: Stack <stack@ilpdev.com>
Co-authored-by: Kebap <kebap_spam@gmx.net>
SlySven added a commit to SlySven/Mudlet that referenced this pull request Dec 15, 2020
Repair a couple of warnings of type: "warning: enum constant in boolean
context [-Wint-in-bool-context]"

This was introduced by PR Mudlet#4055 .

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
SlySven added a commit that referenced this pull request Dec 15, 2020
Repair a couple of warnings of type: "warning: enum constant in boolean
context [-Wint-in-bool-context]"

This was introduced by PR #4055 .

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Chris7 pushed a commit to Chris7/Mudlet that referenced this pull request Jan 2, 2022
* createCommandLine + Geyser.CommandLine

* subcommandline event / Geyser.CommandLine:setAction

* setWindow crash

setWindow was crashing due to wrong assignment

* add ConsoleCmdLine to MiniConsoles

trying to please codefactor.
Geyser doc had a copy/paste fail.
added a workaround for cursor not visible in some situations like if writing to much text in the commandline

Added ConsoleCmdLine to miniconsoles + geyser

* get rid of the event and introduce set/resetCmdLineAction

* code factor

* fix commandline dissapearing on resize
Chris7 pushed a commit to Chris7/Mudlet that referenced this pull request Jan 2, 2022
Repair a couple of warnings of type: "warning: enum constant in boolean
context [-Wint-in-bool-context]"

This was introduced by PR Mudlet#4055 .

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Enable adding custom input lines
4 participants