<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/inputs/digg.cpp</filename>
    </added>
    <added>
      <filename>src/inputs/digg.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,6 @@
 #############################################################################
 # Makefile for building: gltrail
-# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 17:33:31 2008
+# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 18:26:00 2008
 # Project:  gltrail.pro
 # Template: subdirs
 # Command: /usr/bin/qmake -unix -o Makefile gltrail.pro</diff>
      <filename>Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@
 3. cp gltrail.ini-example gltrail.ini
    (and replace with your information)
 4. ./bin/gltrail gltrail.ini
+   ./bin/gltrail --digg
 
 Note: You'll need public-key ssh access set up to your servers,
       as I haven't found a good/free cross-platform ssh library.</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 #############################################################################
 # Makefile for building: ../bin/gltrail
-# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 17:33:31 2008
+# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 18:40:51 2008
 # Project:  src.pro
 # Template: app
 # Command: /usr/bin/qmake -unix -o Makefile src.pro
@@ -10,13 +10,13 @@
 
 CC            = gcc
 CXX           = g++
-DEFINES       = -DQT_SHARED -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB
+DEFINES       = -DQT_SHARED -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
 CFLAGS        = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)
 CXXFLAGS      = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)
-INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I.
+INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I.
 LINK          = g++
 LFLAGS        = 
-LIBS          = $(SUBLIBS)  -L/usr/X11R6/lib -L/usr/lib -lGLU -lGL -lQtOpenGL -lQtGui -lQtCore -lpthread
+LIBS          = $(SUBLIBS)  -L/usr/lib -L/usr/X11R6/lib -lQtOpenGL -lQtGui -lQtNetwork -lQtCore -lGLU -lGL -lpthread
 AR            = ar cqs
 RANLIB        = 
 QMAKE         = /usr/bin/qmake
@@ -48,23 +48,27 @@ SOURCES       = main.cpp \
 		window.cpp \
 		glwidget.cpp \
 		background_updater.cpp \
-		inputs/ssh.cpp moc_input.cpp \
-		moc_window.cpp \
+		input.cpp \
+		inputs/ssh.cpp \
+		inputs/digg.cpp moc_window.cpp \
 		moc_glwidget.cpp \
 		moc_background_updater.cpp \
-		moc_ssh.cpp
+		moc_ssh.cpp \
+		moc_digg.cpp
 OBJECTS       = main.o \
 		activity.o \
 		element.o \
 		window.o \
 		glwidget.o \
 		background_updater.o \
+		input.o \
 		ssh.o \
-		moc_input.o \
+		digg.o \
 		moc_window.o \
 		moc_glwidget.o \
 		moc_background_updater.o \
-		moc_ssh.o
+		moc_ssh.o \
+		moc_digg.o
 DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
 		/usr/share/qt4/mkspecs/common/unix.conf \
 		/usr/share/qt4/mkspecs/common/linux.conf \
@@ -75,8 +79,8 @@ DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
 		/usr/share/qt4/mkspecs/features/default_pre.prf \
 		/usr/share/qt4/mkspecs/features/debug.prf \
 		/usr/share/qt4/mkspecs/features/default_post.prf \
-		/usr/share/qt4/mkspecs/features/unix/opengl.prf \
 		/usr/share/qt4/mkspecs/features/qt.prf \
+		/usr/share/qt4/mkspecs/features/unix/opengl.prf \
 		/usr/share/qt4/mkspecs/features/moc.prf \
 		/usr/share/qt4/mkspecs/features/unix/thread.prf \
 		/usr/share/qt4/mkspecs/features/warn_on.prf \
@@ -127,8 +131,8 @@ Makefile: src.pro  /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mk
 		/usr/share/qt4/mkspecs/features/default_pre.prf \
 		/usr/share/qt4/mkspecs/features/debug.prf \
 		/usr/share/qt4/mkspecs/features/default_post.prf \
-		/usr/share/qt4/mkspecs/features/unix/opengl.prf \
 		/usr/share/qt4/mkspecs/features/qt.prf \
