Rework BibTeX dialog

Fixes concerns reported in #11239
This commit is contained in:
Juergen Spitzmueller 2018-08-11 12:17:42 +02:00
parent 3058debb60
commit 07d760ef30
5 changed files with 342 additions and 417 deletions

View File

@ -20,6 +20,7 @@
#include "CiteEnginesList.h" #include "CiteEnginesList.h"
#include "Encoding.h" #include "Encoding.h"
#include "FuncRequest.h" #include "FuncRequest.h"
#include "GuiApplication.h"
#include "LyXRC.h" #include "LyXRC.h"
#include "qt_helpers.h" #include "qt_helpers.h"
#include "Validator.h" #include "Validator.h"
@ -61,55 +62,60 @@ GuiBibtex::GuiBibtex(GuiView & lv)
QDialog::setModal(true); QDialog::setModal(true);
setWindowModality(Qt::WindowModal); setWindowModality(Qt::WindowModal);
// The filter bar
filter_ = new FancyLineEdit(this);
filter_->setButtonPixmap(FancyLineEdit::Right, getPixmap("images/", "editclear", "svgz,png"));
filter_->setButtonVisible(FancyLineEdit::Right, true);
filter_->setButtonToolTip(FancyLineEdit::Right, qt_("Clear text"));
filter_->setAutoHideButton(FancyLineEdit::Right, true);
filter_->setPlaceholderText(qt_("All avail. databases"));
filterBarL->addWidget(filter_, 0);
findKeysLA->setBuddy(filter_);
connect(buttonBox, SIGNAL(clicked(QAbstractButton *)), connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
this, SLOT(slotButtonBox(QAbstractButton *))); this, SLOT(slotButtonBox(QAbstractButton *)));
connect(stylePB, SIGNAL(clicked()), connect(stylePB, SIGNAL(clicked()),
this, SLOT(browsePressed())); this, SLOT(browseBstPressed()));
connect(deletePB, SIGNAL(clicked()),
this, SLOT(deletePressed()));
connect(upPB, SIGNAL(clicked()),
this, SLOT(upPressed()));
connect(downPB, SIGNAL(clicked()),
this, SLOT(downPressed()));
connect(styleCB, SIGNAL(editTextChanged(QString)), connect(styleCB, SIGNAL(editTextChanged(QString)),
this, SLOT(change_adaptor())); this, SLOT(change_adaptor()));
connect(databaseLW, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this, SLOT(databaseChanged()));
connect(bibtocCB, SIGNAL(clicked()), connect(bibtocCB, SIGNAL(clicked()),
this, SLOT(change_adaptor())); this, SLOT(change_adaptor()));
connect(btPrintCO, SIGNAL(activated(int)), connect(btPrintCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor())); this, SLOT(change_adaptor()));
connect(addBibPB, SIGNAL(clicked()),
this, SLOT(addPressed()));
connect(rescanPB, SIGNAL(clicked()), connect(rescanPB, SIGNAL(clicked()),
this, SLOT(rescanClicked())); this, SLOT(rescanClicked()));
connect(biblatexOptsLE, SIGNAL(textChanged(QString)), connect(biblatexOptsLE, SIGNAL(textChanged(QString)),
this, SLOT(change_adaptor())); this, SLOT(change_adaptor()));
connect(bibEncodingCO, SIGNAL(activated(int)), connect(bibEncodingCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor())); this, SLOT(change_adaptor()));
connect(browseBibPB, SIGNAL(clicked()),
add_ = new GuiBibtexAddDialog(this);
add_bc_.setPolicy(ButtonPolicy::OkCancelPolicy);
add_bc_.setOK(add_->buttonBox->button(QDialogButtonBox::Ok));
add_bc_.setCancel(add_->buttonBox->button(QDialogButtonBox::Cancel));
add_bc_.addCheckedLineEdit(add_->bibED, 0);
connect(add_->bibED, SIGNAL(textChanged(QString)),
this, SLOT(bibEDChanged()));
connect(add_->buttonBox, SIGNAL(clicked(QAbstractButton *)),
this, SLOT(addBBClicked(QAbstractButton *)));
connect(add_->rescanPB, SIGNAL(clicked()),
this, SLOT(rescanClicked()));
connect(add_->bibLW, SIGNAL(itemActivated(QListWidgetItem *)),
this, SLOT(addDatabase()));
connect(add_->bibLW, SIGNAL(itemActivated(QListWidgetItem *)),
add_, SLOT(accept()));
connect(add_->bibLW, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this, SLOT(availableChanged()));
connect(add_->browsePB, SIGNAL(clicked()),
this, SLOT(browseBibPressed())); this, SLOT(browseBibPressed()));
add_->bibLW->setToolTip(formatToolTip(qt_("This list consists of all databases that are indexed by LaTeX and thus are found without a file path. " selectionManager = new GuiSelectionManager(this, availableLV, selectedLV,
addBibPB, deletePB, upPB, downPB, &available_model_, &selected_model_);
connect(selectionManager, SIGNAL(selectionChanged()),
this, SLOT(databaseChanged()));
connect(selectionManager, SIGNAL(updateHook()),
this, SLOT(selUpdated()));
connect(selectionManager, SIGNAL(okHook()),
this, SLOT(on_buttonBox_accepted()));
connect(filter_, SIGNAL(rightButtonClicked()),
this, SLOT(resetFilter()));
connect(filter_, SIGNAL(textEdited(QString)),
this, SLOT(filterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()),
this, SLOT(filterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
availableLV, [=](){ focusAndHighlight(availableLV); });
#endif
availableLV->setToolTip(formatToolTip(qt_("This list consists of all databases that are indexed by LaTeX and thus are found without a file path. "
"This is usually everything in the bib/ subdirectory of LaTeX's texmf tree. " "This is usually everything in the bib/ subdirectory of LaTeX's texmf tree. "
"If you want to reuse your own database, this is the place you should store it."))); "If you want to reuse your own database, this is the place you should store it.")));
@ -117,14 +123,10 @@ GuiBibtex::GuiBibtex(GuiView & lv)
bc().setOK(buttonBox->button(QDialogButtonBox::Ok)); bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
bc().setApply(buttonBox->button(QDialogButtonBox::Apply)); bc().setApply(buttonBox->button(QDialogButtonBox::Apply));
bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel)); bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel));
bc().addReadOnly(databaseLW);
bc().addReadOnly(stylePB); bc().addReadOnly(stylePB);
bc().addReadOnly(styleCB); bc().addReadOnly(styleCB);
bc().addReadOnly(bibtocCB); bc().addReadOnly(bibtocCB);
bc().addReadOnly(addBibPB);
bc().addReadOnly(bibEncodingCO); bc().addReadOnly(bibEncodingCO);
// Delete/Up/Down are handled with more conditions in
// databaseChanged().
// Always put the default encoding in the first position. // Always put the default encoding in the first position.
bibEncodingCO->addItem(qt_("Document Encoding"), "default"); bibEncodingCO->addItem(qt_("Document Encoding"), "default");
@ -139,43 +141,59 @@ GuiBibtex::GuiBibtex(GuiView & lv)
++it; ++it;
} }
// Make sure the delete/up/down buttons are disabled if necessary. setFocusProxy(filter_);
databaseChanged();
} }
void GuiBibtex::addBBClicked(QAbstractButton * button) void GuiBibtex::init()
{ {
switch (add_->buttonBox->standardButton(button)) { all_bibs_ = bibFiles(false);
case QDialogButtonBox::Ok: available_model_.setStringList(all_bibs_);
addDatabase();
add_->accept();
break;
case QDialogButtonBox::Cancel:
add_->reject();
break;
default:
break;
}
}
QString bibs = toqstr(params_["bibfiles"]);
if (bibs.isEmpty())
selected_bibs_.clear();
else
selected_bibs_ = bibs.split(",");
setSelectedBibs(selected_bibs_);
void GuiBibtex::bibEDChanged() buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
{ buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
// Indicate to the button controller that the contents have selectionManager->update();
// changed. The actual test of validity is carried out by
// the checkedLineEdit.
add_bc_.setValid(true);
} }
void GuiBibtex::change_adaptor() void GuiBibtex::change_adaptor()
{ {
setButtons();
changed(); changed();
} }
void GuiBibtex::browsePressed() void GuiBibtex::setButtons()
{
int const srows = selectedLV->model()->rowCount();
buttonBox->button(QDialogButtonBox::Apply)->setEnabled(srows > 0);
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(srows > 0);
}
void GuiBibtex::selUpdated()
{
selectionManager->update();
changed();
}
void GuiBibtex::on_buttonBox_accepted()
{
applyView();
clearSelection();
hide();
}
void GuiBibtex::browseBstPressed()
{ {
QString const file = browseBst(QString()); QString const file = browseBst(QString());
@ -209,99 +227,12 @@ void GuiBibtex::browseBibPressed()
return; return;
QString const f = changeExtension(file, ""); QString const f = changeExtension(file, "");
bool present = false;
for (int i = 0; i < add_->bibLW->count(); ++i) { if (!selected_bibs_.contains(f)) {
if (add_->bibLW->item(i)->text() == f) selected_bibs_.append(f);
present = true; setSelectedBibs(selected_bibs_);
}
if (!present) {
add_->bibLW->addItem(f);
changed(); changed();
} }
add_->bibED->setText(f);
}
void GuiBibtex::addPressed()
{
add_bc_.setValid(false);
add_->exec();
}
void GuiBibtex::addDatabase()
{
int const sel = add_->bibLW->currentRow();
QString const file = add_->bibED->text().trimmed();
if (sel < 0 && file.isEmpty())
return;
// Add the selected browser_bib keys to browser_database
// multiple selections are possible
for (int i = 0; i != add_->bibLW->count(); ++i) {
QListWidgetItem * const item = add_->bibLW->item(i);
if (add_->bibLW->isItemSelected(item)) {
add_->bibLW->setItemSelected(item, false);
QList<QListWidgetItem *> matches =
databaseLW->findItems(item->text(), Qt::MatchExactly);
if (matches.empty()) {
QString label = item->text();
QListWidgetItem * db = new QListWidgetItem(label);
db->setFlags(db->flags() | Qt::ItemIsSelectable);
databaseLW->addItem(db);
}
}
}
if (!file.isEmpty()) {
add_->bibED->clear();
QString const f = changeExtension(file, "");
QList<QListWidgetItem *> matches =
databaseLW->findItems(f, Qt::MatchExactly);
if (matches.empty()) {
QListWidgetItem * db = new QListWidgetItem(f);
db->setFlags(db->flags() | Qt::ItemIsSelectable);
databaseLW->addItem(db);
}
}
databaseChanged();
changed();
}
void GuiBibtex::deletePressed()
{
QListWidgetItem *cur = databaseLW->takeItem(databaseLW->currentRow());
if (cur) {
delete cur;
databaseChanged();
changed();
}
}
void GuiBibtex::upPressed()
{
int row = databaseLW->currentRow();
QListWidgetItem *cur = databaseLW->takeItem(row);
databaseLW->insertItem(row - 1, cur);
databaseLW->setCurrentItem(cur);
changed();
}
void GuiBibtex::downPressed()
{
int row = databaseLW->currentRow();
QListWidgetItem *cur = databaseLW->takeItem(row);
databaseLW->insertItem(row + 1, cur);
databaseLW->setCurrentItem(cur);
changed();
} }
@ -312,20 +243,49 @@ void GuiBibtex::rescanClicked()
} }
void GuiBibtex::databaseChanged() void GuiBibtex::clearSelection()
{ {
bool readOnly = isBufferReadonly(); selected_bibs_.clear();
int count = databaseLW->count(); setSelectedBibs(selected_bibs_);
int row = databaseLW->currentRow();
deletePB->setEnabled(!readOnly && row != -1);
upPB->setEnabled(!readOnly && count > 1 && row > 0);
downPB->setEnabled(!readOnly && count > 1 && row < count - 1);
} }
void GuiBibtex::availableChanged() void GuiBibtex::setSelectedBibs(QStringList const sl)
{ {
add_bc_.setValid(true); selected_model_.clear();
QStringList::const_iterator it = sl.begin();
QStringList::const_iterator end = sl.end();
for (int i = 0; it != end; ++it, ++i) {
QStandardItem * si = new QStandardItem();
si->setData(*it);
si->setText(*it);
si->setToolTip(*it);
si->setEditable(false);
selected_model_.insertRow(i, si);
}
}
QStringList GuiBibtex::selectedBibs()
{
QStringList res;
for (int i = 0; i != selected_model_.rowCount(); ++i) {
QStandardItem const * item = selected_model_.item(i);
if (item)
res.append(item->text());
}
return res;
}
void GuiBibtex::databaseChanged()
{
QString const item = selectionManager->getSelectedIndex().data().toString();
if (!selected_bibs_.contains(item)) {
selected_bibs_.append(item);
} else
selected_bibs_ = selectedBibs();
setSelectedBibs(selected_bibs_);
} }
@ -339,27 +299,6 @@ void GuiBibtex::updateContents()
else else
setTitle(qt_("BibTeX Bibliography")); setTitle(qt_("BibTeX Bibliography"));
databaseLW->clear();
docstring bibs = params_["bibfiles"];
docstring bib;
while (!bibs.empty()) {
bibs = split(bibs, bib, ',');
bib = trim(bib);
if (!bib.empty()) {
QListWidgetItem * db = new QListWidgetItem(toqstr(bib));
db->setFlags(db->flags() | Qt::ItemIsSelectable);
databaseLW->addItem(db);
}
}
add_->bibLW->clear();
QStringList bibfiles = bibFiles();
for (int i = 0; i != bibfiles.count(); ++i)
add_->bibLW->addItem(changeExtension(bibfiles[i], ""));
QString const bibstyle = styleFile(); QString const bibstyle = styleFile();
bibtocCB->setChecked(bibtotoc() && !bibtopic); bibtocCB->setChecked(bibtotoc() && !bibtopic);
@ -424,11 +363,11 @@ void GuiBibtex::applyView()
{ {
docstring dbs; docstring dbs;
unsigned int maxCount = databaseLW->count(); unsigned int maxCount = selected_bibs_.count();
for (unsigned int i = 0; i < maxCount; i++) { for (unsigned int i = 0; i < maxCount; i++) {
if (i != 0) if (i != 0)
dbs += ','; dbs += ',';
QString item = databaseLW->item(i)->text(); QString item = selected_bibs_.at(i);
docstring bibfile = qstring_to_ucs4(item); docstring bibfile = qstring_to_ucs4(item);
dbs += bibfile; dbs += bibfile;
} }
@ -459,12 +398,6 @@ void GuiBibtex::applyView()
} }
bool GuiBibtex::isValid()
{
return databaseLW->count() != 0;
}
QString GuiBibtex::browseBib(QString const & in_name) const QString GuiBibtex::browseBib(QString const & in_name) const
{ {
QString const label1 = qt_("D&ocuments"); QString const label1 = qt_("D&ocuments");
@ -501,7 +434,7 @@ QStringList GuiBibtex::bibStyles() const
} }
QStringList GuiBibtex::bibFiles() const QStringList GuiBibtex::bibFiles(bool const extension) const
{ {
QStringList sdata = texFileList("bibFiles.lst"); QStringList sdata = texFileList("bibFiles.lst");
// test whether we have a valid list, otherwise run rescan // test whether we have a valid list, otherwise run rescan
@ -510,7 +443,8 @@ QStringList GuiBibtex::bibFiles() const
sdata = texFileList("bibFiles.lst"); sdata = texFileList("bibFiles.lst");
} }
for (int i = 0; i != sdata.size(); ++i) for (int i = 0; i != sdata.size(); ++i)
sdata[i] = onlyFileName(sdata[i]); sdata[i] = extension ? onlyFileName(sdata[i])
: changeExtension(onlyFileName(sdata[i]), "");
// sort on filename only (no path) // sort on filename only (no path)
sdata.sort(); sdata.sort();
return sdata; return sdata;
@ -526,6 +460,38 @@ void GuiBibtex::rescanBibStyles() const
} }
void GuiBibtex::findText(QString const & text)
{
QStringList const result = bibFiles(false).filter(text);
available_model_.setStringList(result);
}
void GuiBibtex::filterChanged(const QString & text)
{
if (!text.isEmpty()) {
findText(filter_->text());
return;
}
findText(filter_->text());
filter_->setFocus();
}
void GuiBibtex::filterPressed()
{
findText(filter_->text());
}
void GuiBibtex::resetFilter()
{
filter_->setText(QString());
findText(filter_->text());
}
bool GuiBibtex::usingBibtopic() const bool GuiBibtex::usingBibtopic() const
{ {
return buffer().params().useBibtopic(); return buffer().params().useBibtopic();
@ -577,6 +543,7 @@ QString GuiBibtex::styleFile() const
bool GuiBibtex::initialiseParams(std::string const & sdata) bool GuiBibtex::initialiseParams(std::string const & sdata)
{ {
InsetCommand::string2params(sdata, params_); InsetCommand::string2params(sdata, params_);
init();
return true; return true;
} }
@ -588,7 +555,6 @@ void GuiBibtex::dispatchParams()
} }
Dialog * createGuiBibtex(GuiView & lv) { return new GuiBibtex(lv); } Dialog * createGuiBibtex(GuiView & lv) { return new GuiBibtex(lv); }

