@@ -658,6 +658,36 @@ void TTDMemoryQueryWidget::setParametersAndQuery(uint64_t startAddr, uint64_t en
658658 performQuery ();
659659}
660660
661+ void TTDMemoryQueryWidget::setParameters (uint64_t startAddr, uint64_t endAddr, TTDMemoryAccessType accessType)
662+ {
663+ // Set address fields
664+ m_startAddressEdit->setText (QString (" 0x%1" ).arg (startAddr, 0 , 16 ));
665+ m_endAddressEdit->setText (QString (" 0x%1" ).arg (endAddr, 0 , 16 ));
666+
667+ // Set access type checkboxes
668+ m_readAccessCheck->setChecked (accessType & TTDMemoryRead);
669+ m_writeAccessCheck->setChecked (accessType & TTDMemoryWrite);
670+ m_executeAccessCheck->setChecked (accessType & TTDMemoryExecute);
671+
672+ // Don't trigger the query
673+ }
674+
675+ void TTDMemoryQueryWidget::setParameters (const QString& startAddr, const QString& endAddr, TTDMemoryAccessType accessType)
676+ {
677+ // Set address fields as strings
678+ if (!startAddr.isEmpty ())
679+ m_startAddressEdit->setText (startAddr);
680+ if (!endAddr.isEmpty ())
681+ m_endAddressEdit->setText (endAddr);
682+
683+ // Set access type checkboxes
684+ m_readAccessCheck->setChecked (accessType & TTDMemoryRead);
685+ m_writeAccessCheck->setChecked (accessType & TTDMemoryWrite);
686+ m_executeAccessCheck->setChecked (accessType & TTDMemoryExecute);
687+
688+ // Don't trigger the query
689+ }
690+
661691bool TTDMemoryQueryWidget::isUnused () const
662692{
663693 // Consider a tab unused if it has no results
@@ -707,9 +737,28 @@ void TTDMemoryWidget::setupUI()
707737
708738void TTDMemoryWidget::createNewTab ()
709739{
740+ // Get parameters from current tab if exists
741+ TTDMemoryQueryWidget* currentWidget = qobject_cast<TTDMemoryQueryWidget*>(m_tabWidget->currentWidget ());
742+ QString startAddr, endAddr;
743+ TTDMemoryAccessType accessType = static_cast <TTDMemoryAccessType>(0 );
744+
745+ if (currentWidget)
746+ {
747+ startAddr = currentWidget->getStartAddress ();
748+ endAddr = currentWidget->getEndAddress ();
749+ accessType = currentWidget->getCurrentAccessType ();
750+ }
751+
752+ // Create new tab
710753 TTDMemoryQueryWidget* queryWidget = new TTDMemoryQueryWidget (this , m_data);
711754 int tabIndex = m_tabWidget->addTab (queryWidget, QString (" Query %1" ).arg (m_tabWidget->count () + 1 ));
712755 m_tabWidget->setCurrentIndex (tabIndex);
756+
757+ // Set parameters from previous tab if any existed
758+ if (currentWidget && (!startAddr.isEmpty () || !endAddr.isEmpty () || accessType != 0 ))
759+ {
760+ queryWidget->setParameters (startAddr, endAddr, accessType);
761+ }
713762}
714763
715764void TTDMemoryWidget::closeTab (int index)
0 commit comments