Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ MUSHclient ➜ Suggestions ➜ Feature Wishlist

Feature Wishlist

It is now over 60 days since the last post. This thread is closed.     Refresh page


Pages: 1  2  3 4  5  

Posted by Shadowfyr   USA  (1,792 posts)  Bio
Date Reply #30 on Thu 30 Oct 2003 07:18 PM (UTC)
Message
Yeah. That is currently an insoluble problem..

About the only thing you could do is have a function key programmed to cause an alias to execute, have that alias' script copy out the entire line, then run each individual word through the thesaurus, if you changed the line at all, then the script would clear the existing one and replace it with the altered one. The major pain with this is a) you would need a 'local' thesaurus database to check, or it would hit you with a 20-30 second of freezing Mushclient every time it executed the INET control command to retrieve a page (using IE here wouldn't work), b) you can't tell it to only check one word (or even get the cursor position to have the script figure out which one to request and last c) it would be a pain in the rear for even me, knowing how the control works, to do it. Oh yeah, and it would only be able to retrieve the first page or choices, without even more mind bending code to check for multiple ones (add another 20-30 seconds 'per' page here).

An external and inexpensive solution is to make it possible to do GetWordUnderCursor and ReplaceWordUnderCursor and then have an alias (for the right click menu) or a macro key call a script that did those things and called an external thesaurus to find the needed words. This would be a lot more usable and could allow for not just thesauruses, but word translators, etc.

As for spawned windows.. I had this idea for additions to that:

Added to the XML:

<!-- Control events would allow response to Click, DblClick, Change and other
events from the controls. -->
<trigger
  match="OnButton1Click"
  ControlEvent="y"
  script="ClickThis">
</trigger>

<!-- Option 14 would be 'Send to Window'. -->
<trigger
  match="gossip: *"
  label="Text1"
  send-to="14">
</trigger>

<!-- Responds to the Enter key being pressed and can thus work like an
input box for a chat window. -->
<trigger
  match="OnText1Enter"
  ControlEvent="y"
</trigger>

<window>
  name="Window1"
  top="0"
  height="70"
  left="300"
  width="100"
  <Button
    name="Button1"
    caption="Click This!"
    top="50"
    height="15"
    left="1"
    width="20">
  </button>
  <Textbox
    name="Text1"
    text=""
    top="35"
    height="10"
    left="1"
    width="98">
  </Textbox>
  <Picture
    name="Pic1"
    picture=""
    top="1"
    height="29"
    left="1"
    width="29">
  </picture>
</window>


To the script command set>

World.CreateEventTrigger (BSTR match, BSTR Script)

