the runlatex merge

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@291 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 1999-11-04 01:40:20 +00:00
parent 863fff8fb8
commit dfe1bc44b4
102 changed files with 5403 additions and 4773 deletions

218
ChangeLog
View File

@ -24,6 +24,10 @@
1999-11-02 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/layout.C (less_textclass_desc): functor for use in sorting
of textclasses.
(LyXTextClass::Read): sort the textclasses after reading.
* src/support/filetools.C (SpaceLess): new version of the
SpaceLess functions. What problems does this one give? Please
report.
@ -68,6 +72,12 @@
* added patch for OS/2 from SMiyata.
1999-10-29 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/text2.C (CutSelection): make space_wrapped a bool
(CutSelection): dont declare int i until we have to.
(alphaCounter): return a char const *.
1999-10-28 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
* src/support/syscall.C (Systemcalls::kill):
@ -79,6 +89,11 @@
1999-10-28 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/layout.[Ch] + several files: access to class variables
limited and made accessor functions instead a lot of code changed
becuase of this. Also instead of returning pointers often a const
reference is returned instead.
* src/form1.C (create_form_Figure): added a couple fo "no-c-format"
* src/Makefile.am (dist-hook): added used to remove the CVS from
@ -93,6 +108,32 @@
1999-10-27 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/layout.[Ch] src/BufferView.C src/LaTeXFeatures.C
src/LyXView.C src/buffer.C src/bufferparams.C
src/lyx_cb.C src/lyxfunc.C src/paragraph.C src/text.C
src/text2.C src/insets/insetinclude.C:
lyxlayout renamed to textclasslist.
* src/layout.C: some lyxerr changes.
* src/layout.[Ch] (LyXLayout::Read): changed second paramter to
LyXTextClass. rewrote LT_COPYSTYLE, rewrote LT_OBSOLETEDBY
(LyXLayoutList): removed all traces of this class.
(LyXTextClass::Read): rewrote LT_STYLE
(LyXTextClass::hasLayout): new function
(LyXTextClass::GetLayout): rewritten to return an iterator + has
both const and nonconst version.
(LyXTextClass::delete_layout): new function.
(LyXTextClassList::Style): bug fix. do the right thing if layout
is to big.
(LyXTextClassList::NumberOfLayout): new acces to layoutlist.
(LyXTextClassList::NameOfLayout): ditto
(LyXTextClassList::Load): ditto
* src/buffer.C (makeLaTeXFile): new access to layoutlist
* src/LaTeXFeatures.C (getTClassPreamble): new access to layoutlist
* src/LyXAction.C (LookupFunc): added a workaround for sun
compiler, on the other hand...we don't know if the current code
compiles on sun at all...
@ -122,8 +163,130 @@
* src/lyx_cb.C (MenuFax): subst fix
(PrintApplyCB): subst fix
1999-10-26 Juergen Vigna <jug@sad.it>
* src/table.C (TexEndOfCell) + (DocBookEndOfCell): removed some #if 0
(Read): Cleaned up this code so now we read only format vestion >= 5
1999-10-26 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/support/filetools.C (PutEnvPath): subst fix for EMX, how
come nobody has complained about this one?
* src/insets/insetinclude.C (Latex): subst fix
* src/insets/insetbib.C (getKeys): subst fix
* src/lyx_main.C (init): subst fix
* src/layout.C (Read): subst fix
* src/buffer.C (RoffAsciiTable): subst fix
* src/lyx_cb.C (MenuFax): subst fix.
* src/layout.[hC] + some other files: rewrote to use
std::container to store textclasses and layouts in.
Simplified, removed a lot of code. Make all classes
assignable. Further simplifications and review of type
use still to be one.
* src/menus.C (ShowFileMenu/ShowFileMenu2): Use the iterators from
lastfiles to create the lastfiles partr of the menu.
* src/lastfiles.[Ch]: rewritten to use deque to store the
lastfiles in. Uses fstream for reading and writing. Simplifies
code.
* src/support/syscall.C: remove explicit cast.
* src/BufferView.C (CursorToggleCB): removed code snippets that
were commented out.
use explicat C++ style casts instead of C style casts. also use
u_vdata instea of passing pointers in longs.
* src/PaperLayout.C: removed code snippets that were commented out.
* src/lyx_gui_misc.C: removed code snippets that were commented out.
* src/lyx_main.C: removed code snippets that wer commented out.
* src/paragraph.C: removed code snippets that were commented out.
* src/lyxvc.C (logClose): use static_cast
(logUpdate): ditto
(viewLog): remove explicit cast to void*
(showLog): removed old commented code
* src/menus.C: use static_cast instead of C style casts. use
u_vdata instead of u_ldata. remove explicit cast to (long) for
pointers. Removed old code that was commented out.
* src/insets/inset.C: removed old commented func
* src/insets/insetref.C (InsetRef): removed old code that had been
commented out for a long time.
(Edit): ditto
(escape): removed C style cast
* src/insets/insetlatexaccent.C (Draw): removed old commented code
* src/insets/insetlatex.C (Draw): removed old commented code
(Read): rewritten to use string
* src/insets/insetlabel.C (escape): removed C style cast
* src/insets/insetindex.h: removed vdata and ldata from FD_index_form
* src/insets/insetindex.C: use static_cast and u_vdata, removed
old commented code.
* src/insets/insetinclude.h: removed a couple of stupid bools
* src/insets/insetinclude.C (include_cb): use static_cast and u_data.
(Clone): remove C style cast
(getKeys): changed list to lst because of std::list
* src/insets/inseterror.C (Draw): removed som old commented code.
* src/insets/insetcommand.C (Draw): removed some old commented code.
* src/insets/insetbib.C (bibitem_cb): removed code that has been
commented out forever.
(bibitem_cb): use static_cast instead of C style cast
use of vdata changed to u_vdata.
* src/insets/inseturl.C (C_InsetUrl_CloseUrlCB): forward the data
parameter.
(CloseUrlCB): use static_cast instead of C style cast.
(CloseUrlCB): added a fl_free form...it seemed to be missing.
* src/insets/insetinfo.C (Edit): pass object in u_vdata instead
(C_InsetInfo_CloseInfoCB): forward the ob parameter
(CloseInfoCB): static_cast from ob->u_vdata instead.
(Edit): removed bogus arg from fl_set_object_shortcut, set to 1
instead.
* src/insets/inseterror.C (Edit): pass object in u_vdata instead
(C_InsetError_CloseErrorCB): forward the ob parameter
(CloseErrorCB): static_cast from ob->u_vdata instead.
* src/vspace.h: include LString.h since we use string in this class.
* src/vspace.C (lyx_advance): changed name from advance because of
nameclash with stl. And since we cannot use namespaces yet...I
used a lyx_ prefix instead. Expect this to change when we begin
using namespaces.
* src/BufferView.[Ch] (BufferView::~BufferView): removed
* src/BackStack.h: rewrote to use std::stack. made BackStackItem
and removed now defunct constructor and deconstructor.
* src/BufferView.h: have backstack as a object not as a pointer.
removed initialization from constructor. added include for BackStack
* development/lyx.spec.in (%build): add CFLAGS also.
* src/screen.C (drawFrame): removed another warning.
@ -208,6 +371,13 @@
1999-10-24 Lars Gullik Bjønnes <larsbj@lyx.org>
1999-10-24 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/LaTeX.C (run): made run_bibtex also depend on files with
extension ".bst"
(runBibTeX): added scans for "\\bibstyle", now also ".bst" files
are put into the dependency file.
* src/spellchecker.C (create_ispell_pipe): removed old #warning,
the code has shown itself to work
(create_ispell_pipe): removed another warning, added a comment
@ -316,6 +486,21 @@
1999-10-22 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/LaTeX.C (run): added a check in 0 sumchange so that if it
was a bib file that had been changed we ensure that bibtex is run.
(runBibTeX): enhanced to extract the names of the bib files and
getting their absolute path and enter them into the dep file.
(findtexfile): static func that is used to look for tex-files,
checks for absolute patchs and tries also with kpsewhich.
Alternative ways of finding the correct files are wanted. Will
probably be moved.
(do_popen): function that runs a command using popen and returns
the whole output of that command in a string. Should be moved to
somewhere else.
* src/DepTable.[Ch] (extchanged): new function that returns true if a
file with extension ext has changed.
* src/insets/figinset.C: added ifdef guards around the fl_free
code that jug commented out. Now it is commented out when
compiling with XForms == 0.89.
@ -359,6 +544,27 @@
1999-10-20 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/support/lyxstring.C (getline): reads now _all_ chars. uses
get instead of >>
* src/Literate.h: some funcs moved from public to private to make
interface clearer. Unneeded args removed.
* src/Literate.C (scanLiterateLogFile): rewritten to use iostream
instead of lyxlex.
(scanBuildLogFile): ditto
* src/LaTeX.C (scanLogFile): merged LaTeX Error handling into
normal TeX Error. Still room for improvement.
* src/LaTeX.[Ch]: removed scanError. Wrong place and not needed.
* src/buffer.C (insertErrors): changes to make the error
desctription show properly.
* src/LaTeX.C (deplog): removed the test for file in lyx doc dir.
could never happen
* src/support/lyxstring.C (helper): changed to use
sizeof(object->rep->ref).
(operator>>): changed to use a pointer instead.
@ -469,8 +675,20 @@
* src/lyxrc.C (Read): RC_PRINTEXSTRAOPTIONS now uses
LyXLex::next() and not eatline() to get its argument.
1999-10-17 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/DepTable.[Ch]: rewritten to store the dependencies in a map
instead, use fstreams for io of the depfile, removed unneeded
functions and variables.
* src/LaTeX.[Ch] (class TeXErrors): rewrote to store the errors in a
vector instead, removed all functions and variables that is not in
use.
1999-10-16 Lars Gullik Bjønnes <larsbj@lyx.org>
* src/buffer.C (insertErrors): use new interface to TeXError
* Makefile.am (rpmdist): added a rpmdist target
* lib/reLyX/Makefile.am: added RelyxFigure.pm and Verbatim.pm as

View File

@ -22,3 +22,4 @@ rpmdist: dist
ln -s images/lyx.xpm . ; \
rpm -ta ${PACKAGE}-${VERSION}.tar.gz ; \
rm lyx.xpm

View File

