"Tell Me" search bar with Office 2016 - c++

Office 2016 was released with a very specific search box on the ribbon shown below (image from Microsoft blog). After a little research (took me a bloody while to even get the search terms right for google) I found that it uses intuitive language to find the commands fast. I wanted to implement something similar if not the same with my application.
Excel Ribbon "Tell Me"
I wanted to know how do I proceed to implement this. I understand there is a steep learning curve but I am looking for a place to start. Hopefully some examples, some libraries if there is something or some algorithms I may need to learn.
It was very difficult finding out what technology is used. I found another blog explaining the new features with perhaps a little extra information rather than just mentioning what it is. "Tell Me uses a technique called word-wheeling, which enables it to start showing results as soon as you start typing. With every keystroke, the results are modified and refined."
Read so far:
blogs.office.com/2014/05/15/get-more-done-with-tell-me
blogs.msdn.microsoft.com/ukfe/2014/06/03/office-365-productivity-feature-get-more-done-with-tell-me/
So any help for me to start trying to implement this feature is appreciated. Just as a note I use C++ (Qt) but I guess to learn I wouldn't mind any language.

Related

Creating GUIs in Win32 C++

I'm developing my first Windows desktop application and I'm trying to figure out what the best approach would be to create the program's GUI.
I know, I know... I feel stupid for asking considering the amount of data on the subject on SO. However most answers seem outdated and I'm not sure if they fit my specific project. Also tutorials for Windows 8 'metro apps' are clogging my Google search results, which is NOT what I'm looking for.
I use Visual Studio. I've followed tutorials. I have basic knowledge of C and Java and extensive experience with PHP. I'm excited to learn C++, so I'm not looking for GUIs to create a GUI (like WinForms). I also don't care about managed code and portability for now, especially since I'm trying to avoid dependencies (i.e. users having to install .NET). As long as it runs smoothly on Vista and up, I'm happy.
The application
The software will teach basic physics to kids. I'd like to create a main area and a sidebar. The main area will feature a physics animation, say a bouncing ball, along with some Q&A. Users can zoom in to the animation to measure some stuff and answer the question. Users can track their progress in the sidebar. That's pretty much it.
What I've found so far
I'm getting a bit frustrated with MSDN. Most of their examples are given in four different languages (C#, C++, etc). I can't seem to get more than a bit of Hello World code from them.
I found a GDI API on MSDN and it seems like a good start for me. However I've read quite a few answers on SO saying creating layouts in pure C++ is really hard, that we're better of using frameworks like ATL and WTL. Since I'm also going to create (somewhat interactive) animations, I've wondered whether I should use gaming-targeted APIs like Direct2D.
Since all of this is new to me, and there are a lot of options, I don't know where to start for my particular application. Any tips would be greatly appreciated!
Using the raw Win32 API (no additional downloads or third-party helpers):
Here's a good primer (introduces dialog boxes, text boxes, buttons, etc): theForger's Win32 API Tutorial
And here's where you go from there (numeric up-downs, list boxes, combo boxes, tooltips, and more): Common Controls on MSDN. Most of these require you to #include <commctrl.h>.
I also found this to be a good resource that covered what the other two didn't: Win32 Developer - Window Assets
But the Win32 API doesn't seem like it does exactly what you want. A physics app for kids should have a more visual GUI than the API can provide. Good luck, though!
If you're ok with adding additional Frameworks, I'd suggest looking at Qt.
It allows to create the GUI from code only, has a good structure, and has an Interface for 2D drawing, if required.
If you are concerned about dependencies, you only have to include the Qt DLLs to your executables; no installation is required for the user.
To get started, see my (old) tutorial "Lessons in Windows API Programming".
But you really need a good book, such as edition 5 or earlier of Charles Petzold's classic "Programming Windows".
The problem with latest edition is that it's for C# and .NET, with Charles grabbing the tail of the "new way" at just the wrong time…
Disclaimer: I haven't checked the details of edition numbers.
Using the Windows API is the simplest, but producing advanced GUIs can take a very long time. Microsoft Foundation Class is a way to make the Windows API more user friendly and OOP. Does anyone have any experience with MFC?
Why not use some 2D C++ game engine, like HGE: http://hge.relishgames.com/overview.html.