+		/usr/share/qt4/mkspecs/features/unix/opengl.prf \
 		/usr/share/qt4/mkspecs/features/moc.prf \
 		/usr/share/qt4/mkspecs/features/unix/thread.prf \
 		/usr/share/qt4/mkspecs/features/warn_on.prf \
@@ -147,8 +151,8 @@ Makefile: src.pro  /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mk
 /usr/share/qt4/mkspecs/features/default_pre.prf:
 /usr/share/qt4/mkspecs/features/debug.prf:
 /usr/share/qt4/mkspecs/features/default_post.prf:
-/usr/share/qt4/mkspecs/features/unix/opengl.prf:
 /usr/share/qt4/mkspecs/features/qt.prf:
+/usr/share/qt4/mkspecs/features/unix/opengl.prf:
 /usr/share/qt4/mkspecs/features/moc.prf:
 /usr/share/qt4/mkspecs/features/unix/thread.prf:
 /usr/share/qt4/mkspecs/features/warn_on.prf:
@@ -161,7 +165,7 @@ qmake:  FORCE
 
 dist: 
 	@$(CHK_DIR_EXISTS) .tmp/gltrail1.0.0 || $(MKDIR) .tmp/gltrail1.0.0 
-	$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/gltrail1.0.0/ &amp;&amp; $(COPY_FILE) --parents input.h element.h activity.h relation.h window.h glwidget.h background_updater.h inputs/ssh.h .tmp/gltrail1.0.0/ &amp;&amp; $(COPY_FILE) --parents main.cpp activity.cpp element.cpp window.cpp glwidget.cpp background_updater.cpp inputs/ssh.cpp .tmp/gltrail1.0.0/ &amp;&amp; (cd `dirname .tmp/gltrail1.0.0` &amp;&amp; $(TAR) gltrail1.0.0.tar gltrail1.0.0 &amp;&amp; $(COMPRESS) gltrail1.0.0.tar) &amp;&amp; $(MOVE) `dirname .tmp/gltrail1.0.0`/gltrail1.0.0.tar.gz . &amp;&amp; $(DEL_FILE) -r .tmp/gltrail1.0.0
+	$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/gltrail1.0.0/ &amp;&amp; $(COPY_FILE) --parents input.h element.h activity.h relation.h window.h glwidget.h background_updater.h inputs/ssh.h inputs/digg.h .tmp/gltrail1.0.0/ &amp;&amp; $(COPY_FILE) --parents main.cpp activity.cpp element.cpp window.cpp glwidget.cpp background_updater.cpp input.cpp inputs/ssh.cpp inputs/digg.cpp .tmp/gltrail1.0.0/ &amp;&amp; (cd `dirname .tmp/gltrail1.0.0` &amp;&amp; $(TAR) gltrail1.0.0.tar gltrail1.0.0 &amp;&amp; $(COMPRESS) gltrail1.0.0.tar) &amp;&amp; $(MOVE) `dirname .tmp/gltrail1.0.0`/gltrail1.0.0.tar.gz . &amp;&amp; $(DEL_FILE) -r .tmp/gltrail1.0.0
 
 
 clean:compiler_clean 
@@ -180,12 +184,9 @@ mocclean: compiler_moc_header_clean compiler_moc_source_clean
 
 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
 
-compiler_moc_header_make_all: moc_input.cpp moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp
+compiler_moc_header_make_all: moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp moc_digg.cpp
 compiler_moc_header_clean:
-	-$(DEL_FILE) moc_input.cpp moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp
-moc_input.cpp: input.h
-	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) input.h -o moc_input.cpp
-
+	-$(DEL_FILE) moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp moc_digg.cpp
 moc_window.cpp: glwidget.h \
 		input.h \
 		window.h
@@ -207,6 +208,10 @@ moc_ssh.cpp: input.h \
 		inputs/ssh.h
 	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) inputs/ssh.h -o moc_ssh.cpp
 