@ -11,6 +11,7 @@
#ifndef BACK_STACK_H
#define BACK_STACK_H
#include <stack>
#include "LString.h"
// Created by Alejandro Aguilar Sierra, 970806
@ -18,13 +19,15 @@
/** Utility to get back from a reference or from a child document.
*/
class BackStack {
public:
private:
///
struct BackStackItem {
BackStackItem(string const & f, int xx, int yy)
: fname(f), x(xx), y(yy) {}
///
void set(string f, int xx, int yy) {
fname = f; x = xx; y = yy;
}
//void set(string f, int xx, int yy) {
// fname = f; x = xx; y = yy;
//}
/// Filename
string fname;
/// Cursor x-position
@ -32,35 +35,27 @@ public:
/// Cursor y-position
int y;
};
///
BackStack(int n) : item(new BackStackItem[n]) , i(0), imax(n) {}
///
~BackStack() {
delete[] item;
}
public:
///
void push(string f, int x, int y) {
if (i < imax)
item[i++].set(f, x, y);
BackStackItem bit(f, x, y);
stakk.push(bit);
}
///
string & pop(int *x, int *y) {
if (i > 0) i--;
*x = item[i].x;
*y = item[i].y;
return item[i].fname;
string pop(int * x, int * y) {
BackStackItem bit = stakk.top();
*x = bit.x;
*y = bit.y;
stakk.pop();
return bit.fname;
}
///
bool empty() const {
return i == 0;
return stakk.empty();
}
private:
///
BackStackItem *item;
///
int i;
///
int imax;
stack<BackStackItem> stakk;
};
#endif

View File

@ -40,6 +40,7 @@
#include "lyxtext.h"
#include "lyx_cb.h"
#include "gettext.h"
#include "layout.h"
extern BufferList bufferlist;
void sigchldhandler(pid_t pid, int *status);
@ -78,13 +79,6 @@ BufferView::BufferView(LyXView *o, int xpos, int ypos,
fl_set_focus_object(_owner->getForm(), work_area);
work_area_focus = true;
lyx_focus = false;
backstack = new BackStack(16);
}
BufferView::~BufferView()
{
delete backstack;
}
@ -129,7 +123,6 @@ void BufferView::setBuffer(Buffer *b)
} else {
lyxerr.debug() << " No Buffer!" << endl;
_owner->getMenus()->hideMenus();
//workAreaExpose();
updateScrollbar();
fl_redraw_object(work_area);
}
@ -241,9 +234,9 @@ void BufferView::updateScrollbar()
fl_set_slider_increment(scrollbar,work_area->h-lineh,lineh);
#endif
if (maxfloat>0){
if ((hfloat/maxfloat) * (float) height2 < 3)
if ((hfloat/maxfloat) * float(height2) < 3)
fl_set_slider_size(scrollbar,
3/(float)height2);
3/float(height2));
else
fl_set_slider_size(scrollbar,
hfloat/maxfloat);
@ -364,6 +357,7 @@ void BufferView::gotoError()
_buffer->text->cursor;
}
// Just a bunch of C wrappers around static members of BufferView
extern "C" void C_BufferView_UpCB(FL_OBJECT * ob, long buf) {
BufferView::UpCB(ob, buf);
@ -441,7 +435,8 @@ void BufferView::create_view(int xpos, int ypos, int width, int height)
fl_set_object_color(obj,FL_MCOL,FL_BLUE);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj,NorthEastGravity, NorthEastGravity);
fl_set_object_callback(obj,C_BufferView_UpCB,(long)this);
fl_set_object_callback(obj, C_BufferView_UpCB, 0);
obj->u_vdata = this;
fl_set_pixmapbutton_data(obj, up_xpm);
#if FL_REVISION >85
@ -459,7 +454,8 @@ void BufferView::create_view(int xpos, int ypos, int width, int height)
fl_set_object_boxtype(obj, FL_UP_BOX);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj, NorthEastGravity, SouthEastGravity);
fl_set_object_callback(obj,C_BufferView_ScrollCB,(long)this);
fl_set_object_callback(obj, C_BufferView_ScrollCB, 0);
obj->u_vdata = this;
// down - scrollbar button
#if FL_REVISION > 85
@ -475,7 +471,8 @@ void BufferView::create_view(int xpos, int ypos, int width, int height)
fl_set_object_color(obj,FL_MCOL,FL_BLUE);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj, SouthEastGravity, SouthEastGravity);
fl_set_object_callback(obj,C_BufferView_DownCB,(long)this);
fl_set_object_callback(obj, C_BufferView_DownCB, 0);
obj->u_vdata = this;
fl_set_pixmapbutton_data(obj, down_xpm);
fl_set_border_width(-bw);
@ -497,13 +494,13 @@ void BufferView::create_view(int xpos, int ypos, int width, int height)
// Callback for scrollbar up button
void BufferView::UpCB(FL_OBJECT *ob, long buf)
void BufferView::UpCB(FL_OBJECT * ob, long)
{
BufferView *view = (BufferView*) buf;
BufferView * view = static_cast<BufferView*>(ob->u_vdata);
if (view->_buffer == 0) return;
const XEvent*ev2;
XEvent const * ev2;
static long time = 0;
ev2 = fl_last_event();
if (ev2->type == ButtonPress || ev2->type == ButtonRelease)
@ -540,20 +537,20 @@ void waitForX()
}
static XEvent ev;
XChangeProperty(fl_display, w, a, a, 8,
PropModeAppend, (unsigned char *)"", 0);
PropModeAppend, reinterpret_cast<unsigned char*>(""), 0);
XWindowEvent(fl_display, w, PropertyChangeMask, &ev);
}
// Callback for scrollbar slider
void BufferView::ScrollCB(FL_OBJECT *ob, long buf)
void BufferView::ScrollCB(FL_OBJECT * ob, long)
{
BufferView *view = (BufferView*) buf;
BufferView *view = static_cast<BufferView*>(ob->u_vdata);
extern bool cursor_follows_scrollbar;
if (view->_buffer == 0) return;
view->current_scrollbar_value = (long)fl_get_slider_value(ob);
view->current_scrollbar_value = long(fl_get_slider_value(ob));
if (view->current_scrollbar_value < 0)
view->current_scrollbar_value = 0;
@ -584,13 +581,13 @@ void BufferView::ScrollCB(FL_OBJECT *ob, long buf)
// Callback for scrollbar down button
void BufferView::DownCB(FL_OBJECT *ob, long buf)
void BufferView::DownCB(FL_OBJECT * ob, long)
{
BufferView *view = (BufferView*) buf;
BufferView * view = static_cast<BufferView*>(ob->u_vdata);
if (view->_buffer == 0) return;
const XEvent*ev2;
XEvent const *ev2;
static long time = 0;
ev2 = fl_last_event();
if (ev2->type == ButtonPress || ev2->type == ButtonRelease)
@ -619,10 +616,10 @@ int BufferView::ScrollUp(long time)
return 0;
float add_value = (_buffer->text->DefaultHeight()
+ (float)(time) * (float)(time) * 0.125);
+ float(time) * float(time) * 0.125);
if (add_value > work_area->h)
add_value = (float) (work_area->h -
add_value = float(work_area->h -
_buffer->text->DefaultHeight());
value -= add_value;
@ -632,7 +629,7 @@ int BufferView::ScrollUp(long time)
fl_set_slider_value(scrollbar, value);
ScrollCB(scrollbar,(long)this);
ScrollCB(scrollbar, 0);
return 0;
}
@ -651,10 +648,10 @@ int BufferView::ScrollDown(long time)
return 0;
float add_value = (_buffer->text->DefaultHeight()
+ (float)(time) * (float)(time) * 0.125);
+ float(time) * float(time) * 0.125);
if (add_value > work_area->h)
add_value = (float) (work_area->h -
add_value = float(work_area->h -
_buffer->text->DefaultHeight());
value += add_value;
@ -664,7 +661,7 @@ int BufferView::ScrollDown(long time)
fl_set_slider_value(scrollbar, value);
ScrollCB(scrollbar,(long)this);
ScrollCB(scrollbar, 0);
return 0;
}
@ -684,7 +681,7 @@ void BufferView::ScrollUpOnePage(long /*time*/)
fl_set_slider_value(scrollbar, y);
ScrollCB(scrollbar,(long)this);
ScrollCB(scrollbar, 0);
}
@ -706,7 +703,7 @@ void BufferView::ScrollDownOnePage(long /*time*/)
fl_set_slider_value(scrollbar, y);
ScrollCB(scrollbar,(long)this);
ScrollCB(scrollbar, 0);
}
@ -718,8 +715,8 @@ int BufferView::work_area_handler(FL_OBJECT * ob, int event,
static int y_old = -1;
static long scrollbar_value_old = -1;
XEvent* ev = (XEvent*) xev;
BufferView *view = (BufferView*) ob->u_vdata;
XEvent * ev = static_cast<XEvent*>(xev);
BufferView * view = static_cast<BufferView*>(ob->u_vdata);
// If we don't have a view yet; return
if (!view || quitting) return 0;
@ -858,7 +855,7 @@ int BufferView::WorkAreaMotionNotify(FL_OBJECT *ob, Window,
}
extern int bibitemMaxWidth(const class LyXFont &);
extern int bibitemMaxWidth(LyXFont const &);
// Single-click on work area
int BufferView::WorkAreaButtonPress(FL_OBJECT *ob, Window,
@ -1163,8 +1160,8 @@ int BufferView::WorkAreaButtonRelease(FL_OBJECT *ob, Window ,
// Maybe we want to edit a bibitem ale970302
if (_buffer->text->cursor.par->bibkey && x < 20 +
bibitemMaxWidth(lyxstyle.TextClass(_buffer->
params.textclass)->defaultfont)) {
bibitemMaxWidth(textclasslist.TextClass(_buffer->
params.textclass).defaultfont())) {
_buffer->text->cursor.par->bibkey->Edit(0, 0);
}
@ -1274,17 +1271,15 @@ int BufferView::workAreaExpose()
// Callback for cursor timer
void BufferView::CursorToggleCB(FL_OBJECT * ob, long)
{
BufferView *view = (BufferView*) ob->u_vdata;
BufferView *view = static_cast<BufferView*>(ob->u_vdata);
/* quite a nice place for asyncron Inset updating, isn't it? */
// actually no! This is run even if no buffer exist... so (Lgb)
if (view && !view->_buffer) {
goto set_timer_and_return;
}
#ifdef WITH_WARNINGS
#warning NOTE!
#endif
// NOTE:
// On my quest to solve the gs rendre hangups I am now
// disabling the SIGHUP completely, and will do a wait
// now and then instead. If the guess that xforms somehow
@ -1312,7 +1307,6 @@ void BufferView::CursorToggleCB(FL_OBJECT *ob, long)
// rendering process.
// these comments posted to lyx@via
//#if 0
{
int status = 1;
int pid = waitpid((pid_t)0, &status, WNOHANG);
@ -1321,7 +1315,6 @@ void BufferView::CursorToggleCB(FL_OBJECT *ob, long)
else if (pid > 0)
sigchldhandler(pid, &status);
}
//#endif
if (InsetUpdateList)
UpdateInsetUpdateList();
@ -1436,12 +1429,13 @@ int BufferView::WorkAreaSelectionNotify(FL_OBJECT *, Window win,
XFlush(fl_display);
if (uc){
if (!ascii_type)
if (!ascii_type) {
_buffer->text->
InsertStringA((char*)uc);
else
InsertStringA(reinterpret_cast<char*>(uc));
} else {
_buffer->text->
InsertStringB((char*)uc);
InsertStringB(reinterpret_cast<char*>(uc));
}
free(uc);
uc = 0;
}
@ -1506,7 +1500,7 @@ bool BufferView::available() const
void BufferView::savePosition()
{
backstack->push(currentBuffer()->getFileName(),
backstack.push(currentBuffer()->getFileName(),
currentBuffer()->text->cursor.x,
currentBuffer()->text->cursor.y);
}
@ -1514,10 +1508,10 @@ void BufferView::savePosition()
void BufferView::restorePosition()
{
if (backstack->empty()) return;
if (backstack.empty()) return;
int x, y;
string fname = backstack->pop(&x, &y);
string fname = backstack.pop(&x, &y);
BeforeChange();
Buffer * b = (bufferlist.exists(fname)) ? bufferlist.getBuffer(fname):

View File

@ -9,19 +9,19 @@
*
* ======================================================*/
#ifndef _BUFFER_VIEW_H
#define _BUFFER_VIEW_H
#ifndef BUFFER_VIEW_H
#define BUFFER_VIEW_H
#ifdef __GNUG__
#pragma interface
#endif
#include FORMS_H_LOCATION
#include "BackStack.h"
class LyXView;
class Buffer;
class LyXScreen;
class BackStack;
class Inset;
///
@ -30,8 +30,6 @@ public:
///
BufferView(LyXView *owner, int ,int ,int, int);
///
~BufferView();
///
Buffer *currentBuffer() { return _buffer; }
///
FL_OBJECT *getWorkArea() { return work_area; }
@ -152,7 +150,7 @@ private:
///
FL_OBJECT *timer_cursor;
///
BackStack *backstack;
BackStack backstack;
///
int last_click_x, last_click_y;
};

View File

@ -61,21 +61,10 @@ int Chktex::scanLogFile(TeXErrors &terr)
string token;
int retval = 0;
LyXLex lex(0, 0);
string tmp = ChangeExtension(file, ".log", true);
if (!lex.setFile(tmp)) {
// Unable to open file. Return at once
return -1;
}
while (lex.IsOK()) {
if (lex.EatLine())
token = lex.GetString();
else // blank line in the file being read
continue;
ifstream ifs(tmp.c_str());
while (getline(ifs, token)) {
string srcfile, line, pos, warno, warning;
token = split(token, srcfile, ':');
token = split(token, line, ':');
@ -86,7 +75,7 @@ int Chktex::scanLogFile(TeXErrors &terr)
int lineno = atoi(line.c_str());
warno = _("ChkTeX warning id #") + warno;
terr.insertError(lineno, warno, warning);
retval++;
++retval;
}
return retval;
}

View File

@ -13,46 +13,14 @@
#include <config.h>
#ifdef __GNUG__
#pragma implementation
#endif
#include "DepTable.h"
#include "support/lyxlib.h"
#include "support/filetools.h"
DepTable::DepTable()
{
new_sum = 0;
old_sum = 0;
next = 0;
}
DepTable::DepTable(string const & f,
bool upd,
unsigned long one,
unsigned long two)
{
// not quite sure if this is the correct place for MakeAbsPath
file = MakeAbsPath(f);
new_sum = 0; old_sum = 0;
if (one != 0)
new_sum = one;
if (two != 0)
old_sum = two;
if (upd) {
old_sum = new_sum;
new_sum = lyxsum(file.c_str());
}
if (lyxerr.debugging()) {
char tmp1[256];
char tmp2[256];
sprintf(tmp1, "%lu", new_sum);
sprintf(tmp2, "%lu", old_sum);
lyxerr.debug() << "New file inserted in deplog: "
<< file << " "
<< tmp1 << " " << tmp2 << endl;
}
next = 0;
}
#include <fstream>
void DepTable::insert(string const & fi,
bool upd,
@ -61,42 +29,40 @@ void DepTable::insert(string const & fi,
{
// not quite sure if this is the correct place for MakeAbsPath
string f = MakeAbsPath(fi);
if (f == file) return; // exist already in the log
if (next)
next->insert(f, upd, one, two);
else
next = new DepTable(f, upd, one, two);
if (deplist.find(f) == deplist.end()) {
if (upd) {
one = two;
two = lyxsum(f.c_str());
}
deplist[f] = make_pair(one, two);
}
}
void DepTable::update()
{
if (!file.empty()) {
old_sum = new_sum;
new_sum = lyxsum(file.c_str());
for(DepList::iterator itr = deplist.begin();
itr != deplist.end();
++itr) {
unsigned long one = (*itr).second.second;
unsigned long two = lyxsum((*itr).first.c_str());
(*itr).second = make_pair(one, two);
if (lyxerr.debugging()) {
char tmp1[256];
char tmp2[256];
sprintf(tmp1, "%lu", new_sum);
sprintf(tmp2, "%lu", old_sum);
lyxerr.debug() << "update: " << file << " "
<< tmp1 << " " << tmp2 << endl;
lyxerr << "update: " << (*itr).first << " "
<< one << " " << two << endl;
}
}
if (next) next->update();
}
bool DepTable::sumchange()
{
bool ret = false;
if (!file.empty()) {
if (old_sum != new_sum) ret = true;
for (DepList::const_iterator cit = deplist.begin();
cit != deplist.end();
++cit) {
if ((*cit).second.first != (*cit).second.second) return true;
}
if (!ret && next) ret = next->sumchange();
return ret;
return false;
}
@ -104,65 +70,62 @@ bool DepTable::haschanged(string const & f)
{
// not quite sure if this is the correct place for MakeAbsPath
string fil = MakeAbsPath(f);
bool ret = false;
if (!fil.empty() && !file.empty() && fil == file) {
if (new_sum != old_sum && new_sum != 0)
ret = true;
DepList::const_iterator cit = deplist.find(fil);
if (cit != deplist.end()) {
if ((*cit).second.first != (*cit).second.second
&& (*cit).second.second != 0)
return true;
}
if (!ret && next) ret = next->haschanged(fil);
return ret;
return false;
}
bool DepTable::extchanged(string const & ext)
{
for (DepList::const_iterator cit = deplist.begin();
cit != deplist.end();
++cit) {
if (suffixIs((*cit).first, ext.c_str())) {
if ((*cit).second.first != (*cit).second.second)
return true;
}
}
return false;
}
void DepTable::write(string const & f)
{
FilePtr fp(f, FilePtr::write);
if (fp() && next) next->write(fp());
ofstream ofs(f.c_str());
for (DepList::const_iterator cit = deplist.begin();
cit != deplist.end();
++cit) {
if (lyxerr.debugging()) {
lyxerr << "Write dep: "
<< (*cit).first << " "
<< (*cit).second.first << " "
<< (*cit).second.second << endl;
}
ofs << (*cit).first << " "
<< (*cit).second.first << " "
<< (*cit).second.second << endl;
}
}
void DepTable::read(string const &f)
{
FilePtr fp(f, FilePtr::read);
if (fp()) { // file opened
char nome[256];
ifstream ifs(f.c_str());
string nome;
unsigned long one = 0;
unsigned long two = 0;
// scan the file line by line
// return true if the two numbers on the line is different
int ret = 0;
while (!feof(fp())) {
ret = fscanf(fp(), "%s %lu %lu",
nome, &one, &two);
if (ret !=3) continue;
while(ifs >> nome >> one >> two) {
if (lyxerr.debugging()) {
char tmp1[255];
char tmp2[255];
sprintf(tmp1, "%lu", one);
sprintf(tmp2, "%lu", two);
lyxerr.debug() << "read dep: "
<< nome << " " << tmp1
<< " " << tmp2 << endl;
lyxerr << "read dep: "
<< nome << " "
<< one << " "
<< two << endl;
}
insert(string(nome), false, one, two);
deplist[nome] = make_pair(one, two);
}
}
}
void DepTable::write(FILE * f)
{
if (lyxerr.debugging()) {
char tmp1[255];
char tmp2[255];
sprintf(tmp1, "%lu", new_sum);
sprintf(tmp2, "%lu", old_sum);
lyxerr << "Write dep: " << file << " "
<< tmp1 << " " << tmp2 << endl;
}
fprintf(f, "%s %lu %lu\n", file.c_str(),
new_sum, old_sum);
if (next)
next->write(f);
}

View File

@ -15,14 +15,15 @@
#define DEP_TABLE_H
#include "LString.h"
#include <cstdio>
#include <map>
#ifdef __GNUG__
#pragma interface
#endif
///
class DepTable {
public:
///
DepTable();
///
/** This one is a little bit harder since we need the absolute
filename. Should we insert files with .sty .cls etc as
extension? */
@ -39,25 +40,15 @@ public:
void read(string const &f);
/// returns true if any of the files has changed
bool sumchange();
///
/// return true if fil has changed.
bool haschanged(string const & fil);
/// return true if a file with extension ext has changed.
bool extchanged(string const & ext);
private:
///
DepTable(string const &f,
bool upd,
unsigned long one,
unsigned long two);
typedef map<string, pair<unsigned long, unsigned long> > DepList;
///
string file;
/// The files new checksum
unsigned long new_sum;
/// The files old checksum
unsigned long old_sum;
///
DepTable *next;
///
void write(FILE *f);
DepList deplist;
};
#endif

View File

@ -13,16 +13,12 @@
#include <config.h>
#include <cstdio>
#include <cstdlib>
#ifdef __GNUG__
#pragma implementation
#endif
#include "support/filetools.h"
#include "LaTeX.h"
#include "lyxlex.h"
#include "support/FileInfo.h"
#include "debug.h"
#include "support/lyxlib.h"
@ -33,6 +29,19 @@
#include "minibuffer.h"
#include "gettext.h"
// TODO: in no particular order
// - get rid of the extern BufferList and the call to
// BufferList::updateIncludedTeXfiles, this should either
// be done before calling LaTeX::funcs or in a completely
// different way.
// - the bibtex command options should be supported.
// - the makeindex style files should be taken care of with
// the dependency mechanism.
// - makeindex commandline options should be supported
// - somewhere support viewing of bibtex and makeindex log files.
// - we should perhaps also scan the bibtex log file
// - we should perhaps also scan the bibtex log file
extern BufferList bufferlist;
struct texfile_struct {
@ -57,173 +66,17 @@ const texfile_struct all_files[] = {
{ LaTeX::TEX, ".tex"}
};
// This should perhaps be placed in LyXLex
static
string readLine(FILE *file)
{
if (feof(file))
return string();
int i = 0;
char s[512];
do {
s[i] = fgetc(file);
i++;
} while (!feof(file) && s[i-1] != '\n' && i<510);
s[i] = '\0';
string tmp;
if (i == 1 && feof(file))
;
else
tmp = s;
return tmp;
}
/*
* CLASS TEXERRORS
*/
// I did not leave this inlined because DEC cxx does not like
// variables declarations in inlined code (JMarc)
TeXErrors::~TeXErrors()
{
Error *tmp;
while (errors) {
tmp = errors->next_error;
delete errors;
errors = tmp;
}
}
void TeXErrors::scanError(LyXLex &lex)
{
string token = lex.GetString();
// Sometimes the error string goes over more than one
// line, and we need to get them all.
string errstr;
string tmp = frontStrip(readLine(lex.getFile()));
if (tmp == "\n" || tmp.empty()) {
tmp = frontStrip(readLine(lex.getFile()));
if (contains(tmp, "See the LaTeX manual")) {
do {
tmp = readLine(lex.getFile());
} while (!tmp.empty() && !contains(tmp, "..."));
}
tmp = frontStrip(readLine(lex.getFile()));
}
while ((tmp != "\n" || !contains(errstr, "l."))
&& !prefixIs(tmp, "! ")
&& !contains(tmp, "(job aborted")
&& !tmp.empty()) {
errstr += tmp;
tmp = frontStrip(readLine(lex.getFile()));
}
lyxerr.debug() << "tmp: " << errstr << endl;
int line = 0;
// unfortunately the error line is not always given
// by "l.###" in the beginning of the error string
// therefore we must search for "l.###" in the error
// msg.
if (contains(errstr, "l.")) {
// We make a const copy to make [] fast. (Asger)
string const es(errstr);
for (string::size_type i = 2; i < es.length(); ++i) {
if (es[i-2] == 'l' && es[i-1] == '.' &&
(es[i] >= '0' && es[i]<= '9')) {
line = atoi(es.c_str() + i);
break;
}
}
}
insertError(line, token, errstr);
if (prefixIs(tmp, "! ")) {
scanError(lex);
}
}
bool TeXErrors::getFirstError(int *line, string *text)
{
next_error = errors;
if (next_error) {
*line = next_error->error_in_line;
*text = next_error->error_desc + "\n" + next_error->error_text;
next_error = next_error->next_error;
return true;
}
return false;
}
bool TeXErrors::getNextError(int *line, string *text)
{
if (next_error) {
*line = next_error->error_in_line;
*text = next_error->error_desc + "\n" + next_error->error_text;
next_error = next_error->next_error;
return true;
}
return false;
}
void TeXErrors::insertError(int line, string const & error_desc,
string const & error_text)
{
Error *newerr = new Error(line, error_desc, error_text);
if (errors) {
Error *tmperr = errors;
while (tmperr->next_error) tmperr = tmperr->next_error;
tmperr->next_error = newerr;
} else {
errors = newerr;
Error newerr(line, error_desc, error_text);
errors.push_back(newerr);
}
}
void TeXErrors::printErrors()
{
lyxerr << "Printing errors." << endl;
if (errors) {
Error *tmperr = errors;
do {
lyxerr << "Error in line "
<< tmperr->error_in_line
<< ": " << tmperr->error_desc
<< '\n' << tmperr->error_text << endl;
tmperr = tmperr->next_error;
} while (tmperr);
}
}
void TeXErrors::printWarnings()
{
}
void TeXErrors::printStatus()
{
lyxerr << "Error struct:"
<< "\n status: " << status
<< "\n no err: " << number_of_errors << endl;
if (status == LaTeX::NO_ERRORS) lyxerr << "NO_ERRORS" << endl;
if (status & LaTeX::NO_LOGFILE) lyxerr << "NO_LOGFILE" << endl;
if (status & LaTeX::NO_OUTPUT) lyxerr << "NO_OUTPUT" << endl;
if (status & LaTeX::UNDEF_REF) lyxerr << "UNDEF_REF" << endl;
if (status & LaTeX::RERUN) lyxerr << "RERUN" << endl;
if (status & LaTeX::TEX_ERROR) lyxerr << "TEX_ERROR" << endl;
if (status & LaTeX::TEX_WARNING) lyxerr << "TEX_WARNING" << endl;
if (status & LaTeX::NO_FILE) lyxerr << "NO_FILE" << endl;
}
/*
* CLASS LaTeX
@ -274,6 +127,7 @@ int LaTeX::run(TeXErrors &terr, MiniBuffer *minib)
// remake the dependency file.
//
FileInfo fi(depfile);
bool run_bibtex = false;
if (fi.exist()) {
// Read the dep file:
head.read(depfile);
@ -283,6 +137,8 @@ int LaTeX::run(TeXErrors &terr, MiniBuffer *minib)
lyxerr[Debug::LATEX] << "Dependency file exists" << endl;
if (head.sumchange()) {
++count;
if (head.extchanged(".bib")
|| head.extchanged(".bst")) run_bibtex = true;
lyxerr[Debug::LATEX]
<< "Dependency file has changed\n"
<< "Run #" << count << endl;
@ -322,20 +178,24 @@ int LaTeX::run(TeXErrors &terr, MiniBuffer *minib)
// run makeindex
if (head.haschanged(ChangeExtension(file, ".idx", true))) {
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
minib->Set(_("Running MakeIndex."));
minib->Store();
rerun=runMakeIndex(ChangeExtension(file,".idx",true));
}
// run bibtex
if (scanres & LaTeX::UNDEF_CIT || scanres & LaTeX::RERUN) {
if (scanres & LaTeX::UNDEF_CIT
|| scanres & LaTeX::RERUN
|| run_bibtex) {
// Here we must scan the .aux file and look for
// "\bibdata" and/or "\bibstyle". If one of those
// tags is found -> run bibtex and set rerun = true;
// no checks for now
lyxerr[Debug::LATEX] << "Running BibTeX." << endl;
minib->Set(_("Running BibTeX."));
minib->Store();
rerun = runBibTeX(ChangeExtension(file, ".aux", true));
rerun = runBibTeX(ChangeExtension(file, ".aux", true), head);
}
// 1
@ -379,6 +239,7 @@ int LaTeX::run(TeXErrors &terr, MiniBuffer *minib)
// run makeindex if the <file>.idx has changed or was generated.
if (head.haschanged(ChangeExtension(file, ".idx", true))) {
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
minib->Set(_("Running MakeIndex."));
minib->Store();
rerun = runMakeIndex(ChangeExtension(file, ".idx", true));
@ -447,23 +308,98 @@ bool LaTeX::runMakeIndex(string const &file)
}
bool LaTeX::runBibTeX(string const &file)
typedef pair<int, string> cmdret;
static cmdret do_popen(string const & cmd)
{
LyXLex lex(0, 0);
string token;
if (!lex.setFile(file)) {
// unable to open .aux file
// return at once
return false;
// One question is if we should use popen or
// create our own popen based on fork,exec,pipe
// of course the best would be to have a
// pstream (process stream), with the
// variants ipstream, opstream and
FILE * inf = popen(cmd.c_str(), "r");
string ret;
int c = fgetc(inf);
while (c != EOF) {
ret += static_cast<char>(c);
c = fgetc(inf);
}
int pret = pclose(inf);
return make_pair(pret, ret);
}
while (lex.IsOK()) {
if (lex.EatLine())
token=lex.GetString();
else // blank line in the file being read
continue;
static string findtexfile(string const & fil, string const & format)
{
// If fil is a file with absolute path we just return it
if (AbsolutePath(fil)) return fil;
// Check in the current dir.
if (FileInfo(OnlyFilename(fil)).exist())
return OnlyFilename(fil);
// No we try to find it using kpsewhich.
string kpsecmd = "kpsewhich --format=" + format + " " + fil;
cmdret c = do_popen(kpsecmd);
lyxerr << "kpse status = " << c.first << "\n"
<< "kpse result = `" << strip(c.second, '\n') << "'" << endl;
return c.first == 0 ? strip(c.second, '\n') : string();
}
bool LaTeX::runBibTeX(string const & file, DepTable & dep)
{
ifstream ifs(file.c_str());
string token;
bool using_bibtex = false;
while (getline(ifs, token)) {
if (contains(token, "\\bibdata{")) {
using_bibtex = true;
string::size_type a = token.find("\\bibdata{") + 9;
string::size_type b = token.find_first_of("}", a);
string data = token.substr(a, b - a);
// data is now all the bib files separated by ','
// get them one by one and pass them to the helper
do {
b = data.find_first_of(',', 0);
string l;
if (b == string::npos)
l = data;
else {
l = data.substr(0, b - 0);
data.erase(0, b + 1);
}
string full_l =
findtexfile(
ChangeExtension(l,"bib",false),
"bib");
lyxerr << "data = `"
<< full_l << "'" << endl;
if (!full_l.empty()) {
// add full_l to the dep file.
dep.insert(full_l, true);
}
} while (b != string::npos);
} else if (contains(token, "\\bibstyle{")) {
using_bibtex = true;
string::size_type a = token.find("\\bibstyle{") + 10;
string::size_type b = token.find_first_of("}", a);
string style = token.substr(a, b - a);
// token is now the style file
// pass it to the helper
string full_l =
findtexfile(
ChangeExtension(style, "bst", false),
"bst");
lyxerr << "style = `"
<< full_l << "'" << endl;
if (!full_l.empty()) {
// add full_l to the dep file.
dep.insert(full_l, true);
}
}
}
if (using_bibtex) {
// run bibtex and
string tmp= "bibtex ";
tmp += ChangeExtension(file, string(), true);
@ -471,8 +407,6 @@ bool LaTeX::runBibTeX(string const &file)
one.startscript(Systemcalls::System, tmp);
return true;
}
}
// bibtex was not run.
return false;
}
@ -482,23 +416,15 @@ int LaTeX::scanLogFile(TeXErrors &terr)
{
int retval = NO_ERRORS;
string tmp = ChangeExtension(file, ".log", true);
LyXLex lex(0, 0);
if (!lex.setFile(tmp)) {
// unable to open file
// return at once
retval |= NO_LOGFILE;
return retval;
}
lyxerr[Debug::LATEX] << "Log file: " << tmp << endl;
ifstream ifs(tmp.c_str());
string token;
while (lex.IsOK()) {
if (lex.EatLine())
token = lex.GetString();
else // blank line in the file being read
continue;
while (getline(ifs, token)) {
lyxerr[Debug::LATEX] << "Log line: " << token << endl;
lyxerr[Debug::LATEX] << token << endl;
if (token.empty())
continue;
if (prefixIs(token, "LaTeX Warning:")) {
// Here shall we handle different
@ -528,56 +454,42 @@ int LaTeX::scanLogFile(TeXErrors &terr)
// at least longtable.sty might use this.
retval |= RERUN;
}
} else if (prefixIs(token, "! LaTeX Error:")) {
// Here shall we handle different
// types of errors
retval |= LATEX_ERROR;
lyxerr[Debug::LATEX] << "LaTeX Error." << endl;
// this is not correct yet
terr.scanError(lex);
num_errors++;
} else if (prefixIs(token, "! ")) {
// Ok, we have something that looks like a TeX Error
// but what do we really have.
// Just get the error description:
string desc(token);
desc.erase(0, 2);
if (contains(desc, "Undefined control sequence")) {
retval |= TEX_ERROR;
lyxerr[Debug::LATEX] << "TeX Error." << endl;
terr.scanError(lex);
num_errors++;
} else {
string desc(token, 2);
if (contains(token, "LaTeX Error:"))
retval |= LATEX_ERROR;
// get the next line
lex.next();
string tmp = lex.GetString();
string tmp;
getline(ifs, tmp);
if (prefixIs(tmp, "l.")) {
// we have a latex error
retval |= TEX_ERROR;
lyxerr[Debug::LATEX]
<<"TeX Error." << endl;
// get the line number:
int line = 0;
sscanf(tmp.c_str(), "l.%d", &line);
// get the rest of the message:
string errstr;
lex.EatLine();
tmp = lex.GetString();
while ((tmp != "\n" || !contains(errstr, "l."))
string errstr(tmp, tmp.find(' '));
errstr += '\n';
getline(ifs, tmp);
while (!contains(errstr, "l.")
&& !tmp.empty()
&& !prefixIs(tmp, "! ")
&& !contains(tmp, "(job aborted")
&& !tmp.empty()) {
&& !contains(tmp, "(job aborted")) {
errstr += tmp;
errstr += "\n";
lex.EatLine();
tmp = lex.GetString();
getline(ifs, tmp);
}
lyxerr[Debug::LATEX]
<< "line: " << line << '\n'
<< "Desc: " << desc << '\n'
<< "Text: " << errstr << endl;
terr.insertError(line, desc, errstr);
num_errors++;
}
}
} else {
// information messages, TeX warnings and other
// warnings we have not caught earlier.
@ -597,6 +509,7 @@ int LaTeX::scanLogFile(TeXErrors &terr)
}
}
}
lyxerr[Debug::LATEX] << "Log line: " << token << endl;
return retval;
}
@ -608,33 +521,28 @@ void LaTeX::deplog(DepTable & head)
// dependency file.
string logfile = ChangeExtension(file, ".log", true);
FilePtr in(logfile, FilePtr::read);
bool not_eof = true;
if (in()) while (not_eof) { // We were able to open the file
ifstream ifs(logfile.c_str());
while (ifs) {
// Now we read chars until we find a '('
int c;
do {
c = fgetc(in());
} while (c != EOF && c != '(');
if (c == EOF) {
// Nothing more we can do
not_eof = false;
continue;
}
char c = 0;
while(ifs.get(c)) {
if (c == '(') break;
};
if (!ifs) break;
// We now have c == '(', we now read the the sequence of
// chars until reaching EOL, or ' ' and put that into a string.
// chars until reaching EOL, ' ' or ')' and put that
// into a string.
string foundfile;
c = fgetc(in());
while (c != '\n' && c != ' ' && c != ')') {
foundfile += char(c);
c = fgetc(in());
while (ifs.get(c)) {
if (c == '\n' || c == ' ' || c == ')')
break;
foundfile += c;
}
if (foundfile.empty()) continue;
lyxerr[Debug::LATEX] << "Found file: "
<< foundfile << endl;
// Ok now we found a file.
// Now we should make sure that
// this is a file that we can
@ -677,23 +585,6 @@ void LaTeX::deplog(DepTable & head)
}
continue;
}
// (3) the foundfile can be
// found in the same dir
// as the .lyx file and
// should be inserted.
Path p(path);
if (FileInfo(foundfile).exist()) {
lyxerr << "LyX Strange: this should actually never"
" happen anymore, this it should be"
" handled by the Absolute check."
<< endl;
lyxerr[Debug::LATEX] << "Same Directory file: "
<< foundfile << endl;
head.insert(foundfile);
continue;
}
lyxerr[Debug::LATEX]
<< "Not a file or we are unable to find it."
<< endl;
@ -706,7 +597,7 @@ void LaTeX::deptex(DepTable &head)
int except = AUX|LOG|DVI|BBL|IND|GLO;
string tmp;
FileInfo fi;
for (int i = 0; i < file_count; i++) {
for (int i = 0; i < file_count; ++i) {
if (!(all_files[i].file & except)) {
tmp = ChangeExtension(file,
all_files[i].extension,

View File

@ -21,65 +21,23 @@
#include "LString.h"
#include "DepTable.h"
#include <vector>
#include <fstream>
class LyXLex;
class MiniBuffer;
///
class TeXErrors {
public:
///
TeXErrors() {
errors = 0;
next_error = 0;
status = 0;
number_of_errors = 0;
}
///
~TeXErrors();
///
void scanError(LyXLex &);
///
bool getFirstError(int *line, string *text);
///
bool getNextError(int *line, string *text);
///
void insertError(int line, string const &error_desc,
string const &error_text);
///
void printErrors();
///
void printWarnings();
///
void printStatus();
///
int getStatus() { return status; }
private:
///
friend class LaTeX;
///
int status;
///
int number_of_errors;
///
struct Error {
///
Error () {
next_error = 0;
error_in_line = 0;
}
Error () : error_in_line(0) {}
///
Error(int line, string const &desc, string const &text) {
next_error = 0;
error_in_line = line;
error_desc = desc;
error_text = text;
}
///
~Error() {
}
///
Error *next_error;
Error(int line, string const & desc, string const & text)
: error_in_line(line),
error_desc(desc),
error_text(text) {}
/// what line in the TeX file the error occured in
int error_in_line;
/// The kind of error
@ -87,10 +45,19 @@ private:
/// The line/cmd that caused the error.
string error_text;
};
public:
///
Error *errors;
typedef vector<Error> Errors;
///
Error *next_error;
Errors::const_iterator begin() const { return errors.begin(); }
///
Errors::const_iterator end() const { return errors.end(); }
///
void insertError(int line, string const & error_desc,
string const & error_text);
private:
///
Errors errors;
};
@ -189,19 +156,13 @@ public:
/// use this for running LaTeX once
int operator() ();
protected:
/** The dependency file.
We store the file dependencies in this file.
the depency file is on the format:
<file> <new checksum> <old checksum>
*/
/// The dependency file.
string depfile;
///
LaTeX() {}
///
LaTeX(LaTeX const &) {}
/// unavail
LaTeX(LaTeX const &);
/// unavail
LaTeX & operator=(LaTeX const &);
///
void deplog(DepTable & head);
@ -216,7 +177,7 @@ protected:
bool runMakeIndex(string const &);
///
bool runBibTeX(string const &);
bool runBibTeX(string const &, DepTable &);
///
string cmd;

View File

@ -77,7 +77,7 @@ LaTeXFeatures::LaTeXFeatures(int n)
string LaTeXFeatures::getPackages(BufferParams const &params)
{
string packages;
LyXTextClass *tclass = lyxstyle.TextClass(params.textclass);
LyXTextClass const & tclass = textclasslist.TextClass(params.textclass);
// color.sty
if (color) {
@ -90,7 +90,7 @@ string LaTeXFeatures::getPackages(BufferParams const &params)
// makeidx.sty
if (makeidx) {
if (! tclass->provides_makeidx
if (! tclass.provides(LyXTextClass::makeidx)
&& params.language != "french") // french provides
// \index !
packages += "\\usepackage{makeidx}\n";
@ -167,7 +167,7 @@ string LaTeXFeatures::getPackages(BufferParams const &params)
packages += "\\usepackage{floatflt}\n";
// url.sty
if (url && ! tclass->provides_url)
if (url && ! tclass.provides(LyXTextClass::url))
packages += "\\IfFileExists{url.sty}{\\usepackage{url}}\n"
" {\\newcommand{\\url}{\\texttt}}\n";
@ -229,14 +229,12 @@ string LaTeXFeatures::getMacros(BufferParams const & /* params */)
string LaTeXFeatures::getTClassPreamble(BufferParams const & params)
{
// the text class specific preamble
LyXTextClass *tclass = lyxstyle.TextClass(params.textclass);
string tcpreamble = tclass->preamble;
LyXTextClass const & tclass = textclasslist.TextClass(params.textclass);
string tcpreamble = tclass.preamble();
int l;
for (l = 0 ; l < tclass->number_of_defined_layouts ; l++) {
if (layout[l]
&& !tclass->style[l].preamble.empty())
tcpreamble += tclass->style[l].preamble;
for (LyXTextClass::LayoutList::const_iterator cit = tclass.begin();
cit != tclass.end(); ++cit) {
tcpreamble += (*cit).preamble();
}
return tcpreamble;

View File

@ -10,9 +10,6 @@
#include <config.h>
#include <cstdio>
#include <cstdlib>
#ifdef __GNUG__
#pragma implementation
#endif
@ -20,7 +17,6 @@
#include "support/filetools.h"
#include "LaTeX.h"
#include "Literate.h"
#include "lyxlex.h"
#include "support/FileInfo.h"
#include "debug.h"
#include "support/lyxlib.h"
@ -41,8 +37,7 @@ Literate::Literate(string const & latex, string const & f, string const & p,
litfile(l),
literate_cmd(literate), literate_filter(literate_f),
build_cmd(build), build_filter(build_f)
{
}
{}
int Literate::weave(TeXErrors & terr, MiniBuffer * minib)
@ -66,9 +61,8 @@ int Literate::weave(TeXErrors &terr, MiniBuffer *minib)
ret1 = one.startscript(Systemcalls::System, tmp1);
ret2 = two.startscript(Systemcalls::System, tmp2);
lyxerr.debug() << "LITERATE {" << tmp1 << "} {" << tmp2 << "}" << endl;
scanres = scanLiterateLogFile(terr);
scanres = scanLiterateLogFile();
if (scanres & Literate::ERRORS) return scanres; // return on literate error
return run(terr, minib);
}
@ -79,8 +73,6 @@ int Literate::build(TeXErrors &terr, MiniBuffer *minib)
{
int scanres = Literate::NO_ERRORS;
num_errors = 0; // just to make sure.
// DepTable head; // empty head // unused
// bool rerun = false; // rerun requested // unused
string tmp1, tmp2;
int ret1, ret2;
Systemcalls one, two;
@ -98,35 +90,22 @@ int Literate::build(TeXErrors &terr, MiniBuffer *minib)
tmp2 = build_filter + " < " + litfile + ".out" + " > " + litfile + ".log";
ret1 = one.startscript(Systemcalls::System, tmp1);
ret2 = two.startscript(Systemcalls::System, tmp2);
scanres = scanBuildLogFile(terr);
scanres = scanBuildLogFile();
lyxerr[Debug::LATEX] << "Done." << endl;
return scanres;
}
int Literate::scanLiterateLogFile(TeXErrors &terr)
int Literate::scanLiterateLogFile()
{
string token;
int retval = NO_ERRORS;
LyXLex lex(0, 0);
string tmp = litfile + ".log";
if (!lex.setFile(tmp)) {
// unable to open file
// return at once
retval |= NO_LOGFILE;
return retval;
}
while (lex.IsOK()) {
if (lex.EatLine())
token = lex.GetString();
else // blank line in the file being read
continue;
ifstream ifs(tmp.c_str());
while (getline(ifs, token)) {
lyxerr[Debug::LATEX] << token << endl;
if (prefixIs(token, "Build Warning:")) {
@ -140,7 +119,6 @@ int Literate::scanLiterateLogFile(TeXErrors &terr)
retval |= LATEX_ERROR;
lyxerr[Debug::LATEX] << "Build Error." << endl;
// this is not correct yet
terr.scanError(lex);
num_errors++;
}
}
@ -148,28 +126,15 @@ int Literate::scanLiterateLogFile(TeXErrors &terr)
}
int Literate::scanBuildLogFile(TeXErrors &terr)
int Literate::scanBuildLogFile()
{
string token;
int retval = NO_ERRORS;
LyXLex lex(0, 0);
string tmp = litfile + ".log";
if (!lex.setFile(tmp)) {
// unable to open file
// return at once
retval |= NO_LOGFILE;
return retval;
}
while (lex.IsOK()) {
if (lex.EatLine())
token = lex.GetString();
else // blank line in the file being read
continue;
ifstream ifs(tmp.c_str());
while (getline(ifs, token)) {
lyxerr[Debug::LATEX] << token << endl;
if (prefixIs(token, "Build Warning:")) {
@ -183,11 +148,8 @@ int Literate::scanBuildLogFile(TeXErrors &terr)
retval |= LATEX_ERROR;
lyxerr[Debug::LATEX] << "Build Error." << endl;
// this is not correct yet
terr.scanError(lex);
num_errors++;
}
}
return retval;
}

View File

@ -5,21 +5,17 @@
* LyX, The Document Processor
* Copyright (C) 1995 Matthias Ettrich
*
* This file is Copyright (C) 1996-1998
* Lars Gullik Bjønnes
*
*======================================================
*/
#ifndef _LITERATE_H
#define _LITERATE_H
#ifndef LITERATE_H
#define LITERATE_H
#ifdef __GNUG__
#pragma interface
#endif
#include "LString.h"
#include "DepTable.h"
class MiniBuffer;
///
class Literate : public LaTeX {
@ -32,16 +28,17 @@ public:
/// runs literate and latex
int weave(TeXErrors &, MiniBuffer *);
///
int scanLiterateLogFile(TeXErrors &);
/// runs literate and build
int build(TeXErrors &, MiniBuffer *);
///
int scanBuildLogFile(TeXErrors &);
private:
///
int scanLiterateLogFile();
///
int scanBuildLogFile();
///
string litfile;

View File

@ -291,20 +291,20 @@ void LyXView::updateLayoutChoice()
// If textclass is different, we need to update the list
if (toolbar->combox->empty() ||
(last_textclass != currentBuffer()->params.textclass)) {
(last_textclass != int(currentBuffer()->params.textclass))) {
toolbar->combox->clear();
for (int i = 0;
lyxstyle.NameOfLayout(currentBuffer()->
textclasslist.NameOfLayout(currentBuffer()->
params.textclass, i) !="@@end@@";
i++) {
LyXLayout *layout = lyxstyle.
LyXLayout const & layout = textclasslist.
Style(currentBuffer()->params.textclass, i);
if (layout->obsoleted_by.empty())
toolbar->combox->addline(layout->name.c_str());
if (layout.obsoleted_by().empty())
toolbar->combox->addline(layout.name().c_str());
else
toolbar->combox->addline(("@N"+layout->name).c_str());
toolbar->combox->addline(("@N"+layout.name()).c_str());
}
last_textclass = currentBuffer()->params.textclass;
last_textclass = int(currentBuffer()->params.textclass);
current_layout = 0;
}
// we need to do this.
@ -325,9 +325,9 @@ void LyXView::UpdateDocumentClassChoice()
int i;
if (fd_form_document) {
fl_clear_choice(fd_form_document->choice_class);
for (i = 0; lyxstyle.DescOfClass (i)!="@@end@@"; i++) {
for (i = 0; textclasslist.DescOfClass (i)!="@@end@@"; i++) {
fl_addto_choice(fd_form_document->choice_class,
lyxstyle.DescOfClass(i).c_str());
textclasslist.DescOfClass(i).c_str());
}
}
}

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1995-1998 The LyX Team.
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1998 The LyX Team.
*
* ====================================================== */
#ifndef _LyXView_H_
#define _LyXView_H_
#ifndef LyXView_H
#define LyXView_H
#ifdef __GNUG__
#pragma interface
@ -21,6 +21,8 @@
#include "buffer.h"
#include "menus.h"
#include "BufferView.h"
#include "layout.h"
class LyXFunc;
class Toolbar;
class MiniBuffer;
@ -142,6 +144,4 @@ private:
here. (Asger) */
int last_textclass;
};
#endif

View File

@ -89,11 +89,7 @@ static void checkMarginValues()
fl_hide_object(fd_form_paper->text_warning);
ActivatePaperButtons();
#if 0
val = fl_get_choice(fd_form_paper->choice_papersize2)-1;
if (val == VM_PAPER_DEFAULT)
return;
#endif
allEmpty = (!strlen(fl_get_input(fd_form_paper->input_top_margin)) &&
!strlen(fl_get_input(fd_form_paper->input_bottom_margin)) &&
!strlen(fl_get_input(fd_form_paper->input_left_margin)) &&
@ -190,7 +186,7 @@ void PaperApplyCB(FL_OBJECT *, long)
BufferParams * params = &current_view->currentBuffer()->params;
const FD_form_paper* fd = fd_form_paper;
FD_form_paper const * fd = fd_form_paper;
params->papersize2 = fl_get_choice(fd->choice_papersize2)-1;
params->paperpackage = fl_get_choice(fd->choice_paperpackage)-1;
@ -231,12 +227,9 @@ void PaperOKCB(FL_OBJECT *ob, long data)
void PaperMarginsCB(FL_OBJECT * ob, long)
{
const FD_form_paper
*fd = fd_form_paper;
string
str;
char
val;
FD_form_paper const * fd = fd_form_paper;
string str;
char val;
checkMarginValues();
if (ob == fd->choice_papersize2) {
@ -258,11 +251,15 @@ void PaperMarginsCB(FL_OBJECT *ob, long)
fl_set_choice(fd->choice_papersize2, VM_PAPER_DEFAULT + 1);
fl_set_button(fd->push_use_geometry, 0);
}
} else if ((ob==fd->input_custom_width) || (ob==fd->input_custom_height) ||
(ob==fd->input_left_margin) || (ob==fd->input_right_margin) ||
(ob==fd->input_top_margin) || (ob==fd->input_bottom_margin) ||
(ob==fd->input_head_height) || (ob==fd->input_head_sep) ||
(ob==fd->input_foot_skip)) {
} else if ((ob==fd->input_custom_width)
|| (ob==fd->input_custom_height)
|| (ob==fd->input_left_margin)
|| (ob==fd->input_right_margin)
|| (ob==fd->input_top_margin)
|| (ob==fd->input_bottom_margin)
|| (ob==fd->input_head_height)
|| (ob==fd->input_head_sep)
|| (ob==fd->input_foot_skip)) {
str = fl_get_input(ob);
if (!str.empty() && !isValidLength(str)) {
fl_set_object_label(fd_form_paper->text_warning,

View File

@ -171,9 +171,8 @@ void ParagraphExtraApplyCB(FL_OBJECT *, long)
*widthp = fl_get_input(fd->input_pextra_widthp);
LyXText
*text = current_view->currentBuffer()->text;
int
type = PEXTRA_NONE,
alignment = 0;
int type = PEXTRA_NONE;
int alignment = 0;
bool
hfill = false,
start_minipage = false;
@ -196,10 +195,8 @@ void ParagraphExtraApplyCB(FL_OBJECT *, long)
}
text->SetParagraphExtraOpt(type,width,widthp,alignment,hfill,
start_minipage);
// current_view->redoCurrentBuffer();
current_view->currentBuffer()->update(1);
minibuffer->Set(_("ParagraphExtra layout set"));
// current_view->currentBuffer()->markDirty();
}
return;
}

View File

@ -15,6 +15,7 @@
#include "lyxscreen.h"
#include "gettext.h"
#include "lyxtext.h"
#include "layout.h"
extern void BeforeChange();

View File

@ -9,8 +9,8 @@
*======================================================
A few prototypes missing from Sun and SCO 3.2v4 header files */
#ifndef _BROKEN_HEADERS_H
#define _BROKEN_HEADERS_H
#ifndef BROKEN_HEADERS_H
#define BROKEN_HEADERS_H
#ifdef __cplusplus
extern "C" {

File diff suppressed because it is too large Load Diff

View File

@ -19,8 +19,8 @@
// every time the LyX-file was left unchanged between the two actions mentioned
// above.
#ifndef _BUFFER_H_
#define _BUFFER_H_
#ifndef BUFFER_H
#define BUFFER_H
#ifdef __GNUG__
#pragma interface
@ -370,9 +370,9 @@ private:
///
void DocBookHandleFootnote(FILE *file,LyXParagraph* &par, int const depth);
///
void sgmlOpenTag(FILE * file,int depth,string & latexname);
void sgmlOpenTag(FILE * file,int depth,string const & latexname) const;
///
void sgmlCloseTag(FILE * file,int depth,string & latexname);
void sgmlCloseTag(FILE * file,int depth,string const & latexname) const;
///
void LinuxDocError(LyXParagraph *par, int pos, char const *message);
///

View File

@ -60,7 +60,7 @@ private:
class BufferStorage_Iter {
public:
///
BufferStorage_Iter(const BufferStorage & bs)
BufferStorage_Iter(BufferStorage const & bs)
{ cs =& bs; index = 0;}
/// next
Buffer* operator() ();

View File

@ -44,7 +44,7 @@ BufferParams::BufferParams()
fonts = "default";
inputenc = "latin1";
graphicsDriver = "default";
sides = 1;
sides = LyXTextClass::OneSide;
columns = 1;
pagestyle = "default";
for(int iter = 0; iter < 4; iter++) {
@ -112,7 +112,7 @@ void BufferParams::writeFile(FILE *file)
// the textclass
fprintf(file, "\\textclass %s\n",
lyxstyle.NameOfClass(textclass).c_str());
textclasslist.NameOfClass(textclass).c_str());
// then the the preamble
if (!preamble.empty()) {
@ -222,14 +222,14 @@ void BufferParams::writeFile(FILE *file)
void BufferParams::useClassDefaults() {
LyXTextClass *tclass = lyxstyle.TextClass(textclass);
LyXTextClass const & tclass = textclasslist.TextClass(textclass);
sides = tclass->sides;
columns = tclass->columns;
pagestyle = tclass->pagestyle;
options = tclass->options;
secnumdepth = tclass->secnumdepth;
tocdepth = tclass->tocdepth;
sides = tclass.sides();
columns = tclass.columns();
pagestyle = tclass.pagestyle();
options = tclass.options();
secnumdepth = tclass.secnumdepth();
tocdepth = tclass.tocdepth();
}

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 1996 Matthias Ettrich
* and the LyX Team.
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team.
*
* ====================================================== */
#ifndef _BUFFERPARAMS_H
#define _BUFFERPARAMS_H
#ifndef BUFFERPARAMS_H
#define BUFFERPARAMS_H
#ifdef __GNUG__
#pragma interface
@ -22,6 +22,7 @@
#include "Spacing.h"
#include "Bullet.h"
#include "insets/insetquotes.h"
#include "layout.h"
/**
This class contains all the parameters for this a buffer uses. Some
@ -34,8 +35,6 @@ public:
//@{
///
BufferParams();
// ///
//BufferParams(const BufferParams&);
//@}
/// Dummy destructor to shut up gcc
@ -65,7 +64,7 @@ public:
///
string fontsize;
///
signed char textclass;
LyXTextClassList::ClassList::size_type textclass;
/* this are for the PaperLayout */
///
@ -105,9 +104,9 @@ public:
///
Spacing spacing;
///
signed char secnumdepth;
int secnumdepth;
///
signed char tocdepth;
int tocdepth;
///
string language;
///
@ -119,9 +118,9 @@ public:
///
string float_placement;
///
char columns; // add approp. signedness
unsigned int columns;
///
char sides; // add approp. signedness
LyXTextClass::PageSides sides;
///
string pagestyle;
///

View File

@ -48,12 +48,14 @@ struct Debug {
PARSER | LYXRC | KBMAP | LATEX |
MATHED | FONT | TCLASS | LYXVC |
LYXSERVER | ROFF);
///
friend inline void operator|=(Debug::type & d1, Debug::type d2);
/** A function to convert symbolic string names on debug levels
to their numerical value.
*/
static Debug::type value(string const & val) {
int l = Debug::NONE;
type l = Debug::NONE;
string v(val);
while (!v.empty()) {
string::size_type st = v.find(',');
@ -78,9 +80,14 @@ struct Debug {
if (st == string::npos) break;
v.erase(0, st + 1);
}
return Debug::type(l);
return l;
}
};
///
inline void operator|=(Debug::type & d1, Debug::type d2)
{
d1 = static_cast<Debug::type>(d1 | d2);
}
#include "support/DebugStream.h"

View File

@ -611,7 +611,7 @@ static void runqueue()
XInternAtom(tempdisp, "GHOSTVIEW", false),
XInternAtom(tempdisp, "STRING", false),
8, PropModeAppend,
(unsigned char *) tbuf,
reinterpret_cast<unsigned char*>(tbuf),
strlen(tbuf));
switch (p->data->flags & 3) {
@ -641,7 +641,7 @@ static void runqueue()
XInternAtom(tempdisp, "GHOSTVIEW_COLORS", false),
XInternAtom(tempdisp, "STRING", false),
8, PropModeReplace,
(unsigned char *) tbuf,
reinterpret_cast<unsigned char*>(tbuf),
strlen(tbuf));
XUngrabServer(tempdisp);
XFlush(tempdisp);

View File

@ -37,13 +37,12 @@ unsigned char Inset::Editable() const
return 0;
}
void Inset::Validate(LaTeXFeatures &) const
{
// nothing by default
}
bool Inset::AutoDelete() const
{
return false;
@ -61,14 +60,8 @@ LyXFont Inset::ConvertFont(LyXFont font)
}
// Inset::Code Inset::LyxCode() const
// {
// return Inset::NO_CODE;
// }
/* some stuff for inset locking */
void UpdatableInset::InsetButtonPress(int x, int y, int button)
{
lyxerr.debug() << "Inset Button Press x=" << x
@ -111,5 +104,4 @@ unsigned char UpdatableInset::Editable() const
void UpdatableInset::ToggleInsetCursor()
{
// nothing
}

View File

@ -34,19 +34,10 @@ FD_bibitem_form * create_form_bibitem_form(void);
extern "C" void bibitem_cb(FL_OBJECT *, long data)
{
switch (data) {
// case 0: fl_hide_form(citation_form->citation_form);
// break;
// case 1:
case 1: // OK, citation
{
// InsetCommand *inset = (InsetCommand*)citation_form->vdata;
// inset->setContents(bibcombox->getline());
// inset->setOptions(fl_get_input(citation_form->label));
// fl_hide_form(citation_form->citation_form);
// UpdateInset(inset);
// break;
if(!current_view->currentBuffer()->isReadonly()) {
InsetCommand *inset = (InsetCommand*)citation_form->vdata;
InsetCommand *inset = static_cast<InsetCommand*>(citation_form->citation_form->u_vdata);
inset->setContents(bibcombox->getline());
inset->setOptions(fl_get_input(citation_form->label));
fl_hide_form(citation_form->citation_form);
@ -57,23 +48,12 @@ extern "C" void bibitem_cb(FL_OBJECT *, long data)
}
// fall through to Cancel on RO-mode
}
// case 2: fl_hide_form(bibitem_form->bibitem_form);
case 0: fl_hide_form(citation_form->citation_form);
break;
// case 3:
case 3: // OK, bibitem
{
// InsetCommand *inset = (InsetCommand *)bibitem_form->vdata;
// inset->setContents(fl_get_input(bibitem_form->key));
// inset->setOptions(fl_get_input(bibitem_form->label));
// fl_hide_form(bibitem_form->bibitem_form);
// // Does look like a hack? It is! (but will change at 0.13)
// current_view->currentBuffer()->text->RedoParagraph();
// current_view->currentBuffer()->update(1);
// break;
if(!current_view->currentBuffer()->isReadonly()) {
InsetCommand *inset = (InsetCommand *)bibitem_form->vdata;
InsetCommand *inset = static_cast<InsetCommand*>(bibitem_form->bibitem_form->u_vdata);
inset->setContents(fl_get_input(bibitem_form->key));
inset->setOptions(fl_get_input(bibitem_form->label));
fl_hide_form(bibitem_form->bibitem_form);
@ -159,7 +139,7 @@ InsetCitation::~InsetCitation()
{
if(citation_form && citation_form->citation_form
&& citation_form->citation_form->visible
&& citation_form->vdata == this)
&& citation_form->citation_form->u_vdata == this)
fl_hide_form(citation_form->citation_form);
}
@ -174,7 +154,7 @@ void InsetCitation::Edit(int, int)
fl_set_form_atclose(citation_form->citation_form,
CancelCloseBoxCB, 0);
}
citation_form->vdata = this;
citation_form->citation_form->u_vdata = this;
BibitemUpdate(bibcombox);
if (!bibcombox->select_text(getContents().c_str()))
@ -276,7 +256,7 @@ void InsetBibKey::Edit(int, int)
fl_set_form_atclose(bibitem_form->bibitem_form,
CancelCloseBoxCB, 0);
}
bibitem_form->vdata = this;
bibitem_form->bibitem_form->u_vdata = this;
// InsetBibtex uses the same form, with different labels
fl_set_object_label(bibitem_form->key, idex(_("Key:|#K")));
fl_set_button_shortcut(bibitem_form->key,scex(_("Key:|#K")),1);
@ -440,7 +420,7 @@ void InsetBibtex::Edit(int, int)
CancelCloseBoxCB, 0);
}
bibitem_form->vdata = this;
bibitem_form->bibitem_form->u_vdata = this;
fl_set_object_label(bibitem_form->key, _("Database:"));
fl_set_object_label(bibitem_form->label, _("Style: "));
fl_set_input(bibitem_form->key, getContents().c_str());
@ -448,7 +428,8 @@ void InsetBibtex::Edit(int, int)
if (bibitem_form->bibitem_form->visible) {
fl_raise_form(bibitem_form->bibitem_form);
} else {
fl_show_form(bibitem_form->bibitem_form,FL_PLACE_MOUSE, FL_FULLBORDER,
fl_show_form(bibitem_form->bibitem_form,
FL_PLACE_MOUSE, FL_FULLBORDER,
_("BibTeX"));
}
}
@ -504,7 +485,7 @@ void BibitemUpdate(Combox* combox)
// ale070405 This function maybe shouldn't be here. We'll fix this at 0.13.
int bibitemMaxWidth(const class LyXFont &font)
int bibitemMaxWidth(LyXFont const & font)
{
int w = 0;
// Does look like a hack? It is! (but will change at 0.13)

View File

@ -5,12 +5,12 @@
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1995-1998 The LyX Team.
* Copyright (C) 1995-1999 The LyX Team.
*
* ======================================================*/
#ifndef _INSET_BIB_H
#define _INSET_BIB_H
#ifndef INSET_BIB_H
#define INSET_BIB_H
#ifdef __GNUG__
#pragma interface

View File

@ -66,9 +66,6 @@ void InsetCommand::Draw(LyXFont font, LyXScreen &scr,
// Draw it as a box with the LaTeX text
x += 3;
//scr.drawFilledRectangle(int(x), baseline - Ascent(font) + 1,
// Width(font) - 2, Ascent(font) + Descent(font)-2,
// FL_GRAY80);
scr.fillRectangle(gc_lighted,
int(x), baseline - Ascent(font) + 1,
Width(font) - 6,
@ -80,9 +77,6 @@ void InsetCommand::Draw(LyXFont font, LyXScreen &scr,
h = (Ascent(font)+Descent(font)-2);
scr.drawFrame(FL_UP_FRAME, int(x), y, w, h, FL_BLACK, -1);
} else {
//scr.drawRectangle(int(x), baseline - Ascent(font)+1,
// Width(font)-2, Ascent(font)+Descent(font)-2,
// FL_BLACK);
scr.drawRectangle(gc_note_frame,
int(x), baseline - Ascent(font)+1,
Width(font)-6,

View File

@ -5,12 +5,12 @@
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1996-1998 The LyX Team.
* Copyright (C) 1996-1999 The LyX Team.
*
* ======================================================*/
#ifndef _INSET_LATEXCOMMAND_H
#define _INSET_LATEXCOMMAND_H
#ifndef INSET_LATEXCOMMAND_H
#define INSET_LATEXCOMMAND_H
#ifdef __GNUG__
#pragma interface

View File

@ -27,8 +27,8 @@ InsetError::InsetError()
form = 0;
}
InsetError::InsetError(string const & string)
: contents(string)
InsetError::InsetError(string const & str)
: contents(str)
{
form = 0;
}
@ -77,15 +77,9 @@ void InsetError::Draw(LyXFont font, LyXScreen &scr,
// Draw as "Error" in a framed box
x += 1;
//scr.drawFilledRectangle(int(x), baseline - Ascent(font)+1,
// Width(font)-2,Ascent(font)+ Descent(font)-2,
// FL_GRAY80);
scr.fillRectangle(gc_lighted,
int(x), baseline - Ascent(font)+1,
Width(font)-2,Ascent(font)+ Descent(font)-2);
//scr.drawRectangle(int(x), baseline-Ascent(font)+1,
// Width(font)-2, Ascent(font)+Descent(font)-2,
// FL_RED);
scr.drawRectangle(gc_foot,
int(x), baseline-Ascent(font)+1,
Width(font)-2, Ascent(font)+Descent(font)-2);
@ -140,9 +134,9 @@ unsigned char InsetError::Editable() const
}
void InsetError::CloseErrorCB(FL_OBJECT *, long data)
void InsetError::CloseErrorCB(FL_OBJECT * ob, long)
{
InsetError *inset = (InsetError*) data;
InsetError * inset = static_cast<InsetError*>(ob->u_vdata);
if (inset->form) {
fl_hide_form(inset->form);
fl_free_form(inset->form);
@ -150,10 +144,11 @@ void InsetError::CloseErrorCB(FL_OBJECT *, long data)
}
}
// A C wrapper
extern "C" void C_InsetError_CloseErrorCB(FL_OBJECT *, long data)
extern "C" void C_InsetError_CloseErrorCB(FL_OBJECT * ob, long data)
{
InsetError::CloseErrorCB(0,data);
InsetError::CloseErrorCB(ob , data);
}
@ -168,7 +163,8 @@ void InsetError::Edit(int, int)
fl_set_object_color(strobj,FL_MCOL,FL_MCOL);
fl_set_object_gravity(strobj, FL_NorthWest, FL_SouthEast);
obj = fl_add_button(FL_RETURN_BUTTON,140,200,120,30,_("Close"));
fl_set_object_callback(obj, C_InsetError_CloseErrorCB, (long)this);
fl_set_object_callback(obj, C_InsetError_CloseErrorCB, 0);
obj->u_vdata = this;
fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
fl_set_object_resize(obj, FL_RESIZE_NONE);
fl_end_form();

View File

@ -8,8 +8,8 @@
*
*======================================================*/
#ifndef _INSET_ERROR_H
#define _INSET_ERROR_H
#ifndef INSET_ERROR_H
#define INSET_ERROR_H
#ifdef __GNUG__
#pragma interface

View File

@ -20,6 +20,7 @@
#include "gettext.h"
#include "include_form.h"
#include "support/FileInfo.h"
#include "layout.h"
extern BufferView * current_view;
@ -91,7 +92,7 @@ FD_include *form = 0;
extern "C" void include_cb(FL_OBJECT *, long arg)
{
InsetInclude *inset = (InsetInclude*)form->vdata;
InsetInclude * inset = static_cast<InsetInclude*>(form->include->u_vdata);
switch (arg) {
case 0:
{
@ -195,7 +196,7 @@ InsetInclude::InsetInclude(string const & fname, Buffer *bf)
InsetInclude::~InsetInclude()
{
if (form && form->vdata == this) {
if (form && form->include->u_vdata == this) {
// this inset is in the popup so hide the popup
// and remove the reference to this inset. ARRae
if (form->include) {
@ -221,7 +222,7 @@ Inset * InsetInclude::Clone()
ii->setVerb();
ii->setVisibleSpace(isVerbVisibleSpace());
}
return (Inset*)ii;
return ii;
}
void InsetInclude::Edit(int, int)
@ -233,7 +234,7 @@ void InsetInclude::Edit(int, int)
form = create_form_include();
fl_set_form_atclose(form->include, IgnoreCloseBoxCB, 0);
}
form->vdata = this;
form->include->u_vdata = this;
fl_set_input(form->input, contents.c_str());
fl_set_button(form->flag1, int(isNoLoad()));
@ -341,9 +342,9 @@ int InsetInclude::Latex(string &file, signed char /*fragile*/)
lyxerr << "ERROR: Cannot handle include file `"
<< MakeDisplayPath(getFileName())
<< "' which has textclass `"
<< lyxstyle.NameOfClass(tmp->params.textclass)
<< textclasslist.NameOfClass(tmp->params.textclass)
<< "' instead of `"
<< lyxstyle.NameOfClass(master->params.textclass)
<< textclasslist.NameOfClass(master->params.textclass)
<< "'." << endl;
return 0;
}
@ -451,14 +452,14 @@ int InsetInclude::GetNumberOfLabels() const {
string InsetInclude::getKeys() const
{
string list;
string lst;
if (loadIfNeeded()) {
Buffer *tmp = bufferlist.getBuffer(getFileName());
tmp->setParentName("");
list = tmp->getBibkeyList(',');
lst = tmp->getBibkeyList(',');
tmp->setParentName(getMasterFilename());
}
return list;
return lst;
}

View File

@ -84,18 +84,18 @@ public:
return filename;
}
/// In "input" mode uses \input instead of \include.
bool isInput() const { return (bool)(flag == InsetInclude::INPUT); }
bool isInput() const { return flag == InsetInclude::INPUT; }
/// If this is true, the child file shouldn't be loaded by lyx
bool isNoLoad() const { return (bool)(noload); }
bool isNoLoad() const { return noload; }
/** A verbatim file shouldn't be loaded by LyX
* No need to generate LaTeX code of a verbatim file
*/
bool isVerb() const;
///
bool isVerbVisibleSpace() const { return (bool)(flag==InsetInclude::VERBAST);}
bool isVerbVisibleSpace() const { return flag==InsetInclude::VERBAST;}
///
bool isInclude() const { return (bool)(flag == InsetInclude::INCLUDE);}
bool isInclude() const { return flag == InsetInclude::INCLUDE;}
///
void setInput();
///

View File

@ -1,6 +1,6 @@
#include <config.h>
#include <stdlib.h>
#include <cstdlib>
#ifdef __GNUG__
#pragma implementation
@ -22,17 +22,9 @@ FD_index_form *index_form = 0;
extern "C" void index_cb(FL_OBJECT *, long data)
{
InsetIndex *inset = (InsetIndex*)index_form->vdata;
InsetIndex * inset = static_cast<InsetIndex*>(index_form->index_form->u_vdata);
switch (data) {
// - case 0: fl_hide_form(index_form->index_form); break;
// - case 1:
// - {
// - inset->setContents(fl_get_input(index_form->key));
// - fl_hide_form(index_form->index_form);
// - UpdateInset(inset);
// - break;
// - }
case 1: // OK
if(!current_view->currentBuffer()->isReadonly()) {
string tmp = fl_get_input(index_form->key);
@ -89,7 +81,7 @@ InsetIndex::~InsetIndex()
{
if(index_form && index_form->index_form
&& index_form->index_form->visible
&& index_form->vdata == this)
&& index_form->index_form->u_vdata == this)
fl_hide_form(index_form->index_form);
}
@ -102,7 +94,7 @@ void InsetIndex::Edit(int, int)
if (!index_form)
index_form = create_form_index_form();
index_form->vdata = this;
index_form->index_form->u_vdata = this;
fl_set_input(index_form->key, getContents().c_str());
if (index_form->index_form->visible) {
fl_raise_form(index_form->index_form);

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1996-1998 LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1996-1999 the LyX Team.
*
* ======================================================*/
#ifndef _INSET_INDEX_H
#define _INSET_INDEX_H
#ifndef INSET_INDEX_H
#define INSET_INDEX_H
#ifdef __GNUG__
#pragma interface
@ -59,7 +59,7 @@ public:
/// Updates needed features for this inset.
void Validate(LaTeXFeatures & features) const;
///
void Edit(int, int){;}
void Edit(int, int) {}
///
unsigned char Editable() const{
return 1;
@ -81,8 +81,6 @@ private:
struct FD_index_form {
FL_FORM * index_form;
FL_OBJECT * key;
void *vdata;
long ldata;
};
extern FD_index_form * index_form;

View File

@ -153,10 +153,9 @@ unsigned char InsetInfo::Editable() const
}
void InsetInfo::CloseInfoCB(FL_OBJECT *, long data)
void InsetInfo::CloseInfoCB(FL_OBJECT * ob, long)
{
InsetInfo *inset = (InsetInfo*) data;
// inset->contents = fl_get_input(inset->strobj);
InsetInfo * inset = static_cast<InsetInfo*>(ob->u_vdata);
string tmp = fl_get_input(inset->strobj);
Buffer * buffer = current_view->currentBuffer();
if(tmp != inset->contents && !(buffer->isReadonly()) ) {
@ -170,12 +169,14 @@ void InsetInfo::CloseInfoCB(FL_OBJECT *, long data)
}
}
// This is just a wrapper.
extern "C" void C_InsetInfo_CloseInfoCB(FL_OBJECT *, long data)
extern "C" void C_InsetInfo_CloseInfoCB(FL_OBJECT * ob, long data)
{
InsetInfo::CloseInfoCB(0, data);
InsetInfo::CloseInfoCB(ob, data);
}
void InsetInfo::Edit(int, int)
{
static int ow = -1, oh;
@ -193,8 +194,9 @@ void InsetInfo::Edit(int, int)
obj = fl_add_button(FL_NORMAL_BUTTON,130,140,120,30,idex(_("Close|#C^[")));
fl_set_object_resize(obj, FL_RESIZE_NONE);
fl_set_object_gravity(obj, SouthEastGravity, SouthEastGravity);
fl_set_object_callback(obj, C_InsetInfo_CloseInfoCB, (long)this);
fl_set_object_shortcut(obj, scex(_("Close|#C^[")), (long)this);
fl_set_object_callback(obj, C_InsetInfo_CloseInfoCB, 0);
obj->u_vdata = this;
fl_set_object_shortcut(obj, scex(_("Close|#C^[")), 1);
fl_end_form();
fl_set_form_atclose(form, CancelCloseBoxCB, 0);
}

View File

@ -4,12 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 the LyX Team.
*
* ======================================================*/
#ifndef _INSET_INFO_H
#define _INSET_INFO_H
#ifndef INSET_INFO_H
#define INSET_INFO_H
#ifdef __GNUG__
#pragma interface
@ -75,5 +76,4 @@ private:
///
FL_OBJECT * strobj;
};
#endif

View File

@ -82,14 +82,14 @@ string InsetLabel::escape(string const & lab) const {
char hexdigit[16] = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
string enc;
for (string::size_type i=0; i<lab.length(); i++) {
for (string::size_type i=0; i < lab.length(); ++i) {
unsigned char c = lab[i];
if (c >= 128 || c == '=' || c == '%') {
enc += '=';
enc += hexdigit[c >> 4];
enc += hexdigit[c & 15];
} else {
enc += (char) c;
enc += c;
}
}
return enc;

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1995-1998 The LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team
*
*======================================================*/
#ifndef _INSET_LABEL_H
#define _INSET_LABEL_H
#ifndef INSET_LABEL_H
#define INSET_LABEL_H
#ifdef __GNUG__
#pragma interface
@ -25,7 +25,7 @@ public:
///
InsetLabel(string const & cmd);
///
InsetLabel() : InsetCommand("label") {;}
InsetLabel() : InsetCommand("label") {}
///
~InsetLabel();
///

View File

@ -64,15 +64,9 @@ void InsetLatex::Draw(LyXFont font, LyXScreen &scr,
// Draw it as a box with the LaTeX text
x += 1;
//scr.drawFilledRectangle(int(x), baseline - Ascent(font) + 1,
// Width(font)-2, Ascent(font) + Descent(font)-2,
// FL_GRAY80);
scr.fillRectangle(gc_lighted, int(x), baseline - Ascent(font) +1 ,
Width(font) - 2, Ascent(font) + Descent(font) -2);
//scr.drawRectangle(int(x), baseline - Ascent(font) + 1,
// Width(font)-2, Ascent(font)+Descent(font)-2,
// FL_RED);
scr.drawRectangle(gc_foot,int(x), baseline - Ascent(font) + 1,
Width(font)-2, Ascent(font)+Descent(font)-2);
@ -90,14 +84,11 @@ void InsetLatex::Write(FILE *file)
void InsetLatex::Read(LyXLex & lex)
{
FILE * file = lex.getFile();
int i = 0;
char c='\0';
char tmp[100];
char c = 0;
string tmp;
while (!feof(file) && (c = fgetc(file)) != '\n') {
tmp[i]=c;
i++;
tmp += char(c);
}
tmp[i]='\0';
contents = tmp;
}

View File

@ -8,8 +8,8 @@
*
* ======================================================*/
#ifndef _INSET_LATEX_H
#define _INSET_LATEX_H
#ifndef INSET_LATEX_H
#define INSET_LATEX_H
#ifdef __GNUG__
#pragma interface

View File

@ -308,7 +308,6 @@ int InsetLatexAccent::Width(LyXFont const &font) const
}
bool InsetLatexAccent::DisplayISO8859_9(LyXFont font,
LyXScreen & scr,
int baseline,
@ -368,7 +367,7 @@ void InsetLatexAccent::Draw(LyXFont font,
int asc = Ascent(font);
int desc = Descent(font);
int wid = Width(font);
float x2 = x+(float(wid)/2);
float x2 = x + float(wid/2);
float hg35;
int hg, y;
if (plusasc) {
@ -567,19 +566,11 @@ void InsetLatexAccent::Draw(LyXFont font,
}
}
} else {
//scr.drawFilledRectangle(int(x+1), baseline - Ascent(font)+1,
// Width(font)-2,
// Ascent(font)+Descent(font)-2,
// FL_GRAY80);
scr.fillRectangle(gc_lighted,
int(x+1), baseline - Ascent(font)+1,
Width(font)-2,
Ascent(font)+Descent(font)-2);
//scr.drawRectangle(int(x), baseline - Ascent(font),
// Width(font)-1,
// Ascent(font)+Descent(font)-1,
// FL_GRAY80);
scr.drawRectangle(gc_lighted,
int(x), baseline - Ascent(font),
Width(font)-1,

View File

@ -145,4 +145,3 @@ bool InsetLatexAccent::CanDisplay()
}
#endif

View File

@ -5,7 +5,7 @@
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1996-1998 The LyX Team.
* Copyright (C) 1996-1999 The LyX Team.
*
* ======================================================*/
@ -13,7 +13,6 @@
#include <config.h>
#ifdef __GNUG__
#pragma implementation "insetloa.h"
#pragma implementation "insetlof.h"
@ -26,4 +25,6 @@
#include "insetlot.h"
void InsetLOA::Validate(LaTeXFeatures & features) const
{ features.algorithm = true; }
{
features.algorithm = true;
}

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1996-1998 LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1996-1999 the LyX Team.
*
*======================================================*/
#ifndef _INSET_LOA_H
#define _INSET_LOA_H
#ifndef INSET_LOA_H
#define INSET_LOA_H
#ifdef __GNUG__
#pragma interface

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1996-1998 LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1996-1999 the LyX Team.
*
*======================================================*/
#ifndef _INSET_LOF_H
#define _INSET_LOF_H
#ifndef INSET_LOF_H
#define INSET_LOF_H
#ifdef __GNUG__
#pragma interface
@ -47,5 +47,4 @@ private:
///
Buffer * owner;
};
#endif

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1996-1998 LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1996-1999 LyX Team
*
*======================================================*/
#ifndef _INSET_LOT_H
#define _INSET_LOT_H
#ifndef INSET_LOT_H
#define INSET_LOT_H
#ifdef __GNUG__
#pragma interface

View File

@ -3,7 +3,7 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1997-1998 LyX Team
* Copyright (C) 1997-1999 LyX Team
*
* ======================================================*/

View File

@ -4,12 +4,12 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1997-1998 LyX Team
* Copyright (C) 1997-1999 LyX Team
*
* ======================================================*/
#ifndef _INSET_PARENT_H
#define _INSET_PARENT_H
#ifndef INSET_PARENT_H
#define INSET_PARENT_H
#ifdef __GNUG__
#pragma interface
@ -51,5 +51,4 @@ public:
///
void setParent(string fn) { setContents(fn); }
};
#endif

View File

@ -88,9 +88,10 @@ InsetQuotes::InsetQuotes(char c, BufferParams const & params)
}
void InsetQuotes::ParseString(string str)
void InsetQuotes::ParseString(string const & s)
{
int i;
string str(s);
if (str.length() != 3) {
lyxerr << "ERROR (InsetQuotes::InsetQuotes):"
" bad string length." << endl;
@ -137,8 +138,7 @@ void InsetQuotes::ParseString(string str)
string InsetQuotes::DispString() const
{
string disp;
disp = quote_char[quote_index[side][language]];
disp += quote_char[quote_index[side][language]];
if (times == InsetQuotes::DoubleQ)
disp += disp;

View File

@ -113,9 +113,8 @@ private:
*/
InsetQuotes(quote_language l, quote_side s, quote_times t);
///
void ParseString(string str);
void ParseString(string const &);
///
string DispString() const;
};
#endif

View File

@ -1,6 +1,6 @@
#include <config.h>
#include <stdlib.h>
#include <cstdlib>
#ifdef __GNUG__
#pragma implementation
@ -18,117 +18,6 @@
extern BufferView * current_view;
// Temporarily disabled the GUI code. Reasons:
// - Only page-ref button works currently, IMO we should use a LyX action
// instead, to toggle the kind of refs.
// - To change the label, IMO it's faster to delete the old one and insert
// a new one.
// - To goto to the label, IMO it's much faster to just click on the
// inset. That's how I've implemented it now, I hope you'll like it.
// - The more GUI code we can remove, the less work we'll have at
// the toolkit switch.
// (ale 970723)
#if 0
/* Header file generated with fdesign. */
/**** Callback routines ****/
static void ref_close_cb(FL_OBJECT *, long);
static void goto_label_cb(FL_OBJECT *, long);
static void label_change_cb(FL_OBJECT *, long);
/**** Forms and Objects ****/
typedef struct {
FL_FORM *ref;
void *vdata;
long ldata;
FL_OBJECT *pg_grp;
FL_OBJECT *flag1;
FL_OBJECT *flag2;
} FD_ref;
/* Form definition file generated with fdesign. */
static
FD_ref *create_form_ref(void)
{
FL_OBJECT *obj;
FD_ref *fdui = (FD_ref *) fl_calloc(1, sizeof(*fdui));
fdui->ref = fl_bgn_form(FL_NO_BOX, 210, 170);
obj = fl_add_box(FL_UP_BOX,0,0,210,170,"");
obj = fl_add_frame(FL_ENGRAVED_FRAME,10,20,130,60,"");
obj = fl_add_button(FL_RETURN_BUTTON,120,130,80,30,_("Close"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fl_set_object_callback(obj,ref_close_cb,0);
obj = fl_add_text(FL_NORMAL_TEXT,20,10,110,20,_("Reference Type"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
obj = fl_add_button(FL_NORMAL_BUTTON,10,130,100,30,_("Goto Label"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fl_set_object_callback(obj,goto_label_cb,0);
obj = fl_add_button(FL_NORMAL_BUTTON,10,90,100,30,_("Change Label"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fl_set_object_callback(obj,label_change_cb,0);
fdui->pg_grp = fl_bgn_group();
fdui->flag1 = obj = fl_add_checkbutton(FL_RADIO_BUTTON,20,30,20,20,_("Page Number"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fdui->flag2 = obj = fl_add_checkbutton(FL_RADIO_BUTTON,20,50,20,20,_("Reference"));
fl_set_object_lsize(obj,FL_NORMAL_SIZE);
fl_end_group();
fl_end_form();
fdui->ref->fdui = fdui;
return fdui;
}
/*---------------------------------------*/
static FD_ref *form = 0;
static
void ref_close_cb(FL_OBJECT *, long)
{
InsetRef *inset = (InsetRef*)form->vdata;
if (fl_get_button(form->flag1)) {
inset->setFlag(InsetRef::PAGE_REF);
inset->setCmdName("pageref");
} else {
inset->setFlag(InsetRef::REF);
inset->setCmdName("ref");
}
fl_hide_form(form->ref);
}
static
void goto_label_cb(FL_OBJECT *, long)
{
// code yet to be written
InsetRef *inset = (InsetRef*)form->vdata;
inset->gotoLabel();
#warning MAKEME!
}
static
void label_change_cb(FL_OBJECT *, long)
{
// code yet to be written
InsetRef *inset = (InsetRef*)form->vdata;
#warning MAKEME!
}
#endif
InsetRef::InsetRef(string const & cmd, Buffer * bf)
: master(bf)
@ -161,26 +50,8 @@ InsetRef::~InsetRef()
void InsetRef::Edit(int, int)
{
current_view->getOwner()->getLyXFunc()->Dispatch(LFUN_REFGOTO
, getContents().c_str());
// gotoLabel();
/*
if (!form) {
form = create_form_ref();
fl_set_form_atclose(form->ref, IgnoreCloseBoxCB, 0);
}
form->vdata = this;
fl_set_button(form->flag1, (flag == InsetRef::REF) ? 1 : 0);
fl_set_button(form->flag2, (flag == InsetRef::PAGE_REF) ? 1 : 0);
if (form->ref->visible) {
fl_raise_form(form->ref);
} else {
fl_show_form(form->ref,FL_PLACE_MOUSE, FL_FULLBORDER,
_("Cross-Reference"));
}
*/
current_view->getOwner()->getLyXFunc()
->Dispatch(LFUN_REFGOTO, getContents().c_str());
}
@ -192,7 +63,8 @@ string InsetRef::getScreenLabel() const
else
temp += _("Ref: ");
temp += getContents();
if(!current_view->currentBuffer()->isLatex() && !getOptions().empty()) {
if(!current_view->currentBuffer()->isLatex()
&& !getOptions().empty()) {
temp += "||";
temp += getOptions();
}
@ -228,7 +100,8 @@ int InsetRef::Latex(string &file, signed char /*fragile*/)
int InsetRef::Linuxdoc(string & file)
{
file += "<ref id=\"" + getContents() + "\" name=\""+ getOptions() +"\" >" ;
file += "<ref id=\"" + getContents()
+ "\" name=\""+ getOptions() +"\" >" ;
return 0;
}
@ -236,7 +109,8 @@ int InsetRef::Linuxdoc(string &file)
int InsetRef::DocBook(string & file)
{
file += "<link linkend=\"" + getContents() + "\">"+ getOptions() +"</link>" ;
file += "<link linkend=\"" + getContents()
+ "\">"+ getOptions() +"</link>" ;
return 0;
}
@ -255,7 +129,7 @@ string InsetRef::escape(string const & lab) const {
enc += hexdigit[c>>4];
enc += hexdigit[c & 15];
} else {
enc += (char) c;
enc += c;
}
}
return enc;

View File

@ -8,8 +8,8 @@
*
*======================================================*/
#ifndef _INSET_REF_H
#define _INSET_REF_H
#ifndef INSET_REF_H
#define INSET_REF_H
#ifdef __GNUG__
#pragma interface
@ -85,5 +85,4 @@ void InsetRef::gotoLabel()
master->gotoLabel(getContents());
}
}
#endif

View File

@ -8,8 +8,8 @@
*
* ======================================================*/
#ifndef _INSET_SPECIALCHAR_H
#define _INSET_SPECIALCHAR_H
#ifndef INSET_SPECIALCHAR_H
#define INSET_SPECIALCHAR_H
#ifdef __GNUG__
#pragma interface

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Word Processor
*
* Copyright (C) 1995 Matthias Ettrich
* 1996-1998 The LyX Team.
* Copyright 1995 Matthias Ettrich
* Copyright 1996-1999 The LyX Team.
*
*======================================================*/
#ifndef _INSET_TOC_H
#define _INSET_TOC_H
#ifndef INSET_TOC_H
#define INSET_TOC_H
#ifdef __GNUG__
#pragma interface

View File

@ -1,6 +1,6 @@
#include <config.h>
#include <stdlib.h>
#include <cstdlib>
#ifdef __GNUG__
#pragma implementation
@ -67,7 +67,7 @@ InsetUrl::~InsetUrl()
void InsetUrl::CloseUrlCB(FL_OBJECT * ob, long)
{
InsetUrl *inset = (InsetUrl*) ob->u_vdata;
InsetUrl * inset = static_cast<InsetUrl*>(ob->u_vdata);
string url = fl_get_input(inset->fd_form_url->url_name);
string name = fl_get_input(inset->fd_form_url->name_name);
string cmdname;
@ -95,15 +95,18 @@ void InsetUrl::CloseUrlCB(FL_OBJECT *ob, long)
if (inset->fd_form_url) {
fl_hide_form(inset->fd_form_url->form_url);
fl_free_form(inset->fd_form_url->form_url);
inset->fd_form_url = 0;
}
}
extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT *ob, long)
extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT * ob, long data)
{
InsetUrl::CloseUrlCB(ob,0);
InsetUrl::CloseUrlCB(ob, data);
}
void InsetUrl::Edit(int, int)
{
static int ow = -1, oh;

View File

@ -8,8 +8,8 @@
*
* ======================================================*/
#ifndef _INSET_URL_H
#define _INSET_URL_H
#ifndef INSET_URL_H
#define INSET_URL_H
#ifdef __GNUG__
#pragma interface
@ -34,7 +34,9 @@ public:
};
///
InsetUrl(): InsetCommand("url"), fd_form_url(0) { flag = InsetUrl::URL; }
InsetUrl(): InsetCommand("url"), fd_form_url(0) {
flag = InsetUrl::URL;
}
///
InsetUrl(string const &);
///
@ -62,7 +64,7 @@ public:
///
string getScreenLabel() const;
///
InsetUrl::Url_Flags getFlag() { return flag; }
InsetUrl::Url_Flags getFlag() const { return flag; }
///
void setFlag(InsetUrl::Url_Flags f) { flag = f; }
///

View File

@ -4,11 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 the LyX Team.
*
* ======================================================*/
#ifndef _LYXINSET_H
#define _LYXINSET_H
#ifndef LYXINSET_H
#define LYXINSET_H
#ifdef __GNUG__
#pragma interface
@ -77,7 +79,7 @@ public:
};
///
virtual ~Inset(){};
virtual ~Inset() {}
///
virtual int Ascent(LyXFont const & font) const = 0;
///
@ -87,7 +89,8 @@ public:
///
virtual LyXFont ConvertFont(LyXFont font);
///
virtual void Draw(LyXFont font, LyXScreen &scr, int baseline, float &x)=0;
virtual void Draw(LyXFont font, LyXScreen & scr,
int baseline, float & x) = 0;
///
//virtual void setBuffer(Buffer const&) {;}
/// what appears in the minibuffer when opening
@ -178,7 +181,7 @@ public:
class UpdatableInset: public Inset {
public:
///
virtual ~UpdatableInset() { };
virtual ~UpdatableInset() {}
///
virtual unsigned char Editable() const;
@ -206,6 +209,4 @@ protected:
///
bool cursor_visible;
};
#endif

View File

@ -173,7 +173,7 @@ int kb_sequence::parse(char const*s)
if(!s[0]) return 1;
while(s[i]) {
if(s[i] && ((unsigned char) s[i]) <= ' ') i++;
if(s[i] && (s[i]) <= ' ') i++;
if(!s[i]) break;
if(s[i+1]=='-') { // is implicit that s[i]==true
@ -212,7 +212,7 @@ int kb_sequence::parse(char const*s)
}
} else {
int j = 0;
for(j = i; s[j] && ((unsigned char)s[j])>' '; j++)
for(j = i; s[j] && (s[j])>' '; j++)
tbuf[j-i] = s[j]; // (!!!check bounds :-)
tbuf[j-i] = '\0';

View File

@ -15,34 +15,27 @@
#pragma implementation
#endif
#include "lyxlex.h"
#include <fstream>
#include <algorithm>
#include "support/FileInfo.h"
#include "lastfiles.h"
#include "support/filetools.h"
#include "debug.h"
LastFiles::LastFiles(string const & filename, bool st, char num)
LastFiles::LastFiles(string const & filename, bool st, unsigned int num)
: dostat(st)
{
setNumberOfFiles(num);
files = new string[num_files];
readFile(filename);
}
LastFiles::~LastFiles()
void LastFiles::setNumberOfFiles(unsigned int no)
{
delete[] files;
}
void LastFiles::setNumberOfFiles(char no)
{
if (1 <= no && no <= ABSOLUTEMAXLASTFILES)
if (0 < no && no <= ABSOLUTEMAXLASTFILES)
num_files = no;
else {
lyxerr << "LyX: lastfiles: too many files\n"
"\tdefault (=" << int(DEFAULTFILES) // int() only because of anon enum
"\tdefault (=" << int(DEFAULTFILES)
<< ") used." << endl;
num_files = DEFAULTFILES;
}
@ -52,48 +45,30 @@ void LastFiles::setNumberOfFiles(char no)
void LastFiles::readFile(string const & filename)
{
// we will not complain if we can't find filename nor will
// we issue a warning. Lgb.
LyXLex lex(0, 0); /* LyXLex should be changed
* to allow constructor with
* no parameters. */
bool error = false;
lex.setFile(filename);
if (!lex.IsOK()) return;
// we issue a warning. (Lgb)
ifstream ifs(filename.c_str());
string tmp;
FileInfo fileInfo;
int i = 0;
while (lex.IsOK() && !error && i < num_files) {
switch(lex.lex()) {
case LyXLex::LEX_FEOF:
error = true;
break;
default:
tmp = lex.GetString();
// Check if the file exist
while(getline(ifs, tmp) && files.size() < num_files) {
if (dostat) {
if (!(fileInfo.newFile(tmp).exist() &&
fileInfo.isRegular()))
break; // the file does not exist
}
files[i] = tmp;
i++;
break;
continue;
}
files.push_back(tmp);
}
}
void LastFiles::writeFile(string const & filename) const
{
FilePtr fd(filename, FilePtr::write);
if (fd()) {
for (int i = 0; i < num_files; i++) {
if (!files[i].empty())
fprintf(fd, "\"%s\"\n", files[i].c_str());
ofstream ofs(filename.c_str());
if (ofs) {
for (Files::const_iterator cit = files.begin();
cit != files.end();
++cit) {
ofs << (*cit) << '\n';
}
} else
lyxerr << "LyX: Warning: unable to save LastFiles: "
@ -103,12 +78,19 @@ void LastFiles::writeFile(string const & filename) const
void LastFiles::newFile(string const & file)
{
int n;
// Find this file in list. If not in list, point to last entry
for(n = 0; n < (num_files - 1); n++)
if(files[n] == file) break;
for(int i = n; i >= 1; i--)
files[i] = files[i - 1];
files[0] = file;
// If file already exist, delete it and reinsert at front.
Files::iterator it = find(files.begin(), files.end(), file);
if (it != files.end())
files.erase(it);
files.push_front(file);
if (files.size() > num_files)
files.pop_back();
}
string LastFiles::operator[](unsigned int i) const
{
if (i < files.size())
return files[i];
return string();
}

View File

@ -4,18 +4,19 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 1996 Matthias Ettrich
* and the LyX Team.
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team.
*
* ====================================================== */
#ifndef _LASTFILES_H
#define _LASTFILES_H
#ifndef LASTFILES_H
#define LASTFILES_H
#ifdef __GNUG__
#pragma interface
#endif
#include <deque>
#include "LString.h"
@ -27,57 +28,61 @@
class LastFiles
{
public:
///
typedef deque<string> Files;
/**@name Constructors and Deconstructors */
//@{
/**
Parameters are: name of file to read. Whether you want LastFiles
to check for file existance, and the number of files to remember.
Parameters are: name of file to read. Whether LastFiles should
check for file existance, and the number of files to remember.
*/
LastFiles(string const &, bool dostat = true, char num = 4);
///
~LastFiles();
LastFiles(string const &, bool dostat = true, unsigned int num = 4);
//@}
/**@name Methods */
//@{
/**
This funtion inserts #file# into the last files list. If the file
already exist it is moved to the top of the list. If it don't
exist it is placed on the top of the list. If the list already is
full the last visited file in the list is puched out and deleted.
already exist it is moved to the top of the list, else exist it
is placed on the top of the list. If the list is full the last
file in the list is popped from the end.
*/
void newFile(string const &);
/** Writes the lastfiles table to disk. A " is placed around the
filenames to preserve special chars. (not all are preserved
anyway, but at least space is.)
/** Writes the lastfiles table to disk. One file on each line, this
way we can at least have some special chars (e.g. space), but
newline in filenames are thus not allowed.
*/
void writeFile(string const &) const;
///
string operator[](unsigned int) const;
///
Files::const_iterator begin() const { return files.begin(); }
///
Files::const_iterator end() const { return files.end(); }
//@}
private:
/**@name const variables */
//@{
///
enum {
///
DEFAULTFILES = 4
};
/** There is no point in keeping more than this number of files
at the same time. However perhaps someday someone finds use for
more files and wants to change it. Please do. But don't show
the files in a menu...
DEFAULTFILES = 4,
/** There is no point in keeping more than this number
of files at the same time. However perhaps someday
someone finds use for more files and wants to
change it. Please do. But don't show the files in
a menu...
*/
enum {
///
ABSOLUTEMAXLASTFILES = 20
};
//@}
/**@name Variables */
//@{
/// an array of lastfiles
string *files;
/// a list of lastfiles
Files files;
/// number of files in the lastfiles list.
char num_files;
unsigned int num_files;
/// check for file existance or not.
bool dostat;
//@}
@ -91,37 +96,7 @@ private:
*/
void readFile(string const &);
/// used by the constructor to set the number of stored last files.
void setNumberOfFiles(char num);
//@}
/**@name Friends */
//@{
///
friend class LastFiles_Iter;
void setNumberOfFiles(unsigned int num);
//@}
};
/// An Iterator class for LastFiles
class LastFiles_Iter {
public:
///
LastFiles_Iter(const LastFiles& la)
{cs = &la; index = 0;}
///
string operator() ()
{
return (index < cs->num_files)? cs->files[index++]
: string();
}
///
string operator[] (int a)
{ return cs->files[a];}
private:
///
const LastFiles *cs;
///
char index;
};
#endif

File diff suppressed because it is too large Load Diff

View File

@ -4,24 +4,27 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team.
*
* ====================================================== */
#ifndef _LAYOUT_H
#define _LAYOUT_H
#ifndef LAYOUT_H
#define LAYOUT_H
#ifdef __GNUG__
#pragma interface
#endif
#include <vector>
#include "definitions.h"
#include "lyxlex.h"
#include "lyxfont.h"
#include "Spacing.h"
/// Reads the style files
void LyXSetStyle();
extern void LyXSetStyle();
/// The different output types
enum OutputType {
@ -50,7 +53,9 @@ enum LYX_MARGIN_TYPE {
};
///
enum LYX_ALIGNMENT {
enum LyXAlignment {
///
LYX_ALIGN_NONE = 0,
///
LYX_ALIGN_BLOCK = 1,
///
@ -64,6 +69,9 @@ enum LYX_ALIGNMENT {
///
LYX_ALIGN_SPECIAL = 32
};
inline void operator|=(LyXAlignment & la1, LyXAlignment la2) {
la1 = static_cast<LyXAlignment>(la1 | la2);
}
/// The different LaTeX-Types
enum LYX_LATEX_TYPES {
@ -127,7 +135,8 @@ enum LYX_LABEL_TYPES {
* MARGIN_DYNAMIC and MARGIN_STATIC are *not* for LABEL_MANUAL.
* This seems a funny restriction, but I think other combinations are
* not needed, so I will not change it yet.
* Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC */
* Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC
*/
/* There is a parindent and a parskip. Which one is used depends on the
@ -137,11 +146,13 @@ enum LYX_LABEL_TYPES {
* you should set parskip to zero and use topsep, parsep and bottomsep.
*
* The standard layout is an exception: its parindent is only set, if the
* previous paragraph is standard too. Well, this is LateX and it is good! */
* previous paragraph is standard too. Well, this is LateX and it is good!
*/
/// Attributes of a layout/paragraph environment
class LyXLayoutList;
class LyXTextClass;
///
class LyXLayout {
public:
@ -149,45 +160,41 @@ public:
LyXLayout ();
///
~LyXLayout ();
bool Read (LyXLex &, LyXTextClass const &);
///
void Copy (LyXLayout const &l);
///
bool Read (LyXLex&, LyXLayoutList *);
/// Name of the layout/paragraph environment
string name;
/// Name of an layout that has replaced this layout.
/** This is used to rename a layout, while keeping backward
compatibility
*/
string obsoleted_by;
/// Default font for this layout/environment
/** The main font for this kind of environment. If an attribute has
string const & name() const { return name_; }
void name(string const & n) { name_ = n; }
string const & obsoleted_by() const { return obsoleted_by_; }
string const & latexname() const { return latexname_; }
string const & labelstring() const { return labelstring_; }
string const & preamble() const { return preamble_; }
string const & latexparam() const { return latexparam_; }
string const & labelstring_appendix() const { return labelstring_appendix_; }
/** Default font for this layout/environment.
The main font for this kind of environment. If an attribute has
LyXFont::INHERITED_*, it means that the value is specified by
the defaultfont for the entire layout. If we are nested, the font
is inherited from the font in the environment one level up until the
font is resolved. The values LyXFont::IGNORE_* and LyXFont::TOGGLE
are illegal here.
the defaultfont for the entire layout. If we are nested, the
font is inherited from the font in the environment one level
up until the font is resolved. The values LyXFont::IGNORE_*
and LyXFont::TOGGLE are illegal here.
*/
LyXFont font;
/// Default font for labels
/** Interpretation the same as for font above */
/** Default font for labels.
Interpretation the same as for font above
*/
LyXFont labelfont;
/// Resolved version of the font for this layout/environment
/** This is a resolved version the default font. The font is resolved
against the defaultfont of the entire layout. */
/** Resolved version of the font for this layout/environment.
This is a resolved version the default font. The font is resolved
against the defaultfont of the entire layout.
*/
LyXFont resfont;
/// Resolved version of the font used for labels
/** This is a resolved version the label font. The font is resolved
against the defaultfont of the entire layout. */
/** Resolved version of the font used for labels.
This is a resolved version the label font. The font is resolved
against the defaultfont of the entire layout.
*/
LyXFont reslabelfont;
/// Text that dictates how wide the left margin is on the screen
@ -202,24 +209,11 @@ public:
/// Text that dictates how much space to leave before a potential label
string labelindent;
/// Text that dictates the width of the indentation of indented paragraphs
/** Text that dictates the width of the indentation of
indented paragraphs.
*/
string parindent;
/// Label string. "Abstract", "Reference", "Caption"...
string labelstring;
/// Label string inside appendix. "Appendix", ...
string labelstring_appendix;
/// LaTeX name for environment
string latexname;
/// LaTeX parameter for environment
string latexparam; //arrae970411
/// Macro definitions needed for this layout
string preamble;
///
float parskip;
@ -242,10 +236,10 @@ public:
Spacing spacing;
///
char align; // add approp. signedness
LyXAlignment align; // add approp. signedness
///
char alignpossible; // add approp. signedness
LyXAlignment alignpossible; // add approp. signedness
///
char labeltype; // add approp. signedness
@ -290,192 +284,238 @@ public:
LYX_LATEX_TYPES latextype;
/// Does this object belong in the title part of the document?
bool intitle;
};
///
class LyXLayoutList {
public:
///
LyXLayoutList();
///
~LyXLayoutList();
///
void Add (LyXLayout *l);
///
bool Delete (string const &name);
///
LyXLayout *GetLayout (string const &name);
///
LyXLayout *ToAr();
///
int GetNum();
///
void Clean();
private:
///
struct LyXLayoutL {
///
LyXLayout* layout;
///
LyXLayoutL *next;
};
///
LyXLayoutL * l;
///
LyXLayoutL *eol;
///
int num_layouts;
/// Name of the layout/paragraph environment
string name_;
/** Name of an layout that has replaced this layout.
This is used to rename a layout, while keeping backward
compatibility
*/
string obsoleted_by_;
/// LaTeX name for environment
string latexname_;
/// Label string. "Abstract", "Reference", "Caption"...
string labelstring_;
/// Label string inside appendix. "Appendix", ...
string labelstring_appendix_;
/// LaTeX parameter for environment
string latexparam_;
/// Macro definitions needed for this layout
string preamble_;
};
///
class LyXTextClass {
public:
///
typedef vector<LyXLayout> LayoutList;
///
LyXTextClass (string const & = string(),
string const & = string(),
string const & = string());
///
~LyXTextClass();
LayoutList::const_iterator begin() const { return layoutlist.begin(); }
///
LayoutList::const_iterator end() const { return layoutlist.end(); }
/// Not a real copy, just reference!
void Copy (LyXTextClass const &l);
///
bool Read(string const & filename, bool merge = false);
/// Reads a textclass structure from file
int Read (string const & filename, LyXLayoutList *list = 0);
///
bool hasLayout(string const & name) const;
///
LyXLayout const & GetLayout(string const & vname) const;
///
LyXLayout & GetLayout(string const & vname);
/// Sees to that the textclass structure has been loaded
void load();
///
string name;
string const & name() const { return name_; }
///
string latexname;
string const & latexname() const { return latexname_; }
///
string description;
string const & description() const { return description_; }
///
OutputType output_type;
/// Specific class options
string opt_fontsize;
string const & opt_fontsize() const { return opt_fontsize_; }
///
string opt_pagestyle;
string const & opt_pagestyle() const { return opt_pagestyle_; }
///
string options;
string const & options() const { return options_; }
///
string const & pagestyle() const { return pagestyle_; }
///
string const & preamble() const { return preamble_; }
/// Packages that are already loaded by the class
bool provides_amsmath;
///
bool provides_makeidx;
///
bool provides_url;
enum Provides {
nothing = 0,
amsmath = 1,
makeidx = 2,
url = 4
};
bool provides(Provides p) const { return provides_ & p; }
/// Base font. This one has to be fully instantiated.
/** Base font. The paragraph and layout fonts are resolved against
this font. Attributes LyXFont::INHERIT, LyXFont::IGNORE, and
LyXFont::TOGGLE are extremely illegal.
*/
LyXFont defaultfont;
/// Array of styles in this textclass
LyXLayout* style;
///
unsigned char number_of_defined_layouts;
unsigned int columns() const { return columns_; }
///
unsigned char columns;
enum PageSides {
OneSide,
TwoSides
};
///
unsigned char sides;
PageSides sides() const { return sides_; }
///
signed char secnumdepth;
int secnumdepth() const { return secnumdepth_; }
///
signed char tocdepth;
int tocdepth() const { return tocdepth_; }
///
string pagestyle;
///
string preamble;
OutputType outputType() const { return outputType_; }
///
LyXFont const & defaultfont() const { return defaultfont_; }
/// Text that dictates how wide the left margin is on the screen
string leftmargin;
///
string const & leftmargin() const { return leftmargin_; }
/// Text that dictates how wide the right margin is on the screen
string rightmargin;
string const & rightmargin() const { return rightmargin_; }
///
char maxcounter; // add approp. signedness
int maxcounter() const { return maxcounter_; }
///
LayoutList::size_type numLayouts() const { return layoutlist.size(); }
///
LyXLayout const & operator[](LayoutList::size_type i) const {
return layoutlist[i];
}
private:
///
bool delete_layout(string const &);
///
bool do_readStyle(LyXLex &, LyXLayout &);
///
string name_;
///
string latexname_;
///
string description_;
/// Specific class options
string opt_fontsize_;
///
string opt_pagestyle_;
///
string options_;
///
string pagestyle_;
///
string preamble_;
///
Provides provides_;
///
unsigned int columns_;
///
PageSides sides_;
///
int secnumdepth_;
///
int tocdepth_;
///
OutputType outputType_;
/** Base font. The paragraph and layout fonts are resolved against
this font. This has to be fully instantiated. Attributes
LyXFont::INHERIT, LyXFont::IGNORE, and LyXFont::TOGGLE are
extremely illegal.
*/
LyXFont defaultfont_;
/// Text that dictates how wide the left margin is on the screen
string leftmargin_;
/// Text that dictates how wide the right margin is on the screen
string rightmargin_;
///
int maxcounter_; // add approp. signedness
///
LayoutList layoutlist;
/// Has this layout file been loaded yet?
bool loaded;
};
///
inline void operator|=(LyXTextClass::Provides & p1, LyXTextClass::Provides p2)
{
p1 = static_cast<LyXTextClass::Provides>(p1 | p2);
}
///
class LyXTextClassList {
public:
///
LyXTextClassList();
///
~LyXTextClassList();
typedef vector<LyXTextClass> ClassList;
/// Gets layout structure from layout number and textclass number
LyXLayout *Style(char textclass, char layout);
LyXLayout const & Style(ClassList::size_type textclass,
LyXTextClass::LayoutList::size_type layout) const;
/// Gets layout number from textclass number and layout name
char NumberOfLayout(char textclass, string const & name); // add approp. signedness
pair<bool, LyXTextClass::LayoutList::size_type>
NumberOfLayout(ClassList::size_type textclass,
string const & name) const;
/// Gets a layout name from layout number and textclass number
string NameOfLayout(char textclass, char layout); // add approp. signedness
string const &
NameOfLayout(ClassList::size_type textclass,
LyXTextClass::LayoutList::size_type layout) const;
/// Gets textclass number from name
/** Returns -1 if textclass name does not exist */
signed char NumberOfClass(string const & textclass);
/** Gets textclass number from name.
Returns -1 if textclass name does not exist
*/
pair<bool, ClassList::size_type>
NumberOfClass(string const & textclass) const;
///
string NameOfClass(char number); // add approp. signedness
string const & NameOfClass(ClassList::size_type number) const;
///
string LatexnameOfClass(char number); // add approp. signedness
string const & LatexnameOfClass(ClassList::size_type number) const;
///
string DescOfClass(char number); // add approp. signedness
string const & DescOfClass(ClassList::size_type number) const;
///
LyXTextClass * TextClass(char textclass); // add approp. signedness
LyXTextClass const & TextClass(ClassList::size_type textclass) const;
/// Read textclass list
/** Returns false if this fails */
/** Read textclass list.
Returns false if this fails
*/
bool Read();
/// Load textclass
/** Returns false if this fails */
bool Load(const char number);
/** Load textclass.
Returns false if this fails
*/
bool Load(ClassList::size_type number) const;
private:
///
struct LyXTextClassL {
mutable ClassList classlist;
///
LyXTextClass * textclass;
///
LyXTextClassL * next;
};
///
LyXTextClassL * l;
///
int num_textclass;
/// After reading, this arrays holds the textclasses
LyXTextClass * ar;
/// Add a textclass to list
void Add (LyXTextClass *l);
/// Convert final linked list to array
/** We read the textclasses into a linked list. After the reading,
the list is converted to an array, and the linked list is nuked. */
void ToAr();
void Add (LyXTextClass const &);
};
/// Should not be declared here!! (Lgb) Why not? (Asger)
extern LyXTextClassList lyxstyle;
extern LyXTextClassList textclasslist;
#endif

View File

@ -58,6 +58,7 @@
#include "lyxrc.h"
#include "lyxtext.h"
#include "gettext.h"
#include "layout.h"
extern MiniBuffer *minibuffer;
extern Combox *combo_language;
@ -425,30 +426,11 @@ void MenuWriteAs(Buffer *buffer)
MenuWrite(buffer);
}
#if 0
extern bool gsworking();
#endif
int MenuRunLaTeX(Buffer *buffer)
{
int ret = 0;
#if 0
if (gsworking()) {
WriteAlert(_("Sorry, can't do this while pictures are being rendered."),
_("Please wait a few seconds for this to finish and try again."),
_("(or kill runaway gs processes by hand and try again.)"));
return 1;
}
extern pid_t isp_pid; // from spellchecker.C
if(isp_pid != -1)
{
WriteAlert(_("Can't do this while the spellchecker is running."),
_("Stop the spellchecker first."));
return 1;
}
#endif
if (buffer->isLinuxDoc())
ret = RunLinuxDoc(1, buffer->getFileName());
else if (buffer->isLiterate())
@ -1130,8 +1112,12 @@ void InsertAsciiFile(string const & f, bool asParagraph)
tmppar->readSimpleWholeFile(myfile);
// set the end of the string
#ifdef NEW_TEXT
// I don't think this is needed. Actually it might be plain wrong.
tmppar->InsertChar(tmppar->text.size() - 1,'\0');
#else
tmppar->InsertChar(tmppar->last-1,'\0');
#endif
// insert the string
current_view->getScreen()->HideCursor();
@ -1340,15 +1326,15 @@ int RunDocBook(int flag, string const & filename)
return 0;
current_view->currentBuffer()->makeDocBookFile(name,0);
#if 0
string add_flags;
LYX_PAPER_SIZE ps = (LYX_PAPER_SIZE) current_view->currentBuffer()->params.papersize;
switch (ps) {
case PAPER_A4PAPER: add_flags = "-p a4"; break;
case PAPER_USLETTER: add_flags = "-p letter"; break;
default: /* nothing to be done yet ;-) */ break;
}
#endif
// Shall this code go or should it stay? (Lgb)
// string add_flags;
// LYX_PAPER_SIZE ps = (LYX_PAPER_SIZE) current_view->currentBuffer()->params.papersize;
// switch (ps) {
// case PAPER_A4PAPER: add_flags = "-p a4"; break;
// case PAPER_USLETTER: add_flags = "-p letter"; break;
// default: /* nothing to be done yet ;-) */ break;
// }
ProhibitInput();
Systemcalls one;
@ -1568,8 +1554,8 @@ bool UpdateLayoutParagraph()
int align = buf->text->cursor.par->GetAlign();
if (align == LYX_ALIGN_LAYOUT)
align = lyxstyle.Style(buf->params.textclass,
buf->text->cursor.par->GetLayout())->align;
align = textclasslist.Style(buf->params.textclass,
buf->text->cursor.par->GetLayout()).align;
switch (align) {
case LYX_ALIGN_RIGHT:
@ -1786,10 +1772,10 @@ bool UpdateLayoutDocument(BufferParams *params)
if (params == 0)
params = &current_view->currentBuffer()->params;
LyXTextClass *tclass = lyxstyle.TextClass(params->textclass);
LyXTextClass const & tclass = textclasslist.TextClass(params->textclass);
fl_set_choice_text(fd_form_document->choice_class,
lyxstyle.DescOfClass(params->textclass).c_str());
textclasslist.DescOfClass(params->textclass).c_str());
combo_language->select_text(params->language.c_str());
fl_set_choice_text(fd_form_document->choice_fonts,
@ -1803,18 +1789,18 @@ bool UpdateLayoutDocument(BufferParams *params)
fl_clear_choice(fd_form_document->choice_fontsize);
fl_addto_choice(fd_form_document->choice_fontsize, "default");
fl_addto_choice(fd_form_document->choice_fontsize,
tclass->opt_fontsize.c_str());
tclass.opt_fontsize().c_str());
fl_set_choice(fd_form_document->choice_fontsize,
tokenPos(tclass->opt_fontsize, '|', params->fontsize) + 2);
tokenPos(tclass.opt_fontsize(), '|', params->fontsize) + 2);
// ale970405+lasgoutt970513
fl_clear_choice(fd_form_document->choice_pagestyle);
fl_addto_choice(fd_form_document->choice_pagestyle, "default");
fl_addto_choice(fd_form_document->choice_pagestyle,
tclass->opt_pagestyle.c_str());
tclass.opt_pagestyle().c_str());
fl_set_choice(fd_form_document->choice_pagestyle,
tokenPos(tclass->opt_pagestyle, '|', params->pagestyle) + 2);
tokenPos(tclass.opt_pagestyle(), '|', params->pagestyle) + 2);
fl_set_button(fd_form_document->radio_indent, 0);
fl_set_button(fd_form_document->radio_skip, 0);
@ -2301,8 +2287,8 @@ string CurrentState()
// font. (Asger)
Buffer * buffer = current_view->currentBuffer();
LyXFont font = buffer->text->real_current_font;
LyXFont defaultfont = lyxstyle.TextClass(buffer->
params.textclass)->defaultfont;
LyXFont defaultfont = textclasslist.TextClass(buffer->
params.textclass).defaultfont();
font.reduce(defaultfont);
state = _("Font: ") + font.stateText();
@ -2650,10 +2636,8 @@ extern "C" void ParagraphApplyCB(FL_OBJECT *, long)
if (!current_view->available())
return;
bool line_top, line_bottom;
bool pagebreak_top, pagebreak_bottom;
VSpace space_top, space_bottom;
char align;
LyXAlignment align;
string labelwidthstring;
bool noindent;
@ -2668,10 +2652,10 @@ extern "C" void ParagraphApplyCB(FL_OBJECT *, long)
fl_set_choice (fd_form_paragraph->choice_space_below, 1);
}
line_top = fl_get_button(fd_form_paragraph->check_lines_top);
line_bottom = fl_get_button(fd_form_paragraph->check_lines_bottom);
pagebreak_top = fl_get_button(fd_form_paragraph->check_pagebreaks_top);
pagebreak_bottom = fl_get_button(fd_form_paragraph->check_pagebreaks_bottom);
bool line_top = fl_get_button(fd_form_paragraph->check_lines_top);
bool line_bottom = fl_get_button(fd_form_paragraph->check_lines_bottom);
bool pagebreak_top = fl_get_button(fd_form_paragraph->check_pagebreaks_top);
bool pagebreak_bottom = fl_get_button(fd_form_paragraph->check_pagebreaks_bottom);
switch (fl_get_choice (fd_form_paragraph->choice_space_above)) {
case 1: space_top = VSpace(VSpace::NONE); break;
case 2: space_top = VSpace(VSpace::DEFSKIP); break;
@ -2786,7 +2770,7 @@ void UpdateDocumentButtons(BufferParams const &params)
extern "C" void ChoiceClassCB(FL_OBJECT *ob, long)
{
ProhibitInput();
if (lyxstyle.Load(fl_get_choice(ob)-1)) {
if (textclasslist.Load(fl_get_choice(ob)-1)) {
if (AskQuestion(_("Should I set some parameters to"),
fl_get_choice_text(ob),
_("the defaults of this document class?"))) {
@ -2894,10 +2878,10 @@ extern "C" void DocumentApplyCB(FL_OBJECT *, long)
if (!current_view->available())
return;
char new_class = fl_get_choice(fd_form_document->choice_class) - 1;
LyXTextClassList::ClassList::size_type new_class = fl_get_choice(fd_form_document->choice_class) - 1;
if (params->textclass != new_class) {
// try to load new_class
if (lyxstyle.Load(new_class)) {
if (textclasslist.Load(new_class)) {
// successfully loaded
redo = true;
minibuffer->Set(_("Converting document to new document class..."));
@ -2959,9 +2943,9 @@ extern "C" void DocumentApplyCB(FL_OBJECT *, long)
else
params->columns = 1;
if (fl_get_button(fd_form_document->radio_sides_two))
params->sides = 2;
params->sides = LyXTextClass::TwoSides;
else
params->sides = 1;
params->sides = LyXTextClass::OneSide;
Spacing tmpSpacing = params->spacing;
switch(fl_get_choice(fd_form_document->choice_spacing)) {
@ -2986,14 +2970,14 @@ extern "C" void DocumentApplyCB(FL_OBJECT *, long)
if (tmpSpacing != params->spacing)
redo = true;
signed char tmpchar = (signed char)
fl_get_counter_value(fd_form_document->slider_secnumdepth);;
signed char tmpchar =
static_cast<signed char>(fl_get_counter_value(fd_form_document->slider_secnumdepth));
if (params->secnumdepth != tmpchar)
redo = true;
params->secnumdepth = tmpchar;
params->tocdepth = (signed char)
fl_get_counter_value(fd_form_document->slider_tocdepth);;
params->tocdepth =
static_cast<int>(fl_get_counter_value(fd_form_document->slider_tocdepth));
params->float_placement =
fl_get_input(fd_form_document->input_float_placement);
@ -3746,7 +3730,6 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long)
LyXParagraph * par = current_view->currentBuffer()->paragraph;
char labeltype;
char * line = new char[200];
//int i = 0;
int pos = 0;
unsigned char c;
int topline = 0;
@ -3756,8 +3739,8 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long)
stapar = par;
while (par) {
labeltype = lyxstyle.Style(current_view->currentBuffer()->params.textclass,
par->GetLayout())->labeltype;
labeltype = textclasslist.Style(current_view->currentBuffer()->params.textclass,
par->GetLayout()).labeltype;
if (labeltype >= LABEL_COUNTER_CHAPTER
&& labeltype <= LABEL_COUNTER_CHAPTER +
@ -3767,13 +3750,12 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long)
for (pos=0;
pos < (labeltype -
lyxstyle.TextClass(current_view->currentBuffer()->
params.textclass)->maxcounter) * 4 + 2;
textclasslist.TextClass(current_view->currentBuffer()->
params.textclass).maxcounter()) * 4 + 2;
pos++)
line[pos] = ' ';
// Then the labestring
//i = 0;
if (!par->labelstring.empty()) {
string::size_type i = 0;
while (pos < 199 && i < par->labelstring.length()) {
@ -3787,10 +3769,15 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long)
pos++;
/* now the contents */
#ifdef NEW_TEXT
LyXParagraph::size_type i = 0;
while (pos < 199 && i < par->size()) {
#else
int i = 0;
while (pos < 199 && i < par->last) {
#endif
c = par->GetChar(i);
if (isprint((unsigned char) c) || c >= 128) {
if (isprint(c) || c >= 128) {
line[pos] = c;
pos++;
}

View File

@ -49,9 +49,6 @@ 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;
#if 0
extern FD_form_url * fd_form_url;
#endif
extern FD_form_paragraph_extra * fd_form_paragraph_extra;
extern FD_LaTeXLog * fd_latex_log;
extern FD_form_spell_check * fd_form_spell_check;
@ -129,11 +126,6 @@ void CloseAllBufferRelatedPopups()
if (fd_form_ref->form_ref->visible) {
fl_hide_form(fd_form_ref->form_ref);
}
#if 0
if (fd_form_url->form_url->visible) {
fl_hide_form(fd_form_url->form_url);
}
#endif
if (fd_form_paper->form_paper->visible) {
fl_hide_form(fd_form_paper->form_paper);
}

View File

@ -52,10 +52,6 @@ bool finished = false; // flag, that we are quitting the program
// convenient to have it here.
kb_keymap * toplevel_keymap;
// from spellchecker.C
#if 0
extern void sigchldhandler(int sig);
#endif
LyX::LyX(int * argc, char * argv[])
{
@ -146,14 +142,6 @@ void LyX::init(int */*argc*/, char **argv)
signal(SIGINT, error_handler);
signal(SIGTERM, error_handler);
#if 0
// Install the SIGCHLD handler
act_.sa_handler = sigchldhandler;
//act_.sa_mask = SIGCHLD;
act_.sa_flags = 0;
//act_.sa_flags = SA_RESTART; //perhaps
sigaction(SIGCHLD, &act_, 0);
#endif
//
// Determine path of binary
//
@ -481,7 +469,7 @@ void commandLineHelp()
bool LyX::easyParse(int * argc, char * argv[])
{
bool gui = true;
for(int i=1; i < *argc; i++) {
for(int i = 1; i < *argc; ++i) {
string arg = argv[i];
// Check for -dbg int
if (arg == "-dbg") {

View File

@ -7,10 +7,12 @@
* Copyright (C) 1995 Matthias Ettrich
*
*======================================================*/
#ifndef _LYXCURSOR_H
#define _LYXCURSOR_H
class LyXParagraph;
#ifndef LYXCURSOR_H
#define LYXCURSOR_H
#include "lyxparagraph.h"
struct Row;
/** All these variavles should be explained. Matthias?
@ -18,8 +20,13 @@ struct Row;
struct LyXCursor {
///
LyXParagraph * par;
#ifdef NEW_TEXT
///
LyXParagraph::size_type pos;
#else
///
int pos;
#endif
///
int x;
///

View File

@ -837,9 +837,9 @@ int LyXFont::ascent(char c) const
{
XFontStruct *finfo = getXFontstruct();
if (finfo->per_char
&& (unsigned int) c >= finfo->min_char_or_byte2
&& (unsigned int) c <= finfo->max_char_or_byte2) {
unsigned int index = (unsigned int) c - finfo->min_char_or_byte2;
&& c >= static_cast<char>(finfo->min_char_or_byte2)
&& c <= static_cast<char>(finfo->max_char_or_byte2)) {
unsigned int index = c - finfo->min_char_or_byte2;
return finfo->per_char[index].ascent;
} else
return finfo->ascent;
@ -850,9 +850,9 @@ int LyXFont::descent(char c) const
{
XFontStruct *finfo = getXFontstruct();
if (finfo->per_char
&& (unsigned int) c >= finfo->min_char_or_byte2
&& (unsigned int) c <= finfo->max_char_or_byte2) {
unsigned int index = (unsigned int) c - finfo->min_char_or_byte2;
&& c >= static_cast<char>(finfo->min_char_or_byte2)
&& c <= static_cast<char>(finfo->max_char_or_byte2)) {
unsigned int index = c - finfo->min_char_or_byte2;
return finfo->per_char[index].descent;
} else
return finfo->descent;
@ -884,8 +884,8 @@ int LyXFont::textWidth(char const *s, int n) const
smallfont.setShape(LyXFont::UP_SHAPE);
for (int i=0; i < n; i++){
c = s[i];
if (islower((unsigned char) c)){
c = toupper( (unsigned char) c );
if (islower(c)){
c = toupper(c);
result += XTextWidth(smallfont.getXFontstruct(), &c, 1);
} else {
result += XTextWidth(getXFontstruct(), &c, 1);
@ -935,8 +935,8 @@ int LyXFont::drawText(char const* s, int n, Pixmap pm,
smallfont.setShape(LyXFont::UP_SHAPE);
for (i=0; i < n; i++){
c = s[i];
if (islower((unsigned char) c)){
c = toupper((unsigned char) c);
if (islower(c)){
c = toupper(c);
XDrawString(fl_display,
pm,
smallfont.getGC(),

View File

@ -69,28 +69,32 @@ bool IsLetterCharOrDigit(char ch)
// spans 2 paragraphs, an empty string is returned.
string const GetCurrentSelectionAsString(LyXText * lt)
{
LyXParagraph *par;
int pos;
int endpos;
int i;
char sz[LYXSEARCH_MAXLEN];
char ch;
bool fPrevIsSpace;
sz[0] = 0;
par = lt->cursor.par;
LyXParagraph * par = lt->cursor.par;
if (lt->selection && (lt->sel_cursor.par == par)) {
// (selected) and (begin/end in same paragraph)
pos = lt->sel_start_cursor.pos;
endpos = lt->sel_end_cursor.pos;
i = 0;
fPrevIsSpace = false;
#ifdef NEW_TEXT
LyXParagraph::size_type pos =
lt->sel_start_cursor.pos;
LyXParagraph::size_type endpos =
lt->sel_end_cursor.pos;
#else
int pos =
lt->sel_start_cursor.pos;
int endpos =
lt->sel_end_cursor.pos;
#endif
int i = 0;
bool fPrevIsSpace = false;
char ch;
while ((i < LYXSEARCH_MAXLEN-2) &&
(pos < par->Last()) && (pos < endpos)) {
ch = par->GetChar(pos);
//HB??: Maybe (ch <= ' ')
if ((ch == ' ') || ((unsigned char)ch <= LYX_META_INSET)) {
if ((ch == ' ') || (ch <= LYX_META_INSET)) {
// consecutive spaces --> 1 space char
if (fPrevIsSpace) {
pos++; // Next text pos
@ -295,11 +299,12 @@ bool LyXFindReplace1::SearchCB(bool fForward)
// (was: LyXText::SearchForward(char const* string) in text2.C )
bool LyXFindReplace1::SearchForward(LyXText * lt)
{
LyXParagraph *par;
int pos;
par = lt->cursor.par;
pos = lt->cursor.pos;
LyXParagraph * par = lt->cursor.par;
#ifdef NEW_TEXT
LyXParagraph::size_type pos = lt->cursor.pos;
#else
int pos = lt->cursor.pos;
#endif
while (par && !IsSearchStringInText(par,pos)) {
if (pos<par->Last()-1)
@ -356,48 +361,46 @@ int LyXFindReplace1::CompareChars(char chSearch, char chText)
{
if (CaseSensitive())
return (chSearch - chText);
return (toupper((unsigned char) chSearch) - toupper((unsigned char) chText));
return (toupper(chSearch) - toupper(chText));
}
// returns true if the search string is at the specified position
// (Copied from the original "LyXText::IsStringInText" in text2.C )
bool LyXFindReplace1::IsSearchStringInText(LyXParagraph *par, int pos)
#ifdef NEW_TEXT
bool LyXFindReplace1::IsSearchStringInText(LyXParagraph * par,
LyXParagraph::size_type pos)
#else
bool LyXFindReplace1::IsSearchStringInText(LyXParagraph * par,
int pos)
#endif
{
char chSrch = 0;
char chText;
bool fPrevIsSpace;
int iText;
string::size_type iSrch;
if (!par)
return false;
fPrevIsSpace = false;
iText = 0; iSrch = 0;
bool fPrevIsSpace = false;
int iText = 0;
string::size_type iSrch = 0;
while (pos + iText < par->Last() &&
iSrch < SearchString().length()) {
chSrch = SearchString()[iSrch];
chText = par->GetChar(pos+iText);
// Why was this code there ??? Insets are *not* spaces!
// It seems that there is some code here to handle multiple spaces. I
// wonder why this is useful... (JMarc)
// if ((chText == ' ') ||
// ((unsigned char)chText <= LYX_META_INSET))
if (chText == ' ') {
if (fPrevIsSpace) {
iText++; // next Text pos
continue; // same search pos
}
// chText = ' ';
fPrevIsSpace = true;
} else
fPrevIsSpace = false;
if (CompareChars(chSrch, chText) != 0)
break;
iSrch++;
iText++;
++iSrch;
++iText;
}
if (iSrch < SearchString().length())

View File

@ -7,8 +7,9 @@
#endif
#include FORMS_H_LOCATION
#include "lyxparagraph.h"
class LyXText;
class LyXParagraph;
/**
LyXFindReplace1"
@ -53,8 +54,12 @@ protected:
\end{itemize}
*/
int CompareChars(char chSearch, char chText);
#ifdef NEW_TEXT
/// returns true if the specified string is at the specified position
bool IsSearchStringInText(LyXParagraph * par, LyXParagraph::size_type pos);
#else
/// returns true if the specified string is at the specified position
bool IsSearchStringInText(LyXParagraph * par, int pos);
#endif
};
#endif

View File

@ -50,6 +50,7 @@
#include "lyx_gui_misc.h"
#include "support/filetools.h"
#include "support/FileInfo.h"
#include "support/LAssert.h"
#include "lyxscreen.h"
#include "debug.h"
#include "lyxrc.h"
@ -61,6 +62,7 @@
#include "support/syscall.h"
#include "support/lstrings.h"
#include "support/path.h"
#include "layout.h"
extern bool cursor_follows_scrollbar;
@ -1074,7 +1076,7 @@ string LyXFunc::Dispatch(int ac,
// Pretend we got the name instead.
Dispatch(int(LFUN_LAYOUT),
lyxstyle.NameOfLayout(owner->currentBuffer()->
textclasslist.NameOfLayout(owner->currentBuffer()->
text->parameters->
textclass,
sel).c_str());
@ -1090,11 +1092,11 @@ string LyXFunc::Dispatch(int ac,
// and current buffer's textclass (number). */
int layoutno = -1;
layoutno =
lyxstyle.NumberOfLayout(owner->
textclasslist.NumberOfLayout(owner->
currentBuffer()->
text->parameters->
textclass,
argument);
argument).second;
// see if we found the layout number:
if (layoutno == -1) {
@ -1201,7 +1203,7 @@ string LyXFunc::Dispatch(int ac,
case LFUN_UPCASE_WORD:
owner->currentBuffer()->update(-2);
FreeUpdateTimer();
owner->currentBuffer()->text->ChangeWordCase(2);
owner->currentBuffer()->text->ChangeWordCase(LyXText::text_uppercase);
owner->currentBuffer()->update(1);
SetUpdateTimer();
break;
@ -1209,7 +1211,7 @@ string LyXFunc::Dispatch(int ac,
case LFUN_LOWCASE_WORD:
owner->currentBuffer()->update(-2);
FreeUpdateTimer();
owner->currentBuffer()->text->ChangeWordCase(0);
owner->currentBuffer()->text->ChangeWordCase(LyXText::text_lowercase);
owner->currentBuffer()->update(1);
SetUpdateTimer();
break;
@ -1217,7 +1219,7 @@ string LyXFunc::Dispatch(int ac,
case LFUN_CAPITALIZE_WORD:
owner->currentBuffer()->update(-2);
FreeUpdateTimer();
owner->currentBuffer()->text->ChangeWordCase(1);
owner->currentBuffer()->text->ChangeWordCase(LyXText::text_capitalization);
owner->currentBuffer()->update(1);
SetUpdateTimer();
break;
@ -1845,8 +1847,14 @@ string LyXFunc::Dispatch(int ac,
case LFUN_CHARATCURSOR:
{
#ifdef NEW_TEXT
LyXParagraph::size_type pos =
owner->currentBuffer()->text->cursor.pos;
if(pos < owner->currentBuffer()->text->cursor.par->size())
#else
int pos = owner->currentBuffer()->text->cursor.pos;
if(pos < owner->currentBuffer()->text->cursor.par->last)
#endif
dispatch_buffer = owner->currentBuffer()->text->
cursor.par->text[pos];
else
@ -2217,16 +2225,22 @@ string LyXFunc::Dispatch(int ac,
// grab a word
#ifdef NEW_TEXT
LyXParagraph::size_type lastpos =
owner->currentBuffer()->text->cursor.pos - 1;
// If this can't happen, let's make sure that it really don't
Assert(owner->currentBuffer()->text->cursor.pos - 1 >= 0);
#else
int lastpos =owner->currentBuffer()->text->cursor.pos - 1;
//this shouldn't happen, but let's be careful
if (lastpos < 0) lastpos=0;
#endif
// get the current word
// note that this must be done before
// inserting the inset, or the inset will break
// the word
string curstring(owner->currentBuffer()->text->cursor.par->GetWord(lastpos));
string curstring(owner->currentBuffer()
->text->cursor.par->GetWord(lastpos));
//make the new inset and write the current word into it
InsetIndex * new_inset = new InsetIndex();
@ -2830,7 +2844,11 @@ Inset* LyXFunc::getInsetByCode(Inset::Code code)
bool found = false;
Inset * inset = 0;
LyXCursor cursor = owner->currentBuffer()->text->cursor;
#ifdef NEW_TEXT
LyXParagraph::size_type pos = cursor.pos;
#else
int pos = cursor.pos;
#endif
LyXParagraph * par = cursor.par;
while (par && !found) {

View File

@ -4,8 +4,8 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1995-1999 The LyX Team.
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team.
*
* ====================================================== */
@ -16,23 +16,34 @@
#pragma interface
#endif
#define NEW_TEXT 1
#define NEW_TABLE 1
#ifdef NEW_TABLE
#include <list>
#endif
#ifdef NEW_TEXT
//#include <vector>
#include <deque>
#endif
#include "definitions.h"
#include "insets/lyxinset.h"
#include "table.h"
#include "support/textutils.h"
#include "vspace.h"
#include "insets/insetbib.h"
#include "layout.h"
class BufferParams;
class LyXBuffer;
class LyXLayout;
class TexRow;
struct LaTeXFeatures;
/// A LyXParagraph holds all text, attributes and insets in a text paragraph
class LyXParagraph {
public:
/// The footnoteflag
enum footnote_flag {
///
@ -71,9 +82,6 @@ public:
///
void writeFile(FILE *, BufferParams &, char, char);
// ///
//void writeLaTeX(FILE*, BufferParams &);
///
void validate(LaTeXFeatures &);
@ -86,16 +94,17 @@ public:
id = id_arg;
}
#ifndef NEW_TEXT
/** allocates more memory for the specified paragraph
pos is needed to specify the paragraph correctly. Remember the
closed footnotes
*/
void Enlarge(int pos, int number);
/** make the allocated memory fit to the needed size
used to make a paragraph smaller
*/
void FitSize();
#endif
///
void read();
@ -130,12 +139,23 @@ public:
|| dhook->GetDepth() != GetDepth());
}
#ifdef NEW_TEXT
///
typedef deque<char> TextContainer;
typedef int size_type;
///
TextContainer text;
///
size_type size() const { return text.size(); }
#else
///
int last;
///
int size;
///
char * text;
#endif
///
VSpace added_space_top;
@ -143,7 +163,7 @@ public:
VSpace added_space_bottom;
///
signed char layout;
LyXTextClass::LayoutList::size_type layout;
/**
\begin{itemize}
@ -172,7 +192,7 @@ public:
bool pagebreak_bottom;
///
char align;
LyXAlignment align;
///
char depth;
@ -221,8 +241,6 @@ public:
string labelwidthstring;
//@}
///
int last;
///
LyXParagraph * next;
///
@ -253,10 +271,17 @@ public:
///
LyXParagraph * FirstPhysicalPar();
#ifdef NEW_TEXT
/// returns the physical paragraph
LyXParagraph * ParFromPos(size_type pos);
/// returns the position in the physical par
int PositionInParFromPos(size_type pos);
#else
/// returns the physical paragraph
LyXParagraph * ParFromPos(int pos);
/// returns the position in the physical par
int PositionInParFromPos(int pos);
#endif
/// for the environments
LyXParagraph * DepthHook(int depth);
@ -268,46 +293,128 @@ public:
/// the next two functions are for the manual labels
string GetLabelWidthString();
///
void SetLabelWidthString(const string &s);
void SetLabelWidthString(string const & s);
///
int GetLayout();
LyXTextClass::LayoutList::size_type GetLayout();
///
char GetAlign();
///
char GetDepth();
///
void SetLayout(char new_layout);
void SetLayout(LyXTextClass::LayoutList::size_type new_layout);
///
void SetOnlyLayout(char new_layout);
void SetOnlyLayout(LyXTextClass::LayoutList::size_type new_layout);
///
int GetFirstCounter(int i);
#ifdef NEW_TEXT
///
size_type Last();
///
void Erase(size_type pos);
/** the flag determines wether the layout should be copied
*/
void BreakParagraph(size_type pos, int flag);
///
void BreakParagraphConservative(size_type pos);
/** Get unistantiated font setting. Returns the difference
between the characters font and the layoutfont.
This is what is stored in the fonttable
*/
LyXFont GetFontSettings(size_type pos);
/** Get fully instantiated font. If pos == -1, use the layout
font attached to this paragraph.
If pos == -2, use the label font of the layout attached here.
In all cases, the font is instantiated, i.e. does not have any
attributes with values LyXFont::INHERIT, LyXFont::IGNORE or
LyXFont::TOGGLE.
*/
LyXFont getFont(size_type pos);
///
char GetChar(size_type pos);
///
void SetFont(size_type pos, LyXFont const & font);
///
string GetWord(size_type &);
/// Returns the height of the highest font in range
LyXFont::FONT_SIZE HighestFontInRange(size_type startpos, size_type endpos) const;
///
void InsertChar(size_type pos, char c);
///
void InsertInset(size_type pos, Inset * inset);
///
Inset * GetInset(size_type pos);
///
Inset * ReturnNextInsetPointer(size_type & pos);
///
void OpenFootnote(size_type pos);
///
void CloseFootnote(size_type pos);
/// important for cut and paste
void CopyIntoMinibuffer(size_type pos);
///
void CutIntoMinibuffer(size_type pos);
///
void InsertFromMinibuffer(size_type pos);
///
bool IsHfill(size_type pos) {
return IsHfillChar(GetChar(pos));
}
///
bool IsInset(size_type pos) {
return IsInsetChar(GetChar(pos));
}
///
bool IsFloat(size_type pos) {
return IsFloatChar(GetChar(pos));
}
///
bool IsNewline(size_type pos) {
bool tmp = false;
if (pos >= 0)
tmp= IsNewlineChar(GetChar(pos));
return tmp;
}
///
bool IsSeparator(size_type pos) {
return IsSeparatorChar(GetChar(pos));
}
///
bool IsLineSeparator(size_type pos) {
return IsLineSeparatorChar(GetChar(pos));
}
///
bool IsKomma(size_type pos){
return IsKommaChar(GetChar(pos));
}
/// Used by the spellchecker
bool IsLetter(size_type pos);
///
bool IsWord(size_type pos ) {
return IsWordChar( GetChar(pos) ) ;
}
#else
///
int Last();
/** This one resets all layout and dtp switches but not the font
of the single characters
*/
void Clear();
///
void Erase(int pos);
/** the flag determines wether the layout should be copied
*/
void BreakParagraph(int pos, int flag);
///
void BreakParagraphConservative(int pos);
/** paste this paragraph with the next one
be carefull, this doesent make any check at all
*/
void PasteParagraph();
/** Get unistantiated font setting. Returns the difference
between the characters font and the layoutfont.
This is what is stored in the fonttable
*/
LyXFont GetFontSettings(int pos);
/** Get fully instantiated font. If pos == -1, use the layout
font attached to this paragraph.
If pos == -2, use the label font of the layout attached here.
@ -316,13 +423,12 @@ public:
LyXFont::TOGGLE.
*/
LyXFont getFont(int pos);
///
char GetChar(int pos);
///
string GetWord(int &);
///
void SetFont(int pos, LyXFont const & font);
///
string GetWord(int &);
/// Returns the height of the highest font in range
LyXFont::FONT_SIZE HighestFontInRange(int startpos, int endpos) const;
///
@ -331,35 +437,18 @@ public:
void InsertInset(int pos, Inset * inset);
///
Inset * GetInset(int pos);
/// used to remove the error messages
int AutoDeleteInsets();
///
Inset * ReturnNextInsetPointer(int & pos);
/// returns -1 if inset not found
int GetPositionOfInset(Inset* inset);
/// ok and now some footnote functions
void OpenFootnotes();
///
void OpenFootnote(int pos);
///
void CloseFootnotes();
///
void CloseFootnote(int pos);
/// important for cut and paste
void CopyIntoMinibuffer(int pos);
///
void CutIntoMinibuffer(int pos);
///
void InsertFromMinibuffer(int pos);
///
LyXParagraph *FirstSelfrowPar();
///
bool IsHfill(int pos) {
return IsHfillChar(GetChar(pos));
@ -405,6 +494,31 @@ public:
bool IsWord( int pos ) {
return IsWordChar( GetChar(pos) ) ;
}
#endif
/** This one resets all layout and dtp switches but not the font
of the single characters
*/
void Clear();
/** paste this paragraph with the next one
be carefull, this doesent make any check at all
*/
void PasteParagraph();
/// used to remove the error messages
int AutoDeleteInsets();
/// returns -1 if inset not found
int GetPositionOfInset(Inset * inset);
/// ok and now some footnote functions
void OpenFootnotes();
///
void CloseFootnotes();
///
LyXParagraph * FirstSelfrowPar();
///
int ClearParagraph(){
@ -434,19 +548,29 @@ public:
/* If I set a PExtra Indent on one paragraph of a ENV_LIST-TYPE
I have to set it on each of it's elements */
///
void SetPExtraType(int type, const char *width, const char *widthp);
void SetPExtraType(int type, char const * width, char const * widthp);
///
void UnsetPExtraType();
#ifdef NEW_TEXT
///
bool RoffContTableRows(FILE * file, size_type i,
int actcell);
///
void DocBookContTableRows(string & file, string & extra, int & desc_on,
size_type i,
int current_cell_number, int & column);
#else
///
bool RoffContTableRows(FILE * file, int i, int actcell);
///
void DocBookContTableRows(string & file, string & extra, int & desc_on,
int i, int current_cell_number, int & column);
#endif
///
bool linuxDocConvertChar(char c, string & sgml_string);
///
void SimpleDocBookOneTablePar(string & file, string & extra,
int & desc_on, int depth);
///
void DocBookContTableRows(string &file, string &extra, int &desc_on,
int i, int current_cell_number, int &column);
private:
/** A font entry covers a range of positions. Notice that the
entries in the list are inserted in random order.
@ -455,11 +579,17 @@ private:
is limited. (Asger)
*/
struct FontTable {
#ifdef NEW_TEXT
/// Start position of paragraph this font attribute covers
size_type pos;
/// Ending position of paragraph this font attribute covers
size_type pos_end;
#else
/// Start position of paragraph this font attribute covers
int pos;
/// Ending position of paragraph this font attribute covers
int pos_end;
#endif
/** Font. Interpretation of the font values:
If a value is LyXFont::INHERIT_*, it means that the font
attribute is inherited from either the layout of this
@ -470,22 +600,42 @@ private:
allowed in these font tables.
*/
LyXFont font;
#ifndef NEW_TABLE
/// Pointer to next font entry
FontTable * next;
#endif
};
///
struct InsetTable {
#ifdef NEW_TEXT
///
size_type pos;
#else
///
int pos;
#endif
///
Inset * inset;
#ifndef NEW_TABLE
///
InsetTable * next;
#endif
};
#ifdef NEW_TABLE
///
typedef list<FontTable> FontList;
///
typedef list<InsetTable> InsetList;
///
FontList fontlist;
///
InsetList insetlist;
#else
///
FontTable * fonttable;
///
InsetTable * insettable;
#endif
///
LyXParagraph * TeXDeeper(string & file, TexRow & texrow,
string & foot, TexRow & foot_texrow,
@ -498,19 +648,38 @@ private:
bool SimpleTeXOnePar(string & file, TexRow & texrow);
///
bool SimpleTeXOneTablePar(string & file, TexRow & texrow);
#ifdef NEW_TEXT
///
bool TeXContTableRows(string & file, size_type i,
int current_cell_number,
int & column, TexRow & texrow);
///
void SimpleTeXBlanks(string & file, TexRow & texrow,
size_type const i,
int & column, LyXFont const & font,
LyXLayout const & style);
///
void SimpleTeXSpecialChars(string & file, TexRow & texrow,
LyXFont & font, LyXFont & running_font,
LyXFont & basefont, bool & open_font,
LyXLayout const & style,
size_type & i,
int & column, char const c);
#else
///
bool TeXContTableRows(string & file, int i, int current_cell_number,
int & column, TexRow & texrow);
///
void SimpleTeXBlanks(string & file, TexRow & texrow,
int const i, int & column, LyXFont const & font,
LyXLayout const * const style);
LyXLayout const & style);
///
void SimpleTeXSpecialChars(string & file, TexRow & texrow,
LyXFont & font, LyXFont & running_font,
LyXFont & basefont, bool & open_font,
LyXLayout const * const style,
LyXLayout const & style,
int & i, int & column, char const c);
#endif
///
int id;
///

View File

@ -299,11 +299,7 @@ LyXRC::LyXRC()
}
LyXRC::~LyXRC()
{
}
int LyXRC::ReadBindFile(string name)
int LyXRC::ReadBindFile(string const & name)
{
hasBindFile = true;
string tmp = i18nLibFileSearch("bind",name,"bind");

View File

@ -24,15 +24,13 @@ public:
///
LyXRC();
///
~LyXRC();
///
int Read (string const & filename);
///
void Print();
/// Is a bind file already (or currently) read?
bool hasBindFile;
///
int ReadBindFile(string name = "cua");
int ReadBindFile(string const & name = "cua");
///
Toolbar toolbar;
///

View File

@ -4,26 +4,28 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1999 The LyX Team.
*
* ====================================================== */
#ifndef _LYXROW_H
#define _LYXROW_H
#ifndef LYXROW_H
#define LYXROW_H
//#include "lyxparagraph.h"
class LyXParagraph;
#include "lyxparagraph.h"
///
struct Row {
///
LyXParagraph * par;
///
#ifdef NEW_TEXT
LyXParagraph::size_type pos;
#else
int pos;
#endif
///
unsigned short baseline;
///
/** what is missing to a full row can be negative.
Needed for hfills, flushright, block etc. */
int fill;

View File

@ -17,11 +17,11 @@
#endif
#include "definitions.h"
#include "layout.h"
#include "lyxfont.h"
#include "lyxrow.h"
#include "undo.h"
#include "lyxcursor.h"
#include "lyxparagraph.h"
class Buffer;
class BufferParams;
@ -63,11 +63,20 @@ public:
/// Destructor
~LyXText();
#ifdef NEW_TEXT
///
LyXFont GetFont(LyXParagraph * par,
LyXParagraph::size_type pos);
///
void SetCharFont(LyXParagraph * par,
LyXParagraph::size_type pos,
LyXFont font);
#else
///
LyXFont GetFont(LyXParagraph * par, int pos);
///
void SetCharFont(LyXParagraph * par, int pos, LyXFont font);
#endif
/// returns a pointer to the very first LyXParagraph
LyXParagraph * FirstParagraph();
@ -172,8 +181,12 @@ public:
/** returns a pointer to a specified row. y is set to the beginning
of the row
*/
#ifdef NEW_TEXT
Row * GetRow(LyXParagraph * par,
LyXParagraph::size_type pos, long & y);
#else
Row * GetRow(LyXParagraph * par, int pos, long & y);
#endif
/** returns the height of a default row, needed for scrollbar
*/
int DefaultHeight();
@ -221,10 +234,19 @@ public:
char * SelectNextWord(float & value);
///
void SelectSelectedWord();
#ifdef NEW_TEXT
///
void SetCursor(LyXParagraph * par,
LyXParagraph::size_type pos);
///
void SetCursorIntern(LyXParagraph * par,
LyXParagraph::size_type pos);
#else
///
void SetCursor(LyXParagraph * par, int pos);
///
void SetCursorIntern(LyXParagraph * par, int pos);
#endif
///
void SetCursorFromCoordinates(int x, long y);
///
@ -266,10 +288,16 @@ public:
///
int SelectWordWhenUnderCursor();
/// Change the case of the word at cursor position
/** action is 0 for lower case, 1 for capitalization and 2 for
/** Change the case of the word at cursor position.
action is 0 for lower case, 1 for capitalization and 2 for
uppercase.
*/
void ChangeWordCase(int action);
enum TextCase {
text_lowercase = 0,
text_capitalization = 1,
text_uppercase = 2
};
void ChangeWordCase(TextCase action);
/** returns a printed row in a pixmap. The y value is needed to
decide, wether it is selected text or not. This is a strange
@ -326,12 +354,12 @@ public:
void SetParagraph(bool line_top, bool line_bottom,
bool pagebreak_top, bool pagebreak_bottom,
VSpace space_top, VSpace space_bottom,
char align,
LyXAlignment align,
string labelwidthstring,
bool noindent);
void SetParagraphExtraOpt(int type,
const char *width,
const char *widthp,
char const * width,
char const * widthp,
int alignment, bool hfill,
bool start_minipage);
@ -340,12 +368,17 @@ public:
/** returns true if the specified string is at the specified
position
*/
bool IsStringInText(LyXParagraph *par, int pos, char const* string);
#ifdef NEW_TEXT
bool IsStringInText(LyXParagraph * par,
LyXParagraph::size_type pos,
char const * str);
#else
bool IsStringInText(LyXParagraph * par, int pos, char const * str);
#endif
/** sets the selection over the number of characters of string,
no check!!
*/
void SetSelectionOverString(char const* string);
void SetSelectionOverString(char const * str);
/** simple replacing. The font of the first selected character
is used
@ -357,10 +390,16 @@ public:
bool SearchForward(char const * string);
bool SearchBackward(char const * string);
#ifdef NEW_TEXT
/// needed to insert the selection
void InsertStringA(char* string);
void InsertStringA(LyXParagraph::TextContainer const & text);
/// needed to insert the selection
void InsertStringB(char* string);
void InsertStringB(LyXParagraph::TextContainer const & text);
#endif
/// needed to insert the selection
void InsertStringA(char const * string);
/// needed to insert the selection
void InsertStringB(char const * string);
/// usefull when texing from within LyX
bool GotoNextError();
@ -372,15 +411,26 @@ public:
for a list of paragraphs beginning with the specified par
return value is the number of wrong conversions
*/
int SwitchLayoutsBetweenClasses(char class1, char class2, LyXParagraph *par);
int SwitchLayoutsBetweenClasses(char class1, char class2,
LyXParagraph * par);
/* for the greater insets */
/// returns 0 if inset wasn't found
int UpdateInset(Inset * inset);
#ifdef NEW_TEXT
///
void CheckParagraph(LyXParagraph * par,
LyXParagraph::size_type pos);
///
int NumberOfCell(LyXParagraph * par,
LyXParagraph::size_type pos);
#else
///
void CheckParagraph(LyXParagraph * par, int pos);
///
int NumberOfCell(LyXParagraph * par, int pos);
#endif
/* table stuff -- begin*/
/** all table features of the text-class are put together in
@ -389,19 +439,24 @@ public:
void TableFeatures(int feature, string val);
///
void TableFeatures(int feature);
///
int NumberOfCell(LyXParagraph *par, int pos);
/** pos points at the beginning of the next cell (if there is one)
*/
#ifdef NEW_TEXT
int WidthOfCell(LyXParagraph * par, LyXParagraph::size_type & pos);
///
void CheckParagraphInTable(LyXParagraph * par,
LyXParagraph::size_type pos);
#else
int WidthOfCell(LyXParagraph * par, int & pos);
///
void CheckParagraphInTable(LyXParagraph * par, int pos);
#endif
///
void InsertCharInTable(char c);
///
void BackspaceInTable();
///
void CheckParagraphInTable(LyXParagraph* par, int pos);
///
char HitInTable(Row * row, int x);
///
bool MouseHitInTable(int x, long y);
@ -427,11 +482,14 @@ public:
/// a flag
bool undo_frozen;
///
void SetUndo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end);
void SetUndo(Undo::undo_kind kind, LyXParagraph * before,
LyXParagraph * end);
///
void SetRedo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end);
void SetRedo(Undo::undo_kind kind, LyXParagraph * before,
LyXParagraph * end);
///
Undo *CreateUndo(Undo::undo_kind kind, LyXParagraph *before, LyXParagraph *end);
Undo * CreateUndo(Undo::undo_kind kind, LyXParagraph * before,
LyXParagraph * end);
/// for external use in lyx_cb.C
void SetCursorParUndo();
///
@ -468,8 +526,12 @@ private:
/** inserts a new row behind the specified row, increments
* the touched counters */
#ifdef NEW_TEXT
void InsertRow(Row * row, LyXParagraph * par,
LyXParagraph::size_type pos );
#else
void InsertRow(Row * row, LyXParagraph * par, int pos );
#endif
/** removes the row and reset the touched counters */
void RemoveRow(Row * row);
@ -508,14 +570,31 @@ private:
* some low level functions
*/
#ifdef NEW_TEXT
///
int SingleWidth(LyXParagraph * par,
LyXParagraph::size_type pos);
///
int SingleWidth(LyXParagraph * par,
LyXParagraph::size_type pos, char c);
///
void Draw(Row * row, LyXParagraph::size_type & pos,
LyXScreen & scr,
int offset, float & x);
/// get the next breakpoint in a given paragraph
LyXParagraph::size_type NextBreakPoint(Row * row,
int width);
#else
///
int SingleWidth(LyXParagraph * par, int pos);
///
int SingleWidth(LyXParagraph * par, int pos, char c);
///
void Draw(Row *row, int &pos, LyXScreen &scr, int offset, float &x);
void Draw(Row * row, int & pos, LyXScreen & scr,
int offset, float & x);
/// get the next breakpoint in a given paragraph
int NextBreakPoint(Row * row, int width);
#endif
/// returns the minimum space a row needs on the screen in pixel
int Fill(Row * row, int paperwidth);
@ -523,9 +602,13 @@ private:
screen in pixel */
int LabelFill(Row * row);
#ifdef NEW_TEXT
///
LyXParagraph::size_type BeginningOfMainBody(LyXParagraph * par);
#else
///
int BeginningOfMainBody(LyXParagraph * par);
#endif
/** Returns the left beginning of the text.
This information cannot be taken from the layouts-objekt, because
in LaTeX the beginning of the text fits in some cases
@ -555,12 +638,20 @@ private:
/** returns true, if a expansion is needed. Rules are given by
LaTeX
*/
#ifdef NEW_TEXT
bool HfillExpansion(Row * row_ptr,
LyXParagraph::size_type pos);
/** returns the paragraph position of the last character in the
specified row
*/
LyXParagraph::size_type RowLast(Row * row);
#else
bool HfillExpansion(Row * row_ptr, int pos);
/** returns the paragraph position of the last character in the
specified row
*/
int RowLast(Row * row);
#endif
};
#endif

View File

@ -21,9 +21,6 @@
extern BufferList bufferlist;
extern void MenuWrite(Buffer *);
#if 0
extern bool gsworking();
#endif
LyXVC::LyXVC()
{
@ -304,10 +301,11 @@ string const LyXVC::getLocker() const
// This is a hack anyway so I'll put it here in the mean time.
void LyXVC::logClose(FL_OBJECT * obj, long)
{
LyXVC *This = (LyXVC*)obj->form->u_vdata;
LyXVC * This = static_cast<LyXVC*>(obj->form->u_vdata);
fl_hide_form(This->browser->LaTeXLog);
}
// and, hack over hack, here is a C wrapper :)
extern "C" void C_LyXVC_logClose(FL_OBJECT * ob, long data)
{
@ -317,7 +315,7 @@ extern "C" void C_LyXVC_logClose(FL_OBJECT *ob, long data)
void LyXVC::logUpdate(FL_OBJECT * obj, long)
{
LyXVC *This = (LyXVC*)obj->form->u_vdata;
LyXVC * This = static_cast<LyXVC*>(obj->form->u_vdata);
This->showLog();
}
@ -336,10 +334,13 @@ void LyXVC::viewLog(string const & fil)
browser = (FD_LaTeXLog *) fl_calloc(1, sizeof(*browser));
browser->LaTeXLog = fl_bgn_form(FL_NO_BOX, 470, 380);
browser->LaTeXLog->u_vdata = (void*)this;
browser->LaTeXLog->u_vdata = this;
obj = fl_add_box(FL_UP_BOX, 0, 0, 470, 380, "");
browser->browser_latexlog = fl_add_browser(FL_NORMAL_BROWSER, 10, 10, 450, 320, "");
obj = fl_add_button(FL_RETURN_BUTTON, 270, 340, 90, 30, _("Close"));
browser->browser_latexlog = fl_add_browser(FL_NORMAL_BROWSER,
10, 10,
450, 320, "");
obj = fl_add_button(FL_RETURN_BUTTON, 270, 340, 90, 30,
_("Close"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_LyXVC_logClose, 0);
obj = fl_add_button(FL_NORMAL_BUTTON,370,340,90,30,
@ -352,7 +353,8 @@ void LyXVC::viewLog(string const & fil)
}
if (!fl_load_browser(browser->browser_latexlog, fil.c_str()))
fl_add_browser_line(browser->browser_latexlog, _("No RCS History!"));
fl_add_browser_line(browser->browser_latexlog,
_("No RCS History!"));
if (browser->LaTeXLog->visible) {
fl_raise_form(browser->LaTeXLog);
@ -371,26 +373,6 @@ void LyXVC::viewLog(string const & fil)
void LyXVC::showLog()
{
// This I really don't like, but we'll look at this problem
// in 0.13. Then we can make a clean solution.
#if 0
if (gsworking()) {
WriteAlert(_("Sorry, can't do this while"
" pictures are being rendered."),
_("Please wait a few seconds for"
" this to finish and try again."),
_("(or kill runaway gs processes"
" by hand and try again.)"));
return;
}
extern pid_t isp_pid; // from spellchecker.C
if(isp_pid != -1) {
WriteAlert(_("Can't do this while the"
" spellchecker is running."),
_("Stop the spellchecker first."));
return;
}
#endif
string tmpf = tmpnam(0);
doVCCommand("rlog \""
+ OnlyFilename(_owner->getFileName()) + "\" > " + tmpf);

View File

@ -265,9 +265,9 @@ int mathed_char_height(short type, int size, byte c, int& asc, int& des)
// In a near future maybe we use a better fonts renderer
void MathedInset::drawStr(short type, int size, int x, int y, byte* s, int ls)
void MathedInset::drawStr(short type, int siz, int x, int y, byte* s, int ls)
{
mathed_set_font(type, size);
mathed_set_font(type, siz);
byte sx[80];
if (MathIsBinary(type)) {
byte *ps = &sx[0];
@ -281,7 +281,7 @@ void MathedInset::drawStr(short type, int size, int x, int y, byte* s, int ls)
s = &sx[0];
}
GC gc = (type==LM_TC_TEX) ? latexGC: mathGC;
XDrawString(fl_display, pm, gc, x, y, (char*)s, ls);
XDrawString(fl_display, pm, gc, x, y, reinterpret_cast<char*>(s), ls);
XFlush(fl_display);
}
@ -623,21 +623,21 @@ string InsetFormula::getLabel(int il) const
//#warning This is dirty, I know. Ill clean it at 0.11
// Correction, the only way to clean this is with a new kernel: 0.13.
if (par->GetType()==LM_OT_MPARN) {
string label;
string lab;
MathMatrixInset * mt = (MathMatrixInset*)par;
int nl=0;
MathedRowSt const * crow = mt->getRowSt();
while (crow) {
if (crow->getLabel()) {
if (nl==il) {
label = crow->getLabel();
lab = crow->getLabel();
break;
}
nl++;
}
crow = crow->getNext();
}
return label;
return lab;
}
return label;
}

View File

@ -41,12 +41,14 @@ inline bool IsAlpha(char c)
}
// This was very smaller, I'll change it later
inline bool IsMacro(short token, int id)
inline bool IsMacro(short tok, int id)
{
return (token!=LM_TK_STACK && token!=LM_TK_FRAC && token!=LM_TK_SQRT && token!=LM_TK_WIDE &&
token!=LM_TK_SPACE && token!=LM_TK_DOTS && token!=LM_TK_FUNCLIM &&
token!=LM_TK_BIGSYM && token!=LM_TK_ACCENT &&
!(token==LM_TK_SYM && id<255));
return (tok != LM_TK_STACK && tok != LM_TK_FRAC && tok != LM_TK_SQRT
&& tok != LM_TK_WIDE
&& tok != LM_TK_SPACE && tok != LM_TK_DOTS
&& tok != LM_TK_FUNCLIM
&& tok != LM_TK_BIGSYM && tok != LM_TK_ACCENT &&
!(tok == LM_TK_SYM && id < 255));
}
// Yes, mathed isn't using string yet.

View File

@ -363,8 +363,8 @@ MathBigopInset::Metrics()
t = LM_TC_TEXTRM;
}
mathed_set_font(t, size);
mathed_string_height(t, size, (unsigned char const *)s, ls, ascent, descent);
width = mathed_string_width(t, size, (unsigned char const *)s, ls);
mathed_string_height(t, size, reinterpret_cast<const unsigned char*>(s), ls, ascent, descent);
width = mathed_string_width(t, size, reinterpret_cast<const unsigned char*>(s), ls);
if (sym==LM_oint) width += 2;
}

View File

@ -361,20 +361,20 @@ in_word_set (register const char *str, register int len)
if (key <= MAX_HASH_VALUE && key >= 0)
{
register int index = lookup[key];
register int idx = lookup[key];
if (index >= 0 && index < MAX_HASH_VALUE)
if (idx >= 0 && idx < MAX_HASH_VALUE)
{
register char const *s = wordlist[index].name;
register char const * s = wordlist[idx].name;
if (*s == *str && !strcmp (str + 1, s + 1))
return &wordlist[index];
return &wordlist[idx];
}
else if (index < 0 && index >= -MAX_HASH_VALUE)
else if (idx < 0 && idx >= -MAX_HASH_VALUE)
return 0;
else
{
register int offset = key + index + (index > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
register int offset = key + idx + (idx > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
register struct latexkeys *base = &wordlist[-lookup[offset]];
register struct latexkeys *ptr = base + -lookup[offset + 1];

View File

@ -292,10 +292,10 @@ MathMatrixInset::MathMatrixInset(int m, int n, short st):
if (n>0) {
row = new MathedRowSt(nc+1);
MathedXIter it(this);
for (int i=1; i<n; i++) it.addRow();
for (int j = 1; j < n; j++) it.addRow();
nr = n;
if (nr==1 && nc>1) {
for (int i=0; i<nc-1; i++)
for (int j = 0; j < nc - 1; j++)
it.Insert('T', LM_TC_TAB);
}
} else if (n<0) {
@ -515,8 +515,8 @@ MathedInset *MathAccentInset::Clone()
}
MathBigopInset::MathBigopInset(char const* name, int id, short st):
MathedInset(name, LM_OT_BIGOP, st), sym(id)
MathBigopInset::MathBigopInset(char const* nam, int id, short st):
MathedInset(nam, LM_OT_BIGOP, st), sym(id)
{
lims = -1;
}
@ -527,8 +527,8 @@ MathedInset *MathBigopInset::Clone()
return p;
}
MathDotsInset::MathDotsInset(char const* name, int id, short st):
MathedInset(name, LM_OT_DOTS, st), code(id)
MathDotsInset::MathDotsInset(char const* nam, int id, short st):
MathedInset(nam, LM_OT_DOTS, st), code(id)
{
}

View File

@ -273,7 +273,7 @@ void MathedIter::Insert(MathedInset* p, int type)
// array->bf[pos-1] = type;
{
unsigned char *pt = &array->bf[pos];
unsigned char *ps = (unsigned char *)&p;
unsigned char *ps = reinterpret_cast<unsigned char*>(&p);
size_t i;
*pt++ = type;
for(i = 0; i < sizeof(p); i++) {
@ -574,9 +574,9 @@ void MathedXIter::SetData(MathParInset *pp)
byte* MathedXIter::GetString(int& ls)
{
static byte s[255];
byte const *sx = MathedIter::GetString(ls);
byte const *sxs = MathedIter::GetString(ls);
if (ls>0) {
strncpy((char *)s, (char const*)sx, ls);
strncpy(reinterpret_cast<char*>(s), reinterpret_cast<const char*>(sxs), ls);
x += mathed_string_width(fcode, size, s, ls);
return &s[0];
}
@ -862,7 +862,7 @@ void MathedXIter::IMetrics(int pos2, int& width, int& ascent, int& descent)
byte cx, cxp=0;// *s;
int x1;// ls;
int asc=0, des=0;
bool limits = false;
bool limit = false;
descent = ascent = width = 0;
if (!array) return;
@ -875,7 +875,7 @@ void MathedXIter::IMetrics(int pos2, int& width, int& ascent, int& descent)
mathed_char_height(FCode(), size, cx, asc, des);
if (asc > ascent) ascent = asc;
if (des > descent) descent = des;
limits = false;
limit = false;
} else
if (MathIsInset(cx)) {
MathedInset *pp = GetInset();
@ -883,7 +883,7 @@ void MathedXIter::IMetrics(int pos2, int& width, int& ascent, int& descent)
if (!asc && p) {
int xx, yy;
p->GetXY(xx, yy);
((MathParInset*)pp)->GetXY(xx, asc);
static_cast<MathParInset*>(pp)->GetXY(xx, asc);
asc = yy - asc;
}
asc += ((limits) ? pp->Height()+4: pp->Ascent());
@ -892,12 +892,12 @@ void MathedXIter::IMetrics(int pos2, int& width, int& ascent, int& descent)
if (!des && p) {
int xx, yy;
p->GetXY(xx, yy);
((MathParInset*)pp)->GetXY(xx, des);
static_cast<MathParInset*>(pp)->GetXY(xx, des);
if (des-pp->Height()<yy && !asc)
asc = yy - (des-pp->Height());
des -= yy;
}
des += ((limits) ? pp->Height()+4: pp->Height()-pp->Ascent()/2);
des += (limit ? pp->Height()+4: pp->Height()-pp->Ascent()/2);
} else {
asc = pp->Ascent();
des = pp->Descent();
@ -905,10 +905,10 @@ void MathedXIter::IMetrics(int pos2, int& width, int& ascent, int& descent)
if (asc > ascent) ascent = asc;
if (des > descent) descent = des;
if (cx!=LM_TC_UP && cx!=LM_TC_DOWN)
limits = pp->GetLimits();
limit = pp->GetLimits();
} else
if (cx==LM_TC_TAB) {
limits = false;
limit = false;
}
else {
lyxerr[Debug::MATHED]
@ -953,7 +953,7 @@ MathedRowSt *MathedXIter::adjustVerticalSt()
crow = new MathedRowSt(ncols+1); // this leaks
}
// lyxerr<< " CRW[" << crow << "] ";
MathedRowSt *row = crow;
MathedRowSt *mrow = crow;
while (OK()) {
if (IsCR()) {
if (col>=ncols) ncols = col+1;
@ -965,6 +965,6 @@ MathedRowSt *MathedXIter::adjustVerticalSt()
}
Next();
}
return row;
return mrow;
}

View File

@ -45,6 +45,7 @@
#include "lyxrc.h"
#include "lyxtext.h"
#include "gettext.h"
#include "layout.h"
extern FD_form_screen * fd_form_screen;
extern BufferList bufferlist;
@ -161,20 +162,31 @@ void Menus::openByName(string const &menuName)
experienced GG (GUI Guy/Girl). RVDK_PATCH_5. */
{
if (menu_file->visible) {
if (menuName == _("File")) ShowFileMenu(menu_file, 0);
else if (menuName == _("Edit")) ShowEditMenu(menu_edit, 0);
else if (menuName == _("Layout")) ShowLayoutMenu(menu_layout, 0);
else if (menuName == _("Insert")) ShowInsertMenu(menu_insert, 0);
else if (menuName == _("Math")) ShowMathMenu(menu_math, 0);
else if (menuName == _("Options")) ShowOptionsMenu(menu_options, 0);
else if (menuName == _("Documents")) ShowBufferMenu(menu_buffer, 0);
else if (menuName == _("Help")) ShowHelpMenu(menu_help, 0);
if (menuName == _("File"))
ShowFileMenu(menu_file, 0);
else if (menuName == _("Edit"))
ShowEditMenu(menu_edit, 0);
else if (menuName == _("Layout"))
ShowLayoutMenu(menu_layout, 0);
else if (menuName == _("Insert"))
ShowInsertMenu(menu_insert, 0);
else if (menuName == _("Math"))
ShowMathMenu(menu_math, 0);
else if (menuName == _("Options"))
ShowOptionsMenu(menu_options, 0);
else if (menuName == _("Documents"))
ShowBufferMenu(menu_buffer, 0);
else if (menuName == _("Help"))
ShowHelpMenu(menu_help, 0);
else lyxerr << "The menu '" << menuName
<< "' is not available." << endl;
} else {
if (menuName == _("File")) ShowFileMenu2(menu_file2, 0);
else if (menuName == _("Options")) ShowOptionsMenu(menu_options2, 0);
else if (menuName == _("Help")) ShowHelpMenu(menu_help2, 0);
if (menuName == _("File"))
ShowFileMenu2(menu_file2, 0);
else if (menuName == _("Options"))
ShowOptionsMenu(menu_options2, 0);
else if (menuName == _("Help"))
ShowHelpMenu(menu_help2, 0);
else lyxerr << "The menu '" << menuName
<< "' is not available." << endl;
}
@ -216,7 +228,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
fl_set_object_callback(obj,C_Menus_ShowFileMenu, 0);
obj->u_ldata = (long)this;
obj->u_vdata = this;
// Edit menu button
menu_edit = obj =
@ -230,7 +242,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#E")),1);
fl_set_object_callback(obj,C_Menus_ShowEditMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Layout menu button
menu_layout = obj =
@ -244,7 +256,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#L")), 1);
fl_set_object_callback(obj,C_Menus_ShowLayoutMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Insert menu button button
menu_insert = obj =
@ -258,7 +270,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#I")), 1);
fl_set_object_callback(obj,C_Menus_ShowInsertMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Math menu button
menu_math = obj =
@ -272,7 +284,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#M")), 1);
fl_set_object_callback(obj,C_Menus_ShowMathMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Options menu button
menu_options = obj =
@ -286,7 +298,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
fl_set_object_callback(obj,C_Menus_ShowOptionsMenu, 0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Documents menu button
menu_buffer = obj =
@ -300,7 +312,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#D")), 1);
fl_set_object_callback(obj,C_Menus_ShowBufferMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Help menu button
menu_help = obj =
@ -314,7 +326,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
fl_set_object_callback(obj,C_Menus_ShowHelpMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
fl_end_group();
@ -347,7 +359,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
fl_set_object_callback(obj,C_Menus_ShowFileMenu2, 0);
obj->u_ldata = (long)this;
obj->u_vdata = this;
// Options menu button
menu_options2 = obj =
@ -361,7 +373,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
fl_set_object_callback(obj,C_Menus_ShowOptionsMenu, 0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
// Help menu button
menu_help2 = obj =
@ -375,7 +387,7 @@ void Menus::create_menus(int air)
moffset += obj->w + air;
fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
fl_set_object_callback(obj,C_Menus_ShowHelpMenu,0);
obj->u_ldata = (long) this;
obj->u_vdata = this;
fl_end_group();
@ -431,7 +443,7 @@ void Menus::ScreenOptions()
void Menus::ShowFileMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// Regarding the pseudo-menu-button:
// ok, ok this is a hack. It would be better to use the menus of the
@ -461,6 +473,7 @@ void Menus::ShowFileMenu(FL_OBJECT *ob, long)
"|Ascii Text as Lines...%x31"
"|Ascii Text as Paragraphs%x32"
"|Noweb%x33"));
fl_setpup_shortcut(SubFileImport, 30, scex(_("FIM|Ll#l#L")));
fl_setpup_shortcut(SubFileImport, 31, scex(_("FIM|Aa#a#A")));
fl_setpup_shortcut(SubFileImport, 32, scex(_("FIM|Pp#p#P")));
@ -589,20 +602,14 @@ void Menus::ShowFileMenu(FL_OBJECT *ob, long)
fl_setpup_shortcut(FileMenu, 17, scex(_("FM|xX#x#X")));
// make the lastfiles menu
LastFiles_Iter liter(*lastfiles); // :-)
string filname;
int ii = 1;
while( ii < 10 && !(filname = liter()).empty() ) {
string tmp;
string tmp2;
string relbuf = MakeDisplayPath(filname,30);
tmp += tostr(ii);
tmp2 = tmp;
tmp += ". " + relbuf;
tmp2 += string("#") + tostr(ii);
for (LastFiles::Files::const_iterator cit = lastfiles->begin();
cit != lastfiles->end() && ii < 10; ++cit, ++ii) {
string tmp = tostr(ii);
string tmp2 = tmp + "#" + tmp;;
tmp += ". " + MakeDisplayPath((*cit), 30);
fl_addtopup(FileMenu, tmp.c_str());
fl_setpup_shortcut(FileMenu, 18 - 1 + ii, tmp2.c_str());
ii++;
}
// place popup
@ -665,7 +672,9 @@ void Menus::ShowFileMenu(FL_OBJECT *ob, long)
// Lastfiles:
case 18: // The first item with lastfiles.
default:
men->currentView()->setBuffer(bufferlist.loadLyXFile(liter[choice-18])); // ok one more
men->currentView()
->setBuffer(bufferlist
.loadLyXFile((*lastfiles)[choice - 18]));
break;
}
fl_freepup(SubFileImport);
@ -678,7 +687,7 @@ void Menus::ShowFileMenu(FL_OBJECT *ob, long)
void Menus::ShowFileMenu2(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// Regarding the pseudo-menu-button:
// ok, ok this is a hack. It would be better to use the menus of the
@ -703,6 +712,7 @@ void Menus::ShowFileMenu2(FL_OBJECT *ob, long)
"|Ascii Text as Lines...%x16"
"|Ascii Text as Paragraphs...%x17"
"|Noweb...%x18"));
fl_setpup_shortcut(SubFileImport, 15, scex(_("FIM|Ll#l#L")));
fl_setpup_shortcut(SubFileImport, 16, scex(_("FIM|Aa#a#A")));
fl_setpup_shortcut(SubFileImport, 17, scex(_("FIM|Pp#p#P")));
@ -722,6 +732,7 @@ void Menus::ShowFileMenu2(FL_OBJECT *ob, long)
"|Open...%l"
"|Import%m%l"
"|Exit%l"), SubFileImport);
fl_setpup_shortcut(FileMenu, 1, scex(_("FM|Nn#n#N")));
fl_setpup_shortcut(FileMenu, 2, scex(_("FM|tT#t#T")));
fl_setpup_shortcut(FileMenu, 3, scex(_("FM|Oo#o#O")));
@ -729,20 +740,14 @@ void Menus::ShowFileMenu2(FL_OBJECT *ob, long)
fl_setpup_shortcut(FileMenu, 5, scex(_("FM|xX#x#X")));
// make the lastfiles menu
LastFiles_Iter liter(*lastfiles); // :-)
string filname;
int ii = 1;
while( ii < 10 && !(filname = liter()).empty() ) {
string tmp;
string tmp2;
string relbuf = MakeDisplayPath(filname,30);
tmp += tostr(ii);
tmp2 = tmp;
tmp += ". " + relbuf;
tmp2 += string("#") + tostr(ii);
for (LastFiles::Files::const_iterator cit = lastfiles->begin();
cit != lastfiles->end() && ii < 10; ++cit, ++ii) {
string tmp = tostr(ii);
string tmp2 = tmp + "#" + tmp;;
tmp += ". " + MakeDisplayPath((*cit), 30);
fl_addtopup(FileMenu, tmp.c_str());
fl_setpup_shortcut(FileMenu, 6 - 1 + ii, tmp2.c_str());
ii++;
fl_setpup_shortcut(FileMenu, 18 - 1 + ii, tmp2.c_str());
}
// place popup
@ -781,8 +786,11 @@ void Menus::ShowFileMenu2(FL_OBJECT *ob, long)
tmpfunc->Dispatch(LFUN_QUIT);
break;
// Lastfiles:
case 6: // The first item with lastfiles.
default:
men->currentView()->setBuffer(bufferlist.loadLyXFile(liter[choice-6]));
men->currentView()
->setBuffer(bufferlist
.loadLyXFile((*lastfiles)[choice - 6]));
break;
}
@ -795,7 +803,7 @@ void Menus::ShowFileMenu2(FL_OBJECT *ob, long)
void Menus::ShowEditMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);
@ -814,8 +822,8 @@ void Menus::ShowEditMenu(FL_OBJECT *ob, long)
"|Close All Footnotes/Margin Notes%x24"
"|Open All Figures/Tables%x25"
"|Close All Figures/Tables%x26%l"
"|Remove all Error Boxes%x27")
);
"|Remove all Error Boxes%x27"));
fl_setpup_shortcut(SubEditFloats, 21, scex(_("EMF|Oo#o#O")));
fl_setpup_shortcut(SubEditFloats, 22, scex(_("EMF|Mm#m#M")));
fl_setpup_shortcut(SubEditFloats, 23, scex(_("EMF|Aa#a#A")));
@ -1117,7 +1125,7 @@ void Menus::ShowEditMenu(FL_OBJECT *ob, long)
void Menus::ShowLayoutMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
if (!men->currentView()->available())
return;
@ -1202,15 +1210,15 @@ void Menus::ShowLayoutMenu(FL_OBJECT *ob, long)
case 10: tmpfunc->Dispatch(LFUN_TEX); break;
case 11: tmpfunc->Dispatch(LFUN_DEPTH_PLUS); break;
case 12: tmpfunc->Dispatch(LFUN_LAYOUT_PREAMBLE); break;
case 13: tmpfunc->Dispatch(LFUN_LAYOUT_SAVE_DEFAULT); break;//MenuLayoutSave(); break;
case 13: tmpfunc->Dispatch(LFUN_LAYOUT_SAVE_DEFAULT); break;
}
fl_freepup(LayoutMenu);
}
void Menus::ShowInsertMenu(FL_OBJECT *ob, long /*data*/)
void Menus::ShowInsertMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);
@ -1220,15 +1228,11 @@ void Menus::ShowInsertMenu(FL_OBJECT *ob, long /*data*/)
Buffer * tmpbuffer = men->_view->currentBuffer();
LyXFunc * tmpfunc = men->_view->getLyXFunc();
#if 0
// Is textclass LinuxDoc?
bool LinuxDoc = tmpbuffer->isLinuxDoc();
#endif
int SubInsertAscii = fl_defpup(FL_ObjWin(ob),
_("Import ASCII file%t"
"|As Lines%x41"
"|As Paragraphs%x42"));
fl_setpup_shortcut(SubInsertAscii, 41, scex(_("IMA|Ll#l#L")));
fl_setpup_shortcut(SubInsertAscii, 42, scex(_("IMA|Pp#p#P")));
@ -1240,6 +1244,7 @@ void Menus::ShowInsertMenu(FL_OBJECT *ob, long /*data*/)
"|List of Algorithms%x24"
"|Index List%x25"
"|BibTeX Reference%x26"));
fl_setpup_shortcut(SubInsertTableList, 21, scex(_("IMT|Cc#c#C")));
fl_setpup_shortcut(SubInsertTableList, 22, scex(_("IMT|Ff#f#F")));
fl_setpup_shortcut(SubInsertTableList, 23, scex(_("IMT|Tt#t#T")));
@ -1247,23 +1252,14 @@ void Menus::ShowInsertMenu(FL_OBJECT *ob, long /*data*/)
fl_setpup_shortcut(SubInsertTableList, 25, scex(_("IMT|Ii#i#I")));
fl_setpup_shortcut(SubInsertTableList, 26, scex(_("IMT|Bb#b#B")));
int SubInsertFloatList;
//if (men->_view->currentBuffer()->params.columns == 1) {
// SubInsertFloatList = fl_defpup(FL_ObjWin(ob),
// _("Floats%t"
// "|Figure Float%x71"
// "|Table Float%l%x72"
// "|Algorithm Float%x73"));
//}
//else {
SubInsertFloatList = fl_defpup(FL_ObjWin(ob),
int SubInsertFloatList = fl_defpup(FL_ObjWin(ob),
_("Floats%t"
"|Figure Float%x71"
"|Table Float%x72"
"|Wide Figure Float%x73"
"|Wide Table Float%l%x74"
"|Algorithm Float%x75"));
//}
fl_setpup_shortcut(SubInsertFloatList, 71, scex(_("IMF|gG#g#G")));
fl_setpup_shortcut(SubInsertFloatList, 72, scex(_("IMF|Tt#t#T")));
fl_setpup_shortcut(SubInsertFloatList, 73, scex(_("IMF|Ww#w#W")));
@ -1329,25 +1325,13 @@ void Menus::ShowInsertMenu(FL_OBJECT *ob, long /*data*/)
fl_setpup_shortcut(InsertMenu, 15, scex(_("IM|dD#d#D")));
fl_setpup_shortcut(InsertMenu, 16, scex(_("IM|wW#w#W")));
#if 0
if (LinuxDoc) {
/* for linuxdoc sgml */
#endif
fl_addtopup(InsertMenu, _("|URL..."));
fl_setpup_shortcut(InsertMenu, 17, scex(_("IM|Uu#u#U")));
#if 0
}
#endif
if (tmpbuffer->isReadonly()) {
for (int ii = 1; ii <= 16; ii++)
fl_setpup_mode(InsertMenu, ii, FL_PUP_GREY);
#if 0
if (LinuxDoc) {
#endif
fl_setpup_mode(InsertMenu, 17, FL_PUP_GREY);
#if 0
}
#endif
}
fl_setpup_position(
@ -1437,7 +1421,7 @@ void Menus::ShowMathMenu(FL_OBJECT *ob, long)
{
extern void math_insert_symbol(char const * s);
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);
@ -1521,7 +1505,7 @@ void Menus::ShowMathMenu(FL_OBJECT *ob, long)
void Menus::ShowOptionsMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);
@ -1570,7 +1554,7 @@ void Menus::ShowOptionsMenu(FL_OBJECT *ob, long)
void Menus::ShowBufferMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);
@ -1603,7 +1587,7 @@ char const *doc_files [] = {"Intro", "Tutorial",
void Menus::ShowHelpMenu(FL_OBJECT * ob, long)
{
Menus *men = (Menus*) ob->u_ldata;
Menus * men = static_cast<Menus*>(ob->u_vdata);
// set the pseudo menu-button
fl_set_object_boxtype(ob, FL_UP_BOX);

File diff suppressed because it is too large Load Diff

View File

@ -29,3 +29,4 @@ libsupport_a_SOURCES = \
syscontr.h \
syssingleton.C \
textutils.h

View File

@ -604,7 +604,7 @@ bool AbsolutePath(string const & path)
#ifndef __EMX__
return (!path.empty() && path[0] == '/');
#else
return (!path.empty() && (path[0]=='/' || (isalpha((unsigned char) path[0]) && path.length()>1 && path[1]==':')));
return (!path.empty() && (path[0]=='/' || (isalpha(static_cast<unsigned char>(path[0])) && path.length()>1 && path[1]==':')));
#endif
}
@ -751,10 +751,10 @@ string ReplaceEnvironmentPath(string const & path)
// Check for variable names
// Situation ${} is detected as "No Environmentvariable"
const char * cp1 = res1_contents+1;
bool result = isalpha((unsigned char) *cp1) || (*cp1 == UnderscoreChar);
bool result = isalpha(*cp1) || (*cp1 == UnderscoreChar);
++cp1;
while (*cp1 && result) {
result = isalnum((unsigned char) *cp1) ||
result = isalnum(*cp1) ||
(*cp1 == UnderscoreChar);
++cp1;
}

View File

@ -1200,6 +1200,7 @@ lyxstring::size_type lyxstring::find_last_not_of(value_type const * ptr,
if (!n) return npos;
size_type ii = min(rep->sz - 1, i);
for (int t = ii; t >= 0; --t) {
if(memchr(ptr, rep->s[t], n) == 0) return t;
}
@ -1675,10 +1676,10 @@ istream & getline(istream & is, lyxstring & s,
lyxstring::value_type delim)
{
// very bad solution
char tmp;
char tmp = 0;
s.erase();
while(is) {
is >> tmp;
is.get(tmp);
if (tmp != delim) {
s += tmp;
} else {

View File

@ -17,7 +17,7 @@
#include "support/lstrings.h"
Systemcalls::Systemcalls() {
pid = (pid_t) 0; // No child yet
pid = 0; // No child yet
}
Systemcalls::Systemcalls(Starttype how, string const & what, Callbackfct cback)

View File

@ -845,9 +845,6 @@ void LyXTable::Write(FILE* file)
}
}
#ifdef WITH_WARNINGS
#warning Clean up this code in 0.13 (Jug)
#endif
void LyXTable::Read(FILE* file)
{
int version;
@ -873,14 +870,18 @@ void LyXTable::Read(FILE* file)
version = atoi(s.c_str()+8);
else
version = 1;
#ifdef WITH_WARNINGS
#warning Insert a error message window here that this format is not supported anymore
#endif
if (version < 5) {
fprintf(stderr,"Tabular format < 5 is not supported anymore\n"
"Get an older version of LyX (< 1.1.x) for conversion!\n");
return;
}
a=b=c=d=-1;
if (version > 2) {
fgets(vtmp,sizeof(vtmp),file);
sscanf(vtmp, "%d %d %d %d %d %d %d %d\n", &rows_arg, &columns_arg,
&is_long_table_arg, &rotate_arg, &a, &b, &c, &d);
} else
fscanf(file, "%d %d\n",
&rows_arg, &columns_arg);
Init(rows_arg, columns_arg);
SetLongTable(is_long_table_arg);
SetRotateTable(rotate_arg);
@ -921,25 +922,6 @@ void LyXTable::Read(FILE* file)
} else if (*stmp)
column_info[i].p_width = stmp;
}
if (version == 1){
for (i=0; i<rows;i++){
for (j=0;j<columns;j++){
fscanf(file, "%d %d\n", &a, &b);
cell_info[i][j].multicolumn = (char) a;
cell_info[i][j].alignment = (char) b;
}
}
} else if (version < 4) {
for (i=0; i<rows;i++){
for (j=0;j<columns;j++){
fscanf(file, "%d %d %d %d\n", &a, &b, &c, &d);
cell_info[i][j].multicolumn = (char) a;
cell_info[i][j].alignment = (char) b;
cell_info[i][j].top_line = (char) c;
cell_info[i][j].bottom_line = (char) d;
}
}
} else {
for (i=0; i<rows;i++){
for (j=0;j<columns;j++){
*stmp = 0;
@ -972,7 +954,6 @@ void LyXTable::Read(FILE* file)
cell_info[i][j].align_special = stmp;
}
}
}
set_row_column_number_info();
}
@ -1189,13 +1170,6 @@ int LyXTable::TexEndOfCell(string& file, int cell)
if (nvcell < numberofcells && (cell < GetNumberOfCells()-1) &&
!ShouldBeVeryLastCell(cell)) {
fcell = nvcell;
#if 0
// Now jump all ContRows
while (IsContRow(fcell))
fcell++;
while (!IsFirstCell(fcell))
fcell--;
#endif
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (TopLine(fcell+i))
tmp++;
@ -1469,46 +1443,6 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
//int tmp; // tmp2; // unused
int nvcell; // fcell; // unused
if (ShouldBeVeryLastCell(cell)) {
#if 0
// the very end at the very beginning
if (Linebreaks(cell))
file += "\\smallskip{}}";
if (IsMultiColumn(cell))
file += '}';
if (RotateCell(cell)) {
file += "\n\\end{sideways}";
ret++;
}
file += "\\\\\n";
ret++;
tmp = 0;
fcell = cell;
while (!IsFirstCell(fcell))fcell--;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (BottomLine(fcell+i))
tmp++;
}
if (tmp == NumberOfCellsInRow(fcell)){
file += "\\hline ";
} else {
tmp = 0;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (BottomLine(fcell+i)){
file += "\\cline{";
file += column_of_cell(fcell+i)+1;
file += '-';
file += right_column_of_cell(fcell+i)+1;
file += "} ";
tmp = 1;
}
}
}
if (tmp){
file += '\n';
ret++;
}
#endif
addNewlineAndDepth(file,--depth);
file += "</ENTRY>";
addNewlineAndDepth(file,--depth);
@ -1521,12 +1455,6 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
else
file += "</TGROUP>";
addNewlineAndDepth(file,--depth);
#if 0
if (rotate) {
file += "\n\\end{sideways}";
ret++;
}
#endif
ret += 4;
} else {
nvcell = NextVirtualCell(cell+1);
@ -1566,39 +1494,6 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
file += '|';
#endif
}
#if 0
tmp = 0;
if (GetNumberOfCells()) {
fcell = 0;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (TopLine(fcell+i))
tmp++;
}
if (tmp == NumberOfCellsInRow(fcell)){
file += "\\hline ";
} else {
tmp = 0;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (TopLine(fcell+i)){
file += "\\cline{";
file += column_of_cell(fcell+i)+1;
file += '-';
file += right_column_of_cell(fcell+i)+1;
file += "} ";
tmp = 1;
}
}
}
if (tmp){
file += '\n';
ret++;
}
}
if (RotateCell(0)) {
file += "\\begin{sideways}\n";
ret++;
}
#endif
file += "<TBODY>";
addNewlineAndDepth(file,++depth);
file += "<ROW>";
@ -1615,18 +1510,6 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
addNewlineAndDepth(file,++depth);
ret += 3;
} else {
#if 0
// usual cells
if (Linebreaks(cell))
file += "\\smallskip{}}";
if (IsMultiColumn(cell)){
file += '}';
}
if (RotateCell(cell)) {
file += "\n\\end{sideways}";
ret++;
}
#endif
if (IsLastCell(cell)) {
addNewlineAndDepth(file,--depth);
file += "</ENTRY>";
@ -1649,157 +1532,6 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
file += ">";
addNewlineAndDepth(file,++depth);
ret += 4;
#if 0
int row = row_of_cell(cell);
string hline1,hline2;
bool print_hline = true;
bool pr_top_hline,flag1,flag2;
flag1 = IsLongTable() &&
((row == endhead) || (row == endfirsthead) ||
(row == endfoot) || (row == endlastfoot));
row++;
flag2 = IsLongTable() &&
((row <= endhead) || (row <= endfirsthead) ||
(row <= endfoot) || (row <= endlastfoot));
row--;
// print the bottom hline only if (otherwise it is doubled):
// - is no LongTable
// - there IS a first-header
// - the next row is no special header/footer
// & this row is no special header/footer
// - the next row is a special header/footer
// & this row is a special header/footer
pr_top_hline = (flag1 && flag2) || (!flag1 && !flag2) ||
(endfirsthead == endhead);
file += "\\\\\n";
ret++;
tmp = 0;
fcell = cell;
while (!IsFirstCell(fcell))
fcell--;
for (i=0; i < NumberOfCellsInRow(cell); i++){
if (BottomLine(fcell+i))
tmp++;
}
if (tmp == NumberOfCellsInRow(cell)){
file += "\\hline ";
hline1 = "\\hline ";
} else {
tmp = 0;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (BottomLine(fcell+i)){
file += "\\cline{";
file += column_of_cell(fcell+i)+1;
file += '-';
file += right_column_of_cell(fcell+i)+1;
file += "} ";
hline1 += "\\cline{";
hline1 += column_of_cell(fcell+i)+1;
hline1 += '-';
hline1 += right_column_of_cell(fcell+i)+1;
hline1 += "} ";
tmp = 1;
}
}
}
if (tmp){
file += '\n';
ret++;
}
if (IsLongTable() && (row == endfoot)) {
file += "\\endfoot\n";
ret++;
print_hline = false; // no double line below footer
}
if (IsLongTable() && (row == endlastfoot)) {
file += "\\endlastfoot\n";
ret++;
print_hline = false; // no double line below footer
}
if (IsLongTable() && row_info[row].newpage) {
file += "\\newpage\n";
ret++;
print_hline = false; // no line below a \\newpage-command
}
tmp = 0;
if (nvcell < numberofcells && (cell < GetNumberOfCells()-1) &&
!ShouldBeVeryLastCell(cell)) {
fcell = nvcell;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (TopLine(fcell+i))
tmp++;
}
if (tmp == NumberOfCellsInRow(fcell)){
if (print_hline)
file += "\\hline ";
hline2 = "\\hline ";
}
else {
tmp = 0;
for (i=0; i < NumberOfCellsInRow(fcell); i++){
if (TopLine(fcell+i)){
if (print_hline) {
file += "\\cline{";
file += column_of_cell(fcell+i)+1;
file += '-';
file += right_column_of_cell(fcell+i)+1;
file += "} ";
}
hline2 += "\\cline{";
hline2 += column_of_cell(fcell+i)+1;
hline2 += '-';
hline2 += right_column_of_cell(fcell+i)+1;
hline2 += "} ";
tmp = 1;
}
}
}
if (tmp && print_hline){
file += '\n';
ret++;
}
}
// the order here is important as if one defines two
// or more things in one line only the first entry is
// displayed the other are set to an empty-row. This
// is important if I have a footer and want that the
// lastfooter is NOT displayed!!!
bool sflag2 = (row == endhead) || (row == endfirsthead) ||
(row == endfoot) || (row == endlastfoot);
row--;
// sflag2 = IsLongTable() && (row >= 0) &&
// (sflag2 || (row == endhead) || (row == endfirsthead));
row += 2;
bool sflag1 = IsLongTable() && (row != endhead) &&
(row != endfirsthead) &&
((row == endfoot) || (row == endlastfoot));
row--;
if (IsLongTable() && (row == endhead)) {
file += "\\endhead\n";
ret++;
}
if (IsLongTable() && (row == endfirsthead)) {
file += "\\endfirsthead\n";
ret++;
}
if (sflag1) { // add the \hline for next foot row
if (!hline1.empty()) {
file += hline1 + '\n';
ret++;
}
}
// add the \hline for the first row
if (pr_top_hline && sflag2) {
if (!hline2.empty()) {
file += hline2 + '\n';
ret++;
}
}
if (nvcell < numberofcells && RotateCell(nvcell)) {
file += "\\begin{sideways}\n";
ret++;
}
#endif
} else {
addNewlineAndDepth(file,--depth);
file += "</ENTRY>";
@ -1818,54 +1550,8 @@ int LyXTable::DocBookEndOfCell(string& file, int cell, int &depth)
file += ">";
addNewlineAndDepth(file,++depth);
ret += 3;
#if 0
if (nvcell < numberofcells && RotateCell(nvcell)) {
file += "\\begin{sideways}\n";
ret++;
}
#endif
}
}
#if 0
if (nvcell < numberofcells && IsMultiColumn(nvcell)) {
file += "\\multicolumn{";
file += cells_in_multicolumn(nvcell);
file += "}{";
if (!cellinfo_of_cell(cell+1)->align_special.empty()) {
file += cellinfo_of_cell(cell+1)->align_special;
file += "}{";
} else {
if (LeftLine(nvcell))
file += '|';
if (!GetPWidth(nvcell).empty()) {
file += "p{";
file += GetPWidth(nvcell);
file += '}';
} else {
switch (GetAlignment(nvcell)) {
case LYX_ALIGN_LEFT: file += 'l'; break;
case LYX_ALIGN_RIGHT: file += 'r'; break;
default: file += 'c'; break;
}
}
if (RightLine(nvcell))
file += '|';
//if (column_of_cell(cell+2)!=0 && LeftLine(cell+2))
if (((nvcell+1) < numberofcells) &&
(NextVirtualCell(nvcell+1) < numberofcells) &&
(column_of_cell(NextVirtualCell(nvcell+1))!=0) &&
LeftLine(NextVirtualCell(nvcell+1)))
file += '|';
file += "}{";
}
}
if (nvcell < numberofcells && Linebreaks(nvcell)) {
// !column_info[column_of_cell(nvcell)].p_width.empty()) {
file += "\\parbox{";
file += GetPWidth(nvcell);
file += "}{\\smallskip{}";
}
#endif
}
return ret;
}

View File

@ -4,13 +4,13 @@
*
* LyX, The Document Processor
*
* Copyright (C) 1995 Matthias Ettrich
* Copyright (C) 1995-1998 The LyX Team
* Copyright 1995 Matthias Ettrich
* Copyright 1995-1998 The LyX Team
*
* ====================================================== */
#ifndef _TEXROW_H
#define _TEXROW_H
#ifndef TEXROW_H
#define TEXROW_H
#ifdef __GNUG__
#pragma interface

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -183,7 +183,7 @@ void Trans::AddDeadkey(tex_accent accent,const string& keys,
for(string::size_type i = 0; i < keys.length(); ++i) {
char * temp;
temp = keymap_[(unsigned char)keys[i]] = new char[2];
temp = keymap_[keys[i]] = new char[2];
temp[0] = 0; temp[1] = accent;
}
kmod_list_[accent]->exception_list=0;
@ -294,7 +294,7 @@ int Trans::Load(LyXLex &lex)
if (lex.next(true)) {
char const *t = lex.text();
string_to = strcpy(new char[strlen(t)+1],t);
keymap_[(unsigned char)key_from]=string_to;
keymap_[key_from]=string_to;
if (lyxerr.debugging(Debug::KBMAP))
lyxerr << "\t`" << string_to << "'"
<< endl;

View File

@ -97,7 +97,7 @@ private:
char* Trans::Match(char c)
{
return keymap_[(unsigned char)c];
return keymap_[c];
}
#endif

View File

@ -57,7 +57,7 @@ static LyXLength::UNIT unit[4] = { LyXLength::UNIT_NONE,
//static int number_index, unit_index;
int number_index, unit_index;
static inline void advance (string & data, unsigned int n)
static inline void lyx_advance (string & data, unsigned int n)
{
data.erase(0, n);
}
@ -73,19 +73,19 @@ static char nextToken (string & data)
if (data.empty())
return '\0';
else if (data[0] == '+') {
advance (data, 1);
lyx_advance (data, 1);
return '+';
}
else if (prefixIs(data, "plus")) {
advance (data, 4);
lyx_advance (data, 4);
return '+';
}
else if (data[0] == '-') {
advance (data, 1);
lyx_advance (data, 1);
return '-';
}
else if (prefixIs(data, "minus")) {
advance (data, 5);
lyx_advance (data, 5);
return '-';
}
else {
@ -97,7 +97,7 @@ static char nextToken (string & data)
string buffer = data.substr(0, i + 1);
if (sscanf (buffer.c_str(),
"%f", &number[number_index]) == 1) {
advance (data, i + 1);
lyx_advance (data, i + 1);
++number_index;
return 'n';
} else
@ -108,7 +108,7 @@ static char nextToken (string & data)
string buffer = data.substr(0, i + 1);
unit[unit_index] = unitFromString (buffer);
if (unit[unit_index] != LyXLength::UNIT_NONE) {
advance (data, i + 1);
lyx_advance (data, i + 1);
++unit_index;
return 'u';
} else
@ -165,11 +165,11 @@ bool isValidGlueLength (string const & data, LyXGlueLength * result)
short val_sign = 1; // positive as default
switch(buffer[0]) {
case '-':
advance(buffer, 1);
lyx_advance(buffer, 1);
val_sign = -1;
break;
case '+':
advance(buffer, 1);
lyx_advance(buffer, 1);
// fall through
default:
// no action
@ -229,11 +229,11 @@ bool isValidLength(string const & data, LyXLength * result)
short val_sign = 1; // positive as default
switch(buffer[0]) {
case '-':
advance(buffer, 1);
lyx_advance(buffer, 1);
val_sign = -1;
break;
case '+':
advance(buffer, 1);
lyx_advance(buffer, 1);
// fall through
default:
// no action

View File

@ -17,6 +17,7 @@
#endif
#include <cstdio>
#include "LString.h"
/// LyXLength Class
class LyXLength {
@ -210,5 +211,3 @@ private:
};
#endif