Bug 248184

Summary: kst2 should become a kde app
Product: [Applications] kst Reporter: Netterfield <netterfield>
Component: generalAssignee: kst
Status: RESOLVED INTENTIONAL    
Severity: wishlist CC: syntheticpp
Priority: NOR    
Version: 2.0.1   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Netterfield 2010-08-17 22:23:19 UTC
Version:           2.0.1 (using KDE 4.5.0) 
OS:                Linux

Currently, kst2 uses only qt4 libraries, but could benefit from becoming a true kde4 app.  The benefits are:
Support related:
  -hosting
  -release mechanisms
  -visibility
  -translations
  -possibly icons

Library related:
  -kio to allow remote (small and static) data sources and remote kst files
  -dbus, if we go that way for scripting
  -knewstuff if we ever do scripting.
  -improved widgets

Linux/KDE desktop integration:
  -icons
  -some theme settings not already integrated through qt.

To fix this we need to:
  update docs to kst2
  provide api docs for plugins and datasources
  pass krazy checker (eg, use kde widgets, etc).

The downside of going to KDE for kst is that many of the the improvements are of little or no relevance under Windows or Mac.  If fact, it could be argued that being KDE rather than pure QT could have downsides (like extra stuff running and harder installation).  This needs to be resolved.

Please reference this bug in all discussions of this topic.


Reproducible: Didn't try




OS: Linux
Comment 1 Netterfield 2010-08-17 22:57:04 UTC
Under 1.x, we polled the files (in the case of dirfiles, we polled a reference vector through the getdata library).  

Polling the file has the advantage of ~always working, though its latency is limited by the polling rate, and it can use up (an irrelevant amount of) extra resources.

We need to do this in kst2 as well, at least for remote files if there is a way to detect if the file is remote.
Comment 2 Netterfield 2010-08-17 23:13:47 UTC
Previous comment added to wrong bug... :-(
Comment 3 Peter Kümmel 2010-08-27 18:48:53 UTC
ATM I think there will always be also a Qt-only version of Kst. 
For KDE-ifing kst we first introduce cmake as build system, which
automatically checks for KDE's devel libs, if available KDE specific
code is enabled by a macro, otherwise we only build a Qt version.

This way have a KDE-kst which also builds on the KDE ports to Windows
and Mac. But having also the Qt-only version makes is much simpler to
deploy to Windows. For example see this blog:
http://blog.volker-lanz.de/2010/08/19/workout-on-windows/
Comment 4 Peter Kümmel 2010-10-04 20:25:57 UTC
krazy finds Qt classes which should be replaced by K* classes:
24. Check for Qt classes that should not be used [qclasses]... 52 issues found
	./widgets/filerequester.cpp: QLineEdit[KLineEdit],QFileDialog[KFileDialog],QFileDialog[KFileDialog] (3)
	./widgets/gradienteditor.cpp: QColorDialog[KColorDialog] (1)
	./widgets/labellineedit.cpp: QLineEdit[KLineEdit] (1)
	./widgets/datasourceselector.cpp: QLineEdit[KLineEdit] (1)
	./widgets/combobox.h: QComboBox[KComboBox] (1)
	./widgets/datasourceselectordialog.h: QFileDialog[KFileDialog] (1)
	./widgets/colorbutton.cpp: QColorDialog[KColorDialog] (1)
	./widgets/combobox.cpp: QLineEdit[KLineEdit] (1)
	./widgets/datasourceselectordialog.cpp: QMessageBox[KMessageBox],QFileDialog[KFileDialog] (2)
	./widgets/labellineedit.h: QLineEdit[KLineEdit] (1)
	./libkst/datasourcepluginmanager.cpp: QUrl[KUrl] (1)
	./libkstapp/pictureitem.cpp: QFileDialog[KFileDialog] (1)
	./libkstapp/dialog.cpp: QDialog[KDialog] (1)
	./libkstapp/filterfitdialog.cpp: QMessageBox[KMessageBox] (1)
	./libkstapp/svgitem.cpp: QFileDialog[KFileDialog] (1)
	./libkstapp/datadialog.cpp: QLineEdit[KLineEdit] (1)
	./libkstapp/logwidget.h: QTextBrowser[KTextBrowser] (1)
	./libkstapp/choosecolordialog.cpp: QDialog[KDialog],QLineEdit[KLineEdit],QLineEdit[KLineEdit] (3)
	./libkstapp/mainwindow.cpp: QMessageBox[KMessageBox],QFileDialog[KFileDialog],QMessageBox[KMessageBox],QFileDialog[KFileDialog],QMessageBox[KMessageBox] (5)
	./libkstapp/changefiledialog.cpp: QDialog[KDialog],QMessageBox[KMessageBox],QMessageBox[KMessageBox],QMessageBox[KMessageBox] (4)
	./libkstapp/differentiatecurvesdialog.cpp: QDialog[KDialog] (1)
	./libkstapp/dialogpage.cpp: QTabWidget[KTabWidget] (1)
	./libkstapp/basicplugindialog.cpp: QMessageBox[KMessageBox] (1)
	./libkstapp/viewitem.cpp: QInputDialog[KInputDialog] (1)
	./libkstapp/datamanager.cpp: QDialog[KDialog] (1)
	./libkstapp/viewvectordialog.cpp: QDialog[KDialog] (1)
	./libkstapp/viewmatrixdialog.cpp: QDialog[KDialog] (1)
	./libkstapp/markerstab.cpp: QMessageBox[KMessageBox],QMessageBox[KMessageBox] (2)
	./libkstapp/viewitemdialog.cpp: QLineEdit[KLineEdit] (1)
	./libkstapp/changedatasampledialog.cpp: QDialog[KDialog] (1)
	./libkstapp/view.cpp: QInputDialog[KInputDialog] (1)
	./libkstapp/tabwidget.cpp: QTabBar[KTabBar],QTabBar[KTabBar],QInputDialog[KInputDialog],QTabBar[KTabBar] (4)
	./libkstapp/debugdialog.cpp: QDialog[KDialog],QDialog[KDialog] (2)
	./libkstapp/tabwidget.h: QTabWidget[KTabWidget] (1)
	./libkstapp/datawizard.cpp: QMessageBox[KMessageBox] (1)
	Don't use Qt 4 classes that are deprecated. Additionally make sure
	to use the KDE version of some Qt GUI elements to provide a
	consistent look and feel for the KDE desktop. The KDE classes are
	not just adding functionalities to the Qt base class and are mostly
	not even based on the Qt class.
	<http://techbase.kde.org/Policies/API_to_Avoid> *Please* *refer*
	*to* *the* *API* *documentation* *for* *details* *before* *porting*
	*to* *the* *K* *classes*.
Comment 5 Netterfield 2010-10-05 00:26:57 UTC
I think the first step will be to port kst to CMAKE.  Then we can use CMAKE to decide on the qt vs kde widgets.

We also need to fix the i18n stuff.  The fake i18n we use is not actually source code compatible with the real KDE i18n, so this needs to be fixed (there are a bunch of Krazy2 errors related to us using i18n wrong, because we can't use it right, because we aren't actually using i18n.)
Comment 6 Netterfield 2014-06-17 15:25:59 UTC
We now use CMAKE, and have been accepted into extragear as a pure qt app.

No more changes need to be made.