mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-21 07:12:10 +00:00
started moving citation dialog to MVC
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1856 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
41719bdb8a
commit
a24a97ed14
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "Dialogs.h"
|
#include "Dialogs.h"
|
||||||
|
|
||||||
|
#include "FormCitationDialogImpl.h"
|
||||||
#include "FormCopyrightDialogImpl.h"
|
#include "FormCopyrightDialogImpl.h"
|
||||||
#undef emit
|
#undef emit
|
||||||
|
|
||||||
@ -41,8 +42,11 @@
|
|||||||
//#include "FormUrl.h"
|
//#include "FormUrl.h"
|
||||||
|
|
||||||
#include "BufferView.h"
|
#include "BufferView.h"
|
||||||
|
#include "buffer.h"
|
||||||
|
|
||||||
|
#include "controllers/ControlCitation.h"
|
||||||
#include "controllers/ControlCopyright.h"
|
#include "controllers/ControlCopyright.h"
|
||||||
|
|
||||||
#include "GUI.h"
|
#include "GUI.h"
|
||||||
|
|
||||||
#include "qt2BC.h"
|
#include "qt2BC.h"
|
||||||
@ -57,15 +61,13 @@ Dialogs::Dialogs(LyXView * lv)
|
|||||||
splash_.reset( new FormSplash(lv, this) );
|
splash_.reset( new FormSplash(lv, this) );
|
||||||
|
|
||||||
// dialogs that have been converted to new scheme
|
// dialogs that have been converted to new scheme
|
||||||
|
add( new GUICitation<FormCitation, qt2BC>( *lv, *this ) );
|
||||||
add( new GUICopyright<FormCopyright, qt2BC>( *lv, *this ) );
|
add( new GUICopyright<FormCopyright, qt2BC>( *lv, *this ) );
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------
|
// ------------------------------------------
|
||||||
|
|
||||||
// dialogs that are still old-style
|
// dialogs that are still old-style
|
||||||
add( new FormCharacter(lv, this));
|
add( new FormCharacter(lv, this));
|
||||||
add( new FormCitation(lv, this));
|
|
||||||
// add(new FormCopyright(lv, this));
|
|
||||||
|
|
||||||
// REMOVED THIS UNTIL CHANGED TO NEW SCHEME -- Kalle, 2001-03-22
|
// REMOVED THIS UNTIL CHANGED TO NEW SCHEME -- Kalle, 2001-03-22
|
||||||
// add( new FormCredits(lv, this));
|
// add( new FormCredits(lv, this));
|
||||||
|
@ -1,198 +1,352 @@
|
|||||||
/*
|
// -*- C++ -*-
|
||||||
* FormCitation.C
|
/* This file is part of
|
||||||
* (C) 2000 LyX Team
|
* ======================================================
|
||||||
* John Levon, moz@compsoc.man.ac.uk
|
*
|
||||||
* Changed for Qt2 implementation by Kalle Dalheimer, kalle@klaralvdalens-datakonsult.se
|
* LyX, The Document Processor
|
||||||
|
*
|
||||||
|
* Copyright 2000 The LyX Team.
|
||||||
|
*
|
||||||
|
* ======================================================
|
||||||
|
*
|
||||||
|
* \author Angus Leeming <a.leeming@ic.ac.uk>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#ifdef __GNUG__
|
||||||
#include <support/lstrings.h>
|
#pragma implementation
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "FormCitationDialogImpl.h"
|
#include "FormCitationDialogImpl.h"
|
||||||
#undef emit
|
|
||||||
|
|
||||||
#include "Dialogs.h"
|
|
||||||
#include "FormCitation.h"
|
#include "FormCitation.h"
|
||||||
#include "gettext.h"
|
|
||||||
#include "buffer.h"
|
|
||||||
#include "LyXView.h"
|
|
||||||
#include "lyxfunc.h"
|
|
||||||
#include "lyxfont.h"
|
|
||||||
|
|
||||||
|
#include <qcombobox.h>
|
||||||
#include <qlineedit.h>
|
#include <qlineedit.h>
|
||||||
#include <qlistbox.h>
|
#include <qlistbox.h>
|
||||||
#include <qmultilineedit.h>
|
#include <qmultilineedit.h>
|
||||||
#include <qpushbutton.h>
|
#include <qpushbutton.h>
|
||||||
|
|
||||||
using SigC::slot;
|
#undef emit
|
||||||
using std::vector;
|
#include "qt2BC.h"
|
||||||
using std::pair;
|
#include "ControlCitation.h"
|
||||||
|
#include "gettext.h"
|
||||||
|
#include "support/lstrings.h"
|
||||||
|
#include "biblio.h"
|
||||||
|
#include "helper_funcs.h"
|
||||||
|
|
||||||
|
|
||||||
using std::find;
|
using std::find;
|
||||||
|
using std::max;
|
||||||
|
using std::min;
|
||||||
|
using std::pair;
|
||||||
using std::sort;
|
using std::sort;
|
||||||
|
using std::vector;
|
||||||
|
|
||||||
FormCitation::FormCitation(LyXView *v, Dialogs *d)
|
typedef Qt2CB<ControlCitation, Qt2DB<FormCitationDialogImpl> > base_class;
|
||||||
: dialog_(0), lv_(v), d_(d), inset_(0), ih_(0)
|
|
||||||
|
FormCitation::FormCitation(ControlCitation & c)
|
||||||
|
: base_class(c, _("Citation"))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
void FormCitation::apply()
|
||||||
{
|
{
|
||||||
// let the dialog be shown
|
controller().params().setCmdName("cite");
|
||||||
// This is a permanent connection so we won't bother
|
controller().params().setContents(getStringFromVector(citekeys));
|
||||||
// storing a copy because we won't be disconnecting.
|
|
||||||
d->showCitation.connect(slot(this, &FormCitation::showCitation));
|
string const after = dialog_->textAfterED->text().latin1();
|
||||||
d->createCitation.connect(slot(this, &FormCitation::createCitation));
|
controller().params().setOptions(after);
|
||||||
}
|
|
||||||
|
|
||||||
FormCitation::~FormCitation()
|
|
||||||
{
|
|
||||||
delete dialog_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::showCitation(InsetCommand * inset)
|
|
||||||
{
|
|
||||||
if (inset == 0) return; // maybe we should Assert this?
|
|
||||||
|
|
||||||
// If connected to another inset, disconnect from it.
|
|
||||||
if (inset_)
|
|
||||||
ih_.disconnect();
|
|
||||||
|
|
||||||
inset_ = inset;
|
|
||||||
params = inset->params();
|
|
||||||
ih_ = inset->hideDialog.connect(slot(this, &FormCitation::hide));
|
|
||||||
show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::createCitation(string const & arg)
|
|
||||||
{
|
|
||||||
if (inset_) {
|
|
||||||
ih_.disconnect();
|
|
||||||
inset_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
params.setFromString(arg);
|
|
||||||
show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::hide()
|
void FormCitation::hide()
|
||||||
{
|
{
|
||||||
if( dialog_ )
|
citekeys.clear();
|
||||||
dialog_->hide();
|
bibkeys.clear();
|
||||||
|
|
||||||
|
Qt2Base::hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FormCitation::build()
|
||||||
void FormCitation::show()
|
|
||||||
{
|
{
|
||||||
if (!dialog_)
|
// PENDING(kalle) Parent?
|
||||||
dialog_ = new FormCitationDialogImpl(this, 0, _("LyX: Citation Reference"), false);
|
dialog_.reset( new FormCitationDialogImpl( this ));
|
||||||
|
|
||||||
dialog_->show();
|
dialog_->searchTypePB->setOn( false );
|
||||||
|
dialog_->searchTypePB->setText( _( "Simple" ) );
|
||||||
|
|
||||||
|
// Manage the ok, apply, restore and cancel/close buttons
|
||||||
|
bc().setOK(dialog_->okPB);
|
||||||
|
bc().setApply(dialog_->applyPB);
|
||||||
|
bc().setCancel(dialog_->cancelPB);
|
||||||
|
bc().setUndoAll(dialog_->restorePB);
|
||||||
|
|
||||||
update();
|
bc().addReadOnly(dialog_->addPB);
|
||||||
|
bc().addReadOnly(dialog_->delPB);
|
||||||
|
bc().addReadOnly(dialog_->upPB);
|
||||||
|
bc().addReadOnly(dialog_->downPB);
|
||||||
|
bc().addReadOnly(dialog_->citationStyleCO);
|
||||||
|
bc().addReadOnly(dialog_->textBeforeED);
|
||||||
|
bc().addReadOnly(dialog_->textAfterED);
|
||||||
|
|
||||||
|
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()
|
void FormCitation::update()
|
||||||
{
|
{
|
||||||
bibkeys.clear();
|
// Make the list of all available bibliography keys
|
||||||
bibkeysInfo.clear();
|
bibkeys = biblio::getKeys(controller().bibkeysInfo());
|
||||||
|
updateBrowser(dialog_->bibLB, bibkeys);
|
||||||
vector<pair<string,string> > blist =
|
|
||||||
lv_->buffer()->getBibkeyList();
|
|
||||||
sort(blist.begin(), blist.end());
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < blist.size(); ++i) {
|
|
||||||
bibkeys.push_back(blist[i].first);
|
|
||||||
bibkeysInfo.push_back(blist[i].second);
|
|
||||||
}
|
|
||||||
blist.clear();
|
|
||||||
|
|
||||||
updateBrowser(dialog_->bibliographyKeysLB, bibkeys);
|
|
||||||
|
|
||||||
// Ditto for the keys cited in this inset
|
// Ditto for the keys cited in this inset
|
||||||
citekeys.clear();
|
citekeys = getVectorFromString(controller().params().getContents());
|
||||||
string tmp, keys(params.getContents());
|
updateBrowser(dialog_->citeLB, citekeys);
|
||||||
keys = frontStrip(split(keys, tmp, ','));
|
|
||||||
while (!tmp.empty()) {
|
|
||||||
citekeys.push_back(tmp);
|
|
||||||
keys = frontStrip(split(keys, tmp, ','));
|
|
||||||
}
|
|
||||||
updateBrowser(dialog_->insetKeysLB, citekeys);
|
|
||||||
|
|
||||||
// No keys have been selected yet, so...
|
// No keys have been selected yet, so...
|
||||||
dialog_->infoML->clear();
|
dialog_->infoML->clear();
|
||||||
setBibButtons(OFF);
|
setBibButtons(OFF);
|
||||||
setCiteButtons(OFF);
|
setCiteButtons(OFF);
|
||||||
|
|
||||||
dialog_->textAfterED->setText( params.getOptions().c_str() );
|
int noKeys = int(max(bibkeys.size(), citekeys.size()));
|
||||||
|
|
||||||
|
// Place bounds, so that 4 <= noKeys <= 10
|
||||||
|
noKeys = max(4, min(10, noKeys));
|
||||||
|
|
||||||
|
dialog_->textAfterED->setText( controller().params().getOptions().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::updateBrowser( QListBox* listbox,
|
void FormCitation::updateBrowser( QListBox* browser,
|
||||||
vector<string> const & keys) const
|
vector<string> const & keys) const
|
||||||
{
|
{
|
||||||
listbox->clear();
|
browser->clear();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < keys.size(); ++i)
|
for (vector<string>::const_iterator it = keys.begin();
|
||||||
listbox->insertItem( keys[i].c_str() );
|
it < keys.end(); ++it) {
|
||||||
|
string key = frontStrip(strip(*it));
|
||||||
|
browser->insertItem( key.c_str() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::setBibButtons(State status) const
|
void FormCitation::setBibButtons(State status) const
|
||||||
{
|
{
|
||||||
dialog_->leftPB->setEnabled( status == ON );
|
dialog_->addPB->setEnabled( (status == ON) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::setCiteButtons(State status) const
|
void FormCitation::setCiteButtons(State status) const
|
||||||
{
|
{
|
||||||
int const sel = dialog_->insetKeysLB->currentItem();
|
int const sel = dialog_->citeLB->currentItem();
|
||||||
int const maxline = dialog_->insetKeysLB->count();
|
int const maxline = dialog_->citeLB->count()-1;
|
||||||
|
|
||||||
bool const activate = (status == ON);
|
bool const activate = (status == ON);
|
||||||
bool const activate_up = (activate && sel != 1);
|
bool const activate_up = (activate && sel != 0);
|
||||||
bool const activate_down = (activate && sel != maxline);
|
bool const activate_down = (activate && sel != maxline);
|
||||||
|
|
||||||
dialog_->stopPB->setEnabled(activate);
|
dialog_->delPB->setEnabled( activate );
|
||||||
dialog_->upPB->setEnabled(activate_up);
|
dialog_->upPB->setEnabled( activate_up );
|
||||||
dialog_->downPB->setEnabled(activate_down);
|
dialog_->downPB->setEnabled( activate_down );
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void FormCitation::apply()
|
|
||||||
{
|
|
||||||
if (lv_->buffer()->isReadonly()) return;
|
|
||||||
|
|
||||||
string contents;
|
|
||||||
for (unsigned int i = 0; i < citekeys.size(); ++i) {
|
|
||||||
if (i > 0) contents += ",";
|
|
||||||
contents += citekeys[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
params.setContents(contents);
|
|
||||||
params.setOptions( dialog_->textAfterED->text().latin1() );
|
|
||||||
|
|
||||||
if (inset_ != 0) {
|
|
||||||
// Only update if contents have changed
|
|
||||||
if (params != inset_->params()) {
|
|
||||||
inset_->setParams(params);
|
|
||||||
lv_->view()->updateInset(inset_, true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lv_->getLyXFunc()->Dispatch(LFUN_CITATION_INSERT,
|
|
||||||
params.getAsString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,96 +1,70 @@
|
|||||||
/* FormCitation.h
|
// -*- C++ -*-
|
||||||
* (C) 2000 LyX Team
|
/* This file is part of
|
||||||
* John Levon, moz@compsoc.man.ac.uk
|
* ======================================================
|
||||||
* Changed for Qt2 port by Kalle Dalheimer, kalle@klaralvdalens-datakonsult.se
|
*
|
||||||
*/
|
* LyX, The Document Processor
|
||||||
|
*
|
||||||
/***************************************************************************
|
* Copyright 2000 The LyX Team.
|
||||||
* *
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* ======================================================
|
||||||
* it under the terms of the GNU General Public License as published by *
|
*
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
* \author Angus Leeming <a.leeming@ic.ac.uk>
|
||||||
* (at your option) any later version. *
|
* \author Kalle Dalheimer <kalle@klaralvdalens-datakonsult.se>
|
||||||
* *
|
*/
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef FORMCITATION_H
|
#ifndef FORMCITATION_H
|
||||||
#define FORMCITATION_H
|
#define FORMCITATION_H
|
||||||
|
|
||||||
#include "DialogBase.h"
|
#ifdef __GNUG__
|
||||||
#include "insets/insetcommand.h"
|
#pragma interface
|
||||||
|
#endif
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
class Dialogs;
|
|
||||||
class LyXView;
|
|
||||||
class FormCitationDialog;
|
|
||||||
|
|
||||||
class QListBox;
|
class QListBox;
|
||||||
|
|
||||||
class FormCitation : public DialogBase {
|
#include "Qt2Base.h"
|
||||||
friend class FormCitationDialogImpl;
|
#undef emit
|
||||||
public:
|
|
||||||
/**@name Constructors and Destructors */
|
/** This class provides a Qt2 implementation of the Citation Dialog.
|
||||||
//@{
|
@author Kalle Dalheimer
|
||||||
|
*/
|
||||||
|
class ControlCitation;
|
||||||
|
class FormCitationDialogImpl;
|
||||||
|
|
||||||
|
class FormCitation : public Qt2CB<ControlCitation, Qt2DB<FormCitationDialogImpl> > {
|
||||||
|
public:
|
||||||
|
///
|
||||||
|
FormCitation(ControlCitation &);
|
||||||
|
|
||||||
|
private:
|
||||||
|
///
|
||||||
|
enum State {
|
||||||
///
|
///
|
||||||
FormCitation(LyXView *, Dialogs *);
|
ON,
|
||||||
///
|
|
||||||
~FormCitation();
|
|
||||||
//@}
|
|
||||||
|
|
||||||
/// Apply changes
|
|
||||||
void apply();
|
|
||||||
private:
|
|
||||||
///
|
///
|
||||||
enum State {
|
OFF
|
||||||
ON,
|
};
|
||||||
///
|
|
||||||
OFF
|
|
||||||
};
|
|
||||||
/// Create the dialog if necessary, update it and display it.
|
|
||||||
void show();
|
|
||||||
/// Hide the dialog.
|
|
||||||
void hide();
|
|
||||||
/// Update the dialog.
|
|
||||||
void update();
|
|
||||||
|
|
||||||
void setBibButtons(State status) const;
|
/// Set the Params variable for the Controller.
|
||||||
void setCiteButtons(State status) const;
|
virtual void apply();
|
||||||
|
/// Build the dialog.
|
||||||
|
virtual void build();
|
||||||
|
/// Hide the dialog.
|
||||||
|
virtual void hide();
|
||||||
|
/// Update dialog before/whilst showing it.
|
||||||
|
virtual void update();
|
||||||
|
// /// Filter the inputs on callback from xforms
|
||||||
|
// virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||||
|
|
||||||
/// create a Citation inset
|
void updateBrowser(QListBox*, std::vector<string> const &) const;
|
||||||
void createCitation(string const &);
|
///
|
||||||
/// edit a Citation inset
|
void setBibButtons(State) const;
|
||||||
void showCitation(InsetCommand* );
|
///
|
||||||
|
void setCiteButtons(State) const;
|
||||||
/// update a listbox
|
|
||||||
void updateBrowser( QListBox* listbox,
|
|
||||||
std::vector<string> const & keys) const;
|
|
||||||
|
|
||||||
/// Real GUI implementation.
|
|
||||||
FormCitationDialog * dialog_;
|
|
||||||
|
|
||||||
/// the LyXView we belong to
|
///
|
||||||
LyXView * lv_;
|
std::vector<string> citekeys;
|
||||||
|
///
|
||||||
/** Which Dialogs do we belong to?
|
std::vector<string> bibkeys;
|
||||||
Used so we can get at the signals we have to connect to.
|
|
||||||
*/
|
|
||||||
Dialogs * d_;
|
|
||||||
/// pointer to the inset if any
|
|
||||||
InsetCommand * inset_;
|
|
||||||
/// insets params
|
|
||||||
InsetCommandParams params;
|
|
||||||
/// is the inset we are reading from a readonly buffer ?
|
|
||||||
bool readonly;
|
|
||||||
|
|
||||||
/// Inset hide connection.
|
|
||||||
SigC::Connection ih_;
|
|
||||||
|
|
||||||
std::vector<string> citekeys;
|
|
||||||
///
|
|
||||||
std::vector<string> bibkeys;
|
|
||||||
///
|
|
||||||
std::vector<string> bibkeysInfo;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif // FORMCITATION_H
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>388</width>
|
<width>391</width>
|
||||||
<height>482</height>
|
<height>601</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
@ -62,7 +62,7 @@
|
|||||||
<class>QPushButton</class>
|
<class>QPushButton</class>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>leftPB</cstring>
|
<cstring>addPB</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>sizePolicy</name>
|
<name>sizePolicy</name>
|
||||||
@ -84,7 +84,7 @@
|
|||||||
<class>QPushButton</class>
|
<class>QPushButton</class>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>stopPB</cstring>
|
<cstring>delPB</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>sizePolicy</name>
|
<name>sizePolicy</name>
|
||||||
@ -180,7 +180,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>bibliographyKeysLB</cstring>
|
<cstring>bibLB</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>toolTip</name>
|
<name>toolTip</name>
|
||||||
@ -197,7 +197,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>insetKeysLB</cstring>
|
<cstring>citeLB</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>selectionMode</name>
|
<name>selectionMode</name>
|
||||||
@ -274,6 +274,151 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
|
<widget>
|
||||||
|
<class>QGroupBox</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>GroupBox4</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>title</name>
|
||||||
|
<string>Search</string>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>margin</name>
|
||||||
|
<number>11</number>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>spacing</name>
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<widget>
|
||||||
|
<class>QLayoutWidget</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>Layout35</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>margin</name>
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>spacing</name>
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<widget>
|
||||||
|
<class>QLineEdit</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>searchED</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget>
|
||||||
|
<class>QPushButton</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>PushButton14</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>text</name>
|
||||||
|
<string>&Previous</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget>
|
||||||
|
<class>QLayoutWidget</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>Layout36</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>margin</name>
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>spacing</name>
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<widget>
|
||||||
|
<class>QPushButton</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>searchTypePB</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>text</name>
|
||||||
|
<string>Simple</string>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>toggleButton</name>
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>toggleButton</name>
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property>
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>Spacer2_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>orientation</name>
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>sizeType</name>
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>sizeHint</name>
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget>
|
||||||
|
<class>QPushButton</class>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>PushButton15</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>text</name>
|
||||||
|
<string>&Next</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property>
|
||||||
|
<name>name</name>
|
||||||
|
<cstring>Spacer1</cstring>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>orientation</name>
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property stdset="1">
|
||||||
|
<name>sizeType</name>
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>sizeHint</name>
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
<widget>
|
<widget>
|
||||||
<class>QLayoutWidget</class>
|
<class>QLayoutWidget</class>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
@ -499,25 +644,25 @@
|
|||||||
</images>
|
</images>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>insetKeysLB</sender>
|
<sender>citeLB</sender>
|
||||||
<signal>selected(int)</signal>
|
<signal>selected(int)</signal>
|
||||||
<receiver>FormCitationDialog</receiver>
|
<receiver>FormCitationDialog</receiver>
|
||||||
<slot>slotInsetSelected(int)</slot>
|
<slot>slotInsetSelected(int)</slot>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>bibliographyKeysLB</sender>
|
<sender>bibLB</sender>
|
||||||
<signal>selected(int)</signal>
|
<signal>selected(int)</signal>
|
||||||
<receiver>FormCitationDialog</receiver>
|
<receiver>FormCitationDialog</receiver>
|
||||||
<slot>slotBibSelected(int)</slot>
|
<slot>slotBibSelected(int)</slot>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>leftPB</sender>
|
<sender>addPB</sender>
|
||||||
<signal>clicked()</signal>
|
<signal>clicked()</signal>
|
||||||
<receiver>FormCitationDialog</receiver>
|
<receiver>FormCitationDialog</receiver>
|
||||||
<slot>slotAddClicked()</slot>
|
<slot>slotAddClicked()</slot>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>stopPB</sender>
|
<sender>delPB</sender>
|
||||||
<signal>clicked()</signal>
|
<signal>clicked()</signal>
|
||||||
<receiver>FormCitationDialog</receiver>
|
<receiver>FormCitationDialog</receiver>
|
||||||
<slot>slotDelClicked()</slot>
|
<slot>slotDelClicked()</slot>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* $Id: FormCitationDialogImpl.C,v 1.2 2001/03/26 19:34:45 kalle Exp $
|
* $Id: FormCitationDialogImpl.C,v 1.3 2001/03/29 18:58:47 kalle Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "FormCitationDialogImpl.h"
|
#include "FormCitationDialogImpl.h"
|
||||||
@ -41,7 +41,7 @@ FormCitationDialogImpl::~FormCitationDialogImpl()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
// These slots correspond to the XForms input() method.
|
// These slots correspond to the XForms input() method.
|
||||||
void FormCitationDialogImpl::slotBibSelected( int sel )
|
void FormCitationDialogImpl::slotBibSelected( int sel )
|
||||||
{
|
{
|
||||||
@ -191,3 +191,4 @@ void FormCitationDialogImpl::close_adaptor()
|
|||||||
form_->close();
|
form_->close();
|
||||||
hide();
|
hide();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -50,11 +50,11 @@
|
|||||||
<hbox>
|
<hbox>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>margin</name>
|
<name>margin</name>
|
||||||
<number>11</number>
|
<number>-1</number>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>spacing</name>
|
<name>spacing</name>
|
||||||
<number>6</number>
|
<number>-1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget>
|
<widget>
|
||||||
<class>QLayoutWidget</class>
|
<class>QLayoutWidget</class>
|
||||||
@ -3724,7 +3724,7 @@
|
|||||||
<class>QToolButton</class>
|
<class>QToolButton</class>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>bulletPanelDing4PB</cstring>
|
<cstring>bulletDing4PB</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>geometry</name>
|
<name>geometry</name>
|
||||||
@ -4100,7 +4100,7 @@
|
|||||||
<class>QLineEdit</class>
|
<class>QLineEdit</class>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>name</name>
|
<name>name</name>
|
||||||
<cstring>bulletLatexED</cstring>
|
<cstring>latexED</cstring>
|
||||||
</property>
|
</property>
|
||||||
<property stdset="1">
|
<property stdset="1">
|
||||||
<name>maxLength</name>
|
<name>maxLength</name>
|
||||||
@ -4698,7 +4698,7 @@
|
|||||||
<slot>slotClose()</slot>
|
<slot>slotClose()</slot>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>bulletLatexED</sender>
|
<sender>latexED</sender>
|
||||||
<signal>textChanged(const QString&)</signal>
|
<signal>textChanged(const QString&)</signal>
|
||||||
<receiver>FormDocumentDialog</receiver>
|
<receiver>FormDocumentDialog</receiver>
|
||||||
<slot>slotBulletLaTeX(const QString&)</slot>
|
<slot>slotBulletLaTeX(const QString&)</slot>
|
||||||
@ -4734,7 +4734,7 @@
|
|||||||
<slot>slotBulletDing3()</slot>
|
<slot>slotBulletDing3()</slot>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>bulletPanelDing4PB</sender>
|
<sender>bulletDing4PB</sender>
|
||||||
<signal>clicked()</signal>
|
<signal>clicked()</signal>
|
||||||
<receiver>FormDocumentDialog</receiver>
|
<receiver>FormDocumentDialog</receiver>
|
||||||
<slot>slotBulletDing4()</slot>
|
<slot>slotBulletDing4()</slot>
|
||||||
@ -4868,7 +4868,7 @@
|
|||||||
<tabstop>postscriptDriverCO</tabstop>
|
<tabstop>postscriptDriverCO</tabstop>
|
||||||
<tabstop>useAmsMathCB</tabstop>
|
<tabstop>useAmsMathCB</tabstop>
|
||||||
<tabstop>bulletSizeCO</tabstop>
|
<tabstop>bulletSizeCO</tabstop>
|
||||||
<tabstop>bulletLatexED</tabstop>
|
<tabstop>latexED</tabstop>
|
||||||
<tabstop>restorePB</tabstop>
|
<tabstop>restorePB</tabstop>
|
||||||
<tabstop>okPB</tabstop>
|
<tabstop>okPB</tabstop>
|
||||||
<tabstop>applyPB</tabstop>
|
<tabstop>applyPB</tabstop>
|
||||||
|
@ -57,7 +57,7 @@ void qt2BC::refresh()
|
|||||||
bool enable = true;
|
bool enable = true;
|
||||||
if (bp().isReadOnly()) enable = false;
|
if (bp().isReadOnly()) enable = false;
|
||||||
|
|
||||||
for (std::list<QButton *>::iterator iter = read_only_.begin();
|
for (std::list<QWidget *>::iterator iter = read_only_.begin();
|
||||||
iter != read_only_.end(); ++iter) {
|
iter != read_only_.end(); ++iter) {
|
||||||
(*iter)->setEnabled( enable );
|
(*iter)->setEnabled( enable );
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#pragma interface
|
#pragma interface
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class QWidget;
|
||||||
class QButton;
|
class QButton;
|
||||||
|
|
||||||
#include "ButtonController.h"
|
#include "ButtonController.h"
|
||||||
@ -59,7 +60,7 @@ public:
|
|||||||
undo_all_ = obj;
|
undo_all_ = obj;
|
||||||
}
|
}
|
||||||
///
|
///
|
||||||
void addReadOnly(QButton * obj) {
|
void addReadOnly(QWidget * obj) {
|
||||||
read_only_.push_front(obj);
|
read_only_.push_front(obj);
|
||||||
}
|
}
|
||||||
///
|
///
|
||||||
@ -81,7 +82,7 @@ private:
|
|||||||
///
|
///
|
||||||
QButton * undo_all_;
|
QButton * undo_all_;
|
||||||
/// List of items to be deactivated when in one of the read-only states
|
/// List of items to be deactivated when in one of the read-only states
|
||||||
std::list<QButton *> read_only_;
|
std::list<QWidget *> read_only_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // XFORMSBC_H
|
#endif // XFORMSBC_H
|
||||||
|
Loading…
Reference in New Issue
Block a user