Index: libs/libmythtv/videosource.h
===================================================================
--- libs/libmythtv/videosource.h	(revision 10600)
+++ libs/libmythtv/videosource.h	(working copy)
@@ -333,7 +333,7 @@
     TunerCardInput    *input;
 };
 
-class TunerCardInput;
+class DVBInput;
 class DVBCardName;
 class DVBCardType;
 class DVBTuningDelay;
@@ -343,19 +343,24 @@
 public:
     DVBConfigurationGroup(CaptureCard& a_parent);
 
+    virtual void load();
+    virtual void save();
+    
 public slots:
     void probeCard(const QString& cardNumber);
-
+    void DiSEqCPanel();
+    
 private:
     CaptureCard        &parent;
 
-    TunerCardInput     *defaultinput;
+    DVBInput           *defaultinput;
     DVBCardName        *cardname;
     DVBCardType        *cardtype;
     SignalTimeout      *signal_timeout;
     ChannelTimeout     *channel_timeout;
     TransButtonSetting *buttonAnalog;
     DVBTuningDelay     *tuning_delay;
+    DiSEqCDevTree       tree;
 };
 
 class CaptureCardGroup: public VerticalConfigurationGroup,
@@ -381,15 +386,13 @@
     static void fillSelections(SelectSetting* setting);
     static void fillSelections(SelectSetting* setting, bool no_children);
 
-    virtual void save();
-    
+    void reload(void);
+
 public slots:
-    void DiSEqCPanel();
     void analogPanel();
     void recorderOptionsPanel();
 
 private:
-    void reload(void);
 
     class ID: virtual public IntegerSetting,
               public AutoIncrementStorage {
@@ -419,7 +422,6 @@
 private:
     ID       *id;
     ParentID *parentid;
-    DiSEqCDevTree tree;
 };
 
 class CardInput;
Index: libs/libmythtv/videosource.cpp
===================================================================
--- libs/libmythtv/videosource.cpp	(revision 10600)
+++ libs/libmythtv/videosource.cpp	(working copy)
@@ -721,6 +721,26 @@
    };
 };
 
+class DVBInput: public ComboBoxSetting, public CCSetting
+{
+  public:
+    DVBInput(const CaptureCard& parent)
+      : CCSetting(parent, "defaultinput")
+    {
+        setLabel(QObject::tr("Default Input"));
+        fillSelections(false);
+    }
+
+    void fillSelections(bool diseqc)
+    {
+        clearSelections();
+        if(diseqc)
+            addSelection("DVBInput #1");
+        else
+            addSelection("DVBInput");
+    }
+};
+
 class DVBCardNum: public SpinBoxSetting, public CCSetting
 {
   public:
@@ -1313,21 +1333,8 @@
     }
 }
 
-void CaptureCard::save()
-{
-    ConfigurationWizard::save();
-#ifdef USING_DVB
-    tree.Store(getCardID());
-    DiSEqCDev trees;
-    trees.InvalidateTrees();
-#endif
-}
-
 void CaptureCard::loadByID(int cardid) 
 {
-#ifdef USING_DVB
-    tree.Load(cardid);
-#endif
     id->setValue(cardid);
     load();
 }
@@ -2316,7 +2323,7 @@
     advcfg->addChild(buttonRecOpt);
     addChild(advcfg);
 
-    TunerCardInput *defaultinput = new TunerCardInput(parent, "0", "DVB");
+    defaultinput = new DVBInput(parent);
     addChild(defaultinput);
     defaultinput->setVisible(false);
 
@@ -2326,10 +2333,8 @@
 
     connect(cardnum,      SIGNAL(valueChanged(const QString&)),
             this,         SLOT(  probeCard   (const QString&)));
-    connect(cardnum,      SIGNAL(valueChanged  (const QString&)),
-            defaultinput, SLOT(  fillSelections(const QString&)));
     connect(buttonDiSEqC, SIGNAL(pressed()),
-            &parent,      SLOT(  DiSEqCPanel()));
+            this,         SLOT(  DiSEqCPanel()));
     connect(buttonAnalog, SIGNAL(pressed()),
             &parent,      SLOT(  analogPanel()));
     connect(buttonRecOpt, SIGNAL(pressed()),
@@ -2338,6 +2343,36 @@
     cardnum->setValue(0);
 }
 
+void DVBConfigurationGroup::DiSEqCPanel()
+{
+#ifdef USING_DVB
+    parent.reload(); // ensure card id is valid
+
+    DTVDeviceTreeWizard diseqcWiz(tree);
+    diseqcWiz.exec();
+    defaultinput->fillSelections(tree.Root() != NULL);
+#endif // USING_DVB
+}
+
+void DVBConfigurationGroup::load()
+{
+    VerticalConfigurationGroup::load();
+#ifdef USING_DVB
+    tree.Load(parent.getCardID());
+    defaultinput->fillSelections(tree.Root() != NULL);
+#endif
+}
+
+void DVBConfigurationGroup::save()
+{
+    VerticalConfigurationGroup::save();
+#ifdef USING_DVB
+    tree.Store(parent.getCardID());
+    DiSEqCDev trees;
+    trees.InvalidateTrees();
+#endif
+}
+
 void CaptureCard::reload(void)
 {
     if (getCardID() == 0)
@@ -2377,17 +2412,6 @@
     acw.exec();
 }
 
-void CaptureCard::DiSEqCPanel()
-{
-#ifdef USING_DVB
-    reload();
-
-    DTVDeviceTreeWizard diseqcWiz(tree);
-    diseqcWiz.exec();
-    load();
-#endif // USING_DVB
-}
-
 RecorderOptions::RecorderOptions(CaptureCard& parent)
 {
     VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
