Shoutbox

Emoticon auto-completion - Printable Version

-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: WLM Plus! General (/forumdisplay.php?fid=23)
+----- Thread: Emoticon auto-completion (/showthread.php?tid=70637)

Emoticon auto-completion by rock3r on 01-13-2007 at 04:43 PM

Hi guys! This is my first post...
I was thinking: what about an emoticons shortcut auto-completion? It could also have a preview of the emo to be added.. in fact i have lots of emos and it's very hard to remember all shortcuts while writing.. and the emos quick-pane becomes too slow to use, if you know which emo to add but u have to find it between 100's...


RE: Emoticon auto-completion by absorbation on 01-13-2007 at 10:46 PM

You haven't explained your post well, but after thinking about it, I think I know what you mean. You want for example, when you type a message similar to an emotion, the panel comes up, narrowing down your results. A bit like modern search tools.

Good idea, but it is very impractical. It would be hard to know how your emoticon shortcuts are formatted. For some it is a word, others start with '(' or ':', thus making it nearly impossible to achieve, unless you have your emotions all organised. Another point is you may find it annoying when type a sentence, and the panel suddenly pops up when you don't want it to :P.


RE: Emoticon auto-completion by rock3r on 01-14-2007 at 12:22 AM

yes... i thought every programmer knows what autocomplete (or intellisense, or wathever) is.. my mistake! anyway, it could be something like having a keyboard shortcut and a partial emoticon name search (a kind of search like jump to file dialog in winamp, only smaller and simpler, as emo names are only 7 chars...) i think it's a very useful feature!


RE: RE: Emoticon auto-completion by CookieRevised on 01-14-2007 at 03:12 AM

quote:
Originally posted by absorbation
Good idea, but it is very impractical.
It is very well possible.

Both in the form of a selected text as you type (autocomplete), as in the form of a panel comming up which narrows the images down (intellisense).

Although a panel popping up is almost useless*, since it will only show 1 emoticon anyways, since emoticons shortcuts can not be part of other emoticon shortcuts ( "myemo" and "myemo1" can't both exist since "myemo" will always be shown before you even can type "1" after it), although Messenger allows it that you have such shortcuts, they wont work.

*It would only be able to show a selection of emoticons by the very first character you type (eg: emoticon shortcuts beginning with "(" or beginning with ":", etc)

Normal textual autocomplete/type-ahead is very well possible though.

But here too, there can only be 1 autocompleted shortcut shown, obviously... (unless you also implement a shortcut key (typically it is a press on the TAB key) which cycles and shows the next matching shortcut)

Note, Messenger Plus! provides objects like:
    Messenger::CustomEmoticons
    ChatWnd::EditText
    ChatWnd::EditText_GetCurSelStart
    ChatWnd::EditText_GetCurSelEnd
    ChatWnd::EditText_ReplaceSel
    ChatWnd::EditText_SetCurSel
    OnEvent_ChatWndEditKeyDown

-----------

Though, I'd suspect that if you run such a script, the typing will be slowed down a lot since you constantly need to do a lot of stuff which each keypress (eg: getting all emoticons and their shortcuts each time, since they can change on the fly!), not to mention the constant showing and updating of the panel with each keypress...

Using a timeout and using a time delay will reduce the slowness a bit, but not entirly.

Also, it hugly depends on the amount of emoticons you have. But since you have so much emoticons you can't remember all the shortcuts, it would also mean this script will slow everything down _a lot_, making it as good as unuseable.
RE: Emoticon auto-completion by rock3r on 01-14-2007 at 10:12 PM

yes you may be right.. but i was talking about something that you can *explicitly* call, like pressing Ctrl+E (e for emos, of course ;) ), and that can show up an intellisense-like panel that is searched and narrowed while you tipe *a part* of the emo name, that can or not be the beginning of its name; that way, you don't have to care about "(" and other chars at the beginning of your emo name. Another useful feature could be a small preview of currently highlighted emo in the panel, to see if it's the one you want. To speed up it all you could also implement this feature, maybe as an optional one, into Plus!...


RE: Emoticon auto-completion by Nagamasa on 01-14-2007 at 11:44 PM

quote:
Originally posted by rock3r
tipe *a part* of the emo name
By the time you get emoticon you want, you be finished. Why not just printing out a list of default emoticons instead?

