Writing a search engine isn't difficult. It's getting the stuff to display in the new order in the listbox that would be tricky, and then making sure that any changes are applied in the correct positions. This isn't a problem presently because there's only one possible order, and it's the same order that the moves are stored in the game.
That's why you make a... well... for lack of a better word, LOOSE interface attached to your program. I'm imagining this as a piece of hardware instead of software... maybe that's why you're not understanding me. I have a rather lengthy metaphor that might help you understand what I'm suggesting. If you don't get it, then I will leave you be with the understanding that I am simply not a software engineer.
Imagine what you've already written as a wall covered with connection points hard-wired to locations on the rom. Above each location point is a screen that translates the data being streamed from the rom to the connection point into something humans can understand. Now... at the moment, your program is as rigid as lead plumbing from beginning to end. You can change the information stored in each location on the rom, which is all well and good, but it requires the person using your tool to conform to the rom and not to the tool. What if instead of having those display screens screwed immovably to those data transferring pipes, you were to run infinitely expandable and tangleproof wires between the displays and the connection points. Then you could move the display screens around to any order or position you wanted! Lemme whip up a graphical example:
Arranged by order in the Pokedex:
Arranged first by type alphabetically, and second by name alphabetically:
Arranged by name alphabetically:
Each picture of the Growlithe is linked to the very same spot, but I am able to order it where I want it without severing the link. That's how your move list should be. Each move AS IT IS LISTED is a link to its corresponding fixed location. It never has to relearn its initial location, because that bit of data is not tampered with.
I'd rather keep each tool separate though. That is much simpler, and the benefit gained isn't worth it. Besides, some people don't like a single giant tool that rolls together a bunch of unrelated tools.
Well... I guess that just sucks for me, then, because I personally hate having to browse through forty tools in my desktop or wherever I can store them all. I prefer the program to have tabs for each subprogram, or a list of each subprogram so I can switch between tools in the blink of an eye.
Also, what do you mean by "a more graphical interface"?
Oh, that was just me getting carried away. I'm a big fan of pretty things, and a nice skin for your program would be cool, yet completely without function other than to make it feel better in my hands.