chiark / gitweb /
Eliminate choosedata structure, using extra treestore columns instead.
[disorder] / disobedience / choose.h
index 56964d9edb4333bc276b17b8b51ecd0c6a4a804f..16414a8c02299efba2b9c3dcc76fa9d293b2361c 100644 (file)
 #ifndef CHOOSE_H
 #define CHOOSE_H
 
-/** @brief Extra data at each node */
-struct choosedata {
-  /** @brief Node type */
-  int type;
+/** @brief Column numbers */
+enum {
+  /* Visible columns */
+  STATE_COLUMN,                 /* Track state */
+  NAME_COLUMN,                  /* Track name (display context) */
+  LENGTH_COLUMN,                /* Track length */
+  /* Hidden columns */
+  ISFILE_COLUMN,                /* TRUE for a track, FALSE for a directory */
+  TRACK_COLUMN,                 /* Full track name, "" for placeholder */
+  SORT_COLUMN,                  /* Sort key */
 
-  /** @brief Full track or directory name */
-  gchar *track;
-
-  /** @brief Sort key */
-  gchar *sort;
+  CHOOSE_COLUMNS                /* column count */
 };
 
-/** @brief Track name column number */
-#define NAME_COLUMN 0
-
-/** @brief Hidden column number */
-#define CHOOSEDATA_COLUMN 1
-
-/** @brief @ref choosedata node is a file */
-#define CHOOSE_FILE 0
-
-/** @brief @ref choosedata node is a directory */
-#define CHOOSE_DIRECTORY 1
-
 extern GtkTreeStore *choose_store;
 extern GtkWidget *choose_view;
 extern GtkTreeSelection *choose_selection;
@@ -54,6 +44,13 @@ struct choosedata *choose_path_to_data(GtkTreePath *path);
 gboolean choose_button_event(GtkWidget *widget,
                              GdkEventButton *event,
                              gpointer user_data);
+void choose_play_completed(void attribute((unused)) *v,
+                           const char *error);
+char *choose_get_track(GtkTreeIter *iter);
+char *choose_get_sort(GtkTreeIter *iter);
+int choose_is_file(GtkTreeIter *iter);
+int choose_is_dir(GtkTreeIter *iter);
+int choose_is_placeholder(GtkTreeIter *iter);
 
 #endif /* CHOOSE_H */