I am a blind woman who uses JAWS (Job Access With Speech) screenreader software, and I'm a beginner at programming with languages other than HTML. I'm beginning to learn how to create a project in C++ with Codeblocks, and I wonder, are there specific C++ codes for creating accessibility features in a program? First of all, I'm reading the tutorials on http://www.learncpp.com, but the part where I'm stuck is how to create code for what would otherwise be visually oriented elements. Here's what I want to do. I'm in the process of creating my first app, an app that I like to call "Ceremony Script Generator". This is an app that contains fillable forms, then generates a finished script in paragraphs and sections. There are different ceremonies for which customers can design a script with wordings of their choice. Basically, with this program, you can generate scripts for Wedding ceremonies, Baptism/dedication/christening/naming ceremonies, and funeral ceremonies/memorial services. I plan to expand that to include coming-of-age ceremonies like communions, confirmations, and bar/bat mitzvahs. This brings up my question, what are the codes for designing things like buttons, combo boxes, checkboxes, textboxes, text areas, radio buttons, sliders, and the like? Also, I want to have one textbox shown and two textboxes hidden when a checkbox is checked, then vice versa when it's unchecked. How do I code this?
It's not about what IDE you use. The point is that standard C++ knows nothing about GUI elements like buttons, etc. To write a GUI, you need to use a GUI framework - that is, a set of third-party libraries and tools that you can use to display GUI elements.
Your choice of framework will largely depend on what platforms you want to support. If you want to make your application cross-platform, QT is an excellent framework to use - it's pretty much industry standard, although I don't know what the licensing situation is.
WxWidgets is another cross-platform framework, that people often recommend. I used it for a project about 8 years ago and didn't like it much, but 8 years is a long time, and it may have improved.
If you want to support Windows only, Microsoft supplies it's own Windows-specific framework. I have no experience with that at all, so can't advise there. (I used what was available back in the 90's, but I'm sure it's radically different now.)
If you want to support just Macs, or just Linux, there are no doubt frameworks for that, too.
As for integrating with CodeBlocks, I assume any given framework will have its own instructions for doing that.
I've tried the IDE that comes with Qt, Qt Creator, but I've discovered it's not all the way accessible. I've even tried Visual Studio, and for me that was a complete disaster, as I had to reimage my computer twice, then reinstall all my programs. Besides that, Visual Studio requires a Microsoft Account. I made one last year, but it got suspended when I forgot my password, and Microsoft thought I was someone else logging into my account. Also, the worst part, Visual Studio 2015 took forever to install! Even worse? It updated the Windows 7 operating system which in turn broke compatibility with JAWS, which led to the reimaging of my machine. Codeblocks is good for me, since it takes up hardly any room on my hard drive, it didn't take forever to install, and best of all, it didn't require a Microsoft Account!
I'm using Codeblocks, trying to configure a project to be made with WX Widgets, and I'm a bit confused. What is a wxWindowClassNR? Most importantly, what is its equivalent in JAWS? Is it a HeaderBar? A dialog? A frame? A static? A ReadOnlyEdit? Also, isn't there a way that someone could make a context menu of components that someone blind could choose from, first by pressing the Applications key, which I'm not sure what the Mac/Linux equivalent key is, then using the arrow keys until they find the component to select, then press enter and it's automatically inserted? As for any of the apps I make, I want them to work on all operating systems. Best of all, I'm going to make them backwards compatible!
The forum at http://forums.wxwidgets.org doesn't have the same kind of registration as this one. In other words, it has a difficult captcha to solve, an image that even Webvisum can't solve, and unfortunately they don't give blind customers an option of an audio challenge or a math problem like most web sites I've been to in the past. What's up with that, I wonder?
Hello. Just to clear something up: You have a large thread on the Qt forum about a similar project. I didn't read through the whole thread, but does this mean you haven't been able to successfully build Qt projects, so you're looking for a different GUI framework?
An IDE is not a GUI framework. Qt might have its own IDE to aid in Qt GUI projects, but the only thing that's truly necessary is a compiler. The hardest part, at least initially, is building the libraries and linking to them, regardless of IDE.
I'm looking for a GUI framework that can be fully recognized by screenreaders like JAWS, as well as by all operating systems. Building libraries might be hard for me if I'm totally blind and can't see what I'm doing.
For the one who asked if I'm literally blind, the answer is yes. If I wasn't blind, I wouldn't be having issues with registering accounts on places with captchas that are otherwise difficult for blind customers to solve. Also, if I wasn't blind, things would be scary for me. Don't ask why, because it would be hard for me to explain, since I'm used to being blind. I've been blind since birth, and best of all, I love being blind! No matter what anybody says, I don't see blindness as a disability, but rather, an extension of my life. Another cool thing about being blind is I can read Braille with my hands, and hear a text-to-speech screenreader with my ears.
May I please be so kind as to ask why this topic suddenly went from programming to questioning and possibly doubting the actual fact that I'm blind? Yes I am being serious. It says so in my medical records. As for programming, I'd rather write my programs by myself, since I'm one of those girls who's independent and doesn't want others to write things for her. But back to the topic at hand, I want to find out if there's a way that Codeblocks can have a context menu with selectable components like buttons, checkboxes, combo boxes, sliders, and the like, which can be selected with the arrow keys and Enter key. I want something where I don't have to rely on a mouse to program. This is the reason why I asked if there is code to make these elements possible. For example, I have a bit of HTML code I'll post here, and I'd like to find out the C++ equivalent.
Can we please NOT turn this thread into challenging and harassing the OP to justify her statements about her particular circumstances? BlindAnnabelle has lived experiences that the rest of us don't, and it's crass, ignorant and downright rude for us to presume we know better than her about those experiences.
Now, back to the issue that the OP actually came here to find out about:
Any decent GUI framework will have the kind of keyboard navigation features that you're looking for built in. If I remember right, wxWidgets does. Usually, this takes the form of specifying a keyboard shortcuts, and of specifying an order for keyboard navigation to cycle through the GUI elements.
Could you please explain how I would make this happen? Also, were any of you able to look at the code that I wrote, and see if there's a way for me to convert it into understandable C++ code? Also, out of curiosity, why when I copied the code into my most recent post was there a bunch of blank lines with just numbers appended at the beginning?
Sorry, but it's been many years since I used wxWidgets, or did any other GUI programming, so I really don't know any details of how you program the keyboard navigation.
You ask about converting that HTML into "C++ code". The simple answer is that you can't express that in standard C++. Unlike some other languages, C++ does not come with any GUI features "out of the box". C++ knows nothing about radio buttons, or text boxes, or any of that stuff.
You can't do this without vast amounts of code to draw objects to screen, organize them into windows and layouts, handle events, and lots of other stuff - and that is what a GUI framework gives you.
GUI programming in C++ is not something I would recommend to beginners. It requires understanding enough about your build environment to integrate a third-party framework, and then requires you to engage with what will inevitably be a complicated set of classes and interfaces. And on top of that, there are the issues that you're encountering having it work with your screenreading software.
I appreciate that this is probably not what you want to hear.
Regarding the display of your message, when you use the code tags to format code properly on here, then the code is displayed with line numbers to the left of the area displaying the formatted code. My guess would be that your screenreading software is interpreting that as a line of numbers before the actual code.