Anyone know of a book or documentation like MFC Internals for Qt?

I have recently read MFC Internals (ISBN 9780201407211) and it helped me greatly gain an intimate understanding of how MFC works and increased productivity about 100 fold. I was wondering now that I am into Qt, is there any book or documentation out there like this? I have been having a hard time finding straight-up documentation on Qt, it always seems to be beat-around=the-bush style of documentation (they tell you how to build the house, but not how to cut down the tree) ??
The best way is to try developing your own application. Just start from a basic application like calculator. Add a few widgets to it and code it as you go. For reference use "C++ gui programming with Qt4" mentioned by Zlatomir. I have recently designed a whole GUI using Qt. I drew its screenshots on Inkscape to get a prototype look and afterwards I started working on designer to fulfill each functionality. Then I implemented the code and I repeated the designing and coding steps. Also, the best help will be Qt Assistant - its sufficiently complete, no Internet required so save times and simple to use. Going my way, you will not only learn Qt in short interval after which you can go through the book to know what tips and tricks you might not know, but also it will be interesting so that you may not give up like many others who just fall midway through the reading part. Warning - Doing this way, you will also know about pitfalls/drawbacks of Qt and how to not go that way.
This is one of the links I found last night. I went through 2 pages and found it might make your life a bit easier - http://zetcode.com/gui/qt4/
I have not read the MFC book you mentioned, but the Qt framework i learned by reading from "C++ gui programming with Qt4" (the first edition is available as a free download) and "Foundation of Qt development" and also it's worth mentioning this documentation page, that contains links to the basic concepts of Qt framework.

Graph edit framework

I was looking at MeVisLab and I wondered if anyone knows a good framework for making a user interface similar to the one they use. I like the designing flow with boxes and arrows thing.
What I would really like is to able to integrate with C++ using Qt, and perhaps export the graph to xml of something like that.
There is another example of the interface here:
I hope someone knows something
Qt's Graphics View is a "framework" which does a good bit of the handling for the kind of scenario you describe. It doesn't take much code to get off the ground and within striking range of what you're looking for:
http://doc.qt.nokia.com/latest/graphicsview-diagramscene.html
http://doc.qt.nokia.com/latest/graphicsview-elasticnodes.html
I'm not aware of any open-source Qt-based programs that offer exactly what you want already written. Just noticed IBM did open source "DataExplorer", which is interesting to me...I might go take a look at that myself:
http://www.research.ibm.com/dx/

Text Editor API. Scintilla for experimental IDE. Do you use something else?

I have discovered Scintilla/Notepad++ API this week end.
As there is a nice Template vcproj for Notepad++ Plugins available on line then I could start to play with some pseudo code-source really really fastly.
I have just looked briefly at the Scintilla documentation which expose the API which looks promising. Sometimes it is still hazy for me, sometimes not as feature-full as I expect/dream, but that's really meaningless details for now.
So now it is time I experiment with a language of my fancy, for the moment I nickname it "Entity". And what best to do than design a light IDE for it.
So I am going to invest much time in Notepad++/Scintilla environement.
I have have not thought about using Emacs because I never got accustomed to it.
But if you use another type of Text Editor API than Scintilla, preferably in C++ since it is my language experience... what other Text Editor API would you use/have you used ?
Just want to be sure of my choice before diving deeper.
I found Scintilla to be very feature-packed, and covered everything I needed. You have to do a bit of work to get all the functionality out of it (ensuring that keyboard short-cuts perform the desired effect, etceteras), but it was incredibly easy to compile, include and get working, though as I said you have to do a bit of legwork to get everything out of it, but this is better than having to tear your hair out getting an "all-purpose" control to stop doing something you don't want to. It is as if the authors have given you a toolbox to work with.

