Short Description: Plots: Snapshot slots included on a per SnapObj basis. Bug Number: 4744 Release notes (y/n): Yes For Release Nums: 5.3 (1) Implemented inclusion of SnapShot slots in Plots on a per-SnapShot object basis. This is controlled through checkable Snapshot Object items in the Output Config dialog for PlotPage "output devices". Developed to address Gnats 4744: "Output Config doesn't use the individual Snapshot selections." (2) Fixed shutdown-crash caused by the Output Config dialog. (3) Output Config dialog geometry management tweaks. SEE IMAGES: https://cadswes2.colorado.edu/~philw/2010/OutputConfig/ ---------------- Sim/SnapShot.hpp Sim/SnapShot.cpp ---------------- Added utilities to support optional (checkable item-based) inclusion of slots on specific SnapShot Objects in Plots. QList locateSnapShotObjs (const QList&) const; SnapShotObj* locateSnapShotObj (const QString& snapName, const QList* allSnapObjs = NULL) const; static QList snapObjNameList (const QList&); static QList filterSlotsInObjList (const QList&, const QList&); ---------------- Sim/PlotInfo.cpp ---------------- Added Tcl-based persistence support for PlotInfo's new QList _activeSnapObjNames. In method: void PlotInfo::dump(cwostream &os), output the list as a comma-separated string, Tcl-quoted with {} with a command keyword of "activeSnapObjs". Example: -------------------------------------------------- "$plot" activeSnapObjs {Original Values,First Mod} -------------------------------------------------- In function: int PlotInfoCmd (ClientData, Tcl_Interp*, int argc, char **argv) ... support processing of the new "activeSnapObjs" command. ... ALSO: added error message for invalid command: static const QString fmt ("Invalid plot (\"%1\") command: \"%2\". " "Expected activeSnapObjs, axis, curve, grid, gridAxes, marker, " "or state."); const QString msg = fmt .arg (argv0) .arg (argv1); Tcl_AppendResult(interp, qPrintable (msg), NULL); return TCL_ERROR; ---------------------- Q3GUI/OutputConfig.hpp Q3GUI/OutputConfig.cpp ---------------------- (1) Recoded delayed-update mechanism using a QTimer. (There had been shut-down crashes caused by the prior implementation). QTimer* _delayedUpdateTimer; void schedDelayedUpdate(); void cancelDelayedUpdate(); void delayedUpdateTimeout(); // Qt slot (2) Completed checkable-item based inclusion within Plots of Snapshot Slots (by Snapshot Object). Added: void listSnapshots_itemClicked (QTreeWidgetItem*, int col); QList checkedSnapshots() const; void setCheckedSnapshots (const QList&); void saveCheckedSnapshots(); (3) Bailing on hidable Description box, as a way of reducing the dialog box size. Remaining geometry problems. The attempted implementation is disabled based on this definition: // Disabled: Hidable Description (to minimize vertical space). Despite // notable heroics, there is something about the widget layout which // prevents the dialog from shrinking completely when the Description // editor is hidden. Oh well. // static const bool ENA_HIDABLE_DESCRIPTION (false); // see note above static const int MAX_DESCRIPTION_BOX_HEIGHT (180); ------------------ Q3GUI/SlotPlot.cpp ------------------ Implemented inclusion of SnapShot slots on a per-SnapShot object basis using the new PlotInfo's QList _activeSnapObjNames field. See snapshot handling in method: SlotPlot::loadPlotInfo (const PlotInfo*). ---