Browse Source

Fix handling XML files with unicode; Fix Catarina group remove

tags/v0.9.0
falkTX 13 years ago
parent
commit
056b56c1b4
5 changed files with 30 additions and 21 deletions
  1. +3
    -3
      src/carla.py
  2. +18
    -13
      src/catarina.py
  3. +2
    -2
      src/patchcanvas.py
  4. +4
    -0
      src/shared.py
  5. +3
    -3
      src/shared_carla.py

+ 3
- 3
src/carla.py View File

@@ -1544,7 +1544,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
content += "</CARLA-PROJECT>\n" content += "</CARLA-PROJECT>\n"


try: try:
fd = open(self.m_project_filename, "w")
fd = uopen(self.m_project_filename, "w")
fd.write(content) fd.write(content)
fd.close() fd.close()
except: except:
@@ -1552,7 +1552,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):


def load_project(self): def load_project(self):
try: try:
fd = open(self.m_project_filename, "r")
fd = uopen(self.m_project_filename, "r")
projectRead = fd.read() projectRead = fd.read()
fd.close() fd.close()
except: except:
@@ -1563,7 +1563,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
return return


xml = QDomDocument() xml = QDomDocument()
xml.setContent(projectRead)
xml.setContent(projectRead.encode("utf-8"))


xml_node = xml.documentElement() xml_node = xml.documentElement()
if xml_node.tagName() != "CARLA-PROJECT": if xml_node.tagName() != "CARLA-PROJECT":


+ 18
- 13
src/catarina.py View File

@@ -818,10 +818,10 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
content += " <Groups>\n" content += " <Groups>\n"
for i in range(len(self.m_group_list)): for i in range(len(self.m_group_list)):
group = self.m_group_list[i] 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_split = group[iGroupSplit]
group_icon = group[iGroupIcon]
group_icon = group[iGroupIcon]
group_pos_i = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_INPUT) group_pos_i = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_INPUT)
group_pos_o = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_OUTPUT) group_pos_o = patchcanvas.getGroupPos(group_id, patchcanvas.PORT_MODE_OUTPUT)
content += " <g%i> <name>%s</name> <data>%i:%i:%i:%f:%f:%f:%f</data> </g%i>\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) content += " <g%i> <name>%s</name> <data>%i:%i:%i:%f:%f:%f:%f</data> </g%i>\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 += "</CATARINA>\n" content += "</CATARINA>\n"


try: try:
fd = open(path, "w")
fd = uopen(path, "w")
fd.write(content) fd.write(content)
fd.close() fd.close()
except: except:
@@ -855,7 +855,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
return return


try: try:
fd = open(path, "r")
fd = uopen(path, "r")
readState = fd.read() readState = fd.read()
fd.close() fd.close()
except: except:
@@ -863,17 +863,17 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
self.m_save_path = None self.m_save_path = None
return 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_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 self.m_last_connection_id = 1


xml = QDomDocument() xml = QDomDocument()
xml.setContent(readState)
xml.setContent(readState.encode("utf-8"))


content = xml.documentElement() content = xml.documentElement()
if content.tagName() != "CATARINA": if content.tagName() != "CATARINA":
@@ -1033,7 +1033,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
if dialog.exec_(): if dialog.exec_():
group_id = dialog.ret_group_id 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: for port in self.m_port_list:
if port[iPortGroup] == group_id: if port[iPortGroup] == group_id:
port_id = port[iPortId] port_id = port[iPortId]
@@ -1043,6 +1043,11 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
patchcanvas.disconnectPorts(connection[iConnId]) patchcanvas.disconnectPorts(connection[iConnId])
self.m_connection_list.remove(connection) 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]) patchcanvas.removePort(port[iPortId])
self.m_port_list.remove(port) self.m_port_list.remove(port)




+ 2
- 2
src/patchcanvas.py View File

@@ -740,8 +740,8 @@ def addPort(group_id, port_id, port_name, port_mode, port_type):
CanvasItemFX(port_widget, True) CanvasItemFX(port_widget, True)


port_dict = port_dict_t() 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_name = port_name
port_dict.port_mode = port_mode port_dict.port_mode = port_mode
port_dict.port_type = port_type port_dict.port_type = port_type


+ 4
- 0
src/shared.py View File

@@ -21,6 +21,7 @@ import os, sys
from unicodedata import normalize from unicodedata import normalize
from PyQt4.QtCore import qWarning, SIGNAL, SLOT from PyQt4.QtCore import qWarning, SIGNAL, SLOT
from PyQt4.QtGui import QFileDialog, QIcon, QMessageBox from PyQt4.QtGui import QFileDialog, QIcon, QMessageBox
from codecs import open as codecopen


# Set Platform # Set Platform
if sys.platform == "darwin": if sys.platform == "darwin":
@@ -221,6 +222,9 @@ def toList(value):
else: else:
return value return value


def uopen(filename, mode="r"):
return codecopen(filename, encoding="utf-8", mode=mode)

# QLineEdit and QPushButton combo # QLineEdit and QPushButton combo
def getAndSetPath(self_, currentPath, lineEdit): def getAndSetPath(self_, currentPath, lineEdit):
newPath = QFileDialog.getExistingDirectory(self_, self_.tr("Set Path"), currentPath, QFileDialog.ShowDirsOnly) newPath = QFileDialog.getExistingDirectory(self_, self_.tr("Set Path"), currentPath, QFileDialog.ShowDirsOnly)


+ 3
- 3
src/shared_carla.py View File

@@ -949,7 +949,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit):
content += "</CARLA-PRESET>\n" content += "</CARLA-PRESET>\n"


try: try:
fd = open(self.m_currentStateFilename, "w")
fd = uopen(self.m_currentStateFilename, "w")
fd.write(content) fd.write(content)
fd.close() fd.close()
except: except:
@@ -963,7 +963,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit):


def loadState(self): def loadState(self):
try: try:
fd = open(self.m_currentStateFilename, "r")
fd = uopen(self.m_currentStateFilename, "r")
stateRead = fd.read() stateRead = fd.read()
fd.close() fd.close()
except: except:
@@ -971,7 +971,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit):
return return


xml = QDomDocument() xml = QDomDocument()
xml.setContent(stateRead)
xml.setContent(stateRead.encode("utf-8"))


xmlNode = xml.documentElement() xmlNode = xml.documentElement()




Loading…
Cancel
Save