[Kst] kdeextragear-2/kst/kst

George Staikos staikos at kde.org
Fri Mar 18 19:50:21 CET 2005


CVS commit by staikos: 

change the default paint mechanism to P_PAINT from P_DATA and introduce a hack
to the update thread to pass the list of changed curves in the event.  Kst2DPlot
is a mess and too dangerous to put into the update thread right now.  This hack
will go away when Kst2DPlot gets cleaned up.

BUG: 95117


  M +1 -1      kst.cpp   1.293
  M +1 -1      kst.h   1.126
  M +29 -3     kstdoc.cpp   1.154
  M +1 -1      stdinsource.cpp   1.12
  M +1 -0      threadevents.h   1.6
  M +9 -2      updatethread.cpp   1.44
  M +3 -0      updatethread.h   1.7


--- kdeextragear-2/kst/kst/kst.cpp  #1.292:1.293
@@ -1414,5 +1414,5 @@ void KstApp::paintAll(KstPaintType pt) {
   t.start();
 #endif
-  if (mdiMode() == KMdi::TabPageMode) {
+  if (mdiMode() == KMdi::TabPageMode) { // Optimization
     KstViewWindow *view = dynamic_cast<KstViewWindow*>(activeWindow());
     if (pt == P_DATA) { // what about P_PLOT?  I think it's not needed anyway

--- kdeextragear-2/kst/kst/kst.h  #1.125:1.126
@@ -123,5 +123,5 @@ class KstApp : public KMdiMainFrm {
     bool dataMode() const;
 
-    void paintAll(KstPaintType = P_DATA);
+    void paintAll(KstPaintType = P_PAINT);
 
     void EventELOGSubmitEntry(const QString& message);

--- kdeextragear-2/kst/kst/kstdoc.cpp  #1.153:1.154
@@ -38,4 +38,5 @@
 #include <kfiledialog.h>
 #include <kmessagebox.h>
+#include <kmdimainfrm.h>
 #include <kprogress.h>
 #include <ksavefile.h>
@@ -832,7 +833,32 @@ bool KstDoc::event(QEvent *e) {
     switch (te->_eventType) {
       case ThreadEvent::UpdateDataDialogs:
+        {
         //kdDebug() << "Update data dialogs" << endl;
         emit dataChanged();
+          // HACK: remove me later
+          KMdiIterator<KMdiChildView*> *it = KstApp::inst()->createIterator();
+          if (it) {
+            while (it->currentItem()) {
+              KstViewWindow *view = dynamic_cast<KstViewWindow*>(it->currentItem());
+              if (!view) {
+                it->next();
+                continue;
+              }
+
+              Kst2DPlotList pl = view->view()->findChildrenType<Kst2DPlot>(true);
+              for (Kst2DPlotList::Iterator i = pl.begin(); i != pl.end(); ++i) {
+                for (QValueList<KstBaseCurve*>::ConstIterator j = te->_curves.begin(); j != te->_curves.end(); ++j) {
+                  if ((*i)->Curves.contains(*j)) {
+                    (*i)->setDirty();
+                    break;
+                  }
+                }
+              }
+              it->next();
+            }
+            KstApp::inst()->deleteIterator(it);
+          }
         KstApp::inst()->paintAll();
+        }
         break;
       case ThreadEvent::UpdateAllDialogs:

--- kdeextragear-2/kst/kst/stdinsource.cpp  #1.11:1.12
@@ -40,5 +40,5 @@ KstStdinSource::KstStdinSource(KConfig *
   _file = new KTempFile;
   _filename = _file->name();
-  update();
+  update(); // FIXME
   _src = KstDataSource::loadSource(_filename, "ASCII");
   if (_src && _src->isValid()) {

--- kdeextragear-2/kst/kst/threadevents.h  #1.5:1.6
@@ -29,4 +29,5 @@ class ThreadEvent : public QEvent {
 
     ThreadEventType _eventType;
+    QValueList<KstBaseCurve*> _curves; // HACK: for temporary use in update reworking
 };
 

--- kdeextragear-2/kst/kst/updatethread.cpp  #1.43:1.44
@@ -87,6 +87,7 @@ void UpdateThread::run() {
       if (gotData) {
         kdDebug() << "Posting UpdateDataDialogs" << endl;
-        QApplication::postEvent(_doc,
-                       new ThreadEvent(ThreadEvent::UpdateDataDialogs));
+        ThreadEvent *e = new ThreadEvent(ThreadEvent::UpdateDataDialogs);
+        e->_curves = _updatedCurves;
+        QApplication::postEvent(_doc, e);
         // this event also triggers an implicit repaint
       } else {
@@ -128,4 +129,6 @@ bool UpdateThread::doUpdates(bool force,
   KstObject::UpdateType U = KstObject::NO_CHANGE;
 
+  _updatedCurves.clear(); // HACK
+
   if (gotData) {
     *gotData = false;
@@ -162,4 +165,8 @@ bool UpdateThread::doUpdates(bool force,
       bcp->writeUnlock();
 
+      if (ut == KstObject::UPDATE) { // HACK
+        _updatedCurves.append(bcp);
+      }
+
       if (U != KstObject::UPDATE) {
         U = ut;

--- kdeextragear-2/kst/kst/updatethread.h  #1.6:1.7
@@ -21,7 +21,9 @@
 #include <qmutex.h>
 #include <qthread.h>
+#include <qvaluelist.h>
 
 #include "kstwaitcondition.h"
 
+class KstBaseCurve;
 class KstDoc;
 
@@ -50,4 +52,5 @@ class UpdateThread : public QThread {
     int _updateCounter;
     int _updateTime;
+    QValueList<KstBaseCurve*> _updatedCurves; // HACK: temporary use in update reworking
 };
 




More information about the Kst mailing list