OSDN Git Service

Add a menu item 'CloseH': Close and remove History.
authorAiwota Programmer <aiwotaprog@tetteke.tk>
Tue, 2 Mar 2010 13:45:27 +0000 (22:45 +0900)
committerAiwota Programmer <aiwotaprog@tetteke.tk>
Tue, 2 Mar 2010 13:45:27 +0000 (22:45 +0900)
src/history_data.cxx
src/history_data.hxx
src/thread_window.cxx
src/thread_window.hxx

index 237c7b6..984640d 100644 (file)
@@ -112,6 +112,10 @@ void Data::push(const Item::UriType& uri, const Item::NameType& name) {
   map_[uri] = item;
 }
 
+void Data::erase(const Item::UriType& uri) {
+  map_.erase(uri);
+}
+
 std::vector<Item> Data::get_recent() const {
   std::vector<Item> order;
   order.reserve(map_.size());
index 75322be..db938bf 100644 (file)
@@ -45,6 +45,7 @@ public:
   void to_xml(const boost::filesystem::path& xml) const;
 
   void push(const Item::UriType& uri, const Item::NameType& name);
+  void erase(const Item::UriType& uri);
 
   std::vector<Item> get_recent() const;
 
index d7ea12d..0e98127 100644 (file)
@@ -58,16 +58,26 @@ ThreadWindow::ThreadWindow(std::auto_ptr<bbs_detail::Base> bbs) :
   action_group_->add(
       Gtk::Action::create("FileBoard", Gtk::Stock::GO_UP, "Show _Board"),
       sigc::mem_fun(*this, &ThreadWindow::on_action_file_board));
+  action_group_->add(
+      Gtk::Action::create(
+          "FileCloseRemoveHistory", Gtk::Stock::CLEAR, "CloseH",
+          "Close and Remove from History"),
+      sigc::mem_fun(*this,
+          &ThreadWindow::on_action_file_close_remove_history));
 
   Glib::ustring ui =
     "<ui>"
     "  <menubar name='MenuBar'>"
     "    <menu action='MenuFile'>"
     "      <menuitem action='FileDelete'/>"
+    "      <menuitem action='FileCloseRemoveHistory'/>"
     "      <separator/>"
     "      <menuitem action='FileBoard'/>"
     "    </menu>"
     "  </menubar>"
+    "  <toolbar name='ToolBar'>"
+    "    <toolitem action='FileCloseRemoveHistory'/>"
+    "  </toolbar>"
     "</ui>";
 
   ui_manager_->add_ui_from_string(ui);
@@ -179,6 +189,14 @@ void ThreadWindow::on_action_file_board() {
   uri_opener::open(bbs_->get_board_uri());
 }
 
+void ThreadWindow::on_action_file_close_remove_history() {
+  histories.erase(bbs_->get_thread_uri());
+
+  std::vector<ApplicationWindow*> closes;
+  closes.push_back(this);
+  close_windows(closes);
+}
+
 void ThreadWindow::on_http_get_end(bool success) {
 //  const std::string uri = http_getter_->get_uri();
 //  const http::Header request_header = http_getter_->get_request_header();
index 63e946f..79b02be 100644 (file)
@@ -55,6 +55,7 @@ protected:
   virtual void on_action_edit_copy();
   void on_action_file_delete();
   void on_action_file_board();
+  void on_action_file_close_remove_history();
 private:
   void initialize_text_view();
   virtual bool is_same(const bbs_detail::Base& bbs) const;