import sys
import traceback
from pkg_resources import resource_filename
-import qt_compat
+# import qt_compat
import config
import weechat.protocol as protocol
from network import Network
from about import AboutDialog
from version import qweechat_version
-QtCore = qt_compat.import_module('QtCore')
-QtGui = qt_compat.import_module('QtGui')
+from PySide6.QtWidgets import (
+ QApplication, QLabel, QPushButton, QVBoxLayout, QWidget)
+from PySide6.QtCore import Qt, Slot
+from PySide6 import QtGui, QtWidgets, QtCore
+
+
+# QtCore = qt_compat.import_module('QtCore')
+# QtGui = qt_compat.import_module('QtGui')
NAME = 'QWeeChat'
AUTHOR = 'Sébastien Helleu'
DEBUG_NUM_LINES = 50
-class MainWindow(QtGui.QMainWindow):
+class MainWindow(QtWidgets.QMainWindow):
"""Main window."""
def __init__(self, *args):
- QtGui.QMainWindow.__init__(*(self,) + args)
+ super().__init__()
self.config = config.read()
# default buffer
self.buffers = [Buffer()]
- self.stacked_buffers = QtGui.QStackedWidget()
+ self.stacked_buffers = QtWidgets.QStackedWidget()
self.stacked_buffers.addWidget(self.buffers[0].widget)
# splitter with buffers + chat/input
- splitter = QtGui.QSplitter()
+ splitter = QtWidgets.QSplitter()
splitter.addWidget(self.list_buffers)
splitter.addWidget(self.stacked_buffers)
menu_window.addAction(self.actions['debug'])
menu_help = self.menu.addMenu('&Help')
menu_help.addAction(self.actions['about'])
- self.network_status = QtGui.QLabel()
+ self.network_status = QtWidgets.QLabel()
self.network_status.setFixedHeight(20)
self.network_status.setFixedWidth(200)
self.network_status.setContentsMargins(0, 0, 10, 0)
def _network_weechat_msg(self, message):
"""Called when a message is received from WeeChat."""
- self.debug_display(0, '==>',
- 'message (%d bytes):\n%s'
- % (len(message),
- protocol.hex_and_ascii(message, 20)),
- forcecolor='#008800')
+ # self.debug_display(0, '==>',
+ # 'message (%d bytes):\n%s'
+ # % (len(message),
+ # protocol.hex_and_ascii(message, 20)),
+ # forcecolor='#008800')
try:
proto = protocol.Protocol()
- message = proto.decode(str(message))
+ message = proto.decode(message.data())
if message.uncompressed:
self.debug_display(
0, '==>',
'message uncompressed (%d bytes):\n%s'
% (message.size_uncompressed,
protocol.hex_and_ascii(message.uncompressed, 20)),
- forcecolor='#008800')
+ forcecolor='#008800')
self.debug_display(0, '', 'Message: %s' % message)
self.parse_message(message)
- except: # noqa: E722
+ except Exception: # noqa: E722
print('Error while decoding message from WeeChat:\n%s'
% traceback.format_exc())
self.network.disconnect_weechat()
for obj in message.objects:
if obj.objtype != 'hda' or obj.value['path'][-1] != 'buffer':
continue
+ print('listbuffers object', obj.objtype, obj.value['path'])
self.list_buffers.clear()
while self.stacked_buffers.count() > 0:
buf = self.stacked_buffers.widget(0)
self.buffers = []
for item in obj.value['items']:
buf = self.create_buffer(item)
+ print(f'Creating buffer for {item}')
self.insert_buffer(len(self.buffers), buf)
self.list_buffers.setCurrentRow(0)
self.buffers[0].widget.input.setFocus()
def parse_message(self, message):
"""Parse a WeeChat message."""
+ print(f'message.msgid = {message.msgid}')
if message.msgid.startswith('debug'):
self.debug_display(0, '', '(debug message, ignored)')
elif message.msgid == 'listbuffers':
self.network.desync_weechat()
elif message.msgid == '_upgrade_ended':
self.network.sync_weechat()
+ else:
+ print(f"Unknown message with id {message.msgid}")
def create_buffer(self, item):
"""Create a new buffer."""
self.buffers.insert(index, buf)
self.list_buffers.insertItem(index, '%d. %s'
% (buf.data['number'],
- buf.data['full_name'].decode('utf-8')))
+ buf.data['full_name']))
self.stacked_buffers.insertWidget(index, buf.widget)
def remove_buffer(self, index):
if self.debug_dialog:
self.debug_dialog.close()
config.write(self.config)
- QtGui.QMainWindow.closeEvent(self, event)
+ QtWidgets.QMainWindow.closeEvent(self, event)
-app = QtGui.QApplication(sys.argv)
-app.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))
+app = QApplication(sys.argv)
+app.setStyle(QtWidgets.QStyleFactory.create('Cleanlooks'))
app.setWindowIcon(QtGui.QIcon(
- resource_filename(__name__, 'data/icons/weechat.png')))
+ resource_filename(__name__, 'data/icons/weechat.png')))
main = MainWindow()
+main.show()
sys.exit(app.exec_())