QuickSearch eXtended

Discuss and announce Total Commander plugins, addons and other useful tools here, both their usage and their development.

Moderators: sheep, Hacker, Stefan2, white

Post Reply
User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 08:09 UTC

I think as suggested:
Create it on first execution. I will consider it.

User avatar
Boofo
Power Member
Power Member
Posts: 1431
Joined: 2003-02-11, 00:29 UTC
Location: Des Moines, IA (USA)
Contact:

Post by *Boofo » 2009-06-01, 08:23 UTC

If you do that won't it end up in the TC directory and not necessarily where the INI is?
chmod a+x /bin/laden -- Allows anyone the permission to execute /bin/laden

How do I un-overwrite all my data?

User of Total Commander
#60471 Single user license

User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 » 2009-06-01, 08:26 UTC

If he does that it will end where he wants it to.

User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 08:27 UTC

Boofo wrote:If you do that won't it end up in the TC directory and not necessarily where the INI is?
No I can use %COMMANDER_INI% in the dll.

2fenix_productions:
Just watched your really nice videos again.
Would be nice for new users to have something like it in the first post here. Would you (or anyone) be willing to create some?

User avatar
fenix_productions
Power Member
Power Member
Posts: 1956
Joined: 2005-08-07, 13:23 UTC
Location: Poland
Contact:

Post by *fenix_productions » 2009-06-01, 10:33 UTC

2Samuel
I can try or you can :)

BB FlashBack Express (tool I used) is now free:
http://www.bbsoftware.co.uk/BBFlashBack_FreePlayer.aspx
"When we created the poke, we thought it would be cool to have a feature without any specific purpose." Facebook...

#128099

User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 10:50 UTC

It would be nice if you would do it.
Time is one of the reasons. Also I never worked with such a program. The last reason is that your videos looked really nice.

User avatar
fenix_productions
Power Member
Power Member
Posts: 1956
Joined: 2005-08-07, 13:23 UTC
Location: Poland
Contact:

Post by *fenix_productions » 2009-06-01, 11:59 UTC

2Samuel
I see what can I do.

BTW. This sounds interesting to be checked:
http://www.codeproject.com/KB/string/dmetaphone1.aspx

I wonder would it be as good (or better) as Levenshtein is. Or maybe trying out to add some "grammar" support. What I mean is characters substitution: like in Polish rz and ż sound similar and people can make errors with words containing them or not even use national characters at all (and use z for both of them), but last part is solved with similarity search.

It might be interesting to check other "spelling" algorithms to find the best one:
http://www.dcs.shef.ac.uk/~sam/stringmetrics.html
"When we created the poke, we thought it would be cool to have a feature without any specific purpose." Facebook...

#128099

User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 12:22 UTC

I currently dont plan any more Similarity searchs for several reasons:
  • I think compared to simple and RegEx search its rarely used.
  • It already gives good results and the degree could be customized.
  • Its universal and could work with any language and unicode
There are two points for new Similarity searchs:
  • They should be used for every language
  • They have to find a Match in a long filename efficient.
Feel free to write a function:

Code: Select all

int Distance(const wstring longString,const wstring shortString);
The longString is meant to be the Filename and the shortString is the Filter.
Return value is the minimum Distance when matching shortString to a substring of longString.

I will include it.

User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 » 2009-06-01, 12:50 UTC

Yeah, Samuel, you can make it plugginable. :D
Seriously. But with a match() function. Your plugin would ac as an engine providing google-like features, starting characters and glueing other plugins together.
Sb. could write wdx support for you (but don't count for me, I won't do any programming for ~1 year).
And sb. could write a plugin that reads column contents from TC's controls, though it would require some other exported function.

User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 14:21 UTC

Updated first post: Version 1.01 is available.
  • The tcmatch.ini isnt bundled anymore. Its created on first run in same folder like "wincmd.ini".
  • renamed "google_search_activate_char" to "simple_search_activate_char" in ini.
Tried to get some filesize and date things to work, but I dont have full filenames with path. (also wdx support would not be possible without full filenames with path) TC indeed uses a workingdir, but its only using the paths on the right pane. Christian I could need a helping hand.

The only workaround I can imagine is reading the information from TC-window, but what if more then one window exists...
m^2 wrote:Yeah, Samuel, you can make it plugginable. :D
Seriously. But with a match() function. Your plugin would ac as an engine providing google-like features, starting characters and glueing other plugins together.
Sb. could write wdx support for you (but don't count for me, I won't do any programming for ~1 year).
And sb. could write a plugin that reads column contents from TC's controls, though it would require some other exported function.
Mh I dont know. I think support with new functions would be nice, but I fear using new dlls would slow the whole thing down.

User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 » 2009-06-01, 14:55 UTC

Samuel wrote:Mh I dont know. I think support with new functions would be nice, but I fear using new dlls would slow the whole thing down.
I see no reason for slowdown. In Windows, dlls are as fast as exes.
You can read path with a code like this, but you'd have to find which is the active panel too (finding quicksearch window coordinates should be enough).

User avatar
Samuel
Power Member
Power Member
Posts: 1871
Joined: 2003-08-29, 15:44 UTC
Location: Brandenburg, Germany
Contact:

Post by *Samuel » 2009-06-01, 15:09 UTC

I need to call one or more functions in the dll for each file. Do you think thats also fast enough? If yes I will consider it, if someone is willing to write something. Please report this.

I dont know if I should use such a workaround, only for the path. I also have to port it to TC. Autohotkey simplifies so much. ;) Last thing is that this workaround has to executed for each file. Performance!

User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 » 2009-06-01, 15:19 UTC

It's exactly as fast as calling a similar function in your dll, which is exactly as fast as calling them by TC internally.

The only possible slowdown is a function that takes time to execute. Now I think that it might be the case with most content plugins, HDDs do ~100 IOPS, so you can filter no more than 100 files per second with a content plugin that actually touches the files. Unless they are on a RAID array, SSD / pendrive / ...

I don't know either whether it's worth your time, I'm not really insisting, just think it would be really nice to be able to quickly filter M~002.flac as a Michael Jackson's song.

j
Member
Member
Posts: 124
Joined: 2009-04-13, 19:49 UTC

Post by *j » 2009-06-01, 15:29 UTC

I guess it would be better if TC directly supported such actions instead of hacking possibly fragile workarounds together.
One possible way would be to extend the [face=courier]MatchFileW[/face] with an extra field like [face=courier]WCHAR* content[/face], that would either pass a string representation of of the current "Custom columns", or something like

Code: Select all

FileContentString=[=anytag.Artist][=thetvdb.showname][=shelldetails.File description]
that is defined in [face=courier]wincmd.ini[/face].

User avatar
Mikefield
Power Member
Power Member
Posts: 623
Joined: 2006-02-26, 19:13 UTC
Location: Oberursel, Germany HE

Post by *Mikefield » 2009-06-01, 15:33 UTC

Samuel wrote:Just install it to TC folder and restart TC. It should work now.
Try it by use filter with "dll match" (tcmatch.dll should not be filtered)
At 1st, many thanks for that nice utility!
It works fine here, but I must read the thread several times to catch how it works.
Maybe an additional readme would help a lot.
At least a question to the usage.:
1st: Typed "dll match" in the quicksearch -> found tcmatch.dll
2nd: Marked the dll string with the mouse
3rd:Tried to replace dll with ini -> it's not possible (would find the tcmatch.ini)
Is this a limitation from the TC or your utility?

mf
Bankster - Word of the Year 2009

Post Reply