+moc_digg.cpp: input.h \
+		inputs/digg.h
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) inputs/digg.h -o moc_digg.cpp
+
 compiler_rcc_make_all:
 compiler_rcc_clean:
 compiler_image_collection_make_all: qmake_image_collection.cpp
@@ -248,7 +253,8 @@ element.o: element.cpp element.h \
 window.o: window.cpp window.h \
 		glwidget.h \
 		input.h \
-		inputs/ssh.h
+		inputs/ssh.h \
+		inputs/digg.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o window.o window.cpp
 
 glwidget.o: glwidget.cpp glwidget.h \
@@ -267,13 +273,19 @@ background_updater.o: background_updater.cpp background_updater.h \
 		relation.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o background_updater.o background_updater.cpp
 
+input.o: input.cpp input.h \
+		glwidget.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
+
 ssh.o: inputs/ssh.cpp inputs/ssh.h \
 		input.h \
 		glwidget.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ssh.o inputs/ssh.cpp
 
-moc_input.o: moc_input.cpp 
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_input.o moc_input.cpp
+digg.o: inputs/digg.cpp inputs/digg.h \
+		input.h \
+		glwidget.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o digg.o inputs/digg.cpp
 
 moc_window.o: moc_window.cpp 
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_window.o moc_window.cpp
@@ -287,6 +299,9 @@ moc_background_updater.o: moc_background_updater.cpp
 moc_ssh.o: moc_ssh.cpp 
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_ssh.o moc_ssh.cpp
 
+moc_digg.o: moc_digg.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_digg.o moc_digg.cpp
+
 ####### Install
 
 install:   FORCE</diff>
      <filename>src/Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -21,8 +21,6 @@ public:
 protected:
   void run();
 
