mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
more work on citation dialog for MVC
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1857 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a24a97ed14
commit
24cdf09610
@ -31,7 +31,6 @@
|
||||
#include "ControlCitation.h"
|
||||
#include "gettext.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "biblio.h"
|
||||
#include "helper_funcs.h"
|
||||
|
||||
|
||||
@ -93,205 +92,6 @@ void FormCitation::build()
|
||||
bc().refresh();
|
||||
}
|
||||
|
||||
#if K
|
||||
ButtonPolicy::SMInput FormCitation::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
ButtonPolicy::SMInput activate = ButtonPolicy::SMI_NOOP;
|
||||
|
||||
biblio::InfoMap const & theMap = controller().bibkeysInfo();
|
||||
|
||||
if (ob == dialog_->browser_bib) {
|
||||
fl_deselect_browser(dialog_->browser_cite);
|
||||
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_bib);
|
||||
if (sel < 1 || sel > bibkeys.size())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Put into browser_info the additional info associated with
|
||||
// the selected browser_bib key
|
||||
fl_clear_browser(dialog_->browser_info);
|
||||
|
||||
string const tmp = formatted(biblio::getInfo(theMap,
|
||||
bibkeys[sel-1]),
|
||||
dialog_->browser_info->w-10 );
|
||||
fl_add_browser_line(dialog_->browser_info, tmp.c_str());
|
||||
|
||||
// Highlight the selected browser_bib key in browser_cite if
|
||||
// present
|
||||
vector<string>::const_iterator cit =
|
||||
find(citekeys.begin(), citekeys.end(), bibkeys[sel-1]);
|
||||
|
||||
if (cit != citekeys.end()) {
|
||||
int const n = int(cit - citekeys.begin());
|
||||
fl_select_browser_line(dialog_->browser_cite, n+1);
|
||||
fl_set_browser_topline(dialog_->browser_cite, n+1);
|
||||
}
|
||||
|
||||
if (!controller().isReadonly()) {
|
||||
if (cit != citekeys.end()) {
|
||||
setBibButtons(OFF);
|
||||
setCiteButtons(ON);
|
||||
} else {
|
||||
setBibButtons(ON);
|
||||
setCiteButtons(OFF);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (ob == dialog_->browser_cite) {
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_cite);
|
||||
if (sel < 1 || sel > citekeys.size())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
if (!controller().isReadonly()) {
|
||||
setBibButtons(OFF);
|
||||
setCiteButtons(ON);
|
||||
}
|
||||
|
||||
// Highlight the selected browser_cite key in browser_bib
|
||||
vector<string>::const_iterator cit =
|
||||
find(bibkeys.begin(), bibkeys.end(), citekeys[sel-1]);
|
||||
|
||||
if (cit != bibkeys.end()) {
|
||||
int const n = int(cit - bibkeys.begin());
|
||||
fl_select_browser_line(dialog_->browser_bib, n+1);
|
||||
fl_set_browser_topline(dialog_->browser_bib, n+1);
|
||||
|
||||
// Put into browser_info the additional info associated
|
||||
// with the selected browser_cite key
|
||||
fl_clear_browser(dialog_->browser_info);
|
||||
string const tmp =
|
||||
formatted(biblio::getInfo(theMap,
|
||||
bibkeys[sel-1]),
|
||||
dialog_->browser_info->w-10);
|
||||
fl_add_browser_line(dialog_->browser_info, tmp.c_str());
|
||||
}
|
||||
|
||||
} else if (ob == dialog_->button_add) {
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_bib);
|
||||
if (sel < 1 || sel > bibkeys.size())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Add the selected browser_bib key to browser_cite
|
||||
fl_addto_browser(dialog_->browser_cite,
|
||||
bibkeys[sel-1].c_str());
|
||||
citekeys.push_back(bibkeys[sel-1]);
|
||||
|
||||
int const n = int(citekeys.size());
|
||||
fl_select_browser_line(dialog_->browser_cite, n);
|
||||
|
||||
setBibButtons(OFF);
|
||||
setCiteButtons(ON);
|
||||
activate = ButtonPolicy::SMI_VALID;
|
||||
|
||||
} else if (ob == dialog_->button_del) {
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_cite);
|
||||
if (sel < 1 || sel > citekeys.size())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Remove the selected key from browser_cite
|
||||
fl_delete_browser_line(dialog_->browser_cite, sel) ;
|
||||
citekeys.erase(citekeys.begin() + sel-1);
|
||||
|
||||
setBibButtons(ON);
|
||||
setCiteButtons(OFF);
|
||||
activate = ButtonPolicy::SMI_VALID;
|
||||
|
||||
} else if (ob == dialog_->button_up) {
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_cite);
|
||||
if (sel < 2 || sel > citekeys.size())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Move the selected key up one line
|
||||
vector<string>::iterator it = citekeys.begin() + sel-1;
|
||||
string const tmp = *it;
|
||||
|
||||
fl_delete_browser_line(dialog_->browser_cite, sel);
|
||||
citekeys.erase(it);
|
||||
|
||||
fl_insert_browser_line(dialog_->browser_cite, sel-1, tmp.c_str());
|
||||
fl_select_browser_line(dialog_->browser_cite, sel-1);
|
||||
citekeys.insert(it-1, tmp);
|
||||
setCiteButtons(ON);
|
||||
activate = ButtonPolicy::SMI_VALID;
|
||||
|
||||
} else if (ob == dialog_->button_down) {
|
||||
unsigned int const sel = fl_get_browser(dialog_->browser_cite);
|
||||
if (sel < 1 || sel > citekeys.size()-1)
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Move the selected key down one line
|
||||
vector<string>::iterator it = citekeys.begin() + sel-1;
|
||||
string const tmp = *it;
|
||||
|
||||
fl_delete_browser_line(dialog_->browser_cite, sel);
|
||||
citekeys.erase(it);
|
||||
|
||||
fl_insert_browser_line(dialog_->browser_cite, sel+1, tmp.c_str());
|
||||
fl_select_browser_line(dialog_->browser_cite, sel+1);
|
||||
citekeys.insert(it+1, tmp);
|
||||
setCiteButtons(ON);
|
||||
activate = ButtonPolicy::SMI_VALID;
|
||||
|
||||
} else if (ob == dialog_->button_search_type) {
|
||||
if (fl_get_button(dialog_->button_search_type))
|
||||
fl_set_object_label(dialog_->button_search_type,
|
||||
_("Regex"));
|
||||
else
|
||||
fl_set_object_label(dialog_->button_search_type,
|
||||
_("Simple"));
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
} else if (ob == dialog_->button_previous ||
|
||||
ob == dialog_->button_next) {
|
||||
|
||||
string const str = fl_get_input(dialog_->input_search);
|
||||
|
||||
biblio::Direction const dir =
|
||||
(ob == dialog_->button_previous) ?
|
||||
biblio::BACKWARD : biblio::FORWARD;
|
||||
|
||||
biblio::Search const type =
|
||||
fl_get_button(dialog_->button_search_type) ?
|
||||
biblio::REGEX : biblio::SIMPLE;
|
||||
|
||||
vector<string>::const_iterator start = bibkeys.begin();
|
||||
int const sel = fl_get_browser(dialog_->browser_bib);
|
||||
if (sel >= 1 && sel <= int(bibkeys.size()))
|
||||
start += sel-1;
|
||||
|
||||
// Find the NEXT instance...
|
||||
if (dir == biblio::FORWARD)
|
||||
start += 1;
|
||||
else
|
||||
start -= 1;
|
||||
|
||||
vector<string>::const_iterator const cit =
|
||||
biblio::searchKeys(theMap, bibkeys, str,
|
||||
start, type, dir);
|
||||
|
||||
if (cit == bibkeys.end())
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
int const found = int(cit - bibkeys.begin()) + 1;
|
||||
if (found == sel)
|
||||
return ButtonPolicy::SMI_NOOP;
|
||||
|
||||
// Update the display
|
||||
int const top = max(found-5, 1);
|
||||
fl_set_browser_topline(dialog_->browser_bib, top);
|
||||
fl_select_browser_line(dialog_->browser_bib, found);
|
||||
input(dialog_->browser_bib, 0);
|
||||
|
||||
} else if (ob == dialog_->choice_style ||
|
||||
ob == dialog_->input_before ||
|
||||
ob == dialog_->input_after) {
|
||||
activate = ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
||||
return activate;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void FormCitation::update()
|
||||
{
|
||||
|
@ -31,6 +31,8 @@ class ControlCitation;
|
||||
class FormCitationDialogImpl;
|
||||
|
||||
class FormCitation : public Qt2CB<ControlCitation, Qt2DB<FormCitationDialogImpl> > {
|
||||
friend class FormCitationDialogImpl;
|
||||
|
||||
public:
|
||||
///
|
||||
FormCitation(ControlCitation &);
|
||||
|
@ -248,6 +248,10 @@
|
||||
<name>name</name>
|
||||
<cstring>infoML</cstring>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>wordWrap</name>
|
||||
<enum>WidgetWidth</enum>
|
||||
</property>
|
||||
<property>
|
||||
<name>toolTip</name>
|
||||
<string>Reference entry text</string>
|
||||
@ -319,7 +323,7 @@
|
||||
<class>QPushButton</class>
|
||||
<property stdset="1">
|
||||
<name>name</name>
|
||||
<cstring>PushButton14</cstring>
|
||||
<cstring>previousPB</cstring>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>text</name>
|
||||
@ -387,7 +391,7 @@
|
||||
<class>QPushButton</class>
|
||||
<property stdset="1">
|
||||
<name>name</name>
|
||||
<cstring>PushButton15</cstring>
|
||||
<cstring>nextPB</cstring>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>text</name>
|
||||
@ -643,12 +647,6 @@
|
||||
</image>
|
||||
</images>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>citeLB</sender>
|
||||
<signal>selected(int)</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>slotInsetSelected(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>bibLB</sender>
|
||||
<signal>selected(int)</signal>
|
||||
@ -686,37 +684,59 @@
|
||||
<slot>slotRestoreClicked()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>okPB</sender>
|
||||
<signal>clicked()</signal>
|
||||
<sender>citeLB</sender>
|
||||
<signal>selected(int)</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>apply_adaptor()</slot>
|
||||
<slot>slotCiteSelected(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>okPB</sender>
|
||||
<signal>clicked()</signal>
|
||||
<sender>searchTypePB</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>close_adaptor()</slot>
|
||||
<slot>slotSearchTypeSelected(bool)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>applyPB</sender>
|
||||
<sender>previousPB</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>apply_adaptor()</slot>
|
||||
<slot>slotPreviousClicked()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cancelPB</sender>
|
||||
<sender>nextPB</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>close_adaptor()</slot>
|
||||
<slot>slotNextClicked()</slot>
|
||||
</connection>
|
||||
<slot access="protected">apply_adaptor()</slot>
|
||||
<slot access="protected">close_adaptor()</slot>
|
||||
<connection>
|
||||
<sender>citationStyleCO</sender>
|
||||
<signal>activated(int)</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>slotCitationStyleSelected(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>textBeforeED</sender>
|
||||
<signal>returnPressed()</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>slotTextBeforeReturn()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>textAfterED</sender>
|
||||
<signal>returnPressed()</signal>
|
||||
<receiver>FormCitationDialog</receiver>
|
||||
<slot>slotTextAfterReturn()</slot>
|
||||
</connection>
|
||||
<slot access="protected">slotTextAfterReturn()</slot>
|
||||
<slot access="protected">slotAddClicked()</slot>
|
||||
<slot access="protected">slotBibSelected(int)</slot>
|
||||
<slot access="protected">slotCitationStyleSelected(int)</slot>
|
||||
<slot access="protected">slotCiteSelected(int)</slot>
|
||||
<slot access="protected">slotDelClicked()</slot>
|
||||
<slot access="protected">slotDownClicked()</slot>
|
||||
<slot access="protected">slotIUpClicked()</slot>
|
||||
<slot access="protected">slotInsetSelected(int)</slot>
|
||||
<slot access="protected">slotNextClicked()</slot>
|
||||
<slot access="protected">slotPreviousClicked()</slot>
|
||||
<slot access="protected">slotRestoreClicked()</slot>
|
||||
<slot access="protected">slotSearchTypeSelected(bool)</slot>
|
||||
<slot access="protected">slotTextBeforeReturn()</slot>
|
||||
</connections>
|
||||
</UI>
|
||||
|
@ -1,13 +1,18 @@
|
||||
/**
|
||||
* $Id: FormCitationDialogImpl.C,v 1.3 2001/03/29 18:58:47 kalle Exp $
|
||||
* $Id: FormCitationDialogImpl.C,v 1.4 2001/03/29 21:17:17 kalle Exp $
|
||||
*/
|
||||
|
||||
#include "FormCitationDialogImpl.h"
|
||||
#include "Dialogs.h"
|
||||
#include "FormCitation.h"
|
||||
#include "qt2BC.h"
|
||||
#include "controllers/biblio.h"
|
||||
#include "controllers/ControlCitation.h"
|
||||
|
||||
#include <qlineedit.h>
|
||||
#include <qlistbox.h>
|
||||
#include <qmultilineedit.h>
|
||||
#include <qpushbutton.h>
|
||||
#undef emit
|
||||
|
||||
#include <algorithm>
|
||||
@ -17,8 +22,6 @@
|
||||
using std::vector;
|
||||
using std::find;
|
||||
|
||||
// PENDING(kalle) Wire text before and citation style
|
||||
|
||||
/*
|
||||
* Constructs a FormCitationDialogImpl which is a child of 'parent', with the
|
||||
* name 'name' and widget flags set to 'f'
|
||||
@ -30,6 +33,14 @@ FormCitationDialogImpl::FormCitationDialogImpl( FormCitation* form, QWidget* par
|
||||
: FormCitationDialog( parent, name, modal, fl ),
|
||||
form_( form )
|
||||
{
|
||||
connect( okPB, SIGNAL( clicked() ),
|
||||
form, SLOT( slotOK() ) );
|
||||
connect( cancelPB, SIGNAL( clicked() ),
|
||||
form, SLOT( slotCancel() ) );
|
||||
connect( restorePB, SIGNAL( clicked() ),
|
||||
form, SLOT( slotRestore() ) );
|
||||
connect( applyPB, SIGNAL( clicked() ),
|
||||
form, SLOT( slotApply() ) );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -41,31 +52,39 @@ FormCitationDialogImpl::~FormCitationDialogImpl()
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
// These slots correspond to the XForms input() method.
|
||||
void FormCitationDialogImpl::slotBibSelected( int sel )
|
||||
{
|
||||
insetKeysLB->clearSelection();
|
||||
|
||||
if( sel < 0 || sel > form_->bibkeys.size()-1)
|
||||
biblio::InfoMap const & theMap = form_->controller().bibkeysInfo();
|
||||
|
||||
citeLB->clearSelection();
|
||||
|
||||
if (sel < 0 || sel >= (int)form_->bibkeys.size()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// Put into browser_info the additional info associated with
|
||||
// the selected browser_bib key
|
||||
infoML->clear();
|
||||
infoML->append( form_->bibkeysInfo[sel].c_str() );
|
||||
|
||||
infoML->setText( biblio::getInfo( theMap,
|
||||
form_->bibkeys[sel-1] ).c_str() );
|
||||
|
||||
// Highlight the selected browser_bib key in browser_cite if present
|
||||
vector<string>::iterator it =
|
||||
::find(form_->citekeys.begin(), form_->citekeys.end(), form_->bibkeys[sel]);
|
||||
|
||||
if (it != form_->citekeys.end()) {
|
||||
int n = static_cast<int>(it - form_->citekeys.begin());
|
||||
insetKeysLB->setSelected( n, true );
|
||||
// Highlight the selected browser_bib key in browser_cite if
|
||||
// present
|
||||
vector<string>::const_iterator cit =
|
||||
std::find(form_->citekeys.begin(), form_->citekeys.end(),
|
||||
form_->bibkeys[sel]);
|
||||
|
||||
if (cit != form_->citekeys.end()) {
|
||||
int const n = int(cit - form_->citekeys.begin());
|
||||
citeLB->setSelected( n, true );
|
||||
citeLB->setTopItem( n );
|
||||
}
|
||||
|
||||
if (!form_->lv_->buffer()->isReadonly()) {
|
||||
if (it != form_->citekeys.end()) {
|
||||
|
||||
if (!form_->controller().isReadonly()) {
|
||||
if (cit != form_->citekeys.end()) {
|
||||
form_->setBibButtons(FormCitation::OFF);
|
||||
form_->setCiteButtons(FormCitation::ON);
|
||||
} else {
|
||||
@ -74,121 +93,218 @@ void FormCitationDialogImpl::slotBibSelected( int sel )
|
||||
}
|
||||
}
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotInsetSelected( int sel )
|
||||
void FormCitationDialogImpl::slotCiteSelected( int sel )
|
||||
{
|
||||
if (sel < 0 || sel > form_->citekeys.size() -1 )
|
||||
return;
|
||||
biblio::InfoMap const & theMap = form_->controller().bibkeysInfo();
|
||||
|
||||
if (!form_->lv_->buffer()->isReadonly()) {
|
||||
if (sel < 0 || sel >= (int)form_->citekeys.size()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
}
|
||||
|
||||
if (!form_->controller().isReadonly()) {
|
||||
form_->setBibButtons(FormCitation::OFF);
|
||||
form_->setCiteButtons(FormCitation::ON);
|
||||
}
|
||||
|
||||
|
||||
// Highlight the selected browser_cite key in browser_bib
|
||||
vector<string>::iterator it =
|
||||
::find(form_->bibkeys.begin(), form_->bibkeys.end(), form_->citekeys[sel]);
|
||||
|
||||
if (it != form_->bibkeys.end()) {
|
||||
int n = static_cast<int>(it - form_->bibkeys.begin());
|
||||
bibliographyKeysLB->setSelected( n, true );
|
||||
|
||||
// Put into browser_info the additional info associated with
|
||||
// the selected browser_cite key
|
||||
vector<string>::const_iterator cit =
|
||||
std::find(form_->bibkeys.begin(), form_->bibkeys.end(), form_->citekeys[sel]);
|
||||
|
||||
if (cit != form_->bibkeys.end()) {
|
||||
int const n = int(cit - form_->bibkeys.begin());
|
||||
bibLB->setSelected( n, true );
|
||||
bibLB->setTopItem( n );
|
||||
|
||||
// Put into browser_info the additional info associated
|
||||
// with the selected browser_cite key
|
||||
infoML->clear();
|
||||
infoML->append( form_->bibkeysInfo[n].c_str() );
|
||||
infoML->setText( biblio::getInfo( theMap, form_->bibkeys[sel] ).c_str() );
|
||||
}
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotAddClicked()
|
||||
{
|
||||
qDebug( "FormCitationDialogImpl::slotAddClicked()" );
|
||||
int sel = bibliographyKeysLB->currentItem();
|
||||
if (sel < 0 || sel > form_->bibkeys.size() -1 )
|
||||
int const sel = bibLB->currentItem();
|
||||
if (sel < 0 || sel >= (int)form_->bibkeys.size()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
|
||||
qDebug( "sel = %d" );
|
||||
qDebug( "bibkeys.size() = %d", form_->bibkeys.size() );
|
||||
|
||||
}
|
||||
|
||||
// Add the selected browser_bib key to browser_cite
|
||||
insetKeysLB->insertItem( form_->bibkeys[sel].c_str());
|
||||
form_->citekeys.push_back(form_->bibkeys[sel]);
|
||||
|
||||
int n = static_cast<int>(form_->citekeys.size());
|
||||
insetKeysLB->setSelected( n, true );
|
||||
citeLB->insertItem( form_->bibkeys[sel].c_str() );
|
||||
form_->citekeys.push_back( form_->bibkeys[sel] );
|
||||
|
||||
int const n = int(form_->citekeys.size());
|
||||
citeLB->setSelected( n-1, true );
|
||||
|
||||
form_->setBibButtons(FormCitation::OFF);
|
||||
form_->setCiteButtons(FormCitation::ON);
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotDelClicked()
|
||||
{
|
||||
int sel = insetKeysLB->currentItem();
|
||||
if (sel < 0 || sel > form_->citekeys.size()-1)
|
||||
int const sel = citeLB->currentItem();
|
||||
if (sel < 0 || sel >= (int)form_->citekeys.size()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// Remove the selected key from browser_cite
|
||||
insetKeysLB->removeItem( sel );
|
||||
form_->citekeys.erase(form_->citekeys.begin() + sel);
|
||||
|
||||
citeLB->removeItem( sel );
|
||||
form_->citekeys.erase(form_->citekeys.begin() + sel );
|
||||
|
||||
form_->setBibButtons(FormCitation::ON);
|
||||
form_->setCiteButtons(FormCitation::OFF);
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotUpClicked()
|
||||
{
|
||||
int sel = insetKeysLB->currentItem();
|
||||
if (sel < 1 || sel > form_->citekeys.size()-1)
|
||||
int const sel = citeLB->currentItem();
|
||||
if (sel < 1 || sel >= (int)form_->citekeys.size()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// Move the selected key up one line
|
||||
vector<string>::iterator it = form_->citekeys.begin() + sel;
|
||||
string tmp = *it;
|
||||
|
||||
insetKeysLB->removeItem( sel );
|
||||
string const tmp = *it;
|
||||
|
||||
citeLB->removeItem( sel );
|
||||
form_->citekeys.erase(it);
|
||||
|
||||
insetKeysLB->insertItem( tmp.c_str(), sel-1 );
|
||||
insetKeysLB->setSelected( sel-1, true );
|
||||
|
||||
citeLB->insertItem( tmp.c_str(), sel-1 );
|
||||
citeLB->setSelected( sel-1, true );
|
||||
form_->citekeys.insert(it-1, tmp);
|
||||
form_->setCiteButtons(FormCitation::ON);
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotDownClicked()
|
||||
{
|
||||
int sel = insetKeysLB->currentItem();
|
||||
if (sel < 0 || sel > form_->citekeys.size()-2)
|
||||
int const sel = citeLB->currentItem();
|
||||
if (sel < 0 || sel >= (int)form_->citekeys.size()-1) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// Move the selected key down one line
|
||||
vector<string>::iterator it = form_->citekeys.begin() + sel;
|
||||
string tmp = *it;
|
||||
|
||||
insetKeysLB->removeItem( sel );
|
||||
string const tmp = *it;
|
||||
|
||||
citeLB->removeItem( sel );
|
||||
form_->citekeys.erase(it);
|
||||
|
||||
insetKeysLB->insertItem( tmp.c_str(), sel+1 );
|
||||
insetKeysLB->setSelected( sel+1, true );
|
||||
|
||||
citeLB->insertItem( tmp.c_str(), sel+1 );
|
||||
citeLB->setSelected( sel+1, true );
|
||||
form_->citekeys.insert(it+1, tmp);
|
||||
form_->setCiteButtons(FormCitation::ON);
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::apply_adaptor()
|
||||
void FormCitationDialogImpl::slotSearchTypeToggled( bool toggle )
|
||||
{
|
||||
form_->apply();
|
||||
if( toggle )
|
||||
searchTypePB->setText( _( "Regex" ) );
|
||||
else
|
||||
searchTypePB->setText( _( "Simple" ) );
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::close_adaptor()
|
||||
void FormCitationDialogImpl::slotPreviousClicked()
|
||||
{
|
||||
form_->close();
|
||||
hide();
|
||||
doPreviousNext( false );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotNextClicked()
|
||||
{
|
||||
doPreviousNext( true );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::doPreviousNext( bool next )
|
||||
{
|
||||
biblio::InfoMap const & theMap = form_->controller().bibkeysInfo();
|
||||
string const str = searchED->text().latin1();
|
||||
|
||||
biblio::Direction const dir =
|
||||
next ?
|
||||
biblio::FORWARD : biblio::BACKWARD;
|
||||
|
||||
biblio::Search const type =
|
||||
searchTypePB->isOn() ?
|
||||
biblio::REGEX : biblio::SIMPLE;
|
||||
|
||||
vector<string>::const_iterator start = form_->bibkeys.begin();
|
||||
int const sel = bibLB->currentItem();
|
||||
if (sel >= 0 && sel <= int(form_->bibkeys.size()-1))
|
||||
start += sel;
|
||||
|
||||
// Find the NEXT instance...
|
||||
if (dir == biblio::FORWARD)
|
||||
start += 1;
|
||||
else
|
||||
start -= 1;
|
||||
|
||||
vector<string>::const_iterator const cit =
|
||||
biblio::searchKeys(theMap, form_->bibkeys, str,
|
||||
start, type, dir);
|
||||
|
||||
if (cit == form_->bibkeys.end()) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
}
|
||||
|
||||
int const found = int(cit - form_->bibkeys.begin());
|
||||
if (found == sel) {
|
||||
form_->bc().input( ButtonPolicy::SMI_NOOP );
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the display
|
||||
int const top = max(found-5, 1);
|
||||
bibLB->setTopItem( top );
|
||||
bibLB->setSelected( found, true );
|
||||
slotBibSelected( 0 );
|
||||
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotCitationStyleSelected( int )
|
||||
{
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotTextBeforeReturn()
|
||||
{
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
||||
void FormCitationDialogImpl::slotTextAfterReturn()
|
||||
{
|
||||
form_->bc().input( ButtonPolicy::SMI_VALID );
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* $Id: FormCitationDialogImpl.h,v 1.1 2001/03/16 17:20:06 kalle Exp $
|
||||
* $Id: FormCitationDialogImpl.h,v 1.2 2001/03/29 21:17:17 kalle Exp $
|
||||
*/
|
||||
|
||||
#ifndef FORMCITATIONDIALOGIMPL_H
|
||||
@ -18,14 +18,21 @@ public:
|
||||
|
||||
protected slots:
|
||||
virtual void slotBibSelected( int sel );
|
||||
virtual void slotInsetSelected( int sel );
|
||||
virtual void slotCiteSelected( int sel );
|
||||
virtual void slotAddClicked();
|
||||
virtual void slotDelClicked();
|
||||
virtual void slotUpClicked();
|
||||
virtual void slotDownClicked();
|
||||
virtual void apply_adaptor();
|
||||
virtual void close_adaptor();
|
||||
virtual void slotPreviousClicked();
|
||||
virtual void slotNextClicked();
|
||||
virtual void slotSearchTypeToggled( bool );
|
||||
virtual void slotCitationStyleSelected( int );
|
||||
virtual void slotTextBeforeReturn();
|
||||
virtual void slotTextAfterReturn();
|
||||
|
||||
private:
|
||||
void doPreviousNext( bool );
|
||||
|
||||
private:
|
||||
FormCitation* form_;
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
Dialog Maintainer MVC conversion
|
||||
----------------------------------------------
|
||||
Character Edwin
|
||||
Citation Kalle
|
||||
Citation Kalle In progress
|
||||
Copyright Kalle Done
|
||||
Credits
|
||||
Document Kalle In progress
|
||||
|
Loading…
Reference in New Issue
Block a user