You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/kxsldbg/kxsldbgpart/qxsldbgdoc.cpp

163 lines
3.7 KiB

/**
File : qxsldbgdoc.cpp
Author : Keith Isdale
Date : 19th April 2002
Description : The document to handle source and breakpoints
*/
#include "qxsldbgdoc.h"
#include <tdetexteditor/markinterface.h>
#include <tdetexteditor/editorchooser.h>
#include <tqfile.h>
#include <tqdir.h>
#include <tqtextstream.h>
#include <tqptrlist.h>
QXsldbgDoc::QXsldbgDoc(TQWidget *parent, KURL url)
: TQObject(0L, "QXsldbgDoc"), kDoc(0L),kView(0L), locked(false)
{
kDoc = KTextEditor::createDocument("libkatepart", 0L,"KTextEditor::Document");
connect(kDoc, TQ_SIGNAL(started(TDEIO::Job *)), this, TQ_SLOT(lockDoc()));
connect(kDoc, TQ_SIGNAL(completed()), this, TQ_SLOT(unlockDoc()));
if (kDoc){
kView = kDoc->createView(parent, "QXsldbgDocView");
KURL cleanUrl;
// convert paths relative to PWD into a absolute path
TQString relUrl = url.prettyURL();
if (!relUrl.contains(":/")){
if (!(relUrl.left(1) == "/"))
relUrl.prepend(TQDir::currentDirPath() + "/");
cleanUrl.setFileName(relUrl);
}else{
cleanUrl = url;
}
kDoc->openURL(cleanUrl);
}
}
QXsldbgDoc::~QXsldbgDoc()
{
if (kDoc){
if (kDoc->views().count() == 1){
kDoc->closeURL(false);
delete kDoc;
}
}
}
void QXsldbgDoc::slotResult( TDEIO::Job *job )
{
if ( job->error() != 0 ){
}else{
}
emit docChanged();
}
KURL QXsldbgDoc::url() const
{
if (kDoc)
return kDoc->url();
else
return KURL();
}
void QXsldbgDoc::refresh()
{
if (kDoc){
KURL lastUrl = kDoc->url();
kDoc->closeURL(false);
kDoc->openURL(lastUrl);
}
}
void QXsldbgDoc::enableBreakPoint(uint lineNumber, bool state)
{
if (locked)
return;
KTextEditor::MarkInterface *markIf = KTextEditor::markInterface(kDoc);
if (markIf){
if (state){
markIf->setMark(lineNumber, KTextEditor::MarkInterface::BreakpointActive);
}else{
markIf->removeMark(lineNumber, KTextEditor::MarkInterface::BreakpointDisabled);
}
}
}
void QXsldbgDoc::addBreakPoint(uint lineNumber, bool enabled)
{
if (locked)
return;
KTextEditor::MarkInterface *markIf = KTextEditor::markInterface(kDoc);
if (markIf){
if (enabled)
markIf->setMark(lineNumber, KTextEditor::MarkInterface::BreakpointActive);
else
markIf->setMark(lineNumber, KTextEditor::MarkInterface::BreakpointDisabled);
}
}
void QXsldbgDoc::deleteBreakPoint(uint lineNumber)
{
if (locked)
return;
KTextEditor::MarkInterface *markIf = KTextEditor::markInterface(kDoc);
if (markIf)
markIf->clearMark(lineNumber);
}
void QXsldbgDoc::clearMarks(bool allMarkTypes)
{
if (locked)
return;
KTextEditor::MarkInterface *markIf = KTextEditor::markInterface(kDoc);
if (markIf){
if (!allMarkTypes){
TQPtrList<KTextEditor::Mark> marks = markIf->marks();
while ( marks.current()) {
markIf->removeMark(marks.current()->line, KTextEditor::MarkInterface::Execution);
markIf->removeMark(marks.current()->line, KTextEditor::MarkInterface::BreakpointReached);
marks.next();
}
}else {
markIf->clearMarks();
}
}
}
void QXsldbgDoc::selectBreakPoint(uint lineNumber, bool reachedBreakPoint)
{
if (locked)
return;
clearMarks(false);
KTextEditor::MarkInterface *markIf = KTextEditor::markInterface(kDoc);
if (markIf){
if (reachedBreakPoint){
//markIf->setMark(lineNumber, KTextEditor::MarkInterface::BreakpointReached);
}else{
markIf->setMark(lineNumber, KTextEditor::MarkInterface::Execution);
}
}
}
void QXsldbgDoc::lockDoc()
{
locked = true;
}
void QXsldbgDoc::unlockDoc()
{
locked = false;
}
#include "qxsldbgdoc.moc"