-
-
 private:
   Inputs *hosts;
   Elements *elements;</diff>
      <filename>src/background_updater.h</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,6 @@ int last_time = 0;
 GLWidget::GLWidget(QWidget *parent, Inputs *h)
   : QGLWidget(QGLFormat(QGL::DoubleBuffer | QGL::Rgba | QGL::DirectRendering | QGL::AlphaChannel), parent)
 {
-  //  startTimer(1);
   startTimer(16);
   setFocusPolicy(Qt::StrongFocus);
   setMouseTracking(true);
@@ -75,7 +74,7 @@ GLWidget::~GLWidget()
 {
   if( hosts != NULL ) {
     for(Inputs::iterator it = hosts-&gt;begin(); it != hosts-&gt;end(); ++it)
-      (*it)-&gt;end();
+      (*it)-&gt;endProcessing();
   }
 }
 
@@ -342,7 +341,7 @@ void GLWidget::resizeGL(int width, int height) {
 void GLWidget::keyPressEvent(QKeyEvent *event) {
   if( event-&gt;key() == Qt::Key_Escape ) {
     for(Inputs::iterator it = hosts-&gt;begin(); it != hosts-&gt;end(); ++it)
-      (*it)-&gt;end();
+      (*it)-&gt;endProcessing();
     hosts = NULL;
     QApplication::exit(1);
   } else if( event-&gt;key() == Qt::Key_Space ) {</diff>
      <filename>src/glwidget.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -78,6 +78,9 @@ public:
    bool showStats() const { return statsMode; };
    bool useRecoil() const { return recoil; };
 
+   void setShowLines(int mode) { linesMode = mode; };
+   void setShowSize(int mode) { sizeMode = mode; };
+
    float getX() const { return x; };
    float getY() const { return y; };
 </diff>
      <filename>src/glwidget.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#include &quot;host.h&quot;
+#include &quot;input.h&quot;
 
 #include &lt;QStringList&gt;
 #include &lt;iostream&gt;
@@ -6,117 +6,11 @@
 
 using namespace std;
 
-void Input::start(void) {
-  proc = new QProcess( this );
+void Input::startProcessing() {
 
-  proc-&gt;setProcessChannelMode(QProcess::SeparateChannels);
-
-  connect( proc, SIGNAL(readyReadStandardOutput()), this, SLOT(readFromStdout()) );
-  connect( proc, SIGNAL(readyReadStandardError()), this, SLOT(readFromStderr()) );
-  QString cmd = getCommandString();
-  std::cout &lt;&lt; &quot;[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;] exec[&quot; &lt;&lt; cmd.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
-  proc-&gt;start( getCommandString() );
-  proc-&gt;waitForStarted();
 }
 
+void Input::endProcessing() {
 
-void Input::end( void ) {
-  cout &lt;&lt; &quot;Terminating[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; endl;
-  proc-&gt;terminate();
-  proc-&gt;waitForFinished(2000);
-  if( proc-&gt;state() == QProcess::Running ) {
-    cout &lt;&lt; &quot;Killing[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; endl;
-    proc-&gt;kill();
-  }
-
-}
-
-QString Input::getCommandString() {
-  QStringList cmd;
-  cmd &lt;&lt; &quot;ssh&quot;;
-  cmd &lt;&lt; user + &quot;@&quot; + host;
-
-  if( !port.isEmpty() )
-    cmd &lt;&lt; &quot;-p&quot; &lt;&lt; port;
-
-  cmd &lt;&lt; command &lt;&lt; args;
-
-  return cmd.join(&quot; &quot;);
 }
 
-void Input::readFromStdout(void ) {
-  char buf[2048];
-
-  proc-&gt;setReadChannel(QProcess::StandardOutput);
-
-  while( proc-&gt;canReadLine() ) {
-    qint64 len = proc-&gt;readLine(buf, sizeof(buf));
-    if( len != -1 ) {
-
-      //      QString apache_pattern(&quot;([\\d\\S.]+) (\\S+) (\\S+) \\[([^\\]]+)\\] \&quot;([^\&quot;]*)\&quot; (\\d+) ([\\S]+) \&quot;([^\&quot;]+)\&quot; \&quot;([^\&quot;]+)\&quot;&quot;);
-      QRegExp rx(pattern);
-
-      if( rx.indexIn(buf) &gt; -1 ) {
-        QString url = rx.cap(1);
-
-        if( url.contains(&quot; &quot;) ) {
-          url = url.split(&quot; &quot;)[1];
-        }
-
-        QString referrer = rx.cap(2);
-
-        if( ignoreQueryParameters() )
-          url = url.split(&quot;?&quot;)[0];
-
-        if( !ignore.isEmpty() &amp;&amp; url.contains( QRegExp(ignore, Qt::CaseInsensitive) ) ) {
-          continue;
-        }
-
-        for( int i = 0; i &lt; replacementPatterns.size(); i++ ) {
-          url.replace( QRegExp(replacementPatterns[i]), replacementStrings[i] );
-        }
-
-        url.replace( QRegExp(&quot;/index\\.vsp$&quot;), &quot;/&quot; );
-
-        if( referrer.contains( QRegExp(&quot;http://(.*\\.)?&quot; + domain) ) || referrer.startsWith(&quot;/&quot;) )  {
-            referrer = referrer.split(&quot;?&quot;)[0];
-
-            for( int i = 0; i &lt; replacementPatterns.size(); i++ ) {
-              referrer.replace( QRegExp(replacementPatterns[i]), replacementStrings[i] );
-            }
-        }
-
-        referrer.replace( QRegExp(&quot;^http://(.*\\.)?&quot; + domain), &quot;&quot;);
-        bool external = false;
-        if( referrer.contains(&quot;http://&quot;) ) {
-          external = true;
-          referrer.replace(&quot;http://&quot;, &quot;&quot;);
-        }
-        //        std::cout &lt;&lt; &quot;[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;] &quot; &lt;&lt;  url.toStdString() &lt;&lt; &quot; &lt;- &quot; &lt;&lt; (const char*) referrer.toLatin1() &lt;&lt; std::endl;
-
-        if( url == referrer ) {
-          referrer = &quot;&quot;;
-        }
-
-        gl-&gt;addRelation(this, url, referrer, external);
-
-      } else {
-        std::cout &lt;&lt; &quot;[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;] UNKNOWN [&quot; &lt;&lt; buf &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
-      }
-      //      glWidget-&gt;addRandomElement();
-    }
-  }
-}
-
-void Input::readFromStderr(void) {
-  char buf[2048];
-  std::cout &lt;&lt; &quot;STDERR!\n&quot;;
-  proc-&gt;setReadChannel(QProcess::StandardError);
-
-  while( proc-&gt;canReadLine() ) {
-    qint64 len = proc-&gt;readLine(buf, sizeof(buf));
-    if( len != -1 ) {
-      std::cout &lt;&lt; &quot;[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;] STDERR [&quot; &lt;&lt; buf &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
-    }
-  }
-}</diff>
      <filename>src/input.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,14 +9,12 @@
 
 class GLWidget;
 
-class Input : public QObject {
-
-  Q_OBJECT
+class Input  {
 
  public:
 
-  Input(QObject *parent) : QObject(parent) {};
-  ~Input() {};
+  Input() {};
+  virtual ~Input() {};
 
   void setDomain(const QString &amp;d)  { domain = d; };
   void setColor(const QString &amp;c)   { color = QColor(c); };
@@ -27,10 +25,11 @@ class Input : public QObject {
   void setGLWidget(GLWidget *glw) { gl = glw; };
   GLWidget *getGLWidget() const { return gl; };
 
+  void    setAutoPurge(bool p)  {autoPurge = p; };
   bool    doPurge( void ) const { return autoPurge; };
 
-  virtual void start() {};
-  virtual void end() {};
+  virtual void startProcessing();
+  virtual void endProcessing();
  protected:
   GLWidget *gl;
   QString domain;</diff>
      <filename>src/input.h</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 
 using namespace std;
 
-void SSH::start(void) {
+void SSH::startProcessing(void) {
   proc = new QProcess( this );
 
   proc-&gt;setProcessChannelMode(QProcess::SeparateChannels);
@@ -20,7 +20,7 @@ void SSH::start(void) {
 }
 
 
-void SSH::end( void ) {
+void SSH::endProcessing( void ) {
   cout &lt;&lt; &quot;Terminating[&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; endl;
   proc-&gt;terminate();
   proc-&gt;waitForFinished(2000);
@@ -58,13 +58,12 @@ void SSH::readFromStdout(void ) {
 
       if( rx.indexIn(buf) &gt; -1 ) {
         QString url = rx.cap(1);
+        QString referrer = rx.cap(2);
 
         if( url.contains(&quot; &quot;) ) {
           url = url.split(&quot; &quot;)[1];
         }
 
-        QString referrer = rx.cap(2);
-
         if( ignoreQueryParameters() )
           url = url.split(&quot;?&quot;)[0];
 </diff>
      <filename>src/inputs/ssh.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-#ifndef HOST_H
-#define HOST_H
+#ifndef SSH_H
+#define SSH_H
 
 #include &lt;QObject&gt;
 #include &lt;QList&gt;
@@ -9,13 +9,13 @@
 
 class GLWidget;
 
-class SSH : public Input {
+class SSH : public QObject, public Input {
 
   Q_OBJECT
 
  public:
 
-  SSH(QObject *parent) : Input(parent) {};
+  SSH(QObject *parent) : QObject(parent) {};
   ~SSH() {};
 
   void setHost(const QString &amp;h)    { host = h; };
@@ -26,7 +26,6 @@ class SSH : public Input {
   void setPattern(const QString &amp;p) { pattern = p; };
   void setIgnore(const QString &amp;i)  { ignore = i; };
   void setIgnoreQueryParameters(bool p) { ignoreParams = p; };
-  void setAutoPurge(bool p)         {autoPurge = p; };
 
   void addReplacement(const QString &amp;p, const QString &amp;s) {
     replacementPatterns &lt;&lt; p;
@@ -38,8 +37,8 @@ class SSH : public Input {
   QString getIgnore( void ) { return ignore; };
   bool    ignoreQueryParameters( void ) { return ignoreParams; };
 
-  void start();
-  void end();
+  void startProcessing();
+  void endProcessing();
 
 public slots:
 </diff>
      <filename>src/inputs/ssh.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-QT += opengl
+QT += opengl network
 CONFIG += debug
 
 SOURCES += main.cpp \
@@ -7,7 +7,9 @@ SOURCES += main.cpp \
            window.cpp \
            glwidget.cpp \
            background_updater.cpp \
-           inputs/ssh.cpp
+           input.cpp \
+           inputs/ssh.cpp \
+           inputs/digg.cpp
 
 HEADERS += input.h \
            element.h \
@@ -16,16 +18,14 @@ HEADERS += input.h \
            window.h \
            glwidget.h \
            background_updater.h \
-           inputs/ssh.h
-
+           inputs/ssh.h \
+           inputs/digg.h
 
 TEMPLATE = app
 
 CONFIG += warn_on \
           thread \
           qt \
-          debug \
-          opengl
 
 TARGET = ../bin/gltrail
 </diff>
      <filename>src/src.pro</filename>
    </modified>
    <modified>
      <diff>@@ -25,9 +25,12 @@
 #include &quot;window.h&quot;
 #include &quot;input.h&quot;
 #include &quot;inputs/ssh.h&quot;
+#include &quot;inputs/digg.h&quot;
 
 Inputs inputs;
 
+using namespace std;
+
 Window::Window(QWidget *parent)
  : QWidget(parent)
 {
@@ -59,57 +62,74 @@ void Window::readSettings(GLWidget *gl) {
     configFile = QCoreApplication::arguments().at(1);
   }
 
-  std::cout &lt;&lt; &quot;Reading config[&quot; &lt;&lt; configFile.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
+  if( configFile == &quot;--digg&quot; ) {
+    cout &lt;&lt; &quot;Pulling from Digg...&quot; &lt;&lt; endl;
+
+    Digg *d = new Digg(this);
+
+    d-&gt;setGLWidget(gl);
+    d-&gt;setDomain(&quot;digg.com&quot;);
+    d-&gt;setAutoPurge(true);
+    d-&gt;setColor( &quot;#7777FF&quot; );
+
+    gl-&gt;setShowLines(0);
+    gl-&gt;setShowSize(4);
 
+    d-&gt;start();
 
-  QSettings settings(configFile, QSettings::IniFormat);
+    inputs &lt;&lt; d;
 
-  settings.beginGroup(&quot;hosts&quot;);
-  QStringList rels = settings.allKeys();
-  settings.endGroup();
+  } else {
+    std::cout &lt;&lt; &quot;Reading config[&quot; &lt;&lt; configFile.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
 
-  for( int i = 0; i &lt; rels.size(); i++ ) {
-    QString hostName = rels.at(i);
+    QSettings settings(configFile, QSettings::IniFormat);
 
     settings.beginGroup(&quot;hosts&quot;);
-    QString domain = settings.value(hostName).toString();
-    std::cout &lt;&lt; &quot;Reading [&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
+    QStringList rels = settings.allKeys();
     settings.endGroup();
 
-    SSH *h = new SSH(this);
-    settings.beginGroup(domain);
-    h-&gt;setHost(hostName);
-    h-&gt;setDomain(domain);
-    h-&gt;setUser( settings.value(&quot;user&quot;).toString() );
-    h-&gt;setPort( settings.value(&quot;port&quot;).toString() );
-    h-&gt;setCommand( settings.value(&quot;command&quot;).toString() );
-    h-&gt;setArgs( settings.value(&quot;args&quot;).toString() );
-    h-&gt;setPattern( settings.value(&quot;pattern&quot;).toString() );
-    h-&gt;setIgnore( settings.value(&quot;ignore&quot;).toString() );
-    h-&gt;setColor( settings.value(&quot;color&quot;).toString() );
-    h-&gt;setIgnoreQueryParameters( settings.value(&quot;ignore_url_params&quot;).toBool() );
-    h-&gt;setAutoPurge( settings.value(&quot;auto_purge&quot;).toBool() );
-
-    QStringList keys = settings.childKeys();
-    for( int i = 0; i &lt; keys.size(); i++ ) {
-      if( keys[i].startsWith(&quot;replace_&quot;) ) {
-        QString pattern = settings.value(keys[i]).toString();
-        QString str     = keys[i];
-        str.replace(&quot;replace_&quot;, &quot;&quot;);
-        if( pattern.startsWith(&quot;/&quot;) )
-          str = &quot;/&quot; + str;
-        h-&gt;addReplacement( pattern,str );
+    for( int i = 0; i &lt; rels.size(); i++ ) {
+      QString hostName = rels.at(i);
+
+      settings.beginGroup(&quot;hosts&quot;);
+      QString domain = settings.value(hostName).toString();
+      std::cout &lt;&lt; &quot;Reading [&quot; &lt;&lt; domain.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
+      settings.endGroup();
+
+      SSH *h = new SSH(this);
+      settings.beginGroup(domain);
+      h-&gt;setHost(hostName);
+      h-&gt;setDomain(domain);
+      h-&gt;setUser( settings.value(&quot;user&quot;).toString() );
+      h-&gt;setPort( settings.value(&quot;port&quot;).toString() );
+      h-&gt;setCommand( settings.value(&quot;command&quot;).toString() );
+      h-&gt;setArgs( settings.value(&quot;args&quot;).toString() );
+      h-&gt;setPattern( settings.value(&quot;pattern&quot;).toString() );
+      h-&gt;setIgnore( settings.value(&quot;ignore&quot;).toString() );
+      h-&gt;setColor( settings.value(&quot;color&quot;).toString() );
+      h-&gt;setIgnoreQueryParameters( settings.value(&quot;ignore_url_params&quot;).toBool() );
+      h-&gt;setAutoPurge( settings.value(&quot;auto_purge&quot;).toBool() );
+
+      QStringList keys = settings.childKeys();
+      for( int i = 0; i &lt; keys.size(); i++ ) {
+        if( keys[i].startsWith(&quot;replace_&quot;) ) {
+          QString pattern = settings.value(keys[i]).toString();
+          QString str     = keys[i];
+          str.replace(&quot;replace_&quot;, &quot;&quot;);
+          if( pattern.startsWith(&quot;/&quot;) )
+            str = &quot;/&quot; + str;
+          h-&gt;addReplacement( pattern,str );
+        }
       }
-    }
 
-    h-&gt;setGLWidget(gl);
+      h-&gt;setGLWidget(gl);
 
-    settings.endGroup();
-    std::cout &lt;&lt; &quot;Read [&quot; &lt;&lt; hostName.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
+      settings.endGroup();
+      std::cout &lt;&lt; &quot;Read [&quot; &lt;&lt; hostName.toStdString() &lt;&lt; &quot;]&quot; &lt;&lt; std::endl;
 
-    inputs &lt;&lt; h;
-    h-&gt;start();
+      h-&gt;startProcessing();
+      inputs &lt;&lt; h;
+    }
   }
-
 }
 </diff>
      <filename>src/window.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>51e1fff64c668428a3c992ef5b1df40d97b35e14</id>
    </parent>
  </parents>
  <author>
    <name>Erlend Simonsen</name>
    <email>mr@fudgie.org</email>
  </author>
  <url>http://github.com/Fudge/gltrail/commit/fa140465143ce70fdc39e3ae41733ab1c6dc7f43</url>
  <id>fa140465143ce70fdc39e3ae41733ab1c6dc7f43</id>
  <committed-date>2008-03-16T09:19:55-07:00</committed-date>
  <authored-date>2008-03-16T07:51:59-07:00</authored-date>
  <message>Basic implementation of a Digg input</message>
  <tree>ae020b1bbeabeddcb81fbe2a67cd1c0f49775a6d</tree>
  <committer>
    <name>Erlend Simonsen</name>
    <email>mr@fudgie.org</email>
  </committer>
</commit>
