From 056b56c1b49fa90ccb0868f0a696427e31d36e9e Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 11 Sep 2012 16:40:56 +0100 Subject: [PATCH] Fix handling XML files with unicode; Fix Catarina group remove --- src/carla.py | 6 +++--- src/catarina.py | 31 ++++++++++++++++++------------- src/patchcanvas.py | 4 ++-- src/shared.py | 4 ++++ src/shared_carla.py | 6 +++--- 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/carla.py b/src/carla.py index 758e8c8..28abaec 100755 --- a/src/carla.py +++ b/src/carla.py @@ -1544,7 +1544,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): content += "\n" try: - fd = open(self.m_project_filename, "w") + fd = uopen(self.m_project_filename, "w") fd.write(content) fd.close() except: @@ -1552,7 +1552,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): def load_project(self): try: - fd = open(self.m_project_filename, "r") + fd = uopen(self.m_project_filename, "r") projectRead = fd.read() fd.close() except: @@ -1563,7 +1563,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): return xml = QDomDocument() - xml.setContent(projectRead) + xml.setContent(projectRead.encode("utf-8")) xml_node = xml.documentElement() if xml_node.tagName() != "CARLA-PROJECT": diff --git a/src/catarina.py b/src/catarina.py index 021144c..7af4ca1 100755 --- a/src/catarina.py +++ b/src/catarina.py @@ -818,10 +818,10 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): content += " \n" for i in range(len(self.m_group_list)): group = self.m_group_list[i] - group_id = group[iGroupId] - group_name = group[iGroupName] + group_id = group[iGroupId] + group_name = group[iGroupName] group_split = group[iGroupSplit] - group_icon = group[iGroupIcon] + group_icon = group[iGroupIcon] group_pos_i = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_INPUT) group_pos_o = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_OUTPUT) content += " %s %i:%i:%i:%f:%f:%f:%f \n" % (i, group_name, group_id, group_split, group_icon, group_pos_o.x(), group_pos_o.y(), group_pos_i.x(), group_pos_i.y(), i) @@ -842,7 +842,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): content += "\n" try: - fd = open(path, "w") + fd = uopen(path, "w") fd.write(content) fd.close() except: @@ -855,7 +855,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): return try: - fd = open(path, "r") + fd = uopen(path, "r") readState = fd.read() fd.close() except: @@ -863,17 +863,17 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): self.m_save_path = None return - self.m_save_path = path - self.m_group_list = [] - self.m_group_list_pos = [] - self.m_port_list = [] + self.m_save_path = path + self.m_group_list = [] + self.m_group_list_pos = [] + self.m_port_list = [] self.m_connection_list = [] - self.m_last_group_id = 1 - self.m_last_port_id = 1 + self.m_last_group_id = 1 + self.m_last_port_id = 1 self.m_last_connection_id = 1 xml = QDomDocument() - xml.setContent(readState) + xml.setContent(readState.encode("utf-8")) content = xml.documentElement() if content.tagName() != "CATARINA": @@ -1033,7 +1033,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): if dialog.exec_(): group_id = dialog.ret_group_id - # Remove ports and connections of this group first + # Remove port connections first for port in self.m_port_list: if port[iPortGroup] == group_id: port_id = port[iPortId] @@ -1043,6 +1043,11 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW): patchcanvas.disconnectPorts(connection[iConnId]) self.m_connection_list.remove(connection) + # Remove ports + for port in self.m_port_list: + if port[iPortGroup] == group_id: + port_id = port[iPortId] + patchcanvas.removePort(port[iPortId]) self.m_port_list.remove(port) diff --git a/src/patchcanvas.py b/src/patchcanvas.py index 921956a..bf3f32e 100644 --- a/src/patchcanvas.py +++ b/src/patchcanvas.py @@ -740,8 +740,8 @@ def addPort(group_id, port_id, port_name, port_mode, port_type): CanvasItemFX(port_widget, True) port_dict = port_dict_t() - port_dict.group_id = group_id - port_dict.port_id = port_id + port_dict.group_id = group_id + port_dict.port_id = port_id port_dict.port_name = port_name port_dict.port_mode = port_mode port_dict.port_type = port_type diff --git a/src/shared.py b/src/shared.py index e469aaf..fa98b24 100644 --- a/src/shared.py +++ b/src/shared.py @@ -21,6 +21,7 @@ import os, sys from unicodedata import normalize from PyQt4.QtCore import qWarning, SIGNAL, SLOT from PyQt4.QtGui import QFileDialog, QIcon, QMessageBox +from codecs import open as codecopen # Set Platform if sys.platform == "darwin": @@ -221,6 +222,9 @@ def toList(value): else: return value +def uopen(filename, mode="r"): + return codecopen(filename, encoding="utf-8", mode=mode) + # QLineEdit and QPushButton combo def getAndSetPath(self_, currentPath, lineEdit): newPath = QFileDialog.getExistingDirectory(self_, self_.tr("Set Path"), currentPath, QFileDialog.ShowDirsOnly) diff --git a/src/shared_carla.py b/src/shared_carla.py index 91ca993..aa1dbf2 100644 --- a/src/shared_carla.py +++ b/src/shared_carla.py @@ -949,7 +949,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit): content += "\n" try: - fd = open(self.m_currentStateFilename, "w") + fd = uopen(self.m_currentStateFilename, "w") fd.write(content) fd.close() except: @@ -963,7 +963,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit): def loadState(self): try: - fd = open(self.m_currentStateFilename, "r") + fd = uopen(self.m_currentStateFilename, "r") stateRead = fd.read() fd.close() except: @@ -971,7 +971,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit): return xml = QDomDocument() - xml.setContent(stateRead) + xml.setContent(stateRead.encode("utf-8")) xmlNode = xml.documentElement()