gui: Remove old Tab and QueueTab code

Now that nothing uses it

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-01-21 11:37:56 -05:00
parent c0a6c663d1
commit e97939a9cd
10 changed files with 2 additions and 743 deletions

View File

@ -4,5 +4,5 @@ Import("env")
env.UsePackage("gtkmm-3.0")
env.UsePackage("gmodule-export-2.0")
res = Glob("*.c") + Glob("*.cpp") + SConscript("queue/Sconscript")
res = Glob("*.c") + Glob("*.cpp")
Return("res")

View File

@ -16,7 +16,6 @@ extern "C" {
#include <gui/window.h>
}
#include <gui/ocarina.h>
#include <gui/tabs.h>
static std::string ocarina_dir = "";
@ -77,18 +76,14 @@ int main(int argc, char **argv)
gui_playlist_init();
gui_audio_init();
init_tabs();
post_init_tabs();
window = Glib :: wrap(GTK_WINDOW(gui_builder_widget("o_window")), false);
ocarina_app->signal_window_removed().connect(sigc::ptr_fun(on_window_removed));
ocarina_app->run(*window, argc, argv);
core_deinit();
cleanup_tabs();
gui_window_deinit();
gui_settings_deinit();
//gui_builder_deinit();
gui_builder_deinit();
return 0;
}

View File

@ -1,3 +0,0 @@
#!/usr/bin/python
res = Glob("*.cpp")
Return("res")

View File

@ -1,51 +0,0 @@
/*
* Copyright 2015 (c) Anna Schumaker.
*/
extern "C" {
#include <core/string.h>
#include <gui/sidebar.h>
}
#include <gui/queue/label.h>
QueueLabel :: QueueLabel(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> builder)
: Gtk::HBox(cobject), _builder(builder)
{
}
QueueLabel :: ~QueueLabel()
{
}
void QueueLabel :: init(queue *queue)
{
_queue = queue;
set_size();
}
TempLabel :: TempLabel(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> builder)
: QueueLabel(cobject, builder)
{
_builder->get_widget("temp_number", temp_number);
_builder->get_widget("temp_size", temp_size);
_builder->get_widget("temp_close", temp_close);
}
void TempLabel :: set_sensitive(bool sensitive)
{
temp_number->set_sensitive(sensitive);
temp_size->set_sensitive(sensitive);
}
void TempLabel :: set_size()
{
gchar *size = g_strdup_printf("%u", queue_size(_queue));
temp_size->set_text(size);
gui_sidebar_set_size(gui_queue(_queue));
g_free(size);
}

View File

@ -1,38 +0,0 @@
/*
* Copyright 2015 (c) Anna Schumaker.
*/
extern "C" {
#include <core/audio.h>
#include <core/filter.h>
#include <gui/model.h>
#include <gui/queue.h>
}
#include <gui/queue/window.h>
QueueWindow :: QueueWindow(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> builder)
: Gtk::ScrolledWindow(cobject), _builder(builder)
{
_builder->get_widget("q_treeview", q_treeview);
}
QueueWindow :: ~QueueWindow()
{
}
void QueueWindow :: init(queue *queue)
{
GtkTreeModel *model = GTK_TREE_MODEL(gui_queue(queue)->gq_model);
q_treeview->signal_key_press_event().connect(sigc::mem_fun(*this,
&QueueWindow :: on_key_press), false);
gtk_tree_view_set_model(q_treeview->gobj(), model);
}
bool QueueWindow :: on_key_press(GdkEventKey *event)
{
std::string key = gdk_keyval_name(event->keyval);
if (key == "space")
return true;
return false;
}

View File