Thats why there are shortcuts for each emoticon. And you can always use the Plus! ( thing.
RE: Emoticon auto-completion by rock3r on 01-15-2007 at 04:30 PM

yes but "the Plus! ( thing" is *very* slow because it has to prepare previews of all emos, and is also very messy because if you have several "large" emos, like i do (even organized in categories) you can't find them very easily


RE: Emoticon auto-completion by absorbation on 01-15-2007 at 05:17 PM

Your idea is good, however creating a script for it will take some time and effort. Because the demand for something like this is not high enough, people simply don't want to develop this. It may be best if this was part of Messenger Plus! itself :).


RE: RE: Emoticon auto-completion by rock3r on 01-15-2007 at 10:25 PM

quote:
To speed up it all you could also implement this feature, maybe as an optional one, into Plus!...

just what i was thinking (H)
RE: RE: Emoticon auto-completion by CookieRevised on 01-27-2007 at 03:55 PM

quote:
Originally posted by rock3r
yes you may be right.. but i was talking about something that you can *explicitly* call, like pressing Ctrl+E (e for emos, of course ;) ), and that can show up an intellisense-like panel that is searched and narrowed while you tipe *a part* of the emo name, that can or not be the beginning of its name; that way, you don't have to care about "(" and other chars at the beginning of your emo name. Another useful feature could be a small preview of currently highlighted emo in the panel, to see if it's the one you want. To speed up it all you could also implement this feature, maybe as an optional one, into Plus!...

tbh, something like this will never be faster than the current implemented way. Something like a intellisense-like panel, and certainly when you consider parts of shortcuts*, needs a lot more processing than simply showing a complete panel

*Which means your panel will always be showing up and slowing everything down since whatever you type you will always have one or more emoticons which apply to those keystrokes.

quote:
Originally posted by rock3r
yes but "the Plus! ( thing" is *very* slow because it has to prepare previews of all emos
It simply takes the previews already on your hard disk, the ones from Messenger itself. Hence, this is done in a split second...

What you probably mean by slow is the time between typing "(" and the panels showing up, which is by default 500ms. But that can be tweaked by setting a registry setting:
http://www.msgpluslive.net/help/registry/ > QuickIconsParenthesisDelay

quote:
QuickIconsParenthesisDelay
default: REG_DWORD 500

Delay, in milliseconds, used to display the Quick Icons panel when a parenthesis ('(' character) is typed in a message. The range of acceptable values is 1 to 10,000 inclusive.

So either add/change it manually:
HKEY_CURRENT_USER\Software\Patchou\Messenger Plus! Live\your_msn_account\Preferences\QuickIconsParenthesisDelay
or either use Choli's Plus! Live Registry Tweaker.
RE: Emoticon auto-completion by rock3r on 01-28-2007 at 09:49 AM

well i tried changing the registry but the only difference now is that if i type a "(" the panel pops up before i can continue writing, but it still take a lot of time to load itself! The problem is, the first time it pops up, or the first time it pops up a new category, it is *very* slow! I think you misunderstood what i said: it's not the popup delay i want to decrease, i noticed that when it has to "cache" emos to show it is very slow. My idea was in fact a "big emo collection" version of the panel, that you may pop up with a defined keyboard shortcut, that doesn't take lots of time to cache previews because it does only show one preview; also, text search in an array of strings of 7 chars is very fast even if you have thousands of entries in that array. If Winamp can be so fast when "jumping to file" in my 2200+ playlist, why shouldn't Plus! with less than 200 emos? Anyway, if you bind the new panel to a key sequence, it doesn't "show up every time you type", or at less not more than the actual emos panel! It could just be a simple reworking on sounds panel, in fact that panel has nearly the functions I'm thinking about (except for the emo preview, of course, but it has sound preview).
I don't think it's a bad idea, nor a "cpu intensive" thing to do... if you want i think i could code something by myself but unfortunately i only know vb.net and java... i could apply to learn c# but at this moment i don't think i've got much time


RE: Emoticon auto-completion by CookieRevised on 01-28-2007 at 05:32 PM

quote:
Originally posted by rock3r
it's not the popup delay i want to decrease, i noticed that when it has to "cache" emos to show it is very slow. My idea was in fact a "big emo collection" version of the panel
I know, and I said that this will not speed things up at all.

Processing keystrokes and searching in binary trees with JScript is very slow, especially if you want "parts of shortcuts" to be reconized too. Making this as a script will be slow ...

quote:
Originally posted by rock3r
My idea was in fact a "big emo collection" version of the panel, that you may pop up with a defined keyboard shortcut, that doesn't take lots of time to cache previews because it does only show one preview;
No... it will be, at best, equally "fast" if not slower.

quote:
Originally posted by rock3r
also, text search in an array of strings of 7 chars is very fast even if you have thousands of entries in that array. If Winamp can be so fast when "jumping to file" in my 2200+ playlist, why shouldn't Plus! with less than 200 emos?
I think you have the wrong idea in how such intelisense searches work. It is far from "searching some substring in a string". I can assure you that string manipulation is very slow, if not the slowest thing you can do in code, in general...

And if you're going to implement it like "search a substring in a string" then you'll have dead-slow extremely unefficient code and extremely many unneeded loops in the code, etc...

For things like this you need to use binary tree searches.

quote:
Originally posted by rock3r
I don't think it's a bad idea
neither did I ever said it was.

quote:
Originally posted by rock3r
nor a "cpu intensive" thing to do...
again, read what I said exactly: I said it is more cpu intensive than how it is now.
RE: Emoticon auto-completion by rock3r on 01-28-2007 at 08:23 PM

