/* * Copyright 2014 (c) Anna Schumaker. */ #include #include class QueueTab : public Tab { private: /* * Queue tab variables */ Gtk::HBox q_tab_box; Gtk::Label q_tab_number; Gtk::Label q_tab_size; Gtk::Button q_tab_close; Gtk::Image q_tab_close_img; /* * Queue page variables */ Gtk::ToggleButton q_random; Gtk::SearchEntry q_search; Gtk::TreeView q_treeview; Gtk::VBox q_vbox; public: QueueTab(Playqueue *, unsigned int num); ~QueueTab(); void on_post_init(); void tab_set_size(); void queue_set_number(unsigned int); }; QueueTab :: QueueTab(Playqueue *pq, unsigned int num) : Tab(pq) { /* * Create our tab widget */ q_tab_close_img.set_from_icon_name("window-close", Gtk::ICON_SIZE_MENU); q_tab_close.set_image(q_tab_close_img); q_tab_close.set_relief(Gtk::RELIEF_NONE); q_tab_size.set_justify(Gtk::JUSTIFY_CENTER); q_tab_box.pack_start(q_tab_number, false, false); q_tab_box.pack_start(q_tab_size, true, true); q_tab_box.pack_start(q_tab_close, false, false); tab_set_size(); queue_set_number(num); q_tab_box.show_all(); /* * Finish generic init */ tab_random = &q_random; tab_search = &q_search; tab_size = &q_tab_size; tab_treeview = &q_treeview; tab_widget = &q_vbox; tab_finish_init(); get_widget("o_notebook")->insert_page(q_vbox, q_tab_box, num); q_vbox.show_all(); } QueueTab :: ~QueueTab() { tab_unmap(); } void QueueTab :: on_post_init() { tab_init_random(); } void QueueTab :: tab_set_size() { std::stringstream ss; ss << "" << tab_pq->size() << ""; q_tab_size.set_markup(ss.str()); } void QueueTab :: queue_set_number(unsigned int num) { std::stringstream ss; ss << "" << num << ". "; q_tab_number.set_markup(ss.str()); } static void on_pq_created(Playqueue *pq, unsigned int num) { QueueTab *tab = new QueueTab(pq, num); tab->on_post_init(); } static void on_pq_removed(Playqueue *pq) { } void init_queue_tabs() { struct Callbacks *cb = get_callbacks(); cb->on_pq_created = on_pq_created; cb->on_pq_removed = on_pq_removed; }