Application for sketching ideas on a computer [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I've always wanted to sketch all ideas I come up with in the computer instead of on paper, but everyone knows that sketching with good 'ol fashioned pen and paper beats the crap out of trying to do it with a mouse (or even worse, a touch pad).
So I turn to stack overflow with this question: Does any one of you know a magic program that will help in sketching out diagrams, ideas, etc. with decent speed on a computer?
I'm not after something that will do pretty diagrams (that take ages to do, btw.) like Visio, Dia (kudos the the Dia developers though, kick ass app), etc. but for jotting down quick ideas and drawing early work flow sketches, etc.
(I know - a wacom board, but it's not really feasible to carry it around with your laptop)
I still go for a whiteboard and a decent camera on the mobile phone.
Normally when working on the whiteboard, we often go through a phase of erasing out all the unimportant stuff after we've worked out what the real essence of the problem and the solution. So we put some nice pictures on the wiki ;)
Did you consider some kind of mind-mapping application ?
PersonalBrain is quite handy for that type of task, even though the "diagram" feature is quite limited.
alt text http://www.thebrain.com/site/personalbrain/learningzone/topUses/awareness3.png
I'm actually a big fan of OneNote. It's great for entering text and organizing it in a visual way.
This won't do for situations where you're working with other people, but I often do my brain-storming with GraphViz.
GraphViz gives you the dot and neato languages for drawing graphs. So you start jotting down items and the relationships between them in your favourite text editor:
graph brainstorm {
release -- documentation
release -- "bug fixes"
release -- enhancements
documentation -- "release notes"
documentation -- "user guide"
enhancements -- "user requests" -- "support team"
enhancements -- marketing -- demo
}
You can then turn this into a image:
neato diagram http://share4pic.com/images/2/9/3/2935067.jpg
There are lots of options for formatting and layout and so on if you want to prettify the output.
It doesn't work for idea's or diagrams, but i found this very impressive: I love sketch. Hopefully, we'll see similar tools in the future for other forms of information.
When i was still using windows i used adobe illustrator and a wacom tabled for sketching diagrams (example). Powerfull, but a steep learning curve, if you just want to do sketching.
On linux i use Inkscape (with a wacom tablet). It's not as powerful as illustrator, but it gets the job done. (example).
I would love to use a sketching tool for creating presentations. Have a number of slides on my screen, and just sketch to contents of every sheet, also using the wacom to drag and drop the slides in the right order, etc.
There was a research project called SILK (Sketching Interfaces Like Krazy) a few years ago (mid 90s) at Carnegie-Mellon. Two papers that talked about the work are Interactive Sketching for the Early Stages of User Interface Design and Just Draw It! Programming by Sketching Storyboards.
I thought their ideas were very cool, but the project seems to have blown away. I'm mentioning it here for two reasons:
To support the questioner's idea that this would be A Very Good Thing for early design stages, and
In hopes that someone else will have more luck than I did in finding out what happened to SILK (or at least the prototypes).
I know you are "not after something that will do pretty diagrams".
However, I believe this new web flash-based application LovelyCharts might be oo assistance for quick (and nice too) diagrams, and can be compliant with your goal to "jotting down quick ideas and drawing early work flow sketches, etc."
Example of work flow sketch:
The closest thing to the feeling of writing on paper with pencil or pen that I have found is a graphics tablet (relatively inexpensive and small Wacom Bamboo is enough) with Autodesk's SketchBook Pro software.
Try the trial (if you have graphics tablet handy, not really the same with a mouse), it's amazing how natural digital drawing feels with that app.
Depending on how close you are to implementing something, balsamiq mockups may be what you want. I find it great for mocking up user interfaces, and it's probably not a bad way to start sketching a development idea.
Autodesk Sketchbook Pro is the closest I've come to a whiteboard after an extensive search. Minimal controls, yet enough. It's also attractively priced, in line with its simplicty.
Maybe you should consider buying a Graphic Tablet .
I recommend Wacom Bamboo
I wouldn't suggest it, but people have mentioned mind-mapping products and even OneNote (¡sin comentarios!), so I'll plug my TheKBase Desktop and it's Cloud brother, TheKBase Web. NO, they will not help you draw things like on paper, but in many cases, diagrams are not what you need. You want to organize your ideas and whip them into shape.
If you insist on diagramming, 30x less annoying than Visio is SmartDraw (sorry for the Spanish grammar).
Moleskin for the win!