int main( int argc, char **argv ) { KAboutData about("KPageWidgetTest", 0, ki18n("KPageWidgetTest"), "version"); KCmdLineArgs::init( argc, argv, &about ); KApplication app; KPageWidgetTest testWidget( 0 ); testWidget.show(); return app.exec(); }
void NewGeneVariableSummaryScrollArea::HandleChanges(DataChangeMessage const & change_message) { UIOutputProject * project = projectManagerUI().getActiveUIOutputProject(); if (project == nullptr) { return; } UIMessager messager(project); std::for_each(change_message.changes.cbegin(), change_message.changes.cend(), [this](DataChange const & change) { switch (change.change_type) { case DATA_CHANGE_TYPE::DATA_CHANGE_TYPE__INPUT_MODEL__VG_CHANGE: { switch (change.change_intention) { case DATA_CHANGE_INTENTION__ADD: { RefreshAllWidgets(); // this triggers a resort by loading everything in the pane again } break; case DATA_CHANGE_INTENTION__REMOVE: { if (change.parent_identifier.code && change.parent_identifier.uuid) { WidgetInstanceIdentifier vg_to_remove(change.parent_identifier); int current_number = layout()->count(); bool found = false; QWidget * widgetToRemove = nullptr; QLayoutItem * layoutItemToRemove = nullptr; int i = 0; for (i = 0; i < current_number; ++i) { QLayoutItem * testLayoutItem = layout()->itemAt(i); QWidget * testWidget(testLayoutItem->widget()); try { NewGeneVariableSummaryGroup * testVG = dynamic_cast<NewGeneVariableSummaryGroup *>(testWidget); if (testVG && testVG->data_instance.IsEqual(WidgetInstanceIdentifier::EQUALITY_CHECK_TYPE__UUID_PLUS_STRING_CODE, vg_to_remove)) { widgetToRemove = testVG; layoutItemToRemove = testLayoutItem; found = true; if (testVG->data_instance.IsEqual(WidgetInstanceIdentifier::EQUALITY_CHECK_TYPE__UUID_PLUS_STRING_CODE, cached_active_vg)) { // No need to call DoTabChange as the entire block will be removed, but save the new empty value into the cache variable cached_active_vg = WidgetInstanceIdentifier{}; } break; } } catch (std::bad_cast &) { // guess not } } if (found && widgetToRemove != nullptr) { layout()->takeAt(i); delete widgetToRemove; delete layoutItemToRemove; widgetToRemove = nullptr; layoutItemToRemove = nullptr; } } } break; case DATA_CHANGE_INTENTION__UPDATE: { // Should never receive this. } break; case DATA_CHANGE_INTENTION__RESET_ALL: { // Ditto above. RefreshAllWidgets(); } break; default: { } break; } } break; default: { } break; } }); }