xml_->get_widget("Info", infoview_);
xml_->get_widget("CaseSensitive", casecheck_);
- xml_->get_widget("SearchCite", citeradio_);
- xml_->get_widget("SearchBib", bibradio_);
xml_->get_widget("SearchString", findentry_);
xml_->get_widget("CaseSensitive", casecheck_);
xml_->get_widget("RegularExpression", regexpcheck_);
forwardbutton_->signal_clicked().connect(
sigc::mem_fun(*this, &GCitation::next));
- bibradio_->signal_toggled().connect(
- sigc::mem_fun(*this, &GCitation::set_search_buttons));
- citeradio_->signal_toggled().connect(
- sigc::mem_fun(*this, &GCitation::set_search_buttons));
findentry_->signal_changed().connect(
sigc::mem_fun(*this, &GCitation::set_search_buttons));
cit != bibkeys.end(); ++cit) {
Gtk::TreeModel::iterator iter = allListStore_->append();
- (*iter)[bibColumns.name] = Glib::locale_to_utf8(*cit);
+ // ENCODING, FIXME: assuming ISO-8859 only for key name and info fields
+ // This is a hack to avoid a crash when populating the dialog from bibtex
+ // files containing non-ASCII characters.
+ (*iter)[bibColumns.name] = Glib::convert(*cit, "UTF-8", "ISO-8859-1");
(*iter)[bibColumns.cite] = false; //reset state
(*iter)[bibColumns.bib_order] = ++bib_order;
- (*iter)[bibColumns.info] = Glib::locale_to_utf8(
- biblio::getInfo(theMap,*cit));
+ (*iter)[bibColumns.info] = Glib::convert(biblio::getInfo(theMap,*cit), "UTF-8", "ISO-8859-1");
}
// Now mark cite keys by setting their bibColumns.cite property to true
// working on a document away from the bibtex file
// we should keep it anyway.
Gtk::TreeModel::iterator iter = allListStore_->append();
- (*iter)[bibColumns.name] = Glib::locale_to_utf8(*ccit);
+ (*iter)[bibColumns.name] = Glib::convert(*ccit, "UTF-8", "ISO-8859-1");
(*iter)[bibColumns.cite] = true;
(*iter)[bibColumns.bib_order] = ++bib_order;
- (*iter)[bibColumns.info] = Glib::locale_to_utf8(
- biblio::getInfo(theMap,*ccit));
+ (*iter)[bibColumns.info] = Glib::convert(
+ biblio::getInfo(theMap,*ccit), "UTF-8", "ISO-8859-1");
}
}
}
for (Gtk::TreeModel::const_iterator cit=children.begin();
cit!=children.end(); ++cit) {
- string item(support::trim(Glib::locale_from_utf8((*cit)[bibColumns.name])));
+ string item(support::trim(Glib::convert(
+ static_cast<Glib::ustring>((*cit)[bibColumns.name]),
+ "ISO-8859-1", "UTF-8")));
if (item.empty())
continue;
if (i++ > 0)
vector<string>::const_iterator start;
- bool search_cite = citeradio_->get_active();
bool const casesens = casecheck_->get_active();
string const str = Glib::locale_from_utf8(findentry_->get_text());
Gtk::TreeModel::iterator iter;
Gtk::TreeModel::Children::difference_type sel = 0;
- if (search_cite) {
- for (iter = (citeFilter_->children()).begin();
- iter != (citeFilter_->children()).end(); ++iter) {
-
- bibkeys.push_back(Glib::locale_from_utf8(
- (*iter)[bibColumns.name]));
- }
-
- iter = citeselection_->get_selected();
- if (iter)
- sel = std::distance((citeFilter_->children()).begin(), iter);
- } else {
- for (iter = (bibFilter_->children()).begin();
- iter != (bibFilter_->children()).end(); ++iter) {
-
- bibkeys.push_back(Glib::locale_from_utf8(
- (*iter)[bibColumns.name]));
- }
+ for (iter = (bibFilter_->children()).begin();
+ iter != (bibFilter_->children()).end(); ++iter) {
- iter = bibselection_->get_selected();
- if (iter)
- sel = std::distance(
- (bibFilter_->children()).begin(), iter);
+ bibkeys.push_back(Glib::locale_from_utf8(
+ (*iter)[bibColumns.name]));
}
+ iter = bibselection_->get_selected();
+ if (iter)
+ sel = std::distance(
+ (bibFilter_->children()).begin(), iter);
+
start = bibkeys.begin();
if (sel >= 0 &&
Gtk::TreeModel::Children::size_type(sel) < bibkeys.size())
std::advance(start, sel);
- bool is_cite = !search_cite;
- while(is_cite != search_cite) {
+ // Find the NEXT instance...
+ if (dir == biblio::FORWARD)
+ ++start;
- // Find the NEXT instance...
- if (dir == biblio::FORWARD)
- ++start;
+ vector<string>::const_iterator cit =
+ biblio::searchKeys(theMap, bibkeys, str,
+ start, type, dir, casesens);
- vector<string>::const_iterator cit =
- biblio::searchKeys(theMap, bibkeys, str,
- start, type, dir, casesens);
-
- if (cit == bibkeys.end()) {
- if (dir == biblio::FORWARD) {
- start = bibkeys.begin();
- }
- else {
- start = bibkeys.end();
- --start;
- }
+ if (cit == bibkeys.end()) {
+ if (dir == biblio::FORWARD) {
+ start = bibkeys.begin();
+ }
+ else {
+ start = bibkeys.end();
+ --start;
+ }
- cit = biblio::searchKeys(theMap, bibkeys, str,
- start, type, dir, casesens);
+ cit = biblio::searchKeys(theMap, bibkeys, str,
+ start, type, dir, casesens);
- if (cit == bibkeys.end()) {
- return;
- }
- }
- vector<string>::const_iterator bibstart = bibkeys.begin();
- vector<string>::difference_type const found =
- std::distance(bibstart, cit);
- if (found == sel)
+ if (cit == bibkeys.end()) {
return;
-
- start = cit;
- if (search_cite)
- iter = (citeFilter_->children()).begin();
- else
- iter = (bibFilter_->children()).begin();
- std::advance(iter, found);
- is_cite = (*iter)[bibColumns.cite];
+ }
}
+ vector<string>::const_iterator bibstart = bibkeys.begin();
+ vector<string>::difference_type const found =
+ std::distance(bibstart, cit);
+ if (found == sel)
+ return;
+
+ start = cit;
+ iter = (bibFilter_->children()).begin();
+ std::advance(iter, found);
// Highlight and scroll to the key that was found
- if (search_cite) {
- citeselection_->select(iter);
- citekeysview_->set_cursor(Gtk::TreePath(iter));
- citekeysview_->scroll_to_row(Gtk::TreePath(iter));
- cite_selected();
- } else {
- bibselection_->select(iter);
- bibkeysview_->set_cursor(Gtk::TreePath(iter));
- bibkeysview_->scroll_to_row(Gtk::TreePath(iter));
- bib_selected();
- }
+ bibselection_->select(iter);
+ bibkeysview_->set_cursor(Gtk::TreePath(iter));
+ bibkeysview_->scroll_to_row(Gtk::TreePath(iter));
+ bib_selected();
}
void GCitation::set_search_buttons()
{
- bool val = findentry_->get_text_length() && (
- (citeradio_->get_active() && !(citeFilter_->children()).empty())
- || (bibradio_->get_active() && !(bibFilter_->children()).empty())
- );
+ bool val = findentry_->get_text_length()
+ && !(bibFilter_->children()).empty();
backbutton_->set_sensitive(val);
forwardbutton_->set_sensitive(val);
}
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
- <property name="label">gtk-undo</property>
- <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">0</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment19">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox10">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-undo</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="label">R_evert</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
</widget>
</child>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
- <child>
- <widget class="GtkRadioButton" id="SearchCite">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">S_elected keys</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="SearchBib">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">A_vailable keys</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">SearchCite</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
<child>
<widget class="GtkCheckButton" id="CaseSensitive">
<property name="visible">True</property>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>