@ -1,205 +0,0 @@
/*
* Copyright 2014 (c) Anna Schumaker.
*/
extern "C" {
#include <core/string.h>
#include <core/tempq.h>
#include <gui/builder.h>
#include <gui/sidebar.h>
}
#include <gui/tabs.h>
#include <gui/queue/label.h>
static void renumber_queues();
static class QueueColumns : public Gtk::TreeModelColumnRecord {
public:
QueueColumns()
{ add(q_col_track); add(q_col_title); add(q_col_length);
add(q_col_artist); add(q_col_album); add(q_col_year);
add(q_col_genre); add(q_col_count); add(q_col_played);
add(q_col_path); }
Gtk::TreeModelColumn<unsigned int> q_col_track;
Gtk::TreeModelColumn<std::string> q_col_title;
Gtk::TreeModelColumn<std::string> q_col_length;
Gtk::TreeModelColumn<std::string> q_col_artist;
Gtk::TreeModelColumn<std::string> q_col_album;
Gtk::TreeModelColumn<unsigned int> q_col_year;
Gtk::TreeModelColumn<std::string> q_col_genre;
Gtk::TreeModelColumn<unsigned int> q_col_count;
Gtk::TreeModelColumn<std::string> q_col_played;
Gtk::TreeModelColumn<std::string> q_col_path;
} queue_cols;
class QueueTab : public Tab {
private:
/**
* Queue tab widgets
*/
TempLabel *q_label;
public:
QueueTab(queue *, unsigned int num);
~QueueTab();
void on_track_removed(unsigned int);
/**
* Helper functions
*/
bool on_key_press_event(const std::string &);
void queue_set_number(unsigned int);
void on_tab_reordered();
void on_move_queue(int);
/**
* GTK-MM Callbacks
*/
void on_close_clicked();
};
static std::map<Gtk::Widget *, QueueTab *> queue_mapping;
QueueTab :: QueueTab(queue *pq, unsigned int num)
: Tab(pq)
{
Gtk::Notebook *notebook;
tab_builder->add_from_file(gui :: share_file("QueueLabel.ui"));
/*
* Create our tab widget
*/
tab_builder->get_widget_derived("TempLabel", q_label);
q_label->temp_close->signal_clicked().connect(sigc::mem_fun(*this,
&QueueTab::on_close_clicked));
q_label->init(tab_pq);
tab_label = q_label;
queue_set_number(num);
/*
* Fill in the page!
*/
tab_vbox.pack_start(*tab_window, true, true);
queue_mapping[&tab_vbox] = this;
notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
notebook->insert_page(tab_vbox, *q_label, num);
notebook->set_tab_reorderable(tab_vbox);
}
QueueTab :: ~QueueTab()
{
tab_window->q_treeview->unset_model();
queue_mapping.erase(&tab_vbox);
tab_unmap();
gui_sidebar_remove(gui_queue(tab_pq));
Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false)->remove_page(tab_vbox);
renumber_queues();
}
void QueueTab :: on_track_removed(unsigned int row)
{
this->Tab :: on_track_removed(row);
if (queue_size(tab_pq) == 0)
delete this;
}
/**
*
* Queue tab helper functions
*
*/
void QueueTab :: queue_set_number(unsigned int num)
{
gchar *text = g_strdup_printf("%u. ", num);
q_label->temp_number->set_text(text);
g_free(text);
}
void QueueTab :: on_tab_reordered()
{
queue_set_number(tab_page_num());
}
void QueueTab :: on_move_queue(int num)
{
tempq_move(tab_pq, num);
}
/**
*
* Gtk-MM Callback Functions
*
*/
void QueueTab :: on_close_clicked()
{
tempq_free(tab_pq);
delete this;
}
/**
*
* Global functions
*
*/
static void renumber_queues()
{
std::map<Gtk::Widget *, QueueTab *>::iterator it;
for (it = queue_mapping.begin(); it != queue_mapping.end(); it++)
it->second->on_tab_reordered();
}
void on_pq_created(queue *pq, unsigned int num)
{
new QueueTab(pq, num);
}
static void on_page_reordered(Gtk::Widget *page, int num)
{
Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
if ((unsigned int)num >= tempq_count()) {
notebook->reorder_child(*page, tempq_count() - 1);
return;
}
std::map<Gtk::Widget *, QueueTab *>::iterator it;
it = queue_mapping.find(page);
if (it != queue_mapping.end()) {
it->second->on_move_queue(num);
renumber_queues();
}
}
void init_queue_tabs()
{
Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
notebook->signal_page_reordered().connect(sigc::ptr_fun(on_page_reordered));
}
void post_init_queue_tabs()
{
unsigned int i;
for (i = 0; i < tempq_count(); i++)
on_pq_created(tempq_get(i), i);
}

View File

