4-26-2011 Short Description: Qt4 Port of the RPL Palette Dialog / Q3ListViews Bug Number: n/a Release notes (y/n): no For Release Nums: 6.1 -------------------------- QtRpl/RplPaletteDlg.hpp QtRpl/RplPaletteDlg.cpp QtRpl/RplPaletteWidgets.ui -------------------------- Qt4 Port of the User-Function and Predefined-Function Q3ListViews. (These are either one or two level treeviews, depending on the Group/ Function View mode setting). OLD: Q3ListView* _ui._userDefinedListView; OLD: Q3ListView* _ui._predefinedListView; NEW: QTreeWidget* _ui._userDefinedTreeWidget; NEW: QTreeWidget* _ui._predefinedTreeWidget; OLD: class RplPaletteDlg::FunctionViewItem : public Q3ListViewItem NEW: class RplPaletteDlg::FunctionItem : public QTreeWidgetItem An existing PERFORMANCE PROBLEM WAS FIXED. In Rulesets having many user- defined functions -- e.g. the urgwomPlanning (919) and crssShortageDEIS (439) regression tests -- clicking different subexpressions within a RPL Editor was SLUGGISH if the user-defined tab was selected (EVEN IF the RPL Palette dialog was NOT SHOWN). The whole list was being rebuilt on each user selection within the RPL Editor. NOW, the existing list is just UPDATED as a result of that selection event. As a side effect of this change, clicking in a different RPL (sub-) expression NO LONGER re-auto-adjusts the column widths in the RPL palette dialog function lists (which may have been manually adjusted by the user). Added bool paramemter to this public method: void updateAll (bool fullRebuild); ... in certain conditions, the full rebuild is done anyway, i.e. even if it is passed in as 'false' -- for example, the User Defined function list is unconditionally rebuilt if the selection is within a DIFFERENT RplSet. Two RplPaletteDlg methods were renamed to distinguish between "updating" and "rebuilding": Renamed: updateUserFunctions() --> rebuildUserFunctions() Renamed: updatePredefinedFunctions() --> rebuildPredefinedFunctions(); Added: updateUserFunctions() ... minor item-state updates Added: updatePredefinedFunctions() ... minor item-state updates Other New methods: Selection* updateRplFrameSelectionInfo (QLineEdit*); ... factored from from the old "update" methods cited above. FunctionItem::initItem(); FunctionItem::updateItem(); New Qt slots (signal handlers): void tabWidget_currentChanged (QWidget*); void viewActionGroup_selected (QAction*); void userDefinedTreeWidget_itemDoubleClicked (QTreeWidgetItem*, int col); void predefinedTreeWidget_itemDoubleClicked (QTreeWidgetItem*, int col); void userDefinedTreeWidget_itemSelectionChanged(); void predefinedTreeWidget_itemSelectionChanged(); Also, trivial port of other Qt3 widgets (to Qt4 QTextEdit and QGroupBox): Q3TextEdit* _ui._userDefinedDescrEdit; Q3GroupBox* _ui._conditionalGroup; Q3GroupBox* _ui._flagGroup; Q3GroupBox* _ui._listsGroup; Q3GroupBox* _ui._logicalGroup; Q3GroupBox* _ui._miscGroup; Q3GroupBox* _ui._objGroup; Q3GroupBox* _ui._predefSearchGroup; Q3GroupBox* _ui._unaryGroup; Q3GroupBox* _ui._userDefinedDescrGroup; Q3GroupBox* _ui._userSearchGroup; ------------------- QtRpl/RplDlgMgr.cpp QtRpl/Selection.cpp ------------------- Client changes for added bool parameter in this method: void RplPaletteDlg::updateAll (bool fullRebuild); ... 'fullRebuild' is passed in as 'true' (the former "update" behavior) ... in all cases except for a RPL expression selection change by the ... user. ---