A ‘Find’ Interface for the New Millennium

Version: Deadline 9.0 and later

Introduction

There exists a category of tools that can go completely un-noticed, as long as they are doing their job correctly. Their use is so commonplace and natural that they tend to blend in the background – such is the life of the humble Find tool.

Almost every application nowadays will have a slightly different implementation of the Find tool. Some of them are excellent and fit naturally into the user’s workflow, while some are… less good (and might be noticed a lot for it). For a long time, the Deadline Monitor definitely fell into that second camp, sporting a ‘Find’ tool that (feature-wise) was stuck in the 90s:

old_find.png

Look familiar? At this point, I hope not. Around Deadline 9.0, we realized that the time had finally come to change for the better. If this is the Find tool you’re still using, we highly recommend upgrading!

Enter Find 2.0

The modernization of the Find tool included the addition of several features, hopefully all of which will already be familiar to you.

new_find.png

For starters, you will note the interface itself has been cleaned up a bit, and brought into the 21st century – it is now docked to the parent text control, highlights all matching results, and displays total number of matches (with the current position within the overall list). We also added the very-standard “search wrapping” option, along with a dedicated button to jump to the previous result (instead of a checkbox to reverse direction). Nothing revolutionary so far, but this has all become conventional for good reasons.

Next, we added the slightly less common (but always welcome) options to use Regular Expressions (aka RegEx) and in-selection searching. These features (particularly RegExes) are great for really narrowing down on the specific line of text that you’re looking for. For anyone who might be wondering which slightly-different implementation of RegEx we are using: it’s all using Qt’s QRegExp implementation under the hood.

And finally yet importantly, we threw in a historical drop-down of search terms, to ensure you wouldn’t have to re-type any commonly used (but rather complicated) RegExes more than once. Be aware, however, that the Search History is tied to a particular panel – if you close a Reports panel and open a new one (instead of keeping it docked), it will come with fresh history. That said, settings and history should persist between closing and opening the Monitor itself as long as the panel is kept open.

A Few RegEx Nuggets

General usability improvements aside, the main newcomer feature here is obviously the ability to use Regular Expressions as search terms. As such, I wanted to throw out of a few simple-but-powerful examples of how Regular Expressions can be used in searching.

  • (Error|Warning): This will match entries that contain either “Error” or “Warning”.
  • ^Entire line must match.$: The ^ indicates the start of a line, and $ indicates end of line. Combining them requires the search text to match the entire line.
  • v[0-9]+: This matches one or more (+) digits ([0-9]) preceded by a ‘v’ – good for finding version numbers.
  • “[a-zA-Z\d\s]*”: This will match any number (*, zero or more) of lowercase letters (a-z), uppercase letters (A-Z), digits (\d, equivalent to [0-9]), and whitespace (\s) that are surrounded by double-quotes (). Useful for finding quoted strings.
  • (‘|”)[\w\s]*\1: This one is an extension of the previous one, and a bit trickier. It will match a string that begins with a single- or double-quote ((‘|”) – the parentheses also allow us to ‘remember’ which was matched), has any number of ‘word’ or whitespace characters ([\w\s]*), and is terminated by a quote that matches the first one (\1 – the result of the first parenthetical group).

You can obviously mix and match these however you’d like, and feel free to skim the docs on Qt’s QRegExp implementation for any symbols/nuances I omitted. With Regular Expressions, you’re really mostly limited by your own imagination and craftiness!

In Conclusion

I hope that you now have your RegEx possibility gears churning, and a new-found appreciation for the humble find interface. If there are any other features you would like to see in Deadline’s ‘Find’ interface, we’d love to hear them – it may no longer be stuck in the 90s, but there’s always room for improvement!

Qt is a registered trademark of The Qt Company Ltd. and its subsidiaries.