]> git.cworth.org Git - apitrace/commitdiff
Add a trace dialog.
authorZack Rusin <zack@kde.org>
Mon, 11 Apr 2011 02:56:31 +0000 (22:56 -0400)
committerZack Rusin <zack@kde.org>
Mon, 11 Apr 2011 02:56:31 +0000 (22:56 -0400)
gui/CMakeLists.txt
gui/mainwindow.cpp
gui/mainwindow.h
gui/qapitrace.qrc
gui/resources/document-new.png [new file with mode: 0644]
gui/tracedialog.cpp [new file with mode: 0644]
gui/tracedialog.h [new file with mode: 0644]
gui/ui/mainwindow.ui
gui/ui/tracedialog.ui [new file with mode: 0644]

index 8da0f6133dbef2cf7903b2896c5722b159e20763..068ffa3f758f51548ad142e8c5afffa23ce5db05 100644 (file)
@@ -15,6 +15,7 @@ set(qapitrace_SRCS
    retracer.cpp
    settingsdialog.cpp
    shaderssourcewidget.cpp
+   tracedialog.cpp
    vertexdatainterpreter.cpp
  )
 
@@ -27,6 +28,7 @@ set(qapitrace_UIS
    ui/mainwindow.ui
    ui/retracerdialog.ui
    ui/settings.ui
+   ui/tracedialog.ui
    ui/shaderssourcewidget.ui
    )
 
index ff9f05ca10116a799f647c9b675dac281d48edbb..e2d58b6cb55bf0f6d967dbadc2e79f6b83b134e9 100644 (file)
@@ -9,6 +9,7 @@
 #include "retracer.h"
 #include "settingsdialog.h"
 #include "shaderssourcewidget.h"
+#include "tracedialog.h"
 #include "ui_retracerdialog.h"
 #include "vertexdatainterpreter.h"
 
@@ -37,6 +38,16 @@ MainWindow::MainWindow()
     initConnections();
 }
 
+void MainWindow::createTrace()
+{
+    TraceDialog dialog;
+
+    if (dialog.exec() == QDialog::Accepted) {
+        qDebug()<< "App : " <<dialog.applicationPath();
+        qDebug()<< "  Arguments: "<<dialog.arguments();
+    }
+}
+
 void MainWindow::openTrace()
 {
     QString fileName =
@@ -510,6 +521,8 @@ void MainWindow::initConnections()
             m_vdataInterpreter, SLOT(setStartingOffset(int)));
 
 
