+void FormCitation::showStageSearch()
+{
+ if (!dialog_)
+ {
+ using namespace Gtk::Box_Helpers;
+
+ Gtk::Box * mbox = manage( new Gtk::HBox() );
+ Gtk::ButtonBox * bbox = manage( new Gtk::HButtonBox() );
+ Gtk::Separator * sep = manage( new Gtk::VSeparator() );
+
+ search_text_ = manage( new Gnome::Entry() );
+
+ button_regexp_ = manage( new Gtk::CheckButton(N_("Use Regular Expression")) );
+
+ b_ok = manage( new Gtk::Button(N_("Search")) );
+ b_cancel = Gtk::wrap( GTK_BUTTON( gnome_stock_button(GNOME_STOCK_BUTTON_CANCEL) ) );
+
+ // set up spacing
+ mbox->set_spacing(4);
+ bbox->set_spacing(4);
+
+ search_text_->set_history_id(CONF_SEARCH);
+ search_text_->set_max_saved(10);
+ search_text_->load_history();
+ search_text_->set_use_arrows_always(true);
+
+ // packing
+ bbox->children().push_back(Element(*b_ok, false, false));
+ bbox->children().push_back(Element(*b_cancel, false, false));
+
+ mbox->children().push_back(Element(*search_text_, true, true));
+ mbox->children().push_back(Element(*button_regexp_, false, false));
+ mbox->children().push_back(Element(*sep, false, false));
+ mbox->children().push_back(Element(*bbox, false, false));
+
+ // packing dialog to main window
+ dialog_ = mbox;
+ mainAppWin->add_action(*dialog_, N_(" Insert Citation: Enter keyword(s) or regular expression "));
+
+ // setting focus
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET(search_text_->get_entry()->gtkobj()), GTK_CAN_DEFAULT);
+ gtk_widget_grab_focus (GTK_WIDGET(search_text_->get_entry()->gtkobj()));
+ gtk_widget_grab_default (GTK_WIDGET(search_text_->get_entry()->gtkobj()));
+
+ // restoring regexp setting
+ string path = PACKAGE "/" + LOCAL_CONFIGURE_PREFIX;
+ string w;
+ w = path + "/" + CONF_REGEXP + CONF_REGEXP_DEFAULT;
+ button_regexp_->set_active( (gnome_config_get_int(w.c_str()) > 0) );
+
+ // connecting signals
+ b_ok->clicked.connect(slot(this, &FormCitation::moveFromSearchToSelect));
+ search_text_->get_entry()->activate.connect(slot(this, &FormCitation::moveFromSearchToSelect));
+
+ b_cancel->clicked.connect(slot(mainAppWin, &GLyxAppWin::remove_action));
+
+ dialog_->destroy.connect(slot(this, &FormCitation::free));
+ }
+}
+
+void FormCitation::moveFromSearchToSelect()
+{
+ search_string_ = search_text_->get_entry()->get_text();
+ use_regexp_ = button_regexp_->get_active();
+
+ // saving configuration
+ search_text_->save_history();
+
+ string path = PACKAGE "/" + LOCAL_CONFIGURE_PREFIX;
+ string w;
+ w = path + "/" + CONF_REGEXP;
+ gnome_config_set_int(w.c_str(), button_regexp_->get_active());
+ gnome_config_sync();
+
+ // moves to stage "select"
+ dialog_ = NULL;
+ mainAppWin->remove_action();
+ showStageSelect();
+}
+
+void FormCitation::showStageSelect()
+{
+ if (!dialog_)
+ {
+ using namespace Gtk::Box_Helpers;
+
+ Gtk::Box * mbox = manage( new Gtk::VBox() );
+ Gtk::Box * tbox = manage( new Gtk::HBox() );
+ Gtk::ButtonBox * bbox = manage( new Gtk::HButtonBox() );
+ Gtk::Separator * sep = manage( new Gtk::HSeparator() );
+ Gtk::ScrolledWindow * sw = manage( new Gtk::ScrolledWindow() );
+
+ info_ = manage( new Gnome::Less() );
+ paned_info_ = manage( new Gtk::HPaned() );
+ text_after_ = manage( new Gnome::Entry() );
+
+ b_ok = Gtk::wrap( GTK_BUTTON( gnome_stock_button(GNOME_STOCK_BUTTON_OK) ) );
+ b_cancel = Gtk::wrap( GTK_BUTTON( gnome_stock_button(GNOME_STOCK_BUTTON_CANCEL) ) );
+
+ // setup text_after_
+ text_after_->set_history_id(CONF_TEXTAFTER);
+ text_after_->set_max_saved(10);
+ text_after_->load_history();
+ text_after_->set_use_arrows_always(true);
+
+ sw->set_policy(GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ // constructing CList
+ vector<string> colnames;
+ colnames.push_back("INVISIBLE");
+ colnames.push_back(N_("Key"));
+ colnames.push_back(N_("Author(s)"));
+ colnames.push_back(N_("Title"));
+ colnames.push_back(N_("Year"));
+ colnames.push_back(N_("Journal"));
+ clist_bib_ = manage( new Gtk::CList(colnames) );
+ clist_bib_->column(0).set_visiblity(false);
+
+ bbox->set_layout(GTK_BUTTONBOX_END);
+
+ // set up spacing
+ mbox->set_spacing(4);
+ bbox->set_spacing(4);
+ tbox->set_spacing(4);
+
+ // packing widgets
+ sw->add(*clist_bib_);
+ paned_info_->add1(*sw);
+ paned_info_->add2(*info_);
+
+ bbox->children().push_back(Element(*b_ok, false, false));
+ bbox->children().push_back(Element(*b_cancel, false, false));
+
+ tbox->children().push_back(Element(*manage(new Gtk::Label(N_("Text after"))), false, false));
+ tbox->children().push_back(Element(*text_after_, true, true));
+ tbox->children().push_back(Element(*manage(new Gtk::VSeparator()), false, false));
+ tbox->children().push_back(Element(*bbox, false, false));
+
+ mbox->children().push_back(Element(*paned_info_,true,true));
+ mbox->children().push_back(Element(*sep, false, false));
+ mbox->children().push_back(Element(*tbox, false, false));
+
+ // packing dialog to main window
+ dialog_ = mbox;
+ mainAppWin->add_action(*dialog_, N_(" Insert Citation: Select citation "), true);
+
+ // setting focus
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET(b_ok->gtkobj()), GTK_CAN_DEFAULT);
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET(b_cancel->gtkobj()), GTK_CAN_DEFAULT);
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET(clist_bib_->gtkobj()), GTK_CAN_DEFAULT);
+ gtk_widget_grab_focus (GTK_WIDGET(clist_bib_->gtkobj()));
+ gtk_widget_grab_default (GTK_WIDGET(b_ok->gtkobj()));
+
+ // setting sizes of the widgets
+ string path;
+ string w, h;
+ path = PACKAGE "/" + LOCAL_CONFIGURE_PREFIX;
+
+ w = path + "/" + CONF_PANE_INFO + CONF_PANE_INFO_DEFAULT;
+ paned_info_->set_position( gnome_config_get_int(w.c_str()) );
+
+ int i, sz;
+ for (i = 0, sz = clist_bib_->columns().size(); i < sz; ++i)
+ {
+ w = path + "/" + CONF_COLUMN + "_" + tostr(i) + CONF_COLUMN_DEFAULT;
+ clist_bib_->column(i).set_width( gnome_config_get_int(w.c_str()) );
+ }
+
+ // connecting signals
+ b_ok->clicked.connect(slot(this, &FormCitation::applySelect));
+ b_cancel->clicked.connect(slot(mainAppWin, &GLyxAppWin::remove_action));
+
+ dialog_->destroy.connect(slot(this, &FormCitation::free));
+
+ clist_bib_->click_column.connect(slot(this, &FormCitation::sortBibList));
+ clist_bib_->select_row.connect(bind(slot(this, &FormCitation::selection_toggled),
+ true, false));
+ clist_bib_->unselect_row.connect(bind(slot(this, &FormCitation::selection_toggled),
+ false, false));
+ // retrieving data
+ vector<pair<string,string> > blist = lv_->buffer()->getBibkeyList();
+
+ for ( i = 0, sz = blist.size(); i < sz; ++i )
+ {
+ bibkeys.push_back(blist[i].first);
+ bibkeysInfo.push_back(blist[i].second);
+ }
+
+ blist.clear();
+
+ // updating list
+ search();
+ }
+}
+
+/*void FormCitation::show()