World.CreateWindow (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.MoveWindow (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.CloseWindow

World.CreateButton (BSTR Name, BSTR Caption, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.RemoveButton (BSTR Name)
World.MoveButton (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.SetCaption (BSTR Name, BSTR Caption)

'This I assume would use your fast output window object, since the only real alternative is the RichText control.
World.CreateTextbox (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.MoveTextbox (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width) 
World.RemoveTextbox (BSTR Name)
World.SetText (BSTR Name, BSTR Text)
World.AppendText (BSTR Name, BSTR Text)
World.ColourAppendText (BSTR Name, BSTR Foreground, BSTR Background, BSTR Text)
World.GetText (BSTR Name)
World.GetLine (BSTR Name, LONG Line)
World.GetTextLines (BSTR Name)
World.ClearText (BSTR Name)

World.CreatePicture (BSTR Name, BSTR filename, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width, INTEGER Mode)
'Mode would be stretch, tile or center. I think it is center anyway..
World.MovePicture (BSTR Name, INTEGER Top, INTEGER Height, INTEGER Left, INTEGER Width)
World.SetPicture (BSTR Name, BSTR Filename, INTEGER Mode) ' Should probably reload
  'if the filename is the same, in case an external program changed the image.
World.FillePicture (BSTR Name, BSTR Color)

Optional>
World.Draw (BSTR Name, BSTR Commands)
'Simple implimentation of QBasics DRAW command. Not 'quite' as good as real drawing commands, but simpler than coding them all. They can use a real program for that. ;)

World.SavePicture (BSTR Name, BSTR Filename)
' Only useful if the above is allowed or real drawing can be somehow allowed. It should only work when the image mode is 'center', since tile would be confusing and I am not sure how stretch deals with drawing.

Hopefully everything is more of less self explainatory.

Not sure how much actual bloat this would add. It does add a mess of new commands, but while the window creation code and means to handle 'where' the events get sent are possibly complicated, the actual controls are just standard things you plug in when you need them. Then again, I don't have much experience with C++, so it may be insanely more complex in reality.

Anyway, I figure those three controls cover 'most' things you may want to do. A grid control would however be nice to have for databases, etc, but I am not sure how events on that are handled. If there are other useful controls, then the biggest hassle is figuring out what commands are needed to set things up and what events you actually want to keep track of. Most only use 'Click', 'DblClick' and 'Changed' though.

I figure having the events defined as part of the list of triggers would make them easier to keep track of. Though, it makes no sense for them to have a sequence number and should probably always appear in the list either first or last.

Making this sort of spawnable window also makes suggestion 496 'a mail editor' redundant, since you could easilly code one in script using such a window, not to mention a mess of other stuff.

---
Oh yeah, QBasic's DRAW feature:

'These draw by 1, if # is not given.
D# - Down by #
E# - Up and right by #
F# - Down and right by #
G# - Down and left by #
H# - Up and left by #
L# - Left by #
R# - Right by #
U# - Up by #

M<+,->#,<+/-># - Move to #,# or relative + or -.
C% - Sets color (an integer or in Mushclients case also maybe a color name).

I assume these work like [B D2 U L4], only way it makes sense..
[B] - Move but don't draw.
[N] - Draw, then return to first position.

There are also commands that do scaling and rotation, but that would get complicated, since instead of just drawing, you could need to keep track of each thing drawn as a seperate object to be scaled and rotated. I am not even sure how QBasic handled that. lol
Top

Posted by Shadowfyr   USA  (1,792 posts)  Bio
Date Reply #31 on Thu 30 Oct 2003 07:25 PM (UTC)
Message
Hmm. Almost forgot.. Since you can ImportXML, then:

World.ExportWindowXML(BSTR Name, BSTR Filename)

would be nice for saving all the stuff you set up from in script. I am not sure saving it in a state file is practical. Making a plugin with the result could be as simple as adding an option to 'import XML file' in the process of using the plugin wizard to create one. ;)
Top

Posted by Linda   Sweden  (164 posts)  Bio
Date Reply #32 on Thu 30 Oct 2003 09:20 PM (UTC)
Message
Shadowfyr,

I have to admit that I can't quite figure out how your suggested spawned windows would work, especially not how the separate input window would be handled. :) And there's still the issue of the size limit in the notepad, isn't there?

Also, regarding the mail editor suggestion, one of the main advantages of that (as I see it) would be to be able to work on and save (for later sending) several different mail at any given time, and also to be able to have it be setup to handle the mailsystem in each world correctly.
Top

Posted by Shadowfyr   USA  (1,792 posts)  Bio
Date Reply #33 on Fri 31 Oct 2003 03:35 AM (UTC)
Message
Well Linda, a spawned window is just an object. as far as the program is concerned. If you use Spy++ then mushclient with one window open looks like this:

Window 00000510 "MUSHclient - [Ages of Despair [Closed]]" Afx:400000:8:14b6:6:6437
  |-Window 00000290 '*' MDIClient
  | |-Window 000000A8 "Ages of Despair [Closed]" Afx:400000:b:14b6:6:6447
  |   |-Window 00000DB8 '*' AfxMDIFrame42s
  |     |-Window 00000D80 '*' AfxFrameOrView42s
  |     |-Window 000001F8 '*' Edit
  |-Window 00000EC8 '*' msctls_statusbar32
  ... Etc. ...

Basically any window 'you' created would in the above case become another child of Window 000000A8 (since that is the 'world' window). If you click a button on your new window, that message gets passed to your window, then if nothing in that can handle the message, it gets handed to 000000A8, which would then check 'what' the event was. If it was a 'click', then it would look for On<object>Click in the triggers and do whatever that trigger specified. Same with other any other events. The trigger could do any of the things that a trigger or alias could do, including executing scripts. I know this would work, I have seen examples of it and in C++ it is probably more likely to work than in VB, which the examples I saw where for.

So, for your mail editor, you could concievably store messages to be posted later (just copying out the textbox contents and storing it until needed), edit multiple ones at a time, by opening multiple new windows, etc. Yes, you still need someone to write all the script to manage this, but you also don't get nailed with a program that 'almost' does what you want, but not quite and which you can never ever fix. Any third party solution would be like that. Any built in would require waiting for Nick to fix a problem or worse, convincing him it needed to behave differently than what it does.

Assuming a Grid control was also made available, then you could make a plugin that would work and look like any normal mail or email client, it is just a matter of someone coding one. This is a 'major' improvment over the kind of spawned window most people are talking about, which are basically a notepad that does color and 'maybe' also its own input box. Better yet, if you can get a handle to your new window (something I left out) then any control you can use CreateObject with could be bound to that window and its Click, DblClick, Changed or other supported events automatically supported by event triggers.

An external application would still be better in maybe half the cases, where time consuming things need to happen, but for the other half the time you can make a simple (or complex) plugin that does what would otherwise require the use of a compiler, which not everyone has. It is the inability to create or use such a thing in Mushclient that makes even the simplest addon require an expert in VB or C++ to code. I think this would make life a lot easier to even those of us that can do that.
Top

Posted by Poromenos   Greece  (1,037 posts)  Bio
Date Reply #34 on Sun 02 Nov 2003 10:54 AM (UTC)
Message
I don't know about mail systems, I have never used one, but i'm sure all the saving/loading could be easily done with a plugin, but adding mail functionality to the client would be bloated, since it's probably only useful on MUSHes. The minimise to tray, on the other hand, it pretty easy to implement (on VB anyway), and it would be useful to many people, without bloating the client more. I agree that the thesaurus wouldn't be a very cost-effective addition, but there are also many free thesaurus files in CSV format that you can add... Maybe script a little window with alternatives like Word has... That would, however, add a lot (2-3+ MB) to the client, so i propose that while thesaurus functionality would be built in (using only a small window that displays synonyms), the default thesaurus file would be very small on nonexistent, but people who want to use the Thesaurus would be able to download the extra 3 MB file from the website... That could also be done for the spellchecker, but since those files are only like 100kb zipped, it doesn't matter that much...

Vidi, Vici, Veni.
http://porocrom.poromenos.org/ Read it!
Top

Posted by Linda   Sweden  (164 posts)  Bio
Date Reply #35 on Sun 02 Nov 2003 01:55 PM (UTC)
Message
Having the thesaurus functionality (for example allowing you to right-click on a word to get a list of synonyms in a pop-up window which you then can select a replacement word from) built into the client, but letting those who want to use it handle the downloading a free thesaurus sounds like an excellent compromise. And, in fact, it might not be a bad idea to do that for the spell-checker either, if people want to use a more updated dictionary. Now, if the same approach could be used to make the spell-checker more 'intelligent', that'd be even better. And hooking into Words English Grammar checker would be nice too. ;)

However, when it comes to the mail, I think it is wrong to say 'its bloat because it would only be useful on MUSHes'. Judging by the name, at least, MUSHclient clearly started out as a client for MUSHers, so why shouldn't a feature be included if it is only used on MUSHes? There are plenty of current features in the client that are only useful on MUDs, after all.

Still, if it can be done well through scripting, that's one thing, but I still remain rather unconvinced that you could use scripting to do a good job of either properly spawned windows or a mail editor. Partly, I don't quite follow the technicalities of how it could be done, so I really only could say whether something was a good solution after seeing it in action.
Top

Posted by Linda   Sweden  (164 posts)  Bio
Date Reply #36 on Sat 23 Sep 2006 05:20 PM (UTC)
Message
Another old topic, but I wanted to bring up the thesaurus issue again. I am not at all sure what sort of dictionary and thesaurus packages are needed to work with something like MUSHclient, but looking around some through Google, there does seem to exist various kinds of freeware and open source solutions for these things.

Might this not be something to look into to be able to add this functionality without having to purchase a license for a thesaurus?
Top

Posted by Nick Gammon   Australia  (23,173 posts)  Bio   Forum Administrator
Date Reply #37 on Sat 23 Sep 2006 10:25 PM (UTC)
Message
Yes, this probably goes along with the open spell-checker idea. I'll look into it.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,173 posts)  Bio   Forum Administrator
Date Reply #38 on Tue 06 Mar 2007 01:30 AM (UTC)
Message
For a thesaurus, see:

http://www.gammon.com.au/forum/bbshowpost.php?id=7412

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Rojan QDel   USA  (9 posts)  Bio
Date Reply #39 on Thu 22 Jan 2009 04:59 AM (UTC)
Message
This has likely been mentioned, but I would love to have a built-in log rotator.
Top

Posted by Nick Gammon   Australia  (23,173 posts)  Bio   Forum Administrator
Date Reply #40 on Thu 22 Jan 2009 05:33 AM (UTC)
Message
Do you mean deleting old logs? Or just making new ones based on date/time?

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by DarkTejinashi   (1 post)  Bio
Date Reply #41 on Sun 25 Jan 2009 03:35 PM (UTC)
Message
I know the functionality of the spellchecker is mentioned a lot. Has it ever been suggested using something like ASPELL (http://aspell.net/)?
Top

Posted by Nick Gammon   Australia  (23,173 posts)  Bio   Forum Administrator
Date Reply #42 on Sun 25 Jan 2009 07:55 PM (UTC)
Message
I don't recall that being mentioned. However the current spellchecker is implemented as a separate Lua module, and there is nothing really preventing that module loading a DLL with the Aspell code in it.

In other words, that could be a good 3rd party project for someone who is keen. :-)

I haven't had heaps of complaints about the current spellchecker, it is reasonably fast and uses the metaphone algorithm to make suggestions, which works reasonably well. This helps make the suggested corrections be the closest to the original word, in terms of number of changes needed to reach it. I note from the Aspell web page that using metaphone is something he is planning as an enhancement, so switching to Aspell might actually take functionality away.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Aryzu   (12 posts)  Bio
Date Reply #43 on Tue 27 Jan 2009 11:53 PM (UTC)
Message
I have one further question question to the spell checking functionality. Is there a different method available except 'Spell check on send'? Something like underlining misspelled words? I don't want that a spell correction dialog is popping up in a hecktic situation like battles.
Top

Posted by Nick Gammon   Australia  (23,173 posts)  Bio   Forum Administrator
Date Reply #44 on Wed 28 Jan 2009 03:20 AM (UTC)
Message
You can turn off spellcheck on send and instead use Ctrl+J to spellcheck when you want. Also someone recently (can't remember who) was doing an experimental spellchecker which popped up a little window above the command window and underlined misspelt words.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


250,730 views.

This is page 3, subject is 5 pages long:  [Previous page]  1  2  3 4  5  [Next page]

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.