+    connect(m_ui.actionNew, SIGNAL(triggered()),
+            this, SLOT(createTrace()));
     connect(m_ui.actionOpen, SIGNAL(triggered()),
             this, SLOT(openTrace()));
     connect(m_ui.actionQuit, SIGNAL(triggered()),
index 313180a15086f232ab425da6788aa53551af645c..be0c4154f6a85bb8de36c4e65b7818fafdd200cf 100644 (file)
@@ -33,6 +33,7 @@ public slots:
 
 private slots:
     void callItemSelected(const QModelIndex &index);
+    void createTrace();
     void openTrace();
     void filterTrace();
     void replayStart();
index 6623f1fe1cf49a737c81922093f5eab09bb51d6a..10311a9017f2ec458fe0daa11015267c5d4d7992 100644 (file)
@@ -2,6 +2,7 @@
 <qresource>
     <file>resources/application-exit.png</file>
     <file>resources/dialog-information.png</file>
+    <file>resources/document-new.png</file>
     <file>resources/document-open.png</file>
     <file>resources/media-playback-start.png</file>
     <file>resources/media-playback-stop.png</file>
diff --git a/gui/resources/document-new.png b/gui/resources/document-new.png
new file mode 100644 (file)
index 0000000..3d0f5cc
Binary files /dev/null and b/gui/resources/document-new.png differ
diff --git a/gui/tracedialog.cpp b/gui/tracedialog.cpp
new file mode 100644 (file)
index 0000000..a25c7ac
--- /dev/null
@@ -0,0 +1,68 @@
+#include "tracedialog.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QMessageBox>
+
+TraceDialog::TraceDialog(QWidget *parent)
+    : QDialog(parent)
+{
+    setupUi(this);
+
+    connect(browseButton, SIGNAL(clicked()),
+            this, SLOT(browse()));
+}
+
+QString TraceDialog::applicationPath() const
+{
+    return applicationEdit->text();
+}
+
+QStringList TraceDialog::arguments() const
+{
+    QStringList args =
+        argumentsEdit->text().split(';');
+    return args;
+}
+
+void TraceDialog::browse()
+{
+    QString fileName =
+        QFileDialog::getOpenFileName(
+            this,
+            tr("Find the application"),
+            QDir::currentPath());
+
+    if (isFileOk(fileName)) {
+        applicationEdit->setText(fileName);
+    }
+}
+
+void TraceDialog::accept()
+{
+    if (isFileOk(applicationEdit->text())) {
+        QDialog::accept();
+    }
+}
+
+bool TraceDialog::isFileOk(const QString &fileName)
+{
+    QFileInfo fi(fileName);
+
+    if (!fi.exists()) {
+        QMessageBox::warning(this, tr("File Missing"),
+                             tr("File '%1' doesn't exist.")
+                             .arg(fi.fileName()));
+        return false;
+    }
+    if (!fi.isExecutable()) {
+        QMessageBox::warning(this, tr("Application Not Runnable"),
+                             tr("File '%1' can't be executed.")
+                             .arg(fi.fileName()));
+        return false;
+    }
+
+    return true;
+}
+
+#include "tracedialog.moc"
diff --git a/gui/tracedialog.h b/gui/tracedialog.h
new file mode 100644 (file)
index 0000000..d5e502d
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef TRACEDIALOG_H
+#define TRACEDIALOG_H
+
+#include "ui_tracedialog.h"
+#include <QDialog>
+
+class TraceDialog : public QDialog, public Ui_TraceDialog
+{
+    Q_OBJECT
+public:
+    TraceDialog(QWidget *parent = 0);
+
+    void accept();
+
+    QString applicationPath() const;
+    QStringList arguments() const;
+
+private slots:
+    void browse();
+
+private:
+    bool isFileOk(const QString &fileName);
+};
+
+#endif
index 89b5836ca6e2acfc9d6774e95f3140f08f1181eb..574bfa26df4a8059d61191119264a7289093ee24 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>787</width>
-    <height>758</height>
+    <height>756</height>
    </rect>
   </property>
   <property name="windowTitle">
      <height>21</height>
     </rect>
    </property>
-   <widget class="QMenu" name="menuFile">
-    <property name="title">
-     <string>&amp;File</string>
-    </property>
-    <addaction name="actionOpen"/>
-    <addaction name="separator"/>
-    <addaction name="actionQuit"/>
-   </widget>
    <widget class="QMenu" name="menu_Trace">
     <property name="title">
      <string>&amp;Trace</string>
     <addaction name="separator"/>
     <addaction name="actionOptions"/>
    </widget>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>&amp;File</string>
+    </property>
+    <addaction name="actionNew"/>
+    <addaction name="actionOpen"/>
+    <addaction name="separator"/>
+    <addaction name="actionQuit"/>
+   </widget>
    <addaction name="menuFile"/>
    <addaction name="menu_Trace"/>
   </widget>
     <string>Options</string>
    </property>
   </action>
+  <action name="actionNew">
+   <property name="icon">
+    <iconset resource="../qapitrace.qrc">
+     <normaloff>:/resources/document-new.png</normaloff>:/resources/document-new.png</iconset>
+   </property>
+   <property name="text">
+    <string>New</string>
+   </property>
+  </action>
   <zorder>stateDock</zorder>
   <zorder>vertexDataDock</zorder>
  </widget>
diff --git a/gui/ui/tracedialog.ui b/gui/ui/tracedialog.ui
new file mode 100644 (file)
index 0000000..149881f
--- /dev/null
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TraceDialog</class>
+ <widget class="QDialog" name="TraceDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>401</width>
+    <height>95</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Application:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="applicationEdit">
+       <property name="placeholderText">
+        <string>Application to trace</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="browseButton">
+       <property name="text">
+        <string>Browse</string>
+       </property>
+       <property name="flat">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Arguments:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="argumentsEdit">
+       <property name="placeholderText">
+        <string>Separate arguments with &quot;;&quot;</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>TraceDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>TraceDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>