[Kst] [Bug 123200] ability to load .kst files from network
George Staikos
staikos at kde.org
Tue Apr 11 02:49:04 CEST 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=123200
staikos kde org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From staikos kde org 2006-04-11 02:49 -------
SVN commit 528444 by staikos:
Make Kst files KIO enabled. Data references must be URLs else it will try local
files.
FEATURE: 123200
M +10 -6 kst.cpp
M +50 -9 kstdoc.cpp
--- trunk/extragear/graphics/kst/src/libkstapp/kst.cpp #528443:528444
@ -1020,7 +1020,12 @
KURL url;
bool rc = false;
- url.setPath(in_filename);
+ if (QFile::exists(in_filename) && QFileInfo(in_filename).isRelative()) {
+ url.setPath(in_filename);
+ } else {
+ url = KURL::fromPathOrURL(in_filename);
+ }
+
slotUpdateStatusMsg(i18n("Opening file..."));
if (doc->openDocument(url, o_file, o_n, o_f, o_s, o_ave)) {
@ -1162,14 +1167,13 @
slotUpdateStatusMsg(i18n("Opening file..."));
if (doc->saveModified(false)) {
- QString fileToOpen = KFileDialog::getOpenFileName("::<kstfiledir>",
- i18n("*.kst|Kst Plot File (*.kst)\n*|All Files"), this, i18n("Open File"));
- if (!fileToOpen.isEmpty()) {
+ KURL url = KFileDialog::getOpenURL("::<kstfiledir>", i18n("*.kst|Kst Plot File (*.kst)\n*|All Files"), this, i18n("Open File"));
+ if (!url.isEmpty()) {
doc->deleteContents();
doc->setModified(false);
- if (doc->openDocument(fileToOpen)) {
+ if (doc->openDocument(url)) {
setCaption(doc->title());
- addRecentFile(fileToOpen);
+ addRecentFile(url);
}
}
}
--- trunk/extragear/graphics/kst/src/libkstapp/kstdoc.cpp #528443:528444
@ -36,6 +36,7 @
#include "ksdebug.h"
#include <kdeversion.h>
#include <kfiledialog.h>
+#include <kio/netaccess.h>
#include <kmessagebox.h>
#include <kmdimainfrm.h>
#include <kprogress.h>
@ -176,11 +177,36 @
bool KstDoc::openDocument(const KURL& url, const QString& o_file,
int o_n, int o_f, int o_s, bool o_ave) {
static bool opening = false;
+ bool cleanupFile = false;
if (opening) {
return false;
}
+ QString tmpFile;
+ if (url.isLocalFile() || url.protocol().isEmpty()) {
+ tmpFile = url.path();
+ } else {
+#if KDE_VERSION >= KDE_MAKE_VERSION(3,3,0)
+ if (!KIO::NetAccess::exists(url, true, KstApp::inst())) {
+#else
+ if (!KIO::NetAccess::exists(url, true)) {
+#endif
+ KMessageBox::sorry(KstApp::inst(), i18n("%1: There is no file with that name to open.").arg(url.prettyURL()));
+ return false;
+ }
+
+#if KDE_VERSION >= KDE_MAKE_VERSION(3,3,0)
+ if (!KIO::NetAccess::download(url, tmpFile, KstApp::inst())) {
+#else
+ if (!KIO::NetAccess::download(url, tmpFile)) {
+#endif
+ KMessageBox::sorry(KstApp::inst(), i18n("%1: There is no file with that name to open.").arg(url.prettyURL()));
+ return false;
+ }
+ cleanupFile = true;
+ }
+
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
opening = true;
@ -188,9 +214,9 @
KstApp::inst()->setPaused(true);
_updating = true; // block update thread from sending events until we're done
- QFile f(url.path());
+ QFile f(tmpFile);
if (!f.exists()) {
- KMessageBox::sorry(KstApp::inst(), i18n("%1: There is no file with that name to open.").arg(url.path()));
+ KMessageBox::sorry(KstApp::inst(), i18n("%1: There is no file with that name to open.").arg(url.prettyURL()));
opening = false;
_updating = false;
KstApp::inst()->setPaused(false);
@ -199,29 +225,35 @
}
_title = url.fileName(false);
- _absFilePath = url.path();
- _lastFilePath = url.path();
+ _absFilePath = url.url();
+ _lastFilePath = url.url();
if (_title.isEmpty()) {
_title = _absFilePath;
}
QDomDocument doc(_title);
if (!f.open(IO_ReadOnly)) {
- KMessageBox::sorry(KstApp::inst(), i18n("%1: File exists, but kst could not open it.").arg(url.path()));
+ KMessageBox::sorry(KstApp::inst(), i18n("%1: File exists, but kst could not open it.").arg(url.prettyURL()));
opening = false;
_updating = false;
KstApp::inst()->setPaused(false);
QApplication::restoreOverrideCursor();
+ if (cleanupFile) {
+ KIO::NetAccess::removeTempFile(tmpFile);
+ }
return false;
}
if (!doc.setContent(&f)) {
- KMessageBox::sorry(KstApp::inst(), i18n("%1: Not a valid kst plot specification file.").arg(url.path()));
+ KMessageBox::sorry(KstApp::inst(), i18n("%1: Not a valid kst plot specification file.").arg(url.prettyURL()));
f.close();
opening = false;
_updating = false;
KstApp::inst()->setPaused(false);
QApplication::restoreOverrideCursor();
+ if (cleanupFile) {
+ KIO::NetAccess::removeTempFile(tmpFile);
+ }
return false;
}
@ -238,24 +270,30 @
QString readingDocument = i18n("Reading Kst file");
if (docElem.tagName() != "kstdoc") {
- QString err = i18n("Error opening file %1. Does not appear to be a Kst file.").arg(url.path());
+ QString err = i18n("Error opening file %1. Does not appear to be a Kst file.").arg(url.prettyURL());
KstDebug::self()->log(err, KstDebug::Error);
KMessageBox::sorry(KstApp::inst(), err);
opening = false;
_updating = false;
KstApp::inst()->setPaused(false);
QApplication::restoreOverrideCursor();
+ if (cleanupFile) {
+ KIO::NetAccess::removeTempFile(tmpFile);
+ }
return false;
}
if (docElem.attribute("version") != "1.2" && !docElem.attribute("version").isEmpty()) {
- QString err = i18n("Error opening file %2. Version %1 is too new. Update Kst or fix the Kst file.").arg(docElem.attribute("version")).arg(url.path());
+ QString err = i18n("Error opening file %2. Version %1 is too new. Update Kst or fix the Kst file.").arg(docElem.attribute("version")).arg(url.prettyURL());
KstDebug::self()->log(err, KstDebug::Error);
KMessageBox::sorry(KstApp::inst(), err);
opening = false;
_updating = false;
KstApp::inst()->setPaused(false);
QApplication::restoreOverrideCursor();
+ if (cleanupFile) {
+ KIO::NetAccess::removeTempFile(tmpFile);
+ }
return false;
}
@ -420,7 +458,7 @
app->closeWindow(toDelete);
}
} else {
- KstDebug::self()->log(i18n("Unsupported element '%1' in file %2.").arg(e.tagName()).arg(url.path()), KstDebug::Warning);
+ KstDebug::self()->log(i18n("Unsupported element '%1' in file %2.").arg(e.tagName()).arg(url.prettyURL()), KstDebug::Warning);
}
}
handled++;
@ -543,6 +581,9 @
KstApp::inst()->setPaused(false);
QApplication::restoreOverrideCursor();
+ if (cleanupFile) {
+ KIO::NetAccess::removeTempFile(tmpFile);
+ }
return true;
}
More information about the Kst
mailing list