diff options
4 files changed, 195 insertions, 1 deletions
diff --git a/academic/scidavis/fix-sf377-all-colors-turn-to-black-after-reload-of-project.patch b/academic/scidavis/fix-sf377-all-colors-turn-to-black-after-reload-of-project.patch new file mode 100644 index 0000000000..8e7a74cb43 --- /dev/null +++ b/academic/scidavis/fix-sf377-all-colors-turn-to-black-after-reload-of-project.patch @@ -0,0 +1,75 @@ +diff --git a/libscidavis/src/ApplicationWindow.cpp b/libscidavis/src/ApplicationWindow.cpp +index 534c12ac..b203c705 100644 +--- a/libscidavis/src/ApplicationWindow.cpp ++++ b/libscidavis/src/ApplicationWindow.cpp +@@ -9611,7 +9611,7 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + + CurveLayout cl; + cl.connectType=curve[4].toInt(); +- cl.lCol=curve[5].toUInt(); ++ cl.lCol=COLORUINT(curve[5]); + if (d_file_version <= 89) + cl.lCol = convertOldToNewColorIndex(cl.lCol); + cl.lStyle=curve[6].toInt(); +@@ -9622,7 +9622,7 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + else + cl.sType=curve[9].toInt(); + +- cl.symCol=curve[10].toUInt(); ++ cl.symCol=COLORUINT(curve[10]); + if (d_file_version <= 89) + cl.symCol = convertOldToNewColorIndex(cl.symCol); + if (curve[11]=="-1") +@@ -9630,12 +9630,12 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + else + { + cl.symbolFill = true; +- cl.fillCol=curve[11].toUInt(); ++ cl.fillCol=COLORUINT(curve[11]); + } + if (d_file_version <= 89) + cl.fillCol = convertOldToNewColorIndex(cl.fillCol); + cl.filledArea=curve[12].toInt(); +- cl.aCol=curve[13].toUInt(); ++ cl.aCol=COLORUINT(curve[13]); + if (d_file_version <= 89) + cl.aCol = convertOldToNewColorIndex(cl.aCol); + cl.aStyle=curve[14].toInt(); +@@ -9755,21 +9755,21 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + QStringList curve = s.split("\t"); + CurveLayout cl; + cl.connectType=curve[6].toInt(); +- cl.lCol=curve[7].toUInt(); ++ cl.lCol=COLORUINT(curve[7]); + cl.lStyle=curve[8].toInt(); + cl.lWidth=curve[9].toInt(); + cl.sSize=curve[10].toInt(); + cl.sType=curve[11].toInt(); +- cl.symCol=curve[12].toUInt(); ++ cl.symCol=COLORUINT(curve[12]); + if (curve[13]=="-1") + cl.symbolFill = false; + else + { + cl.symbolFill = true; +- cl.fillCol=curve[13].toUInt(); ++ cl.fillCol=COLORUINT(curve[13]); + } + cl.filledArea=curve[14].toInt(); +- cl.aCol=curve[15].toUInt(); ++ cl.aCol=COLORUINT(curve[15]); + cl.aStyle=curve[16].toInt(); + int current_index = 17; + if(curve.count() < 16) +diff --git a/libscidavis/src/ColorButton.h b/libscidavis/src/ColorButton.h +index e826dff6..42351f99 100644 +--- a/libscidavis/src/ColorButton.h ++++ b/libscidavis/src/ColorButton.h +@@ -42,6 +42,7 @@ static inline QString COLORVALUE( QString s ) { return s; } + static inline QString COLORNAME( QColor c ) { return ('#'+QString::number(c.rgba(),16)); } + static inline QString COLORVALUE( QString s ) { if ((s[0]=='#') && (s.size()==9)) return s.remove(1,2); else return s; } + #endif ++static inline uint COLORUINT( QString s ) { if (s[0]=='#') return s.remove(0,1).toUInt(nullptr,16); else return s.toUInt(); } + + //! A button used for color selection + /** diff --git a/academic/scidavis/fix-sf383-offset-and-spacing-of-bar-graphs.patch b/academic/scidavis/fix-sf383-offset-and-spacing-of-bar-graphs.patch new file mode 100644 index 0000000000..bf8006654a --- /dev/null +++ b/academic/scidavis/fix-sf383-offset-and-spacing-of-bar-graphs.patch @@ -0,0 +1,81 @@ +diff --git a/libscidavis/src/ApplicationWindow.cpp b/libscidavis/src/ApplicationWindow.cpp +index a140d46..f13e8ff 100644 +--- a/libscidavis/src/ApplicationWindow.cpp ++++ b/libscidavis/src/ApplicationWindow.cpp +@@ -9595,6 +9595,7 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + { + bool curve_loaded = false; // Graph::insertCurve may fail + QStringList curve = s.split("\t", QString::KeepEmptyParts); ++ int s_offset = 0; + if (curve.count()>14) + { + if (!app->renamedTables.isEmpty()) +@@ -9647,19 +9648,23 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + cl.penWidth = curve[15].toInt(); + else + cl.penWidth = cl.lWidth; +- // custom dash pattern +- cl.lCapStyle = curve[16].toInt(); +- cl.lJoinStyle = curve[17].toInt(); +- cl.lCustomDash = curve[18]; ++ if (d_file_version >= 0x011800) // 1.24.0 ++ { ++ // custom dash pattern ++ cl.lCapStyle = curve[15].toInt(); ++ cl.lJoinStyle = curve[16].toInt(); ++ cl.lCustomDash = curve[17]; ++ s_offset += 3; ++ } + + Table *w = app->table(curve[2]); + if (w) + { + int plotType = curve[3].toInt(); +- if(curve.count()>21 && (plotType == Graph::VectXYXY || plotType == Graph::VectXYAM)) ++ if(curve.count()>(21+s_offset) && (plotType == Graph::VectXYXY || plotType == Graph::VectXYAM)) + { + QStringList colsList; +- colsList<<curve[2]; colsList<<curve[20]; colsList<<curve[21]; ++ colsList<<curve[2]; colsList<<curve[20+s_offset]; colsList<<curve[21+s_offset]; + if (d_file_version < 72) + colsList.prepend(w->colName(curve[1].toInt())); + else +@@ -9685,11 +9690,11 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + else + { + if(plotType == Graph::VectXYXY) +- ag->updateVectorsLayout(curveID, curve[15], curve[16].toInt(), +- curve[17].toInt(), curve[18].toInt(), curve[19].toInt(), 0); +- else if (curve.count()>22) +- ag->updateVectorsLayout(curveID, curve[15], curve[16].toInt(), curve[17].toInt(), +- curve[18].toInt(), curve[19].toInt(), curve[22].toInt()); ++ ag->updateVectorsLayout(curveID, curve[15+s_offset], curve[16+s_offset].toInt(), ++ curve[17+s_offset].toInt(), curve[18+s_offset].toInt(), curve[19+s_offset].toInt(), 0); ++ else if (curve.count()>22+s_offset) ++ ag->updateVectorsLayout(curveID, curve[15+s_offset], curve[16+s_offset].toInt(), curve[17+s_offset].toInt(), ++ curve[18+s_offset].toInt(), curve[19+s_offset].toInt(), curve[22+s_offset].toInt()); + } + } + else if(plotType == Graph::Box) { +@@ -9705,8 +9710,8 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + QwtHistogram *h = (QwtHistogram *)ag->curve(curveID); + if (d_file_version <= 76) + h->setBinning(curve[16].toInt(),curve[17].toDouble(),curve[18].toDouble(),curve[19].toDouble()); +- else if (curve.count()>20) +- h->setBinning(curve[17].toInt(),curve[18].toDouble(),curve[19].toDouble(),curve[20].toDouble()); ++ else if (curve.count()>20+s_offset) ++ h->setBinning(curve[17+s_offset].toInt(),curve[18+s_offset].toDouble(),curve[19+s_offset].toDouble(),curve[20+s_offset].toDouble()); + h->loadData(); + } + } else { +@@ -9727,8 +9732,8 @@ Graph* ApplicationWindow::openGraph(ApplicationWindow* app, MultiLayer *plot, + { + if (d_file_version <= 76 && curve.count()>15) + ag->setBarsGap(curveID, curve[15].toInt(), 0); +- else if (curve.count()>16) +- ag->setBarsGap(curveID, curve[15].toInt(), curve[16].toInt()); ++ else if (curve.count()>(16+s_offset)) ++ ag->setBarsGap(curveID, curve[15+s_offset].toInt(), curve[16+s_offset].toInt()); + } + if (curve_loaded) + ag->updateCurveLayout(curveID, &cl); diff --git a/academic/scidavis/fix-sf385-crash-using-data-range-selector.patch b/academic/scidavis/fix-sf385-crash-using-data-range-selector.patch new file mode 100644 index 0000000000..ba062d2e28 --- /dev/null +++ b/academic/scidavis/fix-sf385-crash-using-data-range-selector.patch @@ -0,0 +1,29 @@ +diff --git a/libscidavis/src/RangeSelectorTool.cpp b/libscidavis/src/RangeSelectorTool.cpp +index 26ce5fd..65bfa54 100644 +--- a/libscidavis/src/RangeSelectorTool.cpp ++++ b/libscidavis/src/RangeSelectorTool.cpp +@@ -115,8 +115,8 @@ void RangeSelectorTool::pointSelected(const QPoint &pos) + setActivePoint(point); + else { + // try to be intelligent about selecting the inactive point +- double min_x = curve->minXValue(); +- double max_x = curve->maxXValue(); ++ double min_x = minXValue(); ++ double max_x = maxXValue(); + int n = curve->dataSize(); + double second_x; + if (curve->x(point) == min_x) +@@ -129,11 +129,11 @@ void RangeSelectorTool::pointSelected(const QPoint &pos) + second_x = min_x; + if (second_x == max_x) { // start at selected point and try larger indices first + for (int i=0; i<n; ++i) +- if (curve->x((i + point) % n) == max_x) ++ if (qFuzzyCompare(curve->x((i + point) % n), max_x)) + d_inactive_point = (i + point) % n; + } else { // start at selected point and try smaller indices first + for (int i=n-1; i>=0; --i) +- if (curve->x((i + point) % n) == max_x) ++ if (qFuzzyCompare(curve->x((i + point) % n),max_x)) + d_inactive_point = (i + point) % n; + } + d_selected_curve = curve; diff --git a/academic/scidavis/scidavis.SlackBuild b/academic/scidavis/scidavis.SlackBuild index fba0962407..640c46c562 100644 --- a/academic/scidavis/scidavis.SlackBuild +++ b/academic/scidavis/scidavis.SlackBuild @@ -25,7 +25,7 @@ PRGNAM=scidavis VERSION=${VERSION:-1.25} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -79,6 +79,15 @@ else export PYTHON=python2 fi +# Fix for SF bug https://sourceforge.net/p/scidavis/scidavis-bugs/377/ +patch -p1 < $CWD/fix-sf377-all-colors-turn-to-black-after-reload-of-project.patch libscidavis/src/ApplicationWindow.cpp + +# Fix for SF bug https://sourceforge.net/p/scidavis/scidavis-bugs/383/ +patch -p1 < $CWD/fix-sf383-offset-and-spacing-of-bar-graphs.patch libscidavis/src/ApplicationWindow.cpp + +# Fix for SF bug https://sourceforge.net/p/scidavis/scidavis-bugs/385/ +patch -p1 < $CWD/fix-sf385-crash-using-data-range-selector.patch libscidavis/src/RangeSelectorTool.cpp + ## For some unknown reason, to build in Slackware we need to run qmake twice in order to get the app icons working properly ## See https://sourceforge.net/p/scidavis/scidavis-bugs/259/ qmake |