ok i give up... anyway, i didn't say that it was you to say it is a bad idea...
the only thing, i wasn't absolutely talking about a script: i know that jscript is slow! absorbation himself said it could be good if directly implemented in Plus!, and that's what i'm talking about... and i think (at least in languages i use that is) that string manipulation is not slower than image manipulation (emos can also be 32bpp images, even if they are small, load and display lots of them is slower than adding the corresponding string entries in a listbox).
Also, i dunno how searching in winamp jump to file dialog is implemented (i repeat this example, because it shows clearly that it is possible to have a very quick solution) but it's very smooth. So, if i say that i think it can be a cpu-lightweight operation, i mean that: if somebody managed to do it, you can do it. It could be a hard result to achieve, that's another problem; but *it can be done*, and also in an efficient way. That's it.
Try to read carefully what i said, i'm not a fool.. i repeat you that i'm a programmer (maybe not a good one) and i have an idea of what can and what cannot be done... at least before saying me it can't try to do it! as i said in my last post you already have a sound search box that is very near to what i mean, and it doesn't seem to be deadly slow... i have lots of sounds, and it's efficient! The problem is only the "quick" emo panel....

Last resource: why don't you load cached emos previews in a separate thread in the bg, so when you need them they are ready? (maybe it's already doing it, i dunno... i'm just suggesting)


RE: Emoticon auto-completion by CookieRevised on 01-28-2007 at 09:07 PM

quote:
Originally posted by rock3r
ok i give up...
I'm not.. I mean, if I have some time I'll cook something up (as a script) which does what you want... unless someone beats me to it...

quote:
Originally posted by rock3r
and i think (at least in languages i use that is) that string manipulation is not slower than image manipulation
but image manipulation doesn't need to be done. PS: string manipulation is very slow and that goes for almost all languages. It has todo with how strings are handled in memory, especially if you need to search for substrings a hell of a lot memory reading and writing is done. The image manipulation involved in all this is not much more than writing something to memory only once...

quote:
Originally posted by rock3r
emos can also be 32bpp images, even if they are small, load and display lots of them is slower than adding the corresponding string entries in a listbox
displaying images need to be done anyways, there is otherwise no point in showing only shortcuts. If you can't remember shortcuts, you sure would not remember for what those shortcuts were in the first place.

Also, adding strings to a listbox (which is also dead slow on its own) is something totally different than displaying images. You can't compare apples with peaches (or whatever the expression is), and that goes too for comparing a search on filenames (or sound names for that matter) and displaying the found strings, with a searching on images (which you essentially will be doing) and displaying images...

And string manipulation is not adding stuff to a listbox but the actual searching, comparing, slicing up strings and iterating thru the list (over and over again), and the huge amount of memory reading and writing which is done by the CPU to achieve all this.

Write a bare bone program which displays something on screen and write something which searches 1 substring in a string using the basic building blocks of a program (with only memory read/write, for-loop and if-then-else statements). Then you'll see what I mean with 'a hell of a lot memory reading and writing'... as that is what the CPU must do...

:)

---------------------------

quote:
Originally posted by rock3r
So, if i say that i think it can be a cpu-lightweight operation, i mean that: if somebody managed to do it, you can do it. It could be a hard result to achieve, that's another problem; but *it can be done*, and also in an efficient way. That's it
(....)
at least before saying me it can't try to do it!
my first response to this thread was:
quote:
Originally posted by CookieRevised
It is very well possible.

RE: Emoticon auto-completion by rock3r on 01-28-2007 at 10:07 PM

ok... well thank you, i think i was wrong... i'm still wondering how does winamp to be lightning-quick!! Last thing....

quote:
Also, adding strings to a listbox (which is also dead slow on its own) is something totally different than displaying images. You can't compare apples with peaches (or whatever the expression is), and that goes too for comparing a search on filenames (or sound names for that matter) and displaying the found strings, with a searching on images (which you essentially will be doing) and displaying images...
in fact i don't want to compare nor show images, just their shortcuts and the preview of the highlighted one. only one image is shown at a time, and search is done only through the "not-so-huge" 7-chars emo shortcuts list
RE: Emoticon auto-completion by CookieRevised on 01-28-2007 at 10:23 PM

1) I didn't said "comparing images", I said "compare displaying a string and displaying an image"

2) displaying images need to be done anyways, there is otherwise no point in showing only shortcuts. If you can't remember shortcuts, you sure would not remember for what those shortcuts were in the first place and you will end up scrolling thru the list and wasting a hell of a lot more time than how the quick-icon panel is integrated as it is.

Thus, 3) if you have 200 shortcuts wich contain the character "c" and you search for "c" it will be showing 200 shortcuts and images (that is also how intelisense works: narrowing a list down as you type)...

Showing only 1 emoticon at a time by selecting it doesn't make much sense and I'm sure you will not be able to select your icon any faster... If it does, you already remembered the shortcut anyways (hence you have typed it and you knew what icon to select afterwards) and the whole purpose of the idea is lost (to not needing to remember shortcuts anymore).

4) The whole process of typing and selecting an icon will be waaaaay longer than it is now by simply opening a panel and selecting the icon you need.

:)