ocarina: Programmatically create tabs
Dynamic playlists are going to need to run the same code to generate playlist tabs as the static tabs. Since I don't know how to use GtkBuilder fragments, instead I write the code for generating each page. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
10cdc5248a
commit
370f6a6832
|
@ -36,7 +36,8 @@ string run_chooser(const string &);
|
|||
|
||||
/* playlist.cpp */
|
||||
void update_playlist(notify_t, libsaria::PlaylistNotification *);
|
||||
void init_playlist(struct PlaylistWidgets *widgets);
|
||||
void setup_widgets(struct PlaylistWidgets *, libsaria::Playlist *);
|
||||
GtkWidget *make_playlist_page(struct PlaylistWidgets *);
|
||||
|
||||
/* status.cpp */
|
||||
bool update_idle_bar(int);
|
||||
|
|
|
@ -2,6 +2,19 @@
|
|||
#include <libsaria/track.h>
|
||||
#include <ocarina/ocarina.h>
|
||||
|
||||
static GType types[] = {
|
||||
G_TYPE_POINTER, // libsaria::Track *
|
||||
G_TYPE_UINT, // Track number
|
||||
G_TYPE_STRING, // Title
|
||||
G_TYPE_STRING, // Length
|
||||
G_TYPE_STRING, // Artist
|
||||
G_TYPE_STRING, // Album
|
||||
G_TYPE_UINT, // Year
|
||||
G_TYPE_UINT, // Count
|
||||
G_TYPE_STRING, // Last played
|
||||
G_TYPE_STRING, // Filepath
|
||||
};
|
||||
|
||||
static string formatted(string str)
|
||||
{
|
||||
char *escaped = g_markup_escape_text(str.c_str(), -1);
|
||||
|
@ -119,12 +132,66 @@ static void track_selected(GtkWidget *treeview, GtkTreePath *path,
|
|||
track->load(true);
|
||||
}
|
||||
|
||||
void init_playlist(struct PlaylistWidgets *widgets)
|
||||
void setup_widgets(struct PlaylistWidgets *widgets, libsaria::Playlist *playlist)
|
||||
{
|
||||
unsigned int num_columns = sizeof(types) / sizeof(GType);
|
||||
|
||||
widgets->playlist = playlist;
|
||||
widgets->liststore = gtk_list_store_newv(num_columns, types);
|
||||
widgets->treeview = GTK_TREE_VIEW(gtk_tree_view_new());
|
||||
widgets->filter = gtk_tree_model_filter_new(
|
||||
GTK_TREE_MODEL(widgets->liststore), NULL);
|
||||
widgets->label = GTK_LABEL(gtk_label_new("0"));
|
||||
widgets->entry = GTK_ENTRY(gtk_entry_new());
|
||||
|
||||
gtk_tree_view_set_model(widgets->treeview, widgets->filter);
|
||||
gtk_tree_view_set_rules_hint(widgets->treeview, TRUE);
|
||||
gtk_tree_view_set_enable_search(widgets->treeview, FALSE);
|
||||
gtk_tree_view_set_tooltip_column(widgets->treeview, 9);
|
||||
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->filter),
|
||||
is_visible, widgets->playlist, NULL);
|
||||
|
||||
g_signal_connect(widgets->treeview, "row-activated", G_CALLBACK(track_selected), NULL);
|
||||
g_signal_connect(widgets->entry, "changed", G_CALLBACK(do_filter), widgets->playlist);
|
||||
}
|
||||
|
||||
static void add_column(GtkTreeView *treeview, const string &title, int index,
|
||||
GtkTreeViewColumnSizing sizing, unsigned int fixed_width)
|
||||
{
|
||||
GtkCellRenderer *cell = gtk_cell_renderer_text_new();
|
||||
GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes(
|
||||
title.c_str(), cell, "text", index, NULL);
|
||||
gtk_tree_view_column_set_resizable(column, TRUE);
|
||||
gtk_tree_view_column_set_sizing(column, sizing);
|
||||
gtk_tree_view_column_set_fixed_width(column, fixed_width);
|
||||
gtk_tree_view_column_set_min_width(column, 1);
|
||||
gtk_tree_view_column_set_max_width(column, 700);
|
||||
gtk_tree_view_append_column(treeview, column);
|
||||
}
|
||||
|
||||
GtkWidget *make_playlist_page(struct PlaylistWidgets *widgets)
|
||||
{
|
||||
GtkWidget *box = gtk_vbox_new(FALSE, 0);
|
||||
GtkWidget *window = gtk_scrolled_window_new(NULL, NULL);
|
||||
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(widgets->entry), FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), window, TRUE, TRUE, 0);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(widgets->treeview));
|
||||
add_column(widgets->treeview, "#", 1, GTK_TREE_VIEW_COLUMN_FIXED, 20);
|
||||
add_column(widgets->treeview, "Title", 2, GTK_TREE_VIEW_COLUMN_FIXED, 300);
|
||||
add_column(widgets->treeview, "Length", 3, GTK_TREE_VIEW_COLUMN_GROW_ONLY, 1);
|
||||
add_column(widgets->treeview, "Artist", 4, GTK_TREE_VIEW_COLUMN_FIXED, 125);
|
||||
add_column(widgets->treeview, "Album", 5, GTK_TREE_VIEW_COLUMN_FIXED, 125);
|
||||
add_column(widgets->treeview, "Year", 6, GTK_TREE_VIEW_COLUMN_GROW_ONLY, 1);
|
||||
add_column(widgets->treeview, "Count", 7, GTK_TREE_VIEW_COLUMN_GROW_ONLY, 1);
|
||||
add_column(widgets->treeview, "Played", 8, GTK_TREE_VIEW_COLUMN_GROW_ONLY, 1);
|
||||
|
||||
gtk_widget_show_all(box);
|
||||
return box;
|
||||
}
|
||||
|
|
|
@ -127,38 +127,41 @@ static void init_tab_action()
|
|||
box, GTK_PACK_END);
|
||||
}
|
||||
|
||||
static void init_static_tab(struct PlaylistWidgets *widgets,
|
||||
libsaria::Playlist *playlist,
|
||||
const string &list_name,
|
||||
const string &view_name,
|
||||
const string &label_name,
|
||||
const string &entry_name)
|
||||
static void add_page(GtkWidget *page, GtkWidget *label, int index)
|
||||
{
|
||||
widgets->playlist = playlist;
|
||||
widgets->liststore = GTK_LIST_STORE(get_object(list_name));
|
||||
widgets->treeview = GTK_TREE_VIEW(get_widget(view_name));
|
||||
widgets->filter = gtk_tree_model_filter_new(
|
||||
GTK_TREE_MODEL(widgets->liststore), NULL);
|
||||
widgets->label = GTK_LABEL(get_widget(label_name));
|
||||
widgets->entry = GTK_ENTRY(get_widget(entry_name));
|
||||
gtk_notebook_insert_page(GTK_NOTEBOOK(get_widget("PlaylistTabs")),
|
||||
page, label, index);
|
||||
}
|
||||
|
||||
init_playlist(widgets);
|
||||
connect_signal(entry_name, "focus-in-event", G_CALLBACK(on_focus_change), NULL);
|
||||
static GtkWidget *make_tab_label(const string &name, struct PlaylistWidgets *widgets)
|
||||
{
|
||||
GtkWidget *box = gtk_vbox_new(FALSE, 0);
|
||||
GtkWidget *label = gtk_label_new(name.c_str());
|
||||
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.0);
|
||||
gtk_misc_set_alignment(GTK_MISC(widgets->label), 1.0, 0.0);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(widgets->label), FALSE, FALSE, 0);
|
||||
gtk_widget_show_all(box);
|
||||
return box;
|
||||
}
|
||||
|
||||
static void add_static_page(const string &name, struct PlaylistWidgets *widgets,
|
||||
libsaria::Playlist *playlist)
|
||||
{
|
||||
setup_widgets(widgets, playlist);
|
||||
g_signal_connect(widgets->entry, "focus-in-event", G_CALLBACK(on_focus_change), NULL);
|
||||
add_page(make_playlist_page(widgets), make_tab_label(name, widgets), -1);
|
||||
}
|
||||
|
||||
void init_tabs()
|
||||
{
|
||||
init_tab_action();
|
||||
|
||||
init_static_tab(&library_widgets, libsaria::library::get_playlist(),
|
||||
"LibraryPlist", "LibraryPlistView",
|
||||
"LibrarySize", "LibraryEntry");
|
||||
init_static_tab(&recent_widgets, libsaria::deck::get_recent_plist(),
|
||||
"RecentPlist", "RecentView",
|
||||
"RecentSize", "RecentEntry");
|
||||
init_static_tab(&banned_widgets, libsaria::ban::get_banned_plist(),
|
||||
"BannedPlist", "BannedView",
|
||||
"BannedSize", "BannedEntry");
|
||||
add_static_page("Library", &library_widgets, libsaria::library::get_playlist());
|
||||
add_static_page("Recent", &recent_widgets, libsaria::deck::get_recent_plist());
|
||||
add_static_page("Banned", &banned_widgets, libsaria::ban::get_banned_plist());
|
||||
|
||||
connect_signal("PlaylistTabs", "switch-page", G_CALLBACK(on_switch_page), NULL);
|
||||
}
|
||||
|
|
692
xml/ocarina.xml
692
xml/ocarina.xml
|
@ -2,30 +2,6 @@
|
|||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<!-- interface-naming-policy toplevel-contextual -->
|
||||
<object class="GtkListStore" id="BannedPlist">
|
||||
<columns>
|
||||
<!-- column-name Pointer -->
|
||||
<column type="gpointer"/>
|
||||
<!-- column-name # -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Title -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Length -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Artist -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Album -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Year -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Count -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Last -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Filepath -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkAction" id="action1"/>
|
||||
<object class="GtkFileChooserDialog" id="DirectoryChooser">
|
||||
<property name="can_focus">False</property>
|
||||
|
@ -169,30 +145,6 @@
|
|||
<column type="guint"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="LibraryPlist">
|
||||
<columns>
|
||||
<!-- column-name Pointer -->
|
||||
<column type="gpointer"/>
|
||||
<!-- column-name # -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Title -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Length -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Artist -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Album -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Year -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Count -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Last -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Filepath -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="PauseAdjustment">
|
||||
<property name="upper">256</property>
|
||||
<property name="step_increment">1</property>
|
||||
|
@ -216,626 +168,6 @@
|
|||
<property name="tab_border">0</property>
|
||||
<property name="tab_hborder">0</property>
|
||||
<property name="tab_vborder">0</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="vbox6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="LibraryEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="primary_icon_activatable">False</property>
|
||||
<property name="secondary_icon_activatable">False</property>
|
||||
<property name="primary_icon_sensitive">True</property>
|
||||
<property name="secondary_icon_sensitive">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="LibraryPlistView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="model">LibraryPlist</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="enable_search">False</property>
|
||||
<property name="tooltip_column">9</property>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn4">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">20</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">#</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext3"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn5">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">300</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Title</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext4"/>
|
||||
<attributes>
|
||||
<attribute name="text">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn6">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Length</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext5"/>
|
||||
<attributes>
|
||||
<attribute name="text">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn7">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Artist</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext6"/>
|
||||
<attributes>
|
||||
<attribute name="text">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn8">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Album</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext7"/>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn9">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Year</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext8"/>
|
||||
<attributes>
|
||||
<attribute name="text">6</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn10">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Count</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext9"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn11">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Played</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext10"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkVBox" id="vbox7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Library</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="LibrarySize">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="vbox9">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="RecentEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="invisible_char_set">True</property>
|
||||
<property name="primary_icon_activatable">False</property>
|
||||
<property name="secondary_icon_activatable">False</property>
|
||||
<property name="primary_icon_sensitive">True</property>
|
||||
<property name="secondary_icon_sensitive">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="RecentView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="model">RecentPlist</property>
|
||||
<property name="headers_clickable">False</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="enable_search">False</property>
|
||||
<property name="search_column">1</property>
|
||||
<property name="tooltip_column">9</property>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn12">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">20</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">#</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext11"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn13">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">300</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Title</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext12"/>
|
||||
<attributes>
|
||||
<attribute name="text">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn14">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Length</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext13"/>
|
||||
<attributes>
|
||||
<attribute name="text">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn15">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Artist</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext14"/>
|
||||
<attributes>
|
||||
<attribute name="text">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn16">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Album</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext15"/>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn17">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Year</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext16"/>
|
||||
<attributes>
|
||||
<attribute name="text">6</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn18">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Count</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext17"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn19">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Played</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext18"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkVBox" id="vbox8">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Recent</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="RecentSize">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="vbox11">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="BannedEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="invisible_char_set">True</property>
|
||||
<property name="primary_icon_activatable">False</property>
|
||||
<property name="secondary_icon_activatable">False</property>
|
||||
<property name="primary_icon_sensitive">True</property>
|
||||
<property name="secondary_icon_sensitive">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="BannedView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="model">BannedPlist</property>
|
||||
<property name="headers_clickable">False</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="enable_search">False</property>
|
||||
<property name="search_column">1</property>
|
||||
<property name="tooltip_column">9</property>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn20">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">20</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">#</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext19"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn21">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">300</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Title</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext20"/>
|
||||
<attributes>
|
||||
<attribute name="text">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn22">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Length</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext21"/>
|
||||
<attributes>
|
||||
<attribute name="text">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn23">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Artist</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext22"/>
|
||||
<attributes>
|
||||
<attribute name="text">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn24">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">fixed</property>
|
||||
<property name="fixed_width">125</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Album</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext23"/>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn25">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Year</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext24"/>
|
||||
<attributes>
|
||||
<attribute name="text">6</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn26">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Count</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext25"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn27">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">2</property>
|
||||
<property name="max_width">700</property>
|
||||
<property name="title" translatable="yes">Played</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext26"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkVBox" id="vbox10">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Banned</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="BannedSize">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
|
@ -1391,28 +723,4 @@
|
|||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkListStore" id="RecentPlist">
|
||||
<columns>
|
||||
<!-- column-name Pointer -->
|
||||
<column type="gpointer"/>
|
||||
<!-- column-name # -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Title -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Length -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Artist -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Album -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Year -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Count -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name Last -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Filepath -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
</interface>
|
||||
|
|
Loading…
Reference in New Issue