@ -1,159 +0,0 @@
/*
* Copyright 2014 (c) Anna Schumaker.
*/
extern "C" {
#include <core/collection.h>
#include <core/playlist.h>
#include <core/string.h>
#include <core/tempq.h>
#include <gui/builder.h>
#include <gui/queue.h>
#include <gui/sidebar.h>
}
#include <gui/tabs.h>
#include <map>
#include <sstream>
static std::map<queue *, Tab *> queue_mapping;
/**
*
* Tab class basics
*
*/
Tab :: Tab(queue *pq)
: tab_sorting_count(0), tab_pq(pq), tab_label(NULL)
{
queue_mapping[tab_pq] = this;
tab_builder = Gtk::Builder::create();
tab_builder->add_from_file(gui :: share_file("QueueWindow.ui"));
tab_builder->get_widget_derived("QueueWindow", tab_window);
tab_window->init(tab_pq);
tab_vbox.set_margin_start(1);
tab_vbox.set_margin_end(1);
tab_vbox.set_homogeneous(false);
tab_vbox.show();
}
Tab :: ~Tab() {}
/**
*
* QNotifier implementation.
*
*/
void Tab :: on_track_added(unsigned int row)
{
tab_label->set_size();
}
void Tab :: on_track_removed(unsigned int row)
{
tab_label->set_size();
}
/**
*
* Tab internal helper functions
*
*/
int Tab :: tab_page_num()
{
Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
return notebook->page_num(tab_vbox);
}
bool Tab :: tab_is_cur()
{
Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
return notebook->page_num(tab_vbox) == notebook->get_current_page();
}
void Tab :: tab_unmap()
{
queue_mapping.erase(tab_pq);
}
/**
*
* Global functions
*
*/
Tab *find_tab(queue *pq)
{
std::map<queue *, Tab *>::iterator it;
it = queue_mapping.find(pq);
if (it != queue_mapping.end())
return it->second;
return NULL;
}
static bool on_window_key_pressed(GdkEventKey *event)
{
Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false);
std::string key = gdk_keyval_name(event->keyval);
if (key.size() >= 3) {
if (key.substr(0, 3) == "KP_")
key = key.substr(3);
}
if (key >= "0" && key <= "9") {
unsigned int n = atoi(key.c_str());
if (n < tempq_count())
notebook->set_current_page(n);
} else if (key == "c")
notebook->set_current_page(tempq_count());
else if (key == "h")
notebook->set_current_page(tempq_count() + 1);
else if (key == "m")
notebook->set_current_page(tempq_count() + 3);
else if (key == "p")
notebook->set_current_page(tempq_count() + 2);
else
return false;
return true;
}
void init_tabs()
{
Gtk::Window *window = Glib :: wrap(GTK_WINDOW(gui_builder_widget("o_window")), false);
/* Initialize other tabs */
init_queue_tabs();
/* Setup keyboard shortcuts */
window->signal_key_press_event().connect(sigc::ptr_fun(on_window_key_pressed));
}
void post_init_tabs()
{
post_init_queue_tabs();
unsigned int tab = 0;
for (tab = 0; tab < tempq_count(); tab++) {
if (queue_has_flag(tempq_get(tab), Q_ENABLED))
break;
}
Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false)->set_current_page(tab);
}
void cleanup_tabs()
{
while (queue_mapping.size() > 0)
delete queue_mapping.begin()->second;
}

View File

@ -4,7 +4,6 @@
#ifndef OCARINA_H
#define OCARINA_H
#include <core/queue.h>
#include <gtkmm.h>
@ -14,8 +13,5 @@ namespace gui
const std::string share_file(const std::string &);
}
void on_pq_created(queue *, unsigned int);
void post_init_queue_tabs();
#endif /* OCARINA_H */

View File

@ -1,67 +0,0 @@
/*
* Copyright 2014 (c) Anna Schumaker.
*/
#ifndef OCARINA_TABS_H
#define OCARINA_TABS_H
#include <gui/ocarina.h>
#include <gui/queue/label.h>
#include <gui/queue/window.h>
#include <core/playlist.h>
#include <core/queue.h>
class Tab {
private:
unsigned int tab_sorting_count;
std::string tab_sorting_title;
protected:
Glib::RefPtr<Gtk::Builder> tab_builder;
queue *tab_pq;
Gtk::VBox tab_vbox;
QueueLabel *tab_label;
/**
* Class helper functions
*/
void tab_unmap();
public:
QueueWindow *tab_window;
Tab(queue *);
virtual ~Tab();
/**
* QNotifier implementation
*/
void on_track_added(unsigned int);
virtual void on_track_removed(unsigned int);
void on_tracks_cleared(unsigned int);
void on_track_updated(unsigned int);
/**
* More helper functions
*/
int tab_page_num();
bool tab_is_cur();
void tab_runtime_changed();
void tab_focus_search();
/**
* GTK-MM callback functions
*/
void on_column_clicked(unsigned int);
};
Tab *find_tab(queue *);
void tab_focus_search();
void init_tabs();
void post_init_tabs();
void cleanup_tabs();
void init_queue_tabs();
#endif /* OCARINA_TABS_H */

View File

@ -1,209 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<object class="GtkBox" id="CollectionLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">media-optical</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;big&gt;Collection&lt;/big&gt;</property>
<property name="use_markup">True</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="collection_size">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<object class="GtkBox" id="HistoryLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">document-open-recent</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;big&gt;History&lt;/big&gt;</property>
<property name="use_markup">True</property>
<property name="justify">center</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="history_size">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<object class="GtkBox" id="PlaylistLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">emblem-documents</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Playlist
Manager</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<object class="GtkBox" id="TempLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="temp_number">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0. </property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
<attributes>
<attribute name="scale" value="1.4399999999999999"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="temp_size">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4242</property>
<property name="justify">center</property>
<property name="angle">0.01</property>
<attributes>
<attribute name="scale" value="1.4399999999999999"/>
</attributes>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="temp_close">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<child>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">window-close</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</interface>