+2000-08-01 Angus Leeming <a.leeming@ic.ac.uk>
+
+ * src/insets/insetcommand.h (hide): new SigC::Signal0
+ (d-tor) new virtual destructor emits hide signal
+
+ * src/insets/insetcite.[Ch] (hide, d-tor, EditMessage): removed
+ * src/insets/inseturl.[Ch] (hide, d-tor): ditto
+
+ * src/insets/insettoc.[Ch]: one inset now deals with TOC, LOA,
+ LOF and LOT. Inset is now GUI-independent
+
+ * src/insets/insetloa.[Ch]: redundant
+ * src/insets/insetlof.[Ch]: ditto
+ * src/insets/insetlot.[Ch]: ditto
+
+ * src/frontends/xforms/forms/form_url.fd: tweaked!
+ * src/frontends/xforms/forms/form_citation.fd: ditto
+
+ * src/frontends/xforms/FormCommand.[Ch]: new base class to those
+ dialogs dealing with InsetCommand insets
+
+ * src/frontends/xforms/FormCitation.[Ch]: now makes use of
+ FormCommand base class
+ * src/frontends/xforms/FormUrl.[Ch]: ditto
+
+ * src/frontends/xforms/forms/form_toc.fd: Xforms implementation
+ of the TOC dialog
+ * src/frontends/xforms/FormToc.[Ch]: ditto
+
+ * src/frontends/Dialogs.h (showCitation, showTOC, showUrl): all
+ passed a generic InsetCommand pointer
+ * src/frontends/xforms/Dialogs.C (c-tor): create instance of FormToc
+
+ * src/lyxfunc.C (Dispatch) : modified to accomodate new FormToc class
+ and modified InsetTOC class
+ * src/buffer.C: ditto
+
+ * forms/lyx.fd: strip out old FD_form_toc code
+ * src/lyx_gui_misc.C: ditto
+ * src/lyx_gui.C: ditto
+ * src/lyx_cb.C: ditto
+ * src/lyx.[Ch]: ditto
+
+2000-08-01 Lars Gullik Bjønnes <larsbj@lyx.org>
+
+ * src/support/utility.hpp: tr -d '\r'
+
2000-08-01 Juergen Vigna <jug@sad.it>
* src/insets/insettabular.h: removed initFeatures() as it's not needed.
Internal Form Definition File
(do not change)
-Number of forms: 6
+Number of forms: 5
Unit of measure: FL_COORD_PIXEL
=============== FORM ===============
callback: ScreenCancelCB
argument: 0
-=============== FORM ===============
-Name: form_toc
-Width: 420
-Height: 340
-Number of Objects: 5
-
---------------------
-class: FL_BOX
-type: UP_BOX
-box: 0 0 420 340
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label:
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name:
-callback:
-argument:
-
---------------------
-class: FL_BROWSER
-type: HOLD_BROWSER
-box: 10 10 400 280
-boxtype: FL_DOWN_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_BOTTOM
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label:
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NorthWest FL_SouthEast
-name: browser_toc
-callback: TocSelectCB
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: RETURN_BUTTON
-box: 310 300 100 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Close
-shortcut: ^M
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name:
-callback: TocCancelCB
-argument: 0
-
---------------------
-class: FL_BUTTON
-type: NORMAL_BUTTON
-box: 200 300 100 30
-boxtype: FL_UP_BOX
-colors: FL_COL1 FL_COL1
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Update|Uu#u
-shortcut:
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name:
-callback: TocUpdateCB
-argument: 0
-
---------------------
-class: FL_CHOICE
-type: NORMAL_CHOICE
-box: 60 300 130 30
-boxtype: FL_FRAME_BOX
-colors: FL_COL1 FL_BLACK
-alignment: FL_ALIGN_LEFT
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: Type|Tt#t
-shortcut:
-resize: FL_RESIZE_NONE
-gravity: FL_SouthEast FL_SouthEast
-name: toctype
-callback: TocUpdateCB
-argument: 0
-
=============== FORM ===============
Name: form_ref
Width: 590
src/frontends/xforms/form_print.C
src/frontends/xforms/FormTabular.C
src/frontends/xforms/form_tabular.C
+src/frontends/xforms/FormToc.C
src/frontends/xforms/FormUrl.C
src/frontends/xforms/form_url.C
src/frontends/xforms/Menubar_pimpl.C
src/insets/insetinfo.C
src/insets/insetlabel.C
src/insets/insetlist.C
-src/insets/insetloa.C
-src/insets/insetlof.C
-src/insets/insetlot.C
src/insets/insetmarginal.C
src/insets/insetminipage.C
src/insets/insetparent.C
#include FORMS_H_LOCATION
#include "undo.h"
+#include "support/utility.hpp"
class LyXView;
class LyXText;
class WorkArea;
///
-class BufferView {
+class BufferView : public noncopyable {
public:
///
enum UpdateCodes {
#include FORMS_H_LOCATION
#include "Timeout.h"
+#include "support/utility.hpp"
// uncomment this line to try out the new menus
#define NEW_MENUBAR 1
view is supposed (at least IMHO) to be another class, that shows its output
in one or more LyXView's.
*/
-class LyXView : public Object {
+class LyXView : public Object, public noncopyable {
public:
/// constructor
LyXView(int w, int h);
#include "insets/insetindex.h"
#include "insets/insetinclude.h"
#include "insets/insettoc.h"
-#include "insets/insetlof.h"
-#include "insets/insetlot.h"
-#include "insets/insetloa.h"
#include "insets/insetparent.h"
#include "insets/insetspecialchar.h"
#include "insets/figinset.h"
if (!inscmd.getOptions().empty() || !inscmd.getContents().empty()) {
inset = new InsetRef(inscmd, this);
}
- } else if (inscmd.getCmdName() == "tableofcontents") {
- inset = new InsetTOC(this);
- } else if (inscmd.getCmdName() == "listoffigures") {
- inset = new InsetLOF(this);
- } else if (inscmd.getCmdName() == "listofalgorithms") {
- inset = new InsetLOA(this);
- } else if (inscmd.getCmdName() == "listoftables") {
- inset = new InsetLOT(this);
+ } else if (inscmd.getCmdName() == "tableofcontents"
+ || inscmd.getCmdName() == "listofalgorithms"
+ || inscmd.getCmdName() == "listoffigures"
+ || inscmd.getCmdName() == "listoftables") {
+ inset = new InsetTOC(inscmd.params());
} else if (inscmd.getCmdName() == "printindex") {
inset = new InsetPrintIndex(this);
} else if (inscmd.getCmdName() == "lyxparent") {
|| !inscmd.getContents().empty()) {
inset = new InsetRef(inscmd, this);
}
- } else if (inscmd.getCmdName() == "tableofcontents") {
- inset = new InsetTOC(this);
- } else if (inscmd.getCmdName() == "listoffigures") {
- inset = new InsetLOF(this);
- } else if (inscmd.getCmdName() == "listofalgorithms") {
- inset = new InsetLOA(this);
- } else if (inscmd.getCmdName() == "listoftables") {
- inset = new InsetLOT(this);
+ } else if (inscmd.getCmdName() == "tableofcontents"
+ || inscmd.getCmdName() == "listofalgorithms"
+ || inscmd.getCmdName() == "listoffigures"
+ || inscmd.getCmdName() == "listoftables") {
+ inset = new InsetTOC(inscmd.params());
} else if (inscmd.getCmdName() == "printindex") {
inset = new InsetPrintIndex(this);
} else if (inscmd.getCmdName() == "lyxparent") {
_("Version control");
_("View LaTeX log file|w");
_("Paste primary selection");
+_("Multicolumn|M");
+_("Line Top|T");
+_("Line Bottom|B");
+_("Line Left|L");
+_("Line Right|R");
+_("Align Left|e");
+_("Align Center|C");
+_("Align Right|i");
+_("V.Align Top|o");
+_("V.Align Center|n");
+_("V.Align Bottom|v");
+_("Append Row|A");
+_("Append Column|u");
+_("Delete Row|w");
+_("Delete Column|D");
_("as Lines|L");
_("as Paragraphs|g");
_("Register|R");
_("Paper...|a");
_("Document...|D");
_("Table...|T");
+_("Tabular...|a");
_("Quotes...|Q");
_("Emphasize Style|E");
_("Noun Style|N");
class InsetGraphics;
class InsetBibKey;
class InsetBibtex;
-class InsetCitation;
class InsetInclude;
class InsetIndex;
class InsetInfo;
class InsetTabular;
-class InsetUrl;
+class InsetCommand;
using std::vector;
///
Signal1<void, InsetBibKey *> showBibkey;
///
- Signal1<void, InsetCitation *> showCitation;
+ Signal1<void, InsetCommand *> showCitation;
///
Signal1<void, string const &> createCitation;
///
- Signal1<void, InsetUrl *> showUrl;
+ Signal1<void, InsetCommand *> showTOC;
+ ///
+ Signal1<void, string const &> createTOC;
+ ///
+ Signal1<void, InsetCommand *> showUrl;
///
Signal1<void, string const &> createUrl;
///
#include "FormCitation.h"
#include "FormPrint.h"
#include "FormTabular.h"
+#include "FormToc.h"
#include "FormUrl.h"
#ifdef __GNUG__
dialogs_.push_back(new FormCitation(lv, this));
dialogs_.push_back(new FormPrint(lv, this));
dialogs_.push_back(new FormTabular(lv, this));
+ dialogs_.push_back(new FormToc(lv, this));
dialogs_.push_back(new FormUrl(lv, this));
// reduce the number of connections needed in
#include <config.h>
-#include <algorithm>
-
#include FORMS_H_LOCATION
#ifdef __GNUG__
#include "gettext.h"
-#include "BufferView.h"
#include "Dialogs.h"
#include "FormCitation.h"
#include "LyXView.h"
#include "buffer.h"
#include "form_citation.h"
#include "lyxfunc.h"
-#include "xform_macros.h"
-#include "insets/insetcite.h"
#include "support/filetools.h"
using std::vector;
using std::min;
using std::find;
-C_RETURNCB(FormCitation, WMHideCB)
-C_GENERICCB(FormCitation, OKCB)
-C_GENERICCB(FormCitation, CancelCB)
-C_GENERICCB(FormCitation, InputCB)
+static vector<string> citekeys;
+static vector<string> bibkeys;
+static vector<string> bibkeysInfo;
FormCitation::FormCitation(LyXView * lv, Dialogs * d)
- : dialog_(0), lv_(lv), d_(d), u_(0), h_(0), ih_(0),
- inset_(0), dialogIsOpen(false)
+ : FormCommand(lv, d, _("Citation"))
{
// let the dialog be shown
// These are permanent connections so we won't bother
FormCitation::~FormCitation()
{
free();
+ delete dialog_;
}
}
-void FormCitation::showInset( InsetCitation * inset )
-{
- if( dialogIsOpen || inset == 0 ) return;
-
- inset_ = inset;
- ih_ = inset_->hide.connect(slot(this, &FormCitation::hide));
-
- textAfter = inset->getOptions();
- updateCitekeys(inset->getContents());
- show();
-}
-
-
-void FormCitation::createInset( string const & arg )
-{
- if( dialogIsOpen ) return;
-
- string keys;
- if (contains(arg, "|")) {
- keys = token(arg, '|', 0);
- textAfter = token(arg, '|', 1);
- } else {
- keys = arg;
- textAfter.erase();
- }
-
- updateCitekeys(keys);
- show();
-}
-
-
-void FormCitation::show()
+FL_FORM * const FormCitation::form() const
{
- if (!dialog_) {
- build();
- fl_set_form_atclose(dialog_->form_citation,
- C_FormCitationWMHideCB, 0);
- }
-
- update(); // make sure its up-to-date
-
- dialogIsOpen = true;
- if (dialog_->form_citation->visible) {
- fl_raise_form(dialog_->form_citation);
- } else {
- fl_show_form(dialog_->form_citation,
- FL_PLACE_MOUSE | FL_FREE_SIZE,
- FL_TRANSIENT,
- _("Citation"));
- u_ = d_->updateBufferDependent.
- connect(slot(this, &FormCitation::update));
- h_ = d_->hideBufferDependent.
- connect(slot(this, &FormCitation::hide));
- }
+ if( dialog_ && dialog_->form_citation )
+ return dialog_->form_citation;
+ else
+ return 0;
}
bibkeys.push_back(blist[i].first);
bibkeysInfo.push_back(blist[i].second);
}
-
blist.clear();
+ citekeys.clear();
+ string tmp, keys( params.getContents() );
+ keys = frontStrip( split(keys, tmp, ',') );
+ while( !tmp.empty() ) {
+ citekeys.push_back( tmp );
+ keys = frontStrip( split(keys, tmp, ',') );
+ }
+
fl_freeze_form( dialog_->form_citation );
- updateBrowser( dialog_->bibBrsr, bibkeys );
+ updateBrowser( dialog_->bibBrsr, bibkeys );
updateBrowser( dialog_->citeBrsr, citekeys );
fl_clear_browser( dialog_->infoBrsr );
bool bibPresent = ( bibkeys.size() > 0 );
setSize( size, bibPresent );
- fl_set_input( dialog_->textAftr, textAfter.c_str() );
+ fl_set_input( dialog_->textAftr, params.getOptions().c_str() );
fl_unfreeze_form( dialog_->form_citation );
}
-void FormCitation::updateCitekeys( string const & keysIn )
-{
- citekeys.clear();
-
- string tmp;
- string keys = keysIn;
- keys = frontStrip( split(keys, tmp, ',') );
- while( !tmp.empty() ) {
- citekeys.push_back( tmp );
- keys = frontStrip( split(keys, tmp, ',') );
- }
-}
-
-
void FormCitation::updateBrowser( FL_OBJECT * browser,
vector<string> const & keys ) const
{
}
-void FormCitation::setSize( int brsrHeight, bool bibPresent ) const
+void FormCitation::setSize( int hbrsr, bool bibPresent ) const
{
- int const infoHeight = 110;
- int const otherHeight = 140;
- brsrHeight = max( brsrHeight, 175 );
- int formHeight = brsrHeight + otherHeight;
+ int const hinfo = dialog_->infoBrsr->h;
+ int const hother = 140;
+ hbrsr = max( hbrsr, 175 );
+ int wform = dialog_->form_citation->w;
+ int hform = hbrsr + hother;
- if( bibPresent ) formHeight += infoHeight + 30;
- fl_set_form_size( dialog_->form_citation, 430, formHeight );
+ if( bibPresent ) hform += hinfo + 30;
+ fl_set_form_size( dialog_->form_citation, wform, hform );
// No resizing is alowed in the y-direction
- fl_set_form_minsize( dialog_->form_citation, 430, formHeight );
- fl_set_form_maxsize( dialog_->form_citation, 1000, formHeight );
+ fl_set_form_minsize( dialog_->form_citation, wform, hform );
+ fl_set_form_maxsize( dialog_->form_citation, 3*wform, hform );
- int ypos = 0;
- fl_set_object_geometry( dialog_->box, 0, ypos, 430, formHeight );
- ypos += 30;
- fl_set_object_geometry( dialog_->citeBrsr, 10, ypos, 180, brsrHeight );
- fl_set_object_geometry( dialog_->bibBrsr, 240, ypos, 180, brsrHeight );
+ int y = 0;
+ fl_set_object_geometry( dialog_->box, 0, y, wform, hform );
+ y += 30;
+ fl_set_object_geometry( dialog_->citeBrsr, 10, y, 180, hbrsr );
+ fl_set_object_geometry( dialog_->bibBrsr, 240, y, 180, hbrsr );
- fl_set_object_position( dialog_->addBtn, 200, ypos );
- ypos += 35;
- fl_set_object_position( dialog_->delBtn, 200, ypos );
- ypos += 35;
- fl_set_object_position( dialog_->upBtn, 200, ypos );
- ypos += 35;
- fl_set_object_position( dialog_->downBtn, 200, ypos );
+ fl_set_object_position( dialog_->addBtn, 200, y );
+ y += 5 + dialog_->addBtn->h;
+ fl_set_object_position( dialog_->delBtn, 200, y );
+ y += 5 + dialog_->delBtn->h;
+ fl_set_object_position( dialog_->upBtn, 200, y );
+ y += 5 + dialog_->upBtn->h;
+ fl_set_object_position( dialog_->downBtn, 200, y );
- ypos = brsrHeight+30; // base of Citation/Bibliography browsers
+ y = dialog_->bibBrsr->y + dialog_->bibBrsr->h;
// awaiting natbib support
fl_hide_object( dialog_->style );
if( bibPresent ) {
- ypos += 30;
- fl_set_object_position( dialog_->infoBrsr, 10, ypos );
+ y += 30;
+ fl_set_object_position( dialog_->infoBrsr, 10, y );
fl_show_object( dialog_->infoBrsr );
- ypos += infoHeight;
+ y += hinfo;
}
else
fl_hide_object( dialog_->infoBrsr );
- ypos += 20;
+ y += 20;
// awaiting natbib support
fl_hide_object( dialog_->textBefore );
- fl_set_object_position( dialog_->textAftr, 100, ypos );
- fl_set_object_position( dialog_->ok, 230, ypos+50 );
- fl_set_object_position( dialog_->cancel, 330, ypos+50 );
+ fl_set_object_position( dialog_->textAftr, 100, y );
+ fl_set_object_position( dialog_->ok, 230, y+50 );
+ fl_set_object_position( dialog_->cancel, 330, y+50 );
}
-void FormCitation::input( State cb )
+void FormCitation::input( long data )
{
+ State cb = static_cast<FormCitation::State>( data );
+
switch( cb ) {
case BIBBRSR:
{
contents += citekeys[i];
}
- textAfter = fl_get_input(dialog_->textAftr);
+ params.setContents( contents );
+ params.setOptions( fl_get_input(dialog_->textAftr) );
if( inset_ != 0 )
{
- inset_->setContents( contents );
- inset_->setOptions( textAfter );
- lv_->view()->updateInset( inset_, true );
+ // Only update if contents have changed
+ if( params.getCmdName() != inset_->getCmdName() ||
+ params.getContents() != inset_->getContents() ||
+ params.getOptions() != inset_->getOptions() ) {
+ inset_->setParams( params );
+ lv_->view()->updateInset( inset_, true );
+ }
} else {
- InsetCommandParams p( "cite", contents, textAfter );
lv_->getLyXFunc()->Dispatch( LFUN_INSERT_CITATION,
- p.getAsString().c_str() );
- }
-}
-
-
-void FormCitation::hide()
-{
- if (dialog_
- && dialog_->form_citation
- && dialog_->form_citation->visible) {
- fl_hide_form(dialog_->form_citation);
- u_.disconnect();
- h_.disconnect();
+ params.getAsString().c_str() );
}
-
- // free up the dialog for another inset
- inset_ = 0;
- ih_.disconnect();
- dialogIsOpen = false;
-}
-
-
-void FormCitation::free()
-{
- // we don't need to delete u and h here because
- // hide() does that after disconnecting.
- if (dialog_) {
- if (dialog_->form_citation
- && dialog_->form_citation->visible) {
- hide();
- }
- fl_free_form(dialog_->form_citation);
- delete dialog_;
- dialog_ = 0;
- }
-}
-
-
-int FormCitation::WMHideCB(FL_FORM * form, void *)
-{
- // Ensure that the signals (u and h) are disconnected even if the
- // window manager is used to close the dialog.
- FormCitation * pre = static_cast<FormCitation*>(form->u_vdata);
- pre->hide();
- return FL_CANCEL;
-}
-
-
-void FormCitation::OKCB(FL_OBJECT * ob, long)
-{
- FormCitation * pre = static_cast<FormCitation*>(ob->form->u_vdata);
- pre->apply();
- pre->hide();
-}
-
-
-void FormCitation::CancelCB(FL_OBJECT * ob, long)
-{
- FormCitation * pre = static_cast<FormCitation*>(ob->form->u_vdata);
- pre->hide();
-}
-
-
-void FormCitation::InputCB(FL_OBJECT * ob, long data)
-{
- FormCitation * pre = static_cast<FormCitation*>(ob->form->u_vdata);
- pre->input( static_cast<FormCitation::State>(data) );
}
#ifndef FORMCITATION_H
#define FORMCITATION_H
-#include <vector>
-
-#include "DialogBase.h"
-#include "LString.h"
-#include "support/utility.hpp"
-
#ifdef __GNUG__
#pragma interface
#endif
-class Dialogs;
-// same arguement as in Dialogs.h s/LyX/UI/
-class LyXView;
-class InsetCitation;
+#include "FormCommand.h"
struct FD_form_citation;
/** This class provides an XForms implementation of the FormCitation Dialog.
*/
-class FormCitation : public DialogBase, public noncopyable {
+class FormCitation : public FormCommand, public noncopyable {
public:
///
enum State {
~FormCitation();
//@}
- /**@name Real per-instance Callback Methods */
- //@{
- static int WMHideCB(FL_FORM *, void *);
- static void OKCB(FL_OBJECT *, long);
- static void CancelCB(FL_OBJECT *, long);
- static void InputCB(FL_OBJECT *, long);
- //@}
-
private:
/**@name Slot Methods */
//@{
- /// Create the dialog if necessary, update it and display it.
- void createInset( string const & );
- ///
- void showInset( InsetCitation * );
- ///
- void show();
- /// Hide the dialog.
- void hide();
- ///
- void update();
- //@}
-
- /**@name Dialog internal methods */
- //@{
+ virtual void update();
/// Apply from dialog
- void apply();
+ virtual void apply();
/// Filter the inputs
- void input( State );
+ virtual void input( long );
/// Build the dialog
- void build();
+ virtual void build();
///
- void updateCitekeys( string const & );
+ virtual FL_FORM * const form() const;
///
void updateBrowser( FL_OBJECT *, std::vector<string> const & ) const;
///
void setSize( int, bool ) const;
///
FD_form_citation * build_citation();
- /// Explicitly free the dialog.
- void free();
//@}
- /**@name Private Data */
- //@{
/// Real GUI implementation.
FD_form_citation * dialog_;
- /** Which LyXFunc do we use?
- We could modify Dialogs to have a visible LyXFunc* instead and
- save a couple of bytes per dialog.
- */
- LyXView * lv_;
- /** Which Dialogs do we belong to?
- Used so we can get at the signals we have to connect to.
- */
- Dialogs * d_;
- /// Update connection.
- Connection u_;
- /// Hide connection.
- Connection h_;
- /// inset::hide connection.
- Connection ih_;
- ///
- InsetCitation * inset_;
- ///
- bool dialogIsOpen;
- ///
- string textAfter;
- ///
- std::vector<string> citekeys;
- ///
- std::vector<string> bibkeys;
- ///
- std::vector<string> bibkeysInfo;
- //@}
};
#endif
--- /dev/null
+// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 2000 The LyX Team.
+ *
+ * ======================================================
+ */
+
+#include <config.h>
+
+#include FORMS_H_LOCATION
+
+#ifdef __GNUG__
+#pragma implementation
+#endif
+
+
+#include "Dialogs.h"
+#include "FormCommand.h"
+#include "xform_macros.h"
+
+C_RETURNCB(FormCommand, WMHideCB)
+C_GENERICCB(FormCommand, ApplyCB)
+C_GENERICCB(FormCommand, CancelCB)
+C_GENERICCB(FormCommand, InputCB)
+C_GENERICCB(FormCommand, OKCB)
+
+FormCommand::FormCommand(LyXView * lv, Dialogs * d, string const & t)
+ : lv_(lv), d_(d), u_(0), h_(0), ih_(0),
+ inset_(0), dialogIsOpen(false), title(t)
+{}
+
+
+void FormCommand::showInset( InsetCommand * const inset )
+{
+ if( dialogIsOpen || inset == 0 ) return;
+
+ inset_ = inset;
+ ih_ = inset_->hide.connect(slot(this, &FormCommand::hide));
+
+ params = inset->params();
+ show();
+}
+
+
+void FormCommand::createInset( string const & arg )
+{
+ if( dialogIsOpen ) return;
+
+ params.setFromString( arg );
+ show();
+}
+
+
+void FormCommand::show()
+{
+ if (!form()) {
+ build();
+ fl_set_form_atclose(form(),
+ C_FormCommandWMHideCB, 0);
+ }
+
+ fl_freeze_form( form() );
+ update(); // make sure its up-to-date
+ fl_unfreeze_form( form() );
+
+ dialogIsOpen = true;
+ if (form()->visible) {
+ fl_raise_form(form());
+ } else {
+ fl_show_form(form(),
+ FL_PLACE_MOUSE | FL_FREE_SIZE,
+ FL_TRANSIENT,
+ title.c_str());
+ u_ = d_->updateBufferDependent.
+ connect(slot(this, &FormCommand::update));
+ h_ = d_->hideBufferDependent.
+ connect(slot(this, &FormCommand::hide));
+ }
+}
+
+
+void FormCommand::free()
+{
+ // we don't need to delete u and h here because
+ // hide() does that after disconnecting.
+ if( form() ) {
+ if( form()->visible)
+ hide();
+ fl_free_form(form());
+ }
+}
+
+
+void FormCommand::hide()
+{
+ if (form() && form()->visible) {
+ fl_hide_form(form());
+ u_.disconnect();
+ h_.disconnect();
+ }
+
+ // free up the dialog for another inset
+ inset_ = 0;
+ ih_.disconnect();
+ dialogIsOpen = false;
+}
+
+
+int FormCommand::WMHideCB(FL_FORM * form, void *)
+{
+ // Ensure that the signals (u and h) are disconnected even if the
+ // window manager is used to close the dialog.
+ FormCommand * pre = static_cast<FormCommand*>(form->u_vdata);
+ pre->hide();
+ return FL_CANCEL;
+}
+
+
+void FormCommand::ApplyCB(FL_OBJECT * ob, long)
+{
+ FormCommand * pre = static_cast<FormCommand*>(ob->form->u_vdata);
+ pre->apply();
+}
+
+
+void FormCommand::CancelCB(FL_OBJECT * ob, long)
+{
+ FormCommand * pre = static_cast<FormCommand*>(ob->form->u_vdata);
+ pre->hide();
+}
+
+
+void FormCommand::InputCB(FL_OBJECT * ob, long data )
+{
+ FormCommand * pre = static_cast<FormCommand*>(ob->form->u_vdata);
+ pre->input( data );
+}
+
+
+void FormCommand::OKCB(FL_OBJECT * ob, long)
+{
+ FormCommand * pre = static_cast<FormCommand*>(ob->form->u_vdata);
+ pre->apply();
+ pre->hide();
+}
+
+
--- /dev/null
+// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 2000 The LyX Team.
+ *
+ * ======================================================
+ */
+
+#ifndef FORMCOMMAND_H
+#define FORMCOMMAND_H
+
+#include "DialogBase.h"
+#include "LString.h"
+#include "support/utility.hpp"
+#include "insets/insetcommand.h"
+
+class Dialogs;
+class LyXView;
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+/** This class is an XForms GUI base class to insets derived from
+ InsetCommand
+ */
+class FormCommand : public DialogBase, public noncopyable {
+public:
+ /// Constructor
+ FormCommand(LyXView *, Dialogs *, string const & );
+
+ /**@name Real per-instance Callback Methods */
+ //@{
+ static int WMHideCB(FL_FORM *, void *);
+ static void OKCB(FL_OBJECT *, long);
+ static void ApplyCB(FL_OBJECT *, long);
+ static void CancelCB(FL_OBJECT *, long);
+ static void InputCB(FL_OBJECT *, long);
+ //@}
+
+protected:
+ /**@name Slot Methods */
+ //@{
+ /// Create the dialog if necessary, update it and display it.
+ void createInset( string const & );
+ ///
+ void showInset( InsetCommand * const );
+ ///
+ void show();
+ /// Hide the dialog.
+ void hide();
+ /// Explicitly free the dialog.
+ void free();
+ ///
+ virtual void input( long ) = 0;
+ ///
+ virtual void update() = 0;
+ /// Apply from dialog
+ virtual void apply() = 0;
+ /// Build the dialog
+ virtual void build() = 0;
+ ///
+ virtual FL_FORM * const form() const = 0;
+ //@}
+
+ /**@name Private Data */
+ //@{
+ /** Which LyXFunc do we use?
+ We could modify Dialogs to have a visible LyXFunc* instead and
+ save a couple of bytes per dialog.
+ */
+ LyXView * lv_;
+ /** Which Dialogs do we belong to?
+ Used so we can get at the signals we have to connect to.
+ */
+ Dialogs * d_;
+ /// Update connection.
+ Connection u_;
+ /// Hide connection.
+ Connection h_;
+ /// inset::hide connection.
+ Connection ih_;
+ ///
+ InsetCommand * inset_;
+ ///
+ bool dialogIsOpen;
+ ///
+ InsetCommandParams params;
+ ///
+ string title;
+ //@}
+};
+
+#endif
--- /dev/null
+// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 2000 The LyX Team.
+ *
+ * ======================================================
+ */
+
+#include <config.h>
+#include <vector>
+
+#include FORMS_H_LOCATION
+
+#ifdef __GNUG__
+#pragma implementation
+#endif
+
+
+#include "gettext.h"
+#include "Dialogs.h"
+#include "FormToc.h"
+#include "LyXView.h"
+#include "buffer.h"
+#include "form_toc.h"
+#include "lyxtext.h"
+
+static vector<Buffer::TocItem> toclist;
+
+FormToc::FormToc(LyXView * lv, Dialogs * d)
+ : FormCommand(lv, d, _("Table of Contents"))
+{
+ // let the dialog be shown
+ // These are permanent connections so we won't bother
+ // storing a copy because we won't be disconnecting.
+ d->showTOC.connect(slot(this, &FormToc::showInset));
+ d->createTOC.connect(slot(this, &FormToc::createInset));
+}
+
+
+FormToc::~FormToc()
+{
+ free();
+ delete dialog_;
+}
+
+
+void FormToc::build()
+{
+ dialog_ = build_toc();
+ fl_addto_choice(dialog_->type,
+ _(" TOC | LOF | LOT | LOA "));
+}
+
+
+FL_FORM * const FormToc::form() const
+{
+ if( dialog_ && dialog_->form_toc )
+ return dialog_->form_toc;
+ else
+ return 0;
+}
+
+
+void FormToc::update()
+{
+ static int ow = -1, oh;
+
+ if (ow < 0) {
+ ow = form()->w;
+ oh = form()->h;
+
+ fl_set_form_minsize(form(), ow, oh);
+ fl_set_form_maxsize(form(), 2*ow, oh);
+ }
+
+ Buffer::TocType type;
+
+ if( params.getCmdName() == "tableofcontents" )
+ type = Buffer::TOC_TOC;
+
+ else if( params.getCmdName() == "listofalgorithms" )
+ type = Buffer::TOC_LOA;
+
+ else if( params.getCmdName() == "listoffigures" )
+ type = Buffer::TOC_LOF;
+
+ else
+ type = Buffer::TOC_LOT;
+
+ fl_set_choice( dialog_->type, type+1 );
+
+ updateToc();
+}
+
+
+void FormToc::updateToc()
+{
+ if (!lv_->view()->available()) {
+ toclist.clear();
+ fl_clear_browser( dialog_->browser );
+ fl_add_browser_line( dialog_->browser, _("*** No Document ***"));
+ return;
+ }
+
+ vector<vector<Buffer::TocItem> > tmp =
+ lv_->view()->buffer()->getTocList();
+ int type = fl_get_choice( dialog_->type ) - 1;
+
+ // Check if all elements are the same.
+ if (toclist.size() == tmp[type].size()) {
+ unsigned int i = 0;
+ for (; i < toclist.size(); ++i) {
+ if (toclist[i] != tmp[type][i])
+ break;
+ }
+ if (i >= toclist.size()) return;
+ }
+
+ // List has changed. Update browser
+ toclist = tmp[type];
+
+ static Buffer * buffer = 0;
+ int topline = 0;
+ int line = 0;
+ if (buffer == lv_->view()->buffer()) {
+ topline = fl_get_browser_topline( dialog_->browser );
+ line = fl_get_browser( dialog_->browser );
+ } else
+ buffer = lv_->view()->buffer();
+
+ fl_clear_browser( dialog_->browser );
+
+ for (vector<Buffer::TocItem>::const_iterator it = toclist.begin();
+ it != toclist.end(); ++it)
+ fl_add_browser_line( dialog_->browser,
+ (string(4*(*it).depth,' ')+(*it).str).c_str());
+
+ fl_set_browser_topline( dialog_->browser, topline );
+ fl_select_browser_line( dialog_->browser, line );
+}
+
+
+void FormToc::apply()
+{
+ if (!lv_->view()->available())
+ return;
+
+ updateToc();
+
+ unsigned int choice = fl_get_browser( dialog_->browser );
+ if (0 < choice && choice - 1 < toclist.size()) {
+ lv_->view()->beforeChange();
+ lv_->view()->text->SetCursor( lv_->view(), toclist[choice-1].par, 0 );
+ lv_->view()->text->sel_cursor =
+ lv_->view()->text->cursor;
+ lv_->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ }
+}
--- /dev/null
+// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 2000 The LyX Team.
+ *
+ * ======================================================
+ */
+
+#ifndef FORMTOC_H
+#define FORMTOC_H
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include "FormCommand.h"
+struct FD_form_toc;
+
+/** This class provides an XForms implementation of the FormToc Dialog.
+ */
+class FormToc : public FormCommand, public noncopyable {
+public:
+ /**@name Constructors and Destructors */
+ //@{
+ ///
+ FormToc(LyXView *, Dialogs *);
+ ///
+ ~FormToc();
+
+private:
+ /**@name Slot Methods */
+ //@{
+ ///
+ virtual void update();
+ /// Apply from dialog
+ virtual void apply();
+ ///
+ virtual void input( long ) {};
+ /// Build the dialog
+ virtual void build();
+ ///
+ virtual FL_FORM * const form() const;
+ ///
+ void updateToc();
+ ///
+ FD_form_toc * build_toc();
+ //@}
+
+ /// Real GUI implementation.
+ FD_form_toc * dialog_;
+};
+
+#endif
#include "insets/inseturl.h"
#include "support/filetools.h"
-C_RETURNCB(FormUrl, WMHideCB)
-C_GENERICCB(FormUrl, OKCB)
-C_GENERICCB(FormUrl, CancelCB)
-
FormUrl::FormUrl(LyXView * lv, Dialogs * d)
- : dialog_(0), lv_(lv), d_(d), u_(0), h_(0), ih_(0),
- inset_(0), dialogIsOpen(false)
+ : FormCommand(lv, d, _("Url"))
{
// let the dialog be shown
// These are permanent connections so we won't bother
// storing a copy because we won't be disconnecting.
d->showUrl.connect(slot(this, &FormUrl::showInset));
d->createUrl.connect(slot(this, &FormUrl::createInset));
- params = new InsetCommandParams();
}
FormUrl::~FormUrl()
{
free();
- delete params;
+ delete dialog_;
}
}
-void FormUrl::showInset( InsetUrl * inset )
-{
- if( dialogIsOpen || inset == 0 ) return;
-
- inset_ = inset;
- ih_ = inset_->hide.connect(slot(this, &FormUrl::hide));
-
- (*params) = inset->params();
- show();
-}
-
-
-void FormUrl::createInset( string const & arg )
+FL_FORM * const FormUrl::form() const
{
- if( dialogIsOpen ) return;
-
- params->setFromString( arg );
- show();
+ if( dialog_ && dialog_->form_url )
+ return dialog_->form_url;
+ else
+ return 0;
}
-void FormUrl::show()
+void FormUrl::update()
{
- if (!dialog_) {
- build();
- fl_set_form_atclose(dialog_->form_url,
- C_FormUrlWMHideCB, 0);
- }
+ static int ow = -1, oh;
- update(); // make sure its up-to-date
+ if (ow < 0) {
+ ow = dialog_->form_url->w;
+ oh = dialog_->form_url->h;
- dialogIsOpen = true;
- if (dialog_->form_url->visible) {
- fl_raise_form(dialog_->form_url);
- } else {
- fl_show_form(dialog_->form_url,
- FL_PLACE_MOUSE | FL_FREE_SIZE,
- FL_TRANSIENT,
- _("Url"));
- u_ = d_->updateBufferDependent.
- connect(slot(this, &FormUrl::update));
- h_ = d_->hideBufferDependent.
- connect(slot(this, &FormUrl::hide));
+ fl_set_form_minsize(dialog_->form_url, ow, oh);
+ fl_set_form_maxsize(dialog_->form_url, 2*ow, oh);
}
-}
+ fl_freeze_form( dialog_->form_url );
-void FormUrl::update()
-{
- fl_set_input(dialog_->url, params->getContents().c_str());
- fl_set_input(dialog_->name, params->getOptions().c_str());
+ fl_set_input(dialog_->url, params.getContents().c_str());
+ fl_set_input(dialog_->name, params.getOptions().c_str());
- if ( params->getCmdName() == "url" )
+ if ( params.getCmdName() == "url" )
fl_set_button(dialog_->radio_html, 0);
else
fl_set_button(dialog_->radio_html, 1);
- static int ow = -1, oh;
-
- if (ow < 0) {
- ow = dialog_->form_url->w;
- oh = dialog_->form_url->h;
+ if( lv_->buffer()->isReadonly() ) {
+ fl_deactivate_object( dialog_->url );
+ fl_deactivate_object( dialog_->name );
+ fl_deactivate_object( dialog_->radio_html );
+ fl_deactivate_object( dialog_->ok );
+ fl_set_object_lcol( dialog_->ok, FL_INACTIVE );
+ } else {
+ fl_activate_object( dialog_->url );
+ fl_activate_object( dialog_->name );
+ fl_activate_object( dialog_->radio_html );
+ fl_activate_object( dialog_->ok );
+ fl_set_object_lcol( dialog_->ok, FL_BLACK );
}
- fl_set_form_minsize(dialog_->form_url, ow, oh);
- fl_set_form_maxsize(dialog_->form_url, 2*ow, oh);
+ fl_unfreeze_form( dialog_->form_url );
}
{
if( lv_->buffer()->isReadonly() ) return;
- params->setContents( fl_get_input(dialog_->url) );
- params->setOptions( fl_get_input(dialog_->name) );
+ params.setContents( fl_get_input(dialog_->url) );
+ params.setOptions( fl_get_input(dialog_->name) );
if (fl_get_button(dialog_->radio_html))
- params->setCmdName("htmlurl");
+ params.setCmdName("htmlurl");
else
- params->setCmdName("url");
+ params.setCmdName("url");
if( inset_ != 0 )
{
- inset_->setParams( *params );
- lv_->view()->updateInset( inset_, true );
+ // Only update if contents have changed
+ if( params.getCmdName() != inset_->getCmdName() ||
+ params.getContents() != inset_->getContents() ||
+ params.getOptions() != inset_->getOptions() ) {
+ inset_->setParams( params );
+ lv_->view()->updateInset( inset_, true );
+ }
} else {
lv_->getLyXFunc()->Dispatch( LFUN_INSERT_URL,
- params->getAsString().c_str() );
- }
-}
-
-
-void FormUrl::hide()
-{
- if (dialog_
- && dialog_->form_url
- && dialog_->form_url->visible) {
- fl_hide_form(dialog_->form_url);
- u_.disconnect();
- h_.disconnect();
- }
-
- // free up the dialog for another inset
- inset_ = 0;
- ih_.disconnect();
- dialogIsOpen = false;
-}
-
-
-void FormUrl::free()
-{
- // we don't need to delete u and h here because
- // hide() does that after disconnecting.
- if (dialog_) {
- if (dialog_->form_url
- && dialog_->form_url->visible) {
- hide();
- }
- fl_free_form(dialog_->form_url);
- delete dialog_;
- dialog_ = 0;
+ params.getAsString().c_str() );
}
}
-
-
-int FormUrl::WMHideCB(FL_FORM * form, void *)
-{
- // Ensure that the signals (u and h) are disconnected even if the
- // window manager is used to close the dialog.
- FormUrl * pre = static_cast<FormUrl*>(form->u_vdata);
- pre->hide();
- return FL_CANCEL;
-}
-
-
-void FormUrl::OKCB(FL_OBJECT * ob, long)
-{
- FormUrl * pre = static_cast<FormUrl*>(ob->form->u_vdata);
- pre->apply();
- pre->hide();
-}
-
-
-void FormUrl::CancelCB(FL_OBJECT * ob, long)
-{
- FormUrl * pre = static_cast<FormUrl*>(ob->form->u_vdata);
- pre->hide();
-}
#ifndef FORMURL_H
#define FORMURL_H
-#include "DialogBase.h"
-#include "LString.h"
-
-#include "support/utility.hpp"
-
-class Dialogs;
-class LyXView;
-class InsetCommandParams;
-class InsetUrl;
-struct FD_form_url;
-
#ifdef __GNUG__
#pragma interface
#endif
+#include "FormCommand.h"
+struct FD_form_url;
+
/** This class provides an XForms implementation of the FormUrl Dialog.
*/
-class FormUrl : public DialogBase, public noncopyable {
+class FormUrl : public FormCommand, public noncopyable {
public:
/**@name Constructors and Destructors */
//@{
~FormUrl();
//@}
- /**@name Real per-instance Callback Methods */
- //@{
- static int WMHideCB(FL_FORM *, void *);
- static void OKCB(FL_OBJECT *, long);
- static void CancelCB(FL_OBJECT *, long);
- //@}
-
private:
/**@name Slot Methods */
//@{
- /// Create the dialog if necessary, update it and display it.
- void createInset( string const & );
- ///
- void showInset( InsetUrl * );
- ///
- void show();
- /// Hide the dialog.
- void hide();
///
- void update();
- //@}
-
- /**@name Dialog internal methods */
- //@{
+ virtual void update();
/// Apply from dialog
void apply();
+ ///
+ virtual void input( long ) {};
/// Build the dialog
void build();
///
+ virtual FL_FORM * const form() const;
+ ///
FD_form_url * build_url();
- /// Explicitly free the dialog.
- void free();
//@}
- /**@name Private Data */
- //@{
/// Real GUI implementation.
FD_form_url * dialog_;
- /** Which LyXFunc do we use?
- We could modify Dialogs to have a visible LyXFunc* instead and
- save a couple of bytes per dialog.
- */
- LyXView * lv_;
- /** Which Dialogs do we belong to?
- Used so we can get at the signals we have to connect to.
- */
- Dialogs * d_;
- /// Update connection.
- Connection u_;
- /// Hide connection.
- Connection h_;
- /// inset::hide connection.
- Connection ih_;
- ///
- InsetUrl * inset_;
- ///
- bool dialogIsOpen;
- ///
- InsetCommandParams * params;
- //@}
};
#endif
=============== FORM ===============
Name: form_citation
-Width: 450
-Height: 780
+Width: 430
+Height: 770
Number of Objects: 13
--------------------
class: FL_BOX
type: UP_BOX
-box: 0 0 430 780
+box: 0 0 430 770
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
resize: FL_RESIZE_X
gravity: FL_NoGravity FL_NoGravity
name: citeBrsr
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: CITEBRSR
--------------------
resize: FL_RESIZE_X
gravity: FL_NoGravity FL_NoGravity
name: bibBrsr
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: BIBBRSR
--------------------
resize: FL_RESIZE_NONE
gravity: FL_NoGravity FL_NoGravity
name: addBtn
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: ADD
--------------------
resize: FL_RESIZE_NONE
gravity: FL_NoGravity FL_NoGravity
name: delBtn
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: DELETE
--------------------
resize: FL_RESIZE_NONE
gravity: FL_NoGravity FL_NoGravity
name: upBtn
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: UP
--------------------
resize: FL_RESIZE_NONE
gravity: FL_NoGravity FL_NoGravity
name: downBtn
-callback: C_FormCitationInputCB
+callback: C_FormCommandInputCB
argument: DOWN
--------------------
class: FL_BROWSER
type: NORMAL_BROWSER
-box: 10 440 430 110
+box: 10 440 410 110
boxtype: FL_DOWN_BOX
colors: FL_COL1 FL_YELLOW
alignment: FL_ALIGN_TOP_LEFT
resize: FL_RESIZE_ALL
gravity: FL_SouthEast FL_SouthEast
name: ok
-callback: C_FormCitationOKCB
+callback: C_FormCommandOKCB
argument: 0
--------------------
resize: FL_RESIZE_ALL
gravity: FL_SouthEast FL_SouthEast
name: cancel
-callback: C_FormCitationCancelCB
+callback: C_FormCommandCancelCB
argument: 0
==============================
--- /dev/null
+Magic: 13000
+
+Internal Form Definition File
+ (do not change)
+
+Number of forms: 1
+Unit of measure: FL_COORD_PIXEL
+
+=============== FORM ===============
+Name: form_toc
+Width: 420
+Height: 340
+Number of Objects: 5
+
+--------------------
+class: FL_BOX
+type: UP_BOX
+box: 0 0 420 340
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label:
+shortcut:
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name:
+callback:
+argument:
+
+--------------------
+class: FL_BROWSER
+type: HOLD_BROWSER
+box: 10 10 400 280
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_YELLOW
+alignment: FL_ALIGN_BOTTOM
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label:
+shortcut:
+resize: FL_RESIZE_ALL
+gravity: FL_NorthWest FL_SouthEast
+name: browser
+callback: C_FormCommandApplyCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: RETURN_BUTTON
+box: 310 300 100 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Close
+shortcut: ^M
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name:
+callback: C_FormCommandCancelCB
+argument: 0
+
+--------------------
+class: FL_BUTTON
+type: NORMAL_BUTTON
+box: 200 300 100 30
+boxtype: FL_UP_BOX
+colors: FL_COL1 FL_COL1
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Update
+shortcut: Update|#U#u
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name:
+callback: C_FormCommandApplyCB
+argument: 0
+
+--------------------
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 60 300 130 30
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_LEFT
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: Type
+shortcut: Type|#T#t
+resize: FL_RESIZE_NONE
+gravity: FL_SouthEast FL_SouthEast
+name: type
+callback: C_FormCommandApplyCB
+argument: 0
+
+==============================
+create_the_forms
resize: FL_RESIZE_NONE
gravity: FL_SouthEast FL_SouthEast
name: cancel
-callback: C_FormUrlCancelCB
+callback: C_FormCommandCancelCB
argument: 0
--------------------
resize: FL_RESIZE_ALL
gravity: FL_SouthEast FL_SouthEast
name: ok
-callback: C_FormUrlOKCB
+callback: C_FormCommandOKCB
argument: 0
==============================
form_print.fd \
form_graphics.fd \
form_tabular.fd \
+ form_toc.fd \
form_url.fd
insetlatexaccent.h \
insetlist.C \
insetlist.h \
- insetloa.C \
- insetloa.h \
- insetlof.C \
- insetlof.h \
- insetlot.C \
- insetlot.h \
insetmarginal.h \
insetmarginal.C \
insetminipage.C \
#endif
#include "insetcite.h"
-#include "LyXView.h"
#include "BufferView.h"
+#include "LyXView.h"
#include "frontends/Dialogs.h"
#include "support/lstrings.h"
: InsetCommand(p)
{}
-InsetCitation::~InsetCitation()
-{
- hide();
-}
-
string InsetCitation::getScreenLabel() const
{
string keys(getContents());
#endif
#include "insetcommand.h"
-#include <sigc++/signal_system.h>
-
-#ifdef SIGC_CXX_NAMESPACES
-using SigC::Signal0;
-#endif
/** Used to insert citations
*/
explicit
InsetCitation(InsetCommandParams const &);
///
- ~InsetCitation();
- ///
Inset * Clone() const { return new InsetCitation(params()); }
///
string getScreenLabel() const;
EDITABLE Editable() const { return IS_EDITABLE; }
///
void Edit(BufferView *, int, int, unsigned int);
- ///
- Signal0<void> hide;
};
#endif // INSET_CITE_H
#endif
#include "insetbutton.h"
+#include <sigc++/signal_system.h>
+
+#ifdef SIGC_CXX_NAMESPACES
+using SigC::Signal0;
+#endif
// Created by Alejandro 970222
/** Used to insert a LaTeX command automatically
explicit
InsetCommand(InsetCommandParams const &);
///
+ virtual ~InsetCommand() { hide(); };
+ ///
void Write(Buffer const *, std::ostream &) const;
/// Parse the command.
InsetCommandParams const & params() const { return p_; }
///
void setParams(InsetCommandParams const &);
+ ///
+ Signal0<void> hide;
private:
///
InsetCommandParams p_;
+++ /dev/null
-// -*- C++ -*-
-/* This file is part of*
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1996-2000 The LyX Team.
- *
- * ====================================================== */
-
-// Created by Bernhard 970908
-
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "gettext.h"
-#include "insetloa.h"
-#include "LaTeXFeatures.h"
-#include "BufferView.h"
-#include "LyXView.h"
-#include "lyxfunc.h"
-#include "commandtags.h"
-
-void InsetLOA::Validate(LaTeXFeatures & features) const
-{
- features.algorithm = true;
-}
-
-
-string InsetLOA::getScreenLabel() const
-{
- return _("List of Algorithms");
-}
-
-void InsetLOA::Edit(BufferView * bv, int, int, unsigned int)
-{
- bv->owner()->getLyXFunc()->Dispatch(LFUN_LOAVIEW);
-}
+++ /dev/null
-// -*- C++ -*-
-/* This file is part of*
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1996-2000 the LyX Team.
- *
- * ====================================================== */
-
-#ifndef INSET_LOA_H
-#define INSET_LOA_H
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "insetcommand.h"
-
-class Buffer;
-
-/** Used to insert table of algorithms
- */
-class InsetLOA : public InsetCommand {
-public:
- ///
- InsetLOA() : InsetCommand("listofalgorithms") {}
- ///
- explicit
- InsetLOA(Buffer * b) : InsetCommand("listofalgorithms"), owner(b) {}
- ///
- void Validate(LaTeXFeatures & features) const;
- ///
- Inset * Clone() const { return new InsetLOA(owner); }
- ///
- string getScreenLabel() const;
- ///
- void Edit(BufferView * bv, int, int, unsigned int);
- ///
- EDITABLE Editable() const {
- return IS_EDITABLE; // not yet
- }
- ///
- bool display() const { return true; }
- ///
- Inset::Code LyxCode() const { return Inset::LOA_CODE; }
-private:
- ///
- Buffer * owner;
-};
-
-#endif
+++ /dev/null
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "gettext.h"
-#include "insetlof.h"
-#include "BufferView.h"
-#include "LyXView.h"
-#include "lyxfunc.h"
-#include "commandtags.h"
-
-string InsetLOF::getScreenLabel() const
-{
- return _("List of Figures");
-}
-
-void InsetLOF::Edit(BufferView * bv, int, int, unsigned int)
-{
- bv->owner()->getLyXFunc()->Dispatch(LFUN_LOFVIEW);
-}
+++ /dev/null
-// -*- C++ -*-
-/* This file is part of*
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1996-2000 the LyX Team.
- *
- * ====================================================== */
-
-#ifndef INSET_LOF_H
-#define INSET_LOF_H
-
-#include "insetcommand.h"
-
-// Created by Lgb 970527
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-class Buffer;
-
-/** Used to insert table of contents
- */
-class InsetLOF : public InsetCommand {
-public:
- ///
- InsetLOF() : InsetCommand("listoffigures") {}
- ///
- explicit
- InsetLOF(Buffer * b) : InsetCommand("listoffigures"), owner(b) {}
- ///
- Inset * Clone() const { return new InsetLOF(owner); }
- ///
- string getScreenLabel() const;
- ///
- void Edit(BufferView * bv, int, int, unsigned int);
- ///
- EDITABLE Editable() const {
- return IS_EDITABLE; // Finally!
- }
- ///
- bool display() const { return true; }
- ///
- Inset::Code LyxCode() const { return Inset::LOF_CODE; }
-private:
- ///
- Buffer * owner;
-};
-#endif
+++ /dev/null
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "gettext.h"
-#include "insetlot.h"
-#include "BufferView.h"
-#include "LyXView.h"
-#include "lyxfunc.h"
-#include "commandtags.h"
-
-
-string InsetLOT::getScreenLabel() const
-{
- return _("List of Tables");
-}
-
-void InsetLOT::Edit(BufferView * bv, int, int, unsigned int)
-{
- bv->owner()->getLyXFunc()->Dispatch(LFUN_LOTVIEW);
-}
+++ /dev/null
-// -*- C++ -*-
-/* This file is part of*
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1996-2000 LyX Team
- *
- * ====================================================== */
-
-#ifndef INSET_LOT_H
-#define INSET_LOT_H
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "insetcommand.h"
-
-// Created by Lgb 970527
-
-class Buffer;
-
-/** Used to insert table of contents
- */
-class InsetLOT : public InsetCommand {
-public:
- ///
- InsetLOT() : InsetCommand("listoftables") {}
- ///
- explicit
- InsetLOT(Buffer * b) : InsetCommand("listoftables"), owner(b) {}
- ///
- Inset * Clone() const { return new InsetLOT(owner); }
- ///
- string getScreenLabel() const;
- ///
- void Edit(BufferView * bv, int, int, unsigned int);
- ///
- EDITABLE Editable() const {
- return IS_EDITABLE; // not yet
- }
- ///
- bool display() const { return true; }
- ///
- Inset::Code LyxCode() const { return Inset::LOT_CODE; }
-private:
- ///
- Buffer * owner;
-};
-
-#endif
#include "gettext.h"
#include "insettoc.h"
-#include "commandtags.h"
-#include "debug.h"
-#include "lyxfunc.h"
-#include "LyXView.h"
#include "BufferView.h"
+#include "LyXView.h"
+#include "frontends/Dialogs.h"
+#include "debug.h"
using std::ostream;
string InsetTOC::getScreenLabel() const
{
- return _("Table of Contents");
+ string cmdname( getCmdName() );
+ if( cmdname == "tableofcontents" )
+ return _("Table of Contents");
+ else if( cmdname == "listofalgorithms" )
+ return _("List of Algorithms");
+ else if( cmdname == "listoffigures" )
+ return _("List of Figures");
+ else
+ return _("List of Tables");
+}
+
+
+Inset::Code InsetTOC::LyxCode() const
+{
+ string cmdname( getCmdName() );
+ if( cmdname == "tableofcontents" )
+ return Inset::TOC_CODE;
+ else if( cmdname == "listofalgorithms" )
+ return Inset::LOA_CODE;
+ else if( cmdname == "listoffigures" )
+ return Inset::LOF_CODE;
+ else
+ return Inset::LOT_CODE;
}
void InsetTOC::Edit(BufferView * bv, int, int, unsigned int)
{
- bv->owner()->getLyXFunc()->Dispatch(LFUN_TOCVIEW);
+ bv->owner()->getDialogs()->showTOC( this );
}
+
int InsetTOC::Linuxdoc(Buffer const *, ostream & os) const
{
- os << "<toc>";
+ if( getCmdName() == "tableofcontents" )
+ os << "<toc>";
return 0;
}
int InsetTOC::DocBook(Buffer const *, ostream & os) const
{
- os << "<toc></toc>";
+ if( getCmdName() == "tableofcontents" )
+ os << "<toc></toc>";
return 0;
}
#include "insetcommand.h"
-class Buffer;
-
/** Used to insert table of contents
*/
class InsetTOC : public InsetCommand {
public:
///
- InsetTOC() : InsetCommand("tableofcontents") {}
+ InsetTOC(InsetCommandParams const & p) : InsetCommand(p) {}
///
- explicit
- InsetTOC(Buffer * b) : InsetCommand("tableofcontents"), owner(b) {}
- ///
- Inset * Clone() const { return new InsetTOC(owner); }
+ Inset * Clone() const { return new InsetTOC(params()); }
///
string getScreenLabel() const;
- /// On edit, we open the TOC pop-up
+ ///
void Edit(BufferView * bv, int, int, unsigned int);
///
- EDITABLE Editable() const {
- return IS_EDITABLE;
- }
+ EDITABLE Editable() const { return IS_EDITABLE; }
///
bool display() const { return true; }
///
- Inset::Code LyxCode() const { return Inset::TOC_CODE; }
+ Inset::Code LyxCode() const;
///
int Linuxdoc(Buffer const *, std::ostream &) const;
///
int DocBook(Buffer const *, std::ostream &) const;
-private:
- ///
- Buffer * owner;
};
#endif
{}
-InsetUrl::~InsetUrl()
-{
- hide();
-}
-
-
-char const * InsetUrl::EditMessage() const
-{
- return _("Opened Url");
-}
-
-
void InsetUrl::Edit(BufferView * bv, int, int, unsigned int)
{
bv->owner()->getDialogs()->showUrl( this );
#endif
#include "insetcommand.h"
-#include <sigc++/signal_system.h>
struct LaTeXFeatures;
-#ifdef SIGC_CXX_NAMESPACES
-using SigC::Signal0;
-#endif
-
/** The url inset
*/
class InsetUrl : public InsetCommand {
///
explicit
InsetUrl(InsetCommandParams const &);
- ///
- ~InsetUrl();
///
Inset * Clone() const { return new InsetUrl(params()); }
///
///
EDITABLE Editable() const { return IS_EDITABLE; }
///
- char const * EditMessage() const;
- ///
void Edit(BufferView *, int, int, unsigned int);
///
bool display() const { return false; }
int Linuxdoc(Buffer const *, std::ostream &) const;
///
int DocBook(Buffer const *, std::ostream &) const;
- ///
- Signal0<void> hide;
};
#endif
}
/*---------------------------------------*/
-FD_form_toc *create_form_form_toc(void)
-{
- FL_OBJECT *obj;
- FD_form_toc *fdui = (FD_form_toc *) fl_calloc(1, sizeof(FD_form_toc));
-
- fdui->form_toc = fl_bgn_form(FL_NO_BOX, 420, 340);
- obj = fl_add_box(FL_UP_BOX, 0, 0, 420, 340, "");
- fdui->browser_toc = obj = fl_add_browser(FL_HOLD_BROWSER, 10, 10, 400, 280, "");
- fl_set_object_gravity(obj, FL_NorthWest, FL_SouthEast);
- fl_set_object_callback(obj, TocSelectCB, 0);
- obj = fl_add_button(FL_RETURN_BUTTON, 310, 300, 100, 30, _("Close"));
- fl_set_object_lsize(obj, FL_NORMAL_SIZE);
- fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
- fl_set_object_callback(obj, TocCancelCB, 0);
- obj = fl_add_button(FL_NORMAL_BUTTON, 200, 300, 100, 30, idex(_("Update|Uu#u")));fl_set_button_shortcut(obj, scex(_("Update|Uu#u")), 1);
- fl_set_object_lsize(obj, FL_NORMAL_SIZE);
- fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
- fl_set_object_callback(obj, TocUpdateCB, 0);
- fdui->toctype = obj = fl_add_choice(FL_NORMAL_CHOICE, 60, 300, 130, 30, idex(_("Type|Tt#t")));fl_set_button_shortcut(obj, scex(_("Type|Tt#t")), 1);
- fl_set_object_boxtype(obj, FL_FRAME_BOX);
- fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
- fl_set_object_callback(obj, TocUpdateCB, 0);
- fl_end_form();
-
- //fdui->form_toc->fdui = fdui;
-
- return fdui;
-}
-/*---------------------------------------*/
-
FD_form_ref *create_form_form_ref(void)
{
FL_OBJECT *obj;
-/** Header file generated with fdesign on Mon Jun 19 12:55:08 2000.**/
+/** Header file generated with fdesign on Mon Jul 31 11:17:12 2000.**/
#ifndef FD_form_title_h_
#define FD_form_title_h_
extern "C" void ScreenApplyCB(FL_OBJECT *, long);
extern "C" void ScreenCancelCB(FL_OBJECT *, long);
-extern "C" void TocSelectCB(FL_OBJECT *, long);
-extern "C" void TocCancelCB(FL_OBJECT *, long);
-extern "C" void TocUpdateCB(FL_OBJECT *, long);
-
extern "C" void RefUpdateCB(FL_OBJECT *, long);
extern "C" void RefHideCB(FL_OBJECT *, long);
extern "C" void RefSelectCB(FL_OBJECT *, long);
} FD_form_screen;
extern FD_form_screen * create_form_form_screen(void);
-typedef struct {
- FL_FORM *form_toc;
- void *vdata;
- char *cdata;
- long ldata;
- FL_OBJECT *browser_toc;
- FL_OBJECT *toctype;
-} FD_form_toc;
-
-extern FD_form_toc * create_form_form_toc(void);
typedef struct {
FL_FORM *form_ref;
void *vdata;
extern FD_form_table * fd_form_table;
extern FD_form_figure * fd_form_figure;
extern FD_form_screen * fd_form_screen;
-extern FD_form_toc * fd_form_toc;
extern FD_form_ref * fd_form_ref;
extern FD_form_bullet * fd_form_bullet;
}
-void MenuShowTableOfContents()
-{
- static int ow = -1, oh;
-
- TocUpdateCB(0, 0);
- if (fd_form_toc->form_toc->visible) {
- fl_raise_form(fd_form_toc->form_toc);
- } else {
- fl_show_form(fd_form_toc->form_toc,
- FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER,
- _("Table Of Contents"));
- if (ow < 0) {
- ow = fd_form_toc->form_toc->w;
- oh = fd_form_toc->form_toc->h;
- }
- fl_set_form_minsize(fd_form_toc->form_toc, ow, oh);
- }
-}
-
-
void MenuInsertLabel(char const * arg)
{
string label = arg;
}
-//
-// Table of Contents
-//
-
-static vector<Buffer::TocItem> toclist;
-
-
-extern "C" void TocSelectCB(FL_OBJECT * ob, long)
-{
- if (!current_view->available())
- return;
-
- TocUpdateCB(0, 0);
- unsigned int choice = fl_get_browser(ob);
- if (0 < choice && choice - 1 < toclist.size()) {
- current_view->beforeChange();
- current_view->text->SetCursor(current_view, toclist[choice-1].par, 0);
- current_view->text->sel_cursor =
- current_view->text->cursor;
- current_view->update(BufferView::SELECT|BufferView::FITCUR);
- } else {
- WriteAlert(_("Error"),
- _("Couldn't find this label"),
- _("in current document."));
- }
-}
-
-
-extern "C" void TocCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_toc->form_toc);
-}
-
-
-extern "C"
-void TocUpdateCB(FL_OBJECT *, long)
-{
- if (!current_view->available()) {
- toclist.clear();
- fl_clear_browser(fd_form_toc->browser_toc);
- fl_add_browser_line(fd_form_toc->browser_toc,
- _("*** No Document ***"));
- return;
- }
-
- vector<vector<Buffer::TocItem> > tmp =
- current_view->buffer()->getTocList();
- int type = fl_get_choice(fd_form_toc->toctype)-1;
- //if (toclist == tmp[type])
- // return;
- if (toclist.size() == tmp[type].size()) {
- // Check if all elements are the same.
- unsigned int i = 0;
- for (; i < toclist.size(); ++i) {
- if (toclist[i] != tmp[type][i])
- break;
- }
- if (i >= toclist.size()) return;
- }
-
- toclist = tmp[type];
-
- static Buffer * buffer = 0;
- int topline = 0;
- int line = 0;
- if (buffer == current_view->buffer()) {
- topline = fl_get_browser_topline(fd_form_toc->browser_toc);
- line = fl_get_browser(fd_form_toc->browser_toc);
- } else
- buffer = current_view->buffer();
-
- fl_clear_browser(fd_form_toc->browser_toc);
- fl_hide_object(fd_form_toc->browser_toc);
-
- for (vector<Buffer::TocItem>::const_iterator it = toclist.begin();
- it != toclist.end(); ++it)
- fl_add_browser_line(fd_form_toc->browser_toc,
- (string(4*(*it).depth,' ')+
- (*it).str).c_str());
-
- fl_set_browser_topline(fd_form_toc->browser_toc, topline);
- fl_select_browser_line(fd_form_toc->browser_toc, line);
- fl_show_object(fd_form_toc->browser_toc);
-}
-
-
/* callbacks for form form_ref */
extern "C" void RefSelectCB(FL_OBJECT *, long data)
{
FD_form_sendto * fd_form_sendto;
FD_form_figure * fd_form_figure;
FD_form_screen * fd_form_screen;
-FD_form_toc * fd_form_toc;
FD_form_ref * fd_form_ref;
FD_LaTeXLog * fd_latex_log; // from log_form.h
Combox * combo_language;
fl_set_form_atclose(fd_form_screen->form_screen,
CancelCloseBoxCB, 0);
- // the toc form
- fd_form_toc = create_form_form_toc();
- fl_addto_choice(fd_form_toc->toctype,
- _(" TOC | LOF | LOT | LOA "));
- fl_set_form_atclose(fd_form_toc->form_toc, CancelCloseBoxCB, 0);
-
// the ref form
fd_form_ref = create_form_form_ref();
fl_set_form_atclose(fd_form_ref->form_ref, CancelCloseBoxCB, 0);
extern FD_form_table * fd_form_table;
extern FD_form_sendto * fd_form_sendto;
extern FD_form_figure * fd_form_figure;
-extern FD_form_toc * fd_form_toc;
extern FD_form_ref * fd_form_ref;
extern FD_form_paragraph_extra * fd_form_paragraph_extra;
extern FD_LaTeXLog * fd_latex_log;
extern FD_include * form;
extern FD_index_form * index_form;
-extern void TocUpdateCB();
extern void HideFiguresPopups();
// Prevents LyX from being killed when the close box is pressed in a popup.
if (fd_form_figure->form_figure->visible) {
fl_hide_form(fd_form_figure->form_figure);
}
- if (fd_form_toc->form_toc->visible) {
- fl_hide_form(fd_form_toc->form_toc);
- }
if (fd_form_ref->form_ref->visible) {
fl_hide_form(fd_form_ref->form_ref);
}
updateBulletForm();
}
}
- if (fd_form_toc->browser_toc->visible) {
- TocUpdateCB(0, 0);
- }
if (fd_latex_log->LaTeXLog->visible) {
LatexLogUpdate(0,0);
}
#include <csignal>
#include "LString.h"
+#include "support/utility.hpp"
class LyXGUI;
class LyXRC;
/**
This is the main LyX object it encapsulates most of the other objects.
*/
-class LyX {
+class LyX : public noncopyable {
public:
/**@name Constructors and Deconstructors */
//@{
LyXGUI * lyxGUI; // should be only one of this
//@}
private:
- /**@name Constructors and Deconstructors */
- //@{
- /// not allowed
- LyX(const LyX &) {} // not allowed
- /// not allowed
- LyX() {} // not allowed
- //@}
-
/**@name Private variables */
//@{
/// does this user start lyx for the first time?
bool first_start;
///
string batch_command;
- ///
- // struct sigaction act_; // seems to be unused
//@}
/**@name Private Members */
//@{
#include "insets/inseturl.h"
#include "insets/insetlatexaccent.h"
#include "insets/insettoc.h"
-#include "insets/insetlof.h"
-#include "insets/insetloa.h"
-#include "insets/insetlot.h"
#include "insets/insetref.h"
#include "insets/insetparent.h"
#include "insets/insetindex.h"
extern BufferList bufferlist;
extern LyXServer * lyxserver;
extern int greek_kb_flag;
-extern FD_form_toc * fd_form_toc;
extern bool selection_possible;
extern kb_keymap * toplevel_keymap;
case LFUN_LOTVIEW:
case LFUN_LOAVIEW:
{
- Buffer::TocType type = Buffer::TOC_TOC;
- if (action == LFUN_LOFVIEW)
- type = Buffer::TOC_LOF;
- else if (action == LFUN_LOTVIEW)
- type = Buffer::TOC_LOT;
- else if (action == LFUN_LOAVIEW)
- type = Buffer::TOC_LOA;
- fl_set_choice(fd_form_toc->toctype,type + 1);
- TocUpdateCB(0, 0);
- if (fd_form_toc->form_toc->visible) {
- fl_raise_form(fd_form_toc->form_toc);
- } else {
- static int ow = -1, oh;
- fl_show_form(fd_form_toc->form_toc,
- FL_PLACE_MOUSE |
- FL_FREE_SIZE, FL_FULLBORDER,
- _("Table of Contents"));
- if (ow < 0) {
- ow = fd_form_toc->form_toc->w;
- oh = fd_form_toc->form_toc->h;
- }
- fl_set_form_minsize(fd_form_toc->form_toc, ow, oh);
- }
+ InsetCommandParams p;
+
+ if( action == LFUN_TOCVIEW )
+ p.setCmdName( "tableofcontents" );
+ else if( action == LFUN_LOAVIEW )
+ p.setCmdName( "listofalgorithms" );
+ else if( action == LFUN_LOFVIEW )
+ p.setCmdName( "listoffigures" );
+ else
+ p.setCmdName( "listoftables" );
+
+ owner->getDialogs()->createTOC( p.getAsString() );
break;
}
+
case LFUN_TOC_INSERT:
- {
- Inset * new_inset = new InsetTOC(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
- case LFUN_LOF_INSERT:
- {
- Inset * new_inset = new InsetLOF(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
case LFUN_LOA_INSERT:
- {
- Inset * new_inset = new InsetLOA(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
+ case LFUN_LOF_INSERT:
case LFUN_LOT_INSERT:
{
- Inset * new_inset = new InsetLOT(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
+ InsetCommandParams p;
+
+ if( action == LFUN_TOC_INSERT )
+ p.setCmdName( "tableofcontents" );
+ else if( action == LFUN_LOA_INSERT )
+ p.setCmdName( "listofalgorithms" );
+ else if( action == LFUN_LOF_INSERT )
+ p.setCmdName( "listoffigures" );
+ else
+ p.setCmdName( "listoftables" );
+
+ Inset * inset = new InsetTOC( p );
+ if( !owner->view()->insertInset( inset, "Standard", true ) )
+ delete inset;
break;
}
case LFUN_CREATE_CITATION:
{
- owner->getDialogs()->createCitation( argument );
+ // Should do this "at source"
+ InsetCommandParams p;
+ p.setCmdName( "cite" );
+
+ if (contains(argument, "|")) {
+ p.setContents( token(argument, '|', 0) );
+ p.setOptions( token(argument, '|', 1) );
+ } else {
+ p.setContents( argument );
+ }
+
+ owner->getDialogs()->createCitation( p.getAsString() );
}
break;
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include <config.h>
#include <sys/types.h>
#include "lyxregex.h"
#endif
+#ifdef __GNUG__
+#pragma implementation
+#endif
+
#include "LRegex.h"
using std::make_pair;
}
///
- LRegex::MatchPair first_match(string const & str) const
+ LRegex::MatchPair const first_match(string const & str) const
{
regmatch_t tmp;
regexec(preg, str.c_str(), 1, &tmp, 0);
}
///
- string getError() const
+ string const getError() const
{
size_t nr = regerror(error_code, preg, 0, 0);
char * tmp = new char[nr];
}
-LRegex::MatchPair LRegex::first_match(string const & str) const
+LRegex::MatchPair const LRegex::first_match(string const & str) const
{
return impl->first_match(str);
}
-string LRegex::getError() const
+string const LRegex::getError() const
{
return impl->getError();
}
bool exact_match(string const & str) const;
///
- MatchPair first_match(string const & str) const;
+ MatchPair const first_match(string const & str) const;
///
- string getError() const;
+ string const getError() const;
///
int getErrorCode() const;