Stewart Platform Progress, 2015-03-18
I only had an hour today to work on software, so I started adding the menu items on the right hand side. It’s worth looking at how programs develop to see how other coders think.
The plan
The long goal is to have a context sensitive menu that will change based on the robot(s) you have selected in the 3D view. If I select many robots at once it should show all the menu options they have in common. If they all have the same value for a given option, it shoudl be displayed. If the robots have different values for the same option, the option will appear empty. I plan to bring all robots – Arm3, Makelangelo, and others – into this one program. Then I hope to get them all talking to each other and build assembly lines.
So far
At this stage I’m just getting *any* menus to work. The Stewart Platform class is derived from Robot. Robot contains the controls for connect/disconnect/rescan, because they’re shared by all robots. The Stewart Platform implements move and home buttons. I hope that when many robots are selected, I can say “give me the most-derived class you all share. Now give me every menu option from most-derived down to most-base. Put that in the context sensitive menu.”
Ahead
I’m not sure yet how I’ll get or set values in many robots at once. Right now I’m thinking one RobotView for each class of robot, a many-to-one relationship in a Model-View-Controller pattern.
I imagine whatever system I use will be tangled in the record/playback/undo/redo code. If you have experience with these kinds of design issues, please comment in our forums.