]> sigrok.org Git - sigrok-gtk.git/blobdiff - devselect.c
README: Update status/URLs/repos, add more info.
[sigrok-gtk.git] / devselect.c
index acdad5ce7abbe4c462c08d9af74a84635760de37..f664df82dc0987d8918d57ef401039677ea4714a 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <sigrok.h>
+#include <libsigrok/libsigrok.h>
 #include <gtk/gtk.h>
 #include "sigrok-gtk.h"
 
 static void dev_selected(GtkComboBox *devbox, GObject *parent)
 {
        GtkTreeModel *devlist = gtk_combo_box_get_model(devbox);
+       GtkEntry *timesamples = g_object_get_data(parent, "timesamples");
+       GtkComboBox *timeunit = g_object_get_data(parent, "timeunit");
        GtkTreeIter iter;
        const gchar *name;
        GtkCheckMenuItem *menuitem;
@@ -38,13 +40,23 @@ static void dev_selected(GtkComboBox *devbox, GObject *parent)
 
        gtk_check_menu_item_set_active(menuitem, TRUE);
 
-       sr_session_dev_clear();
+       sr_session_dev_remove_all();
        if (sr_session_dev_add(dev) != SR_OK) {
                g_critical("Failed to use device.");
                sr_session_destroy();
                dev = NULL;
        }
        g_object_set_data(parent, "dev", dev);
+
+       /*
+        * Grey out the time unless the device is valid,
+        * and it supports sample limiting
+        */
+       const gboolean limit_samples = dev &&
+               sr_driver_hwcap_exists(dev->driver,
+               SR_HWCAP_LIMIT_SAMPLES);
+       gtk_widget_set_sensitive((GtkWidget*)timesamples, limit_samples);
+       gtk_widget_set_sensitive((GtkWidget*)timeunit, limit_samples);
 }
 
 static void dev_menuitem_toggled(GtkMenuItem *item, GtkComboBox *combo)
@@ -75,7 +87,7 @@ void dev_select_rescan(GtkAction *action, GtkWindow *parent)
        GtkListStore *devlist = GTK_LIST_STORE(gtk_combo_box_get_model(devbox));
        GtkTreeIter iter;
        struct sr_dev *dev;
-       struct sr_dev_inst *sdi;
+       const struct sr_dev_inst *sdi;
        gchar *sdevname = NULL;
        GSList *devs, *l;
        GtkUIManager *ui = g_object_get_data(G_OBJECT(parent), "ui_manager");