void getThreadData(Glib::RefPtr<Gtk::ListStore> m_threads_tree_model) { ///Get the thread data as JSON, and then push it onto the ListStore given in m_threads_tree_model Gtk::Spinner *spin = 0; builder->get_widget("spinner1", spin); spin->set_visible(true); spin->show(); Gtk::TreeView *tree = 0; builder->get_widget("treeview2", tree); tree->hide(); tree->set_visible(false); Json::Value json = getThreads(BOARD); for(int j=0;j<json.size();++j) { Json::Value threads = json[j]["threads"]; for(int i=0;i<threads.size();++i) { Gtk::TreeModel::Row row = *(m_threads_tree_model->append()); ostringstream convert3; convert3 << threads[i]["replies"].asUInt(); row[m_thread_list.text] = standardPostFormatting(threads[i])+"\n\n"+convert3.str()+" replies"; row[m_thread_list.tim] = threads[i]["tim"].asString(); row[m_thread_list.ext] = trim(threads[i]["ext"].asString()); if(threads[i].isMember("filename")) { row[m_thread_list.fn] = threads[i]["filename"].asString(); } ostringstream convert2; convert2 << threads[i]["no"].asInt(); row[m_thread_list.no] = convert2.str(); } } spin->hide(); spin->set_visible(false); tree->show(); tree->set_visible(true); }
void on_refresh_posts_clicked(Glib::RefPtr<Gtk::ListStore> m_threads_tree_model) { ///To be executed when the refresh button is clicked while viewing a thread Gtk::Spinner *spin = 0; builder->get_widget("spinner1", spin); spin->show(); spin->set_visible(true); Gtk::TreeView *tree = 0; builder->get_widget("treeview4", tree); tree->hide(); tree->set_visible(false); m_threads_tree_model->clear(); getPostData(m_threads_tree_model); webkit_web_view_load_uri(pWebKitView, "about:blank"); spin->hide(); spin->set_visible(false); tree->show(); tree->set_visible(true); }
void on_thread_activated(Gtk::TreeModel::Path path, Gtk::TreeViewColumn* column, Glib::RefPtr<Gtk::TreeModel> model, Glib::RefPtr<Gtk::ListStore> store) { ///To be run when a thread is double clicked Gtk::TreeModel::iterator iter = model->get_iter(path); Gtk::TreeModel::Row row = *iter; string no = row[m_thread_list.no]; THREAD = no; cout << THREAD << endl; cout << BOARD << endl; threadView(); Gtk::TreeView *postlist = 0; builder->get_widget("treeview4", postlist); postlist->set_visible(true); postlist->show(); Gtk::ScrolledWindow *imgview = 0; builder->get_widget("scrolledwindow3", imgview); gtk_container_add (GTK_CONTAINER (imgview->gobj()), GTK_WIDGET (pWebKitView)); webkit_web_view_load_uri(pWebKitView, "about:blank"); webkit_web_view_set_zoom_level(pWebKitView, true); gtk_widget_set_can_focus(GTK_WIDGET(pWebKitView), true); gtk_widget_show(GTK_WIDGET(pWebKitView)); Glib::RefPtr<Gtk::ListStore> m_posts_tree_model; m_posts_tree_model = Gtk::ListStore::create(m_post_list); m_posts_tree_model->clear(); postlist->set_model(m_posts_tree_model); postlist->set_search_column(1); postlist->get_column(1)->set_visible(false); postlist->get_column(2)->set_visible(false); postlist->get_column(3)->set_visible(false); postlist->get_column(4)->set_visible(false); postlist->get_column(5)->set_visible(false); postlist->signal_key_press_event().connect(sigc::bind<Glib::RefPtr<Gtk::ListStore> >(sigc::ptr_fun(&on_key_press_thread), m_posts_tree_model)); postlist->signal_key_release_event().connect(sigc::bind<Glib::RefPtr<Gtk::ListStore> >(sigc::ptr_fun(&on_key_press_thread), m_posts_tree_model)); postlist->add_events(Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK); Gtk::CellRendererText* cellRender = dynamic_cast<Gtk::CellRendererText*>(postlist->get_column_cell_renderer(0)); cellRender->property_wrap_mode() = Pango::WRAP_WORD; cellRender->property_wrap_width() = 400; cellRender->set_alignment(0, 0); Glib::RefPtr<Gtk::TreeSelection> thread_selection = postlist->get_selection(); thread_selection->signal_changed().connect(sigc::bind<Glib::RefPtr<Gtk::TreeSelection>, WebKitWebView*>(sigc::ptr_fun(&on_selection_changed_post), thread_selection, pWebKitView)); getPostData(m_posts_tree_model); postlist->grab_focus(); Gtk::ToolButton* refresh; builder->get_widget("toolbutton6", refresh); refresh->set_visible(true); refresh->show(); POST_REFRESH_CONNECT = refresh->signal_clicked().connect(sigc::bind<Glib::RefPtr<Gtk::ListStore> >(sigc::ptr_fun(&on_refresh_posts_clicked), m_posts_tree_model)); Gtk::ScrolledWindow *postwin = 0; builder->get_widget("scrolledwindow4", postwin); postwin->set_visible(true); postwin->show(); POST_CLICK_CONNECT = postlist->signal_row_activated().connect(sigc::bind<Glib::RefPtr<Gtk::TreeModel>, Glib::RefPtr<Gtk::ListStore> >(sigc::ptr_fun(&on_post_activated1), postlist->get_model(), m_posts_tree_model)); }