View File

@ -14,28 +14,20 @@
#define GUIBIBTEX_H #define GUIBIBTEX_H
#include "GuiDialog.h" #include "GuiDialog.h"
#include "GuiSelectionManager.h"
#include "ButtonController.h" #include "ButtonController.h"
#include "FancyLineEdit.h"
#include "ui_BibtexUi.h" #include "ui_BibtexUi.h"
#include "ui_BibtexAddUi.h" #include "ui_BibtexAddUi.h"
#include "insets/InsetCommandParams.h" #include "insets/InsetCommandParams.h"
#include <QStandardItemModel>
#include <QStringListModel>
namespace lyx { namespace lyx {
namespace frontend { namespace frontend {
class GuiBibtexAddDialog : public QDialog, public Ui::BibtexAddUi
{
public:
GuiBibtexAddDialog(QWidget * parent) : QDialog(parent)
{
Ui::BibtexAddUi::setupUi(this);
QDialog::setModal(true);
setWindowModality(Qt::WindowModal);
}
};
class GuiBibtex : public GuiDialog, public Ui::BibtexUi class GuiBibtex : public GuiDialog, public Ui::BibtexUi
{ {
Q_OBJECT Q_OBJECT
@ -44,23 +36,18 @@ public:
explicit GuiBibtex(GuiView & lv); explicit GuiBibtex(GuiView & lv);
private Q_SLOTS: private Q_SLOTS:
void addBBClicked(QAbstractButton * button);
void change_adaptor(); void change_adaptor();
void browsePressed(); void on_buttonBox_accepted();
void browseBstPressed();
void browseBibPressed(); void browseBibPressed();
void addPressed();
void addDatabase();
void deletePressed();
void upPressed();
void downPressed();
void databaseChanged(); void databaseChanged();
void availableChanged();
void bibEDChanged();
void rescanClicked(); void rescanClicked();
void selUpdated();
void filterPressed();
void filterChanged(const QString & text);
void resetFilter();
private: private:
///
bool isValid();
/// Apply changes /// Apply changes
void applyView(); void applyView();
/// update /// update
@ -73,7 +60,7 @@ private:
/// get the list of bst files /// get the list of bst files
QStringList bibStyles() const; QStringList bibStyles() const;
/// get the list of bib files /// get the list of bib files
QStringList bibFiles() const; QStringList bibFiles(bool const extension = true) const;
/// build filelists of all availabe bib/bst/cls/sty-files. done through /// build filelists of all availabe bib/bst/cls/sty-files. done through
/// kpsewhich and an external script, saved in *Files.lst /// kpsewhich and an external script, saved in *Files.lst
void rescanBibStyles() const; void rescanBibStyles() const;
@ -85,6 +72,19 @@ private:
bool usingBiblatex() const; bool usingBiblatex() const;
/// which stylefile do we use? /// which stylefile do we use?
QString styleFile() const; QString styleFile() const;
/// Clear selected keys
void clearSelection();
/// Set selected keys
void setSelectedBibs(QStringList const);
/// prepares a call to GuiCitation::searchKeys when we
/// are ready to search the Bib entries
void findText(QString const & text);
///
void init();
/// Get selected keys
QStringList selectedBibs();
///
void setButtons();
/// ///
bool initialiseParams(std::string const & data); bool initialiseParams(std::string const & data);
@ -99,9 +99,17 @@ private:
/// ///
InsetCommandParams params_; InsetCommandParams params_;
/// ///
GuiBibtexAddDialog * add_; GuiSelectionManager * selectionManager;
/// /// available keys.
ButtonController add_bc_; QStringListModel available_model_;
/// selected keys.
QStandardItemModel selected_model_;
/// All keys.
QStringList all_bibs_;
/// Cited keys.
QStringList selected_bibs_;
/// contains the search box
FancyLineEdit * filter_;
}; };
} // namespace frontend } // namespace frontend

View File

@ -268,7 +268,6 @@ UIFILES = \
AboutUi.ui \ AboutUi.ui \
BibitemUi.ui \ BibitemUi.ui \
BiblioUi.ui \ BiblioUi.ui \
BibtexAddUi.ui \
BibtexUi.ui \ BibtexUi.ui \
BoxUi.ui \ BoxUi.ui \
BranchesUi.ui \ BranchesUi.ui \

View File

@ -1,164 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>BibtexAddUi</class>
<widget class="QDialog" name="BibtexAddUi">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>328</width>
<height>385</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>LyX: Add BibTeX Database</string>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="bibLA">
<property name="text">
<string>Databases fou&amp;nd by LaTeX:</string>
</property>
<property name="buddy">
<cstring>bibLW</cstring>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QListWidget" name="bibLW">
<property name="toolTip">
<string/>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>162</width>
<height>29</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="rescanPB">
<property name="toolTip">
<string>Rescan LaTeX's index for new databases and styles</string>
</property>
<property name="text">
<string>&amp;Rescan</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="localLA">
<property name="toolTip">
<string>Here you can enter a local BibTeX database name or browse your directory.</string>
</property>
<property name="text">
<string>Lo&amp;cal databases:</string>
</property>
<property name="buddy">
<cstring>bibED</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="bibED">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Here you can enter a local BibTeX database name</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browsePB">
<property name="toolTip">
<string>Browse your local directory</string>
</property>
<property name="text">
<string>&amp;Browse...</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>bibLW</tabstop>
<tabstop>bibED</tabstop>
<tabstop>browsePB</tabstop>
</tabstops>
<includes>
<include location="local">qt_i18n.h</include>
</includes>
<resources/>
<connections/>
</ui>

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>397</width> <width>523</width>
<height>536</height> <height>576</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -27,17 +27,58 @@
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QListWidget" name="databaseLW"/> <layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="bibLA">
<property name="text">
<string>Found b&amp;y LaTeX:</string>
</property>
<property name="buddy">
<cstring>availableLV</cstring>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="availableLV">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
</item>
</layout>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string/>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="addBibPB"> <widget class="QPushButton" name="addBibPB">
<property name="toolTip"> <property name="toolTip">
<string>Add a BibTeX database file</string> <string>Add the selected BibTeX database from the list on the left</string>
</property> </property>
<property name="text"> <property name="text">
<string>&amp;Add...</string> <string>&amp;Add Selected[[bib]]</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browseBibPB">
<property name="toolTip">
<string>Add a BibTeX database from your local directory</string>
</property>
<property name="text">
<string>Add &amp;Local...</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
@ -53,28 +94,118 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="upPB"> <widget class="QPushButton" name="upPB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Move the selected database upwards in the list</string> <string>Move the selected citation up (Ctrl-Up)</string>
</property> </property>
<property name="text"> <property name="text">
<string>&amp;Up</string> <string>&amp;Up</string>
</property> </property>
<property name="icon">
<iconset>
<normaloff>.</normaloff>.</iconset>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="downPB"> <widget class="QPushButton" name="downPB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Move the selected database downwards in the list</string> <string>Move the selected citation down (Ctrl-Down)</string>
</property> </property>
<property name="text"> <property name="text">
<string>Do&amp;wn</string> <string>Do&amp;wn</string>
</property> </property>
<property name="icon">
<iconset>
<normaloff>.</normaloff>.</iconset>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="2">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Sele&amp;cted:</string>
</property>
<property name="buddy">
<cstring>selectedLV</cstring>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="selectedLV">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0" colspan="2"> <item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="findKeysLA">
<property name="text">
<string>&amp;Filter:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="filterBarL"/>
</item>
</layout>
</item>
<item row="1" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QLabel" name="bibEncodingLA"> <widget class="QLabel" name="bibEncodingLA">
<property name="text"> <property name="text">
@ -92,19 +223,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
@ -144,10 +262,10 @@
<item row="0" column="1"> <item row="0" column="1">
<widget class="QPushButton" name="stylePB"> <widget class="QPushButton" name="stylePB">
<property name="toolTip"> <property name="toolTip">
<string>Choose a style file</string> <string>Select a style file from your local directory</string>
</property> </property>
<property name="text"> <property name="text">
<string>&amp;Browse...</string> <string>Add L&amp;ocal...</string>
</property> </property>
<property name="autoDefault"> <property name="autoDefault">
<bool>false</bool> <bool>false</bool>
@ -207,7 +325,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer_2"> <widget class="QCheckBox" name="bibtocCB">
<property name="toolTip">
<string>Add bibliography to the table of contents</string>
</property>
<property name="text">
<string>Add bibliography to &amp;TOC</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
@ -221,16 +349,6 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0">
<widget class="QCheckBox" name="bibtocCB">
<property name="toolTip">
<string>Add bibliography to the table of contents</string>
</property>
<property name="text">
<string>Add bibliography to &amp;TOC</string>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
@ -310,11 +428,9 @@
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>addBibPB</tabstop>
<tabstop>deletePB</tabstop> <tabstop>deletePB</tabstop>
<tabstop>styleCB</tabstop> <tabstop>styleCB</tabstop>
<tabstop>stylePB</tabstop> <tabstop>stylePB</tabstop>
<tabstop>bibtocCB</tabstop>
<tabstop>btPrintCO</tabstop> <tabstop>btPrintCO</tabstop>
</tabstops> </tabstops>
<includes> <includes>