Author: schubi2
Date: Fri Jul 13 09:04:21 2007
New Revision: 5998
URL: http://svn.opensuse.org/viewcvs/zypp?rev=5998&view=rev
Log:
included zypp
Modified:
branches/tmp/schubi/solvertree/Makefile
branches/tmp/schubi/solvertree/QZyppSolverDialog.cpp
branches/tmp/schubi/solvertree/QZyppSolverDialog.h
branches/tmp/schubi/solvertree/resgraphview.cpp
branches/tmp/schubi/solvertree/resgraphview.h
branches/tmp/schubi/solvertree/solvertree.cpp
branches/tmp/schubi/solvertree/solvertree.h
Modified: branches/tmp/schubi/solvertree/Makefile
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/Makefile?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/Makefile (original)
+++ branches/tmp/schubi/solvertree/Makefile Fri Jul 13 09:04:21 2007
@@ -20,7 +20,7 @@
INCPATH = -I/usr/include -I/opt/kde3/include -I/usr/lib/qt3/include -I. -I. -I.
LINK = g++
LFLAGS =
-LIBS = $(SUBLIBS) -L/usr/lib -L /usr/lib/qt3/lib -L/opt/kde3/lib -L/usr/X11R6/lib -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lz -lm -ldl -lpthread -lqt-mt -lkdecore -lkio -lkparts -lkdeui -lkwalletclient
+LIBS = $(SUBLIBS) -L/usr/lib -L /usr/lib/qt3/lib -L/opt/kde3/lib -L/usr/X11R6/lib -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lz -lm -ldl -lpthread -lqt-mt -lkdecore -lkio -lkparts -lkdeui -lkwalletclient -lzypp
AR = ar cqs
RANLIB =
QMAKE = /usr/bin/qmake
Modified: branches/tmp/schubi/solvertree/QZyppSolverDialog.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/QZyppSolverDialog.cpp?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/QZyppSolverDialog.cpp (original)
+++ branches/tmp/schubi/solvertree/QZyppSolverDialog.cpp Fri Jul 13 09:04:21 2007
@@ -8,11 +8,14 @@
#include "solvertree.h"
-QZyppSolverDialog::QZyppSolverDialog()
+QZyppSolverDialog::QZyppSolverDialog(zypp::solver::detail::Resolver_Ptr r)
: QDialog(0,"Solvertree",true)
+ , resolver (r)
{
- SolverTree *solvertree = new SolverTree(this);
+ SolverTree *solvertree = new SolverTree(this, resolver);
}
+
+
QZyppSolverDialog::~QZyppSolverDialog()
{
}
Modified: branches/tmp/schubi/solvertree/QZyppSolverDialog.h
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/QZyppSolverDialog.h?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/QZyppSolverDialog.h (original)
+++ branches/tmp/schubi/solvertree/QZyppSolverDialog.h Fri Jul 13 09:04:21 2007
@@ -2,16 +2,17 @@
#define QZYPPSOLVERDIALOG_H
#include
+#include "zypp/solver/detail/Resolver.h"
-class QLabel;
-class QErrorMessage;
-class QZyppSolverDialog : public QDialog
-{
+class QZyppSolverDialog : public QDialog{
Q_OBJECT
+protected:
+ zypp::solver::detail::Resolver_Ptr resolver;
+
public:
- QZyppSolverDialog();
+ QZyppSolverDialog(zypp::solver::detail::Resolver_Ptr r = NULL);
~QZyppSolverDialog();
Modified: branches/tmp/schubi/solvertree/resgraphview.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/resgraphview.cpp?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/resgraphview.cpp (original)
+++ branches/tmp/schubi/solvertree/resgraphview.cpp Fri Jul 13 09:04:21 2007
@@ -33,6 +33,10 @@
#include
+#include
+#include
+
+
#define LABEL_WIDTH 160
#define LABEL_HEIGHT 90
#define i18n(MSG) QString(MSG)
@@ -154,20 +158,22 @@
viewport()->setUpdatesEnabled(true);
}
-void ResGraphView::readDotOutput()
-{
- dotOutput+=QString::fromLocal8Bit(renderProcess->readStdout());
-}
-
void ResGraphView::dotExit()
{
+
+ dotOutput+=QString::fromLocal8Bit(renderProcess->readStdout());
+
// remove line breaks when lines to long
QRegExp endslash("\\\\\\n");
dotOutput.replace(endslash,"");
- char rem = 0X08;
- dotOutput.remove(rem);
- rem = 0X04;
- dotOutput.remove(rem);
+
+#if 1
+ QFile *dot = new QFile("dotoutput");
+ dot->open(IO_ReadWrite);
+ QTextStream stream(dot);
+ stream << dotOutput << flush;
+ dot->close();
+#endif
double scale = 1.0, scaleX = 1.0, scaleY = 1.0;
double dotWidth, dotHeight;
@@ -394,7 +400,7 @@
return m_LabelMap[""];
}
- m_LabelMap[nodeName]=it1.data().name + " Version: " + it1.data().version;
+ m_LabelMap[nodeName]=it1.data().name + "-" + it1.data().version;
return m_LabelMap[nodeName];
}
@@ -404,8 +410,8 @@
delete dotTmpFile;
clear();
dotOutput = "";
- QString filename = "solver.dot";
- dotTmpFile = new QFile(filename); // FIXME to tmp
+ QString filename = zypp::filesystem::TmpFile().path().asString();
+ dotTmpFile = new QFile(filename);
if (!dotTmpFile->open(IO_ReadWrite)) {
showText(i18n("Could not open tempfile %1 for writing.").arg(filename));
@@ -460,8 +466,7 @@
envs << "LANG" << "C";
connect(renderProcess,SIGNAL(processExited()),this,SLOT(dotExit()));
- connect(renderProcess,SIGNAL(readyReadStdout()),
- this,SLOT(readDotOutput()) );
+
if (!renderProcess->start(&envs)) {
QString argu;
for (unsigned c=0;c<renderProcess->arguments().count();++c) {
Modified: branches/tmp/schubi/solvertree/resgraphview.h
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/resgraphview.h?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/resgraphview.h (original)
+++ branches/tmp/schubi/solvertree/resgraphview.h Fri Jul 13 09:04:21 2007
@@ -94,7 +94,6 @@
virtual void slotClientException(const QString&what);
protected slots:
- virtual void readDotOutput();
virtual void dotExit();
protected:
Modified: branches/tmp/schubi/solvertree/solvertree.cpp
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/solvertree.cpp?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/solvertree.cpp (original)
+++ branches/tmp/schubi/solvertree/solvertree.cpp Fri Jul 13 09:04:21 2007
@@ -17,6 +17,13 @@
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <streambuf>
+
+
#include "solvertree.h"
#include "restreewidget.h"
#include "resgraphview.h"
@@ -24,6 +31,9 @@
#include
#include
+#include
+#include
+#include
class StreeData
{
@@ -48,8 +58,10 @@
-SolverTree::SolverTree( QWidget*treeParent)
+SolverTree::SolverTree( QWidget*treeParent,
+ zypp::solver::detail::Resolver_Ptr r)
:m_Valid(false)
+ ,resolver(r)
{
m_Data = new StreeData;
@@ -57,56 +69,149 @@
m_Data->m_stopTick.restart();
m_Data->m_TreeDisplay=new ResTreeWidget(treeParent);
m_Data->m_TreeDisplay->setMinimumSize ( 700, 700 );
+
+ if (resolver == NULL) { // testcase
+
+ QString n12 = "product2";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].name="SuSE Linux 10.2";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].kind="Product";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].version="4.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].description="Opensuse 10.2";
+
+ for (count=1; count <= 4 ; ++count) {
+
+ QString n2;
+
+ n2.setNum(count+1000);
+
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n12].targets.append(ResGraphView::targetData(n2));
+
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].name="Pattern " + n2;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].kind="Pattern";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].description="Patterndescription for " + n2;
+
+
+ for (int count2=1; count2 <= 4 ; ++count2) {
+
+ QString n3;
+
+ n3.setNum(count*10+count2+1000);
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].targets.append(ResGraphView::targetData(n3));
+
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].name="Package " + n3;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].kind="Package";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].description="Packagedescription for " + n3;
+
+ for (int count3=1; count3 <= count2 ; ++count3) {
+
+ QString n4;
+
+ n4.setNum(count*100+count2*10+count3+1000);
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].targets.append(ResGraphView::targetData(n4));
+
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].name="Package " + n4;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].kind="Package";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].description="Packagedescription for " + n4;
+
+ }
+ }
+ }
+
+
+ QString n1 = "product";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].name="SuSE SLES10";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].kind="Product";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].version="4.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].description="Enterprise Server 10";
- QString n1 = "product";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].name="SuSE SLES10";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].kind="Product";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].source="nfs:://mounts/dist/....";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].version="4.0";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].description="Enterprise Server 10";
-
- for (count=1; count <= 4 ; ++count) {
+ for (count=1; count <= 4 ; ++count) {
- QString n2;
+ QString n2;
- n2.setNum(count);
+ n2.setNum(count);
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].targets.append(ResGraphView::targetData(n2));
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n1].targets.append(ResGraphView::targetData(n2));
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].name="Pattern " + n2;
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].kind="Pattern";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].source="nfs:://mounts/dist/....";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].version="1.0";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].description="Patterndescription for " + n2;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].name="Pattern " + n2;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].kind="Pattern";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].description="Patterndescription for " + n2;
- for (int count2=1; count2 <= 4 ; ++count2) {
+ for (int count2=1; count2 <= 4 ; ++count2) {
- QString n3;
+ QString n3;
- n3.setNum(count*10+count2);
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].targets.append(ResGraphView::targetData(n3));
+ n3.setNum(count*10+count2);
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n2].targets.append(ResGraphView::targetData(n3));
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].name="Package " + n3;
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].kind="Package";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].source="nfs:://mounts/dist/....";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].version="1.0";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].description="Packagedescription for " + n3;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].name="Package " + n3;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].kind="Package";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].description="Packagedescription for " + n3;
- for (int count3=1; count3 <= count2 ; ++count3) {
+ for (int count3=1; count3 <= count2 ; ++count3) {
- QString n4;
+ QString n4;
- n4.setNum(count*100+count2*10+count3);
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].targets.append(ResGraphView::targetData(n4));
+ n4.setNum(count*100+count2*10+count3);
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n3].targets.append(ResGraphView::targetData(n4));
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].name="Package " + n4;
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].kind="Package";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].source="nfs:://mounts/dist/....";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].version="1.0";
- m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].description="Packagedescription for " + n4;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].name="Package " + n4;
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].kind="Package";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].source="nfs:://mounts/dist/....";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].version="1.0";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[n4].description="Packagedescription for " + n4;
- }
+ }
+ }
+ }
+ } else {
+ int id = 0;
+ for (zypp::ResPool::const_iterator it = resolver->pool().begin();
+ it != resolver->pool().end();
+ ++it)
+ { // find all root items and generate
+ if (it->status().isToBeInstalled()) {
+
+ zypp::ResObject::constPtr r = it->resolvable();
+ bool rootfound = false;
+ zypp::solver::detail::ItemCapKindList isInstalledList = resolver->isInstalledBy (*it);
+ if (isInstalledList.empty()) {
+ rootfound = true;
+ } else {
+ rootfound = true;
+ for (zypp::solver::detail::ItemCapKindList::const_iterator isInstall = isInstalledList.begin();
+ isInstall != isInstalledList.end(); isInstall++) {
+ if (isInstall->initialInstallation) {
+ rootfound = false;
+ }
+ }
+ }
+
+ if (rootfound) {
+ zypp::ResObject::constPtr res = it->resolvable();
+ QString idStr = QString( "%1" ).arg( id++ );
+
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].name=res->name();
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].kind=res->kind().asString();
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].source="";
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].version=res->edition().asString()+"."+res->arch().asString();
+ m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].description=res->description();
+ // we have found a root; collect all trees
+ buildTree ( m_Data, m_Data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].targets, *it, id);
+ }
+ }
}
}
@@ -126,6 +231,28 @@
}
+void SolverTree::buildTree ( StreeData *data, ResGraphView::tlist &childList, const zypp::PoolItem_Ref item, int &id) {
+ // generate the branches
+ zypp::solver::detail::ItemCapKindList installList = resolver->installs (item);
+ for (zypp::solver::detail::ItemCapKindList::const_iterator it = installList.begin();
+ it != installList.end(); it++) {
+ if (it->initialInstallation) {
+ // This item will REALLY triggered by the given root item (not only due required dependencies)
+ QString idStr = QString( "%1" ).arg( id++ );
+
+ childList.append(ResGraphView::targetData(idStr));
+ data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].name=it->item->name();
+ data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].kind=it->item->kind().asString();
+ data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].source="";
+ data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].version=it->item->edition().asString()+"."+it->item->arch().asString();
+ data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].description=it->item->description();
+
+ // we have found a root; collect all trees
+ buildTree ( data, data->m_TreeDisplay->m_RevGraphView->m_Tree[idStr].targets, it->item, id);
+ }
+ }
+}
+
QWidget*SolverTree::getView()
{
Modified: branches/tmp/schubi/solvertree/solvertree.h
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/schubi/solvertree/solvertree.h?rev=5998&r1=5997&r2=5998&view=diff
==============================================================================
--- branches/tmp/schubi/solvertree/solvertree.h (original)
+++ branches/tmp/schubi/solvertree/solvertree.h Fri Jul 13 09:04:21 2007
@@ -20,6 +20,9 @@
#ifndef SOLVERTREE_H
#define SOLVERTREE_H
+#include "zypp/solver/detail/Resolver.h"
+#include "resgraphview.h"
+
class StreeData;
class QWidget;
@@ -28,7 +31,8 @@
*/
class SolverTree{
public:
- SolverTree( QWidget*treeParent);
+ SolverTree( QWidget*treeParent,
+ zypp::solver::detail::Resolver_Ptr r = NULL);
virtual ~SolverTree();
bool isValid()const;
@@ -36,9 +40,11 @@
protected:
bool m_Valid;
-
+ zypp::solver::detail::Resolver_Ptr resolver;
StreeData*m_Data;
+ void buildTree ( StreeData *data, ResGraphView::tlist &childList, const zypp::PoolItem_Ref item, int &id);
+
};
#endif
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org