communi / libcommuni Goto Github PK
View Code? Open in Web Editor NEWA cross-platform IRC framework for Qt
Home Page: https://communi.github.io
License: BSD 3-Clause "New" or "Revised" License
A cross-platform IRC framework for Qt
Home Page: https://communi.github.io
License: BSD 3-Clause "New" or "Revised" License
The repository now lives at http://github.com/communi/libcommuni.
Allow specifying flood rate/burst like in ZNC, and queueing messages to front.
The QDebug stream operators need to be checked. They are quite broken for at least IrcCommand.
The biggest remaining issue using IrcUserModel in QML is the lack of sorting support.
Hello,
Currently the ssl certificate aren't verified. In my opinion you should change this behaviour because only if the peer certificate is verified the connection can be secure. As a first step, the sslsockets verifymode should be changed to QSslSocket::VerifyPeer
.
Ideally there should also be a way to specify ca certificates and fingerprints on a per server basis.
Add
The static IrcCommand::createXxx() convenience API might work fine in C++, but it's clumsy in QML given that one has to create a command instance to be able to call the methods. Perhaps a QML singleton (has to be a different name than IrcCommand to avoid clashes) or extend the Irc API in QML?
var cmd = IrcCommand.part(channel, reason) // clashes with the IrcCommand QML type name
var cmd = Irc.partCommand(channel, reason)
The latter kinda matches with the Qt QML "namespace" but then needs a QML specific documentation...
I always have the same error when I try to launch QML and Quick examples :
module "Communi" plugin "communiplugin" not found
I checked and the lib is well installed in the qml directory of Qt installation, but it seems the compiler can't find it. I tested on OSX and Win 8.1 and it's the same. Did I miss something ?
The delay must be configurable.
Former IrcSessionInfo getters have been turned to properties in IrcNetwork. They are still documented as mere getters - document then properly as properties.
After the following events, tijensse was still shown in the user list.
[12:08:51] ! tjenssen (quassel@nat/digia/x-hoeedoqzsfhbayhr) joined #qt-tizen
[12:31:14] ! tjenssen changed nick to tijensse
[14:00:58] ! jstaniek_work (d943c9a2@gateway/web/freenode/ip.217.67.201.162) has quit (Ping timeout: 250 seconds)
[14:27:42] ! jstaniek_work (d943c9a2@gateway/web/freenode/ip.217.67.201.162) joined #qt-tizen
[14:40:34] <jstaniek_work> hello jpnurmi RzR tijensse
[14:41:05] ! tijensse (quassel@nat/digia/x-hoeedoqzsfhbayhr) parted #qt-tizen ("http://quassel-irc.org - Chat comfortably. Anywhere.")
After building and installing Communi using:-
$ qmake
$ make
$ sudo make install
It's not detecting, while compiling spectrum2. Although it has been compiled already.
In order to achieve maximal compatibility, they must NOT introduce new wrapper types of any sort, but merely register the existing C++ types.
For day-to-day use of IRC I just cannot survive without function /whois
command.
As discussed in #communi, it would be convenient for users whose nickname is part of a word / other nick to enable case-sensitivity for alerts. Checking word boundaries is another way to handle it.
Wrong section.
Currently only the PLAIN mechanism is supported. We want more! :)
Make the libcommuni version number available to qmake .pro files. Inspired by QT_VERSION_XXX:
I have a weird bug trying to use it on Qt Windows. On linux, everything works fine, but on Windows I get the following 16 (and almost exact) errors.
Screen of the compilation output:
http://imgur.com/ZUIhDGx
Code pastes:
.pro http://pastebin.com/sEN8DipD
Since in my main code I don't use the library (for now, but it's just a compilation error), I don't think it's important to paste it.
I use the gitter IRC server and it seems not to remember my joined channels. An option to mark some channels to automatically join on start up would be nice. Thanks for the great tool.
Any GUI client that wants to support multiple networks wants to have all buffers listed in the same view. It's a bit tedious to proxy/join multiple IrcBufferModel instances (one per each connection). It would be great if a single IrcBufferModel could simply support multiple connections so it could be used in item views as is.
PS. A joined list is more important use case to start with, but perhaps also make it possible to choose between a list vs. tree structure...?
Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged)
Q_ENUMS(DataRole SortMode)
enum SortMode { Unsorted, Activity, Alphabetical };
Thank you for making this project available! We are using it in our MUD client Mudlet but we are encountering a little bit of confusion in the Qt IDE where it uses the name of the qmake .pro
/.pri
project files as the actual name of the project/sub-project.
Currently our main project file as well as a couple of sub-projects are all being displayed as "src" - whilst we are only using the core of your work so we also have "core" as a sub-project in ours - would you consider renaming that to perhaps be "communi-core" - I realise that the parent/master/main project file for libcommuni is called libcommuni.pro
and beneath that you have src.pro
/src.pri
and then beneath that core.pri
/core.pro
but I note you previously called the middle level ones communi
not src
and I was hoping that you might consider some renames so that all the qmake project files contain a "communi" substring and so any one using your project as part of theirs can be clear in Qt Creator which bits are from Communi and which are from something else. 😄
It must be possible to query when all the information has been filled up (capabilities set and RPL_ISUPPORT received).
I need libcommuni for spectrum2 on a headless server. Is there anyway to not drag in every dependency up to and including mesa and wayland?
cd qmlbot/ && ( test -e Makefile || /root/mxe_stable/usr/bin/i686-w64-mingw32.static-qmake-qt5 /root/libcommuni-3.5.0/examples/qmlbot/qmlbot.pro -o Makefile ) && make -f Makefile
make[2]: Wejście do katalogu '/root/libcommuni-3.5.0/examples/qmlbot'
make -f Makefile.Release
make[3]: Wejście do katalogu '/root/libcommuni-3.5.0/examples/qmlbot'
compiling main.cpp
compiling /root/libcommuni-3.5.0/examples/qmlbot/qmlbot_qml_plugin_import.cpp
compiling /root/libcommuni-3.5.0/examples/qmlbot/qmlbot_plugin_import.cpp
rcc qmlbot.qrc
compiling release/qrc_qmlbot.cpp
linking release/qmlbot.exe
release/main.o:main.cpp:(.text.startup+0x4): undefined reference to `qt_static_plugin_CommuniPlugin()'
collect2: error: ld returned 1 exit status
Makefile.Release:66: polecenia dla obiektu 'release/qmlbot.exe' nie powiodły się
make[3]: *** [release/qmlbot.exe] Błąd 1
make[3]: Opuszczenie katalogu '/root/libcommuni-3.5.0/examples/qmlbot'
Makefile:34: polecenia dla obiektu 'release' nie powiodły się
make[2]: *** [release] Błąd 2
make[2]: Opuszczenie katalogu '/root/libcommuni-3.5.0/examples/qmlbot'
Makefile:117: polecenia dla obiektu 'sub-qmlbot-make_first' nie powiodły się
make[1]: *** [sub-qmlbot-make_first] Błąd 2
make[1]: Opuszczenie katalogu '/root/libcommuni-3.5.0/examples'
Makefile:126: polecenia dla obiektu 'sub-examples-make_first-ordered' nie powiodły się
make: *** [sub-examples-make_first-ordered] Błąd 2
root@vmpredator:~/libcommuni-3.5.0#
The current SASL implementation requires an SSL connection. Do not depend on SSL, but rather on the "sasl" capability being acked. Since this means a change in the login sequence, make sure it still works on servers (with and without passwd) that do not handle capabilities!
Generate plugins.qmltypes with qmlplugindump -notrelocatable & add to qmldir:
typeinfo plugins.qmltypes
This ensures that Qt Creator can generate perfect auto-completion.
...
[13:55:55] <qt_gerrit> [www/doctools/master] doc: Adding online header and footer. from jerome.pasion reviewed by jerome.pasion: C: 0 S: 0 - https://codereview.qt-project.org/69794
[15:46:10] <jpnurmi> foo...http://www.fi
[21:04:06] [communi] communi-sailfish/master 59197cc J-P Nurmi: Use Qt.application.name/version in AboutDialog and as part/quit reason
[19:58:52] <Venemo> wwwwait...
...
This should've been deprecated in 1.x already, but was missed in the 2.x cleanup...
The "session" term was inherited from libircclient back in the times when libircclient-qt v0.1 was based on the C-library. The two haven't had anything to do with each other for years, so here comes a proposal for more intuitive names:
I always see events like "a joins #b" or "c sets mode +v b". I tried the following: I disabled show events in the settings and I enabled them and played with the user amount but no combination let me suppress the events.
Is it possible to suppress all events and if yes how is it possible?
Are there any plans on creating a qpm (https://github.com/Cutehacks/qpm) package out of this project?
Split the monolithic library to smaller parts:
See also https://github.com/roop/qblowfish.
Examples and Tests don't compile with ICU.
When I do use Uchardet, it works.
compiling debug/moc_ircbot.cpp
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/minimal/../../lib/libIrcCore.a(ircmessagedecoder_icu.o): undefined reference to symbol 'ucsdet_setText'
/usr/lib64/libicui18n.so.60: error adding symbols: DSO missing from command line
collect2: Fehler: ld gab 1 als Ende-Status zurück
make[2]: *** [Makefile:68: minimal] Fehler 1
make[2]: Verzeichnis „/var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/minimal“ wird verlassen
make[1]: *** [Makefile:99: sub-minimal-make_first] Fehler 2
make[1]: *** Es wird auf noch nicht beendete Prozesse gewartet....
compiling debug/moc_ircclient.cpp
linking bot
linking client
make[2]: Verzeichnis „/var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/qmlbot“ wird verlassen
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/bot/../../lib/libIrcCore.a(ircmessagedecoder_icu.o): undefined reference to symbol 'ucsdet_setText'
/usr/lib64/libicui18n.so.60: error adding symbols: DSO missing from command line
collect2: Fehler: ld gab 1 als Ende-Status zurück
make[2]: *** [Makefile:72: bot] Fehler 1
make[2]: Verzeichnis „/var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/bot“ wird verlassen
make[1]: *** [Makefile:49: sub-bot-make_first] Fehler 2
make[2]: Verzeichnis „/var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/quick“ wird verlassen
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/net-im/libcommuni-3.5.0/work/libcommuni-3.5.0/examples/client/../../lib/libIrcCore.a(ircmessagedecoder_icu.o): undefined reference to symbol 'ucsdet_setText'
/usr/lib64/libicui18n.so.60: error adding symbols: DSO missing from command line
Not sure why but IrcChannel::mode is always empty
Tested on trunk
Steps to reproduce:
Result: You will see 10 warnings like
libcommuniTest/build-libcommuniTest-Desktop_Qt_5_9_1_clang_64bit-Debug/Makefile:916: warning: overriding commands for target `moc_ircbuffer.cpp'
libcommuniTest/build-libcommuniTest-Desktop_Qt_5_9_1_clang_64bit-Debug/Makefile:858: warning: ignoring old commands for target `moc_ircbuffer.cpp'
Introduce a generic completer class that provides context aware nick & command completion. It should be possible to hook it up with IrcBufferModel, IrcUserModel & friends, and to use it with QLineEdit & QML TextInput.
List the qmlRegisterType commands etc. to make it trivial to get started with using Communi types in a QML app.
The signal approach is not compatible with QML and annoying to use even in C++.
It should be possible to pass qmake variables such as QMAKE_CXXFLAGS and QMAKE_LFLAGS to the configure script.
qmake "QMAKE_CXXFLAGS+=-Wformat -Wformat-security -Werror=format-security" "QMAKE_LFLAGS+=-z relro -z now"
Support building libcommuni into a namespace, to support mixing for example Communi & Quassel code in order to implement QuasselProtocol (IrcProtocol).
Inspired by QObject::deleteLater(), consider something like this:
if (session->isConnected()) {
session->sendCommand(IrcCommand::createQuit(reason));
connect(session, SIGNAL(disconnected()), session, SLOT(deleteLater()));
connect(session, SIGNAL(socketError(QAbstractSocket::SocketError)), session, SLOT(deleteLater()));
QTimer::singleShot(timeout, session, SLOT(deleteLater()));
} else {
session->deleteLater();
}
Open questions:
IrcCore:
IrcModel:
IrcUtil:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.