Skip to content

Return table of useful things in HTTP response#3727

Merged
vadi2 merged 13 commits intoMudlet:developmentfrom
johnnymo87:response-headers
Aug 2, 2020
Merged

Return table of useful things in HTTP response#3727
vadi2 merged 13 commits intoMudlet:developmentfrom
johnnymo87:response-headers

Conversation

@johnnymo87
Copy link
Copy Markdown
Contributor

@johnnymo87 johnnymo87 commented May 3, 2020

Brief overview of PR changes/additions

This commit adds a extra parameter to all functions handling HTTP responses, and this parameter is a table of "useful things" from the HTTP response. So far, I've added two useful things: the response headers and the cookies. Here is an example of logging into our MUD, which is a POST-to-GET redirect, and then printing everything in this response table to the screen:

function onHttpGetDone(_, filename, bytesWritten, response)
  cecho(string.format("<white>Downloaded file to: <dark_green>%s<white>", filename))
  cecho(string.format("\n\n<white>Number of bytes downloaded: <dark_green>%s<white>", bytesWritten))
  for k,v in pairs(response) do
    cecho(string.format("\n\n<white>%s:", k))
    for k,v in pairs(v) do
      cecho(string.format("\n  <white>%s: <dark_green>%s", k, v))
    end
  end
end
registerAnonymousEventHandler("sysDownloadDone", onHttpGetDone)

postHTTP(
  "submit=true&uname=thisisnotmyusername&pwd=thisisnotmypassword",
  "https://login.eternalcitygame.com/login.php",
  {["Cookie"] = "biscuit=test"}
)
Downloaded file to:
Number of bytes downloaded: 0

cookies:
  pass: 9876543210
  user: thisisnotmyusername

headers:
  Content-Encoding: gzip
  Content-Type: text/html; charset=UTF-8
  Vary: Accept-Encoding
  Date: Wed, 24 Jun 2020 19:50:33 GMT
  Connection: Keep-Alive
  Keep-Alive: timeout=5, max=99
  Server: Apache/2.4.25 (Debian)

Motivation for adding to Mudlet

Our mudlet integration for The Eternal City recently broke when the game developers changed the handshake we were using to login to the game. Before we could pass our credentials directly to the game after connecting, now we need to POST /login with our credentials and look at the result in the cookie to see what credentials we should use to login.

I'm hoping that this addition will be useful to others as well.

Other info (issues closed, discussion etc)

This PR can be merged whenever, but it won't be useful until we upgrade mudlet to Qt 5.15.1 to get their fix for a POST-to-GET redirect bug.

@johnnymo87 johnnymo87 requested a review from a team as a code owner May 3, 2020 16:33
@johnnymo87 johnnymo87 requested review from a team May 3, 2020 16:33
@add-deployment-links
Copy link
Copy Markdown

add-deployment-links bot commented May 3, 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.

Copy link
Copy Markdown
Member

@vadi2 vadi2 left a comment

Choose a reason for hiding this comment

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

This looks good but I'm wondering is the table ever removed from the registry?

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 3, 2020

macOS builds failed - try adding #include <optional>. We already use std::optional in Mudlet so it should work just fine.

// After the event has been raised but before 'event' goes out of scope,
// we need to safely dereference the members of 'event' that point to
// values in the Lua registry
mLuaInterpreter.freeAllInLuaRegistry(pE);
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@vadi2 I've moved the logic to free the data in the lua registry to inside Host::raiseEvent. I was thinking that this would ensure that we don't miss any events that need this logic. Let me know what you think.

@johnnymo87 johnnymo87 requested a review from vadi2 May 4, 2020 05:30
@johnnymo87
Copy link
Copy Markdown
Contributor Author

I'm closing this for now because I'd like to investigate the problem we're having a little more before I recommend this solution.

@johnnymo87 johnnymo87 closed this May 4, 2020
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 4, 2020

With this PR or the integration?

@johnnymo87
Copy link
Copy Markdown
Contributor Author

Just the PR ... I think I'll probably re-open this PR, I just want to make sure that it's a required part of the solution we need to fix the integration.

@SlySven
Copy link
Copy Markdown
Member

SlySven commented May 4, 2020

Actually you could have/(can still if you reopen it) converted it to a Draft then we know not to considered it ready for consideration yet...

@johnnymo87 johnnymo87 reopened this May 5, 2020
@johnnymo87 johnnymo87 marked this pull request as draft May 5, 2020 03:31
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 17, 2020

How're you going with this?

@johnnymo87
Copy link
Copy Markdown
Contributor Author

@vadi2 and @SlySven, I hit a problem that renders this change -- albeit perhaps useful in general -- useless to our mudlet integration. Our mudlet integration calls an endpoint that returns an http redirect (via a status code 301), and mudlet tries to follow it, but mudlet never succeeds for a reason that I haven't yet had the chance to fully debug.

Let's set aside for a moment that mudlet tries and fails to follow redirects, because there's something else I'd like to discuss.

If mudlet never followed redirects, this change would be useful to us because our mudlet integration is looking for information in the Set-Cookie header in the http response. However, since it does follow redirects, we never get to see this http response, we only get to see the one that is the result of the redirect. And it so happens that this second response does not have the Set-Cookie header that we so desire. But of course, if mudlet supported cookies, we would be able to get this information, because it naturally would save the value of this Set-Cookie header to a cookie and pass it forward to the second response.

So let's suppose we make a change for cookies rather than for headers. However, this has me thinking, "I was about to add a fourth parameter for headers, now I want to do it for cookies, but who knows what tomorrow may bring. Maybe I'll need both, or maybe I'll need yet another thing from the http response. Do I really want to add a fifth parameter for that, and then maybe later a sixth, and so forth?"

I think what we should do is make this fourth argument a table -- as planned -- but not a table of headers, nor of cookies, but a table of everything that we decide to extract from the http response. A table with a headers key, a cookies key, etc. This way, we can continue to add things without adding more and more parameters to the function handling the http response.

What do you both think? If you agree, I'll change this PR so that the fourth parameter is this general table with a headers key rather than just a table only for headers. Then I think this PR will be compatible with future changes, and ready to merge.

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 18, 2020

Let's make the 4th parameter a table so we can grow it, but as it's pushing the edge of what everyone needs, add just the minimum necessary.

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 29, 2020

@johnnymo87 what do you think?

@johnnymo87
Copy link
Copy Markdown
Contributor Author

Hey @vadi2, sorry for lack of responsiveness on my end, I've been interviewing for jobs. Regarding what you said, sounds good, I'll push an update to this PR soon.

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 29, 2020

Good luck!

@johnnymo87 johnnymo87 changed the title Return table of headers in HTTP responses Return table of useful things (e.g. headers) in HTTP response May 29, 2020
@johnnymo87 johnnymo87 changed the title Return table of useful things (e.g. headers) in HTTP response Return table of useful things in HTTP response May 29, 2020
@johnnymo87 johnnymo87 marked this pull request as ready for review May 30, 2020 22:32
@johnnymo87
Copy link
Copy Markdown
Contributor Author

@vadi2 this is ready for re-review. I've updated the description at the top of the PR to reflect the new approach.

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented May 31, 2020

You've solved the problem you were having?

@johnnymo87
Copy link
Copy Markdown
Contributor Author

@vadi2 In and of itself, no this does not solve the problem we're having. There's two paths to solving our problem.

Path 1:

  • Show headers in the response (this PR)
  • Add an option to the request to not follow redirects

Path 2:

  • Fix the bug with following redirects
  • Add an option to add cookies to the request and to see them in the response (reusing the "table of useful things" introduced in this PR)

@johnnymo87
Copy link
Copy Markdown
Contributor Author

The fix for the bug for POST-to-GET redirects is in progress! Assuming it passes code review, QA, etc, I think we should expect to see it released in Qt 5.15.1.

For this PR, that means that the "path 2" I describe above is now the path that I want to pursue. I will soon redo this PR to return cookies in the "useful table" in the response rather than headers. I'll switch this PR back to the draft status until then.

@johnnymo87 johnnymo87 marked this pull request as draft June 10, 2020 14:24
@johnnymo87
Copy link
Copy Markdown
Contributor Author

I've pulled the upstream Qt bug fix onto my machine and used mudlet to make a POST request that then redirects to a GET request. One problem immediately popped up. Since mudlet makes a POST request, it's unprepared to handle the GET response. Mudlet doesn't know what file path to download the contents of the GET response to, since mudlet users specify this file path only when making GET requests but not when making POST requests. This manifests as a failureToWriteLocalFile error because mudlet tries and fails to open a file for writing at the '' file path.

The following solutions come to mind:

  • Make mudlet users specify a response file path on every kind of request, not just GET requests
  • Make mudlet skip downloading the response if the mudlet user has not specified a response file path
  • Make mudlet download responses to some arbitrary default file path
  • Let mudlet continue following redirects of GET requests, but stop it from following redirects from other kinds of requests (the user can always manually follow this kind of redirect, especially if given the response headers exposed by this PR)

Can anyone think of other solutions? Which solution do people prefer?

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Jun 24, 2020

Make mudlet skip downloading the response if the mudlet user has not specified a response file path

I think this is the most intuitive / least surprising one for the user.

@johnnymo87
Copy link
Copy Markdown
Contributor Author

Alright, I've handled that in a separate PR, as indicated above ☝️

Given that we'll be following redirects, the information our mudlet integration needs will be in a cookie and not a header. I'll push a commit that will add cookies to the table of useful things. And strictly speaking, our mudlet integration won't need the headers. Should I take the headers out, or should I leave them in? And is there any way I should consider breaking up this change into separate PRs, for instance start with a PR for the table of useful things completely empty and then follow up with a PR to add the cookies to the table?

With everything included, this is how things look while using mudlet.

function onHttpGetDone(_, filename, bytesWritten, response)
  cecho(string.format("<white>Downloaded file to: <dark_green>%s<white>", filename))
  cecho(string.format("\n\n<white>Number of bytes downloaded: <dark_green>%s<white>", bytesWritten))
  for k,v in pairs(response) do
    cecho(string.format("\n\n<white>%s:", k))
    for k,v in pairs(v) do
      cecho(string.format("\n  <white>%s: <dark_green>%s", k, v))
    end
  end
end
registerAnonymousEventHandler("sysDownloadDone", onHttpGetDone)

postHTTP(
  "submit=true&uname=thisisnotmyusername&pwd=thisisnotmypassword",
  "https://login.eternalcitygame.com/login.php",
  {["Cookie"] = "biscuit=test"}
)
Downloaded file to:
Number of bytes downloaded: 0

cookies:
  pass: 9876543210
  user: thisisnotmyusername

headers:
  Content-Encoding: gzip
  Content-Type: text/html; charset=UTF-8
  Vary: Accept-Encoding
  Date: Wed, 24 Jun 2020 19:50:33 GMT
  Connection: Keep-Alive
  Keep-Alive: timeout=5, max=99
  Server: Apache/2.4.25 (Debian)

@johnnymo87 johnnymo87 marked this pull request as ready for review June 25, 2020 14:28
@johnnymo87 johnnymo87 mentioned this pull request Jul 9, 2020
@vadi2 vadi2 merged commit f370c91 into Mudlet:development Aug 2, 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>
Chris7 pushed a commit to Chris7/Mudlet that referenced this pull request Jan 2, 2022
* 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
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.

3 participants