def test_suffix_layers(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(designmap.layer_nodes[0].get("Name"), 'Layer 1') designmap.suffix_layers(" #66") self.assertEqual(designmap.layer_nodes[0].get("Name"), 'Layer 1 #66') idml_file.close()
def test_layer_nodes(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(len(designmap.layer_nodes), 1) self.assertEqual(designmap.layer_nodes[0].get("Name"), 'Layer 1') idml_file.close()
def test_spread_nodes(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages-layers-with-guides.idml"), mode="r") designmap = idml_file.designmap self.assertEqual([etree_dom_to_tree(n, True) for n in designmap.spread_nodes], [ { 'attrs': {'src': 'Spreads/Spread_ud8.xml'}, 'content': [], 'tag': '{http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging}Spread', 'tail': '', 'text': None }, { 'attrs': {'src': 'Spreads/Spread_u13b.xml'}, 'content': [], 'tag': '{http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging}Spread', 'tail': '', 'text': None }, { 'attrs': {'src': 'Spreads/Spread_u142.xml'}, 'content': [], 'tag': '{http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging}Spread', 'tail': '', 'text': None } ]) idml_file.close()
def test_repr(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap self.assertEqual( repr(designmap), '<Designmap object designmap.xml at %s>' % hex(id(designmap))) idml_file.close()
def test_active_layer(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages-layers-with-guides.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(designmap.active_layer, "u2db") designmap.active_layer = "ua4" self.assertEqual(designmap.active_layer, "ua4") del designmap.active_layer self.assertEqual(designmap.active_layer, None) idml_file.close()
def test_remove_layer(self): # Remove active layer. idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages-layers-with-guides.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(designmap.active_layer, "u2db") designmap.remove_layer("u2db") self.assertEqual(designmap.active_layer, "ua4") idml_file.close() # Remove inactive layer. idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages-layers-with-guides.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(designmap.active_layer, "u2db") designmap.remove_layer("ua4") self.assertEqual(designmap.active_layer, "u2db") designmap.remove_layer("u2db") self.assertEqual(designmap.active_layer, None) idml_file.close()
def use_working_copy(view_func): def new_func(idml_package, *args, **kwargs): if idml_package.working_copy_path is not None: return view_func(idml_package, *args, **kwargs) tmp_filename = NamedTemporaryFile().name idml_package.extractall(tmp_filename) idml_package.working_copy_path = tmp_filename idml_package.init_lazy_references() if idml_package.debug: # In debug it is useful to have the original trace. idml_package = view_func(idml_package, *args, **kwargs) else: # Catch any exception to reset working_copy_path. try: idml_package = view_func(idml_package, *args, **kwargs) except BaseException, err: idml_package.working_copy_path = None raise err from simple_idml.idml import IDMLPackage # Create a new archive from the extracted one. tmp_package = IDMLPackage("%s.idml" % tmp_filename, mode="w") for root, dirs, filenames in os.walk(tmp_filename): for filename in filenames: filename = os.path.join(root, filename) arcname = filename.replace(tmp_filename, "") tmp_package.write(filename, arcname) tmp_package.close() # swap working_copy with initial IDML Package. new_filename = idml_package.filename idml_package.close() os.unlink(idml_package.filename) os.rename(tmp_package.filename, new_filename) shutil.rmtree(tmp_filename) idml_package.working_copy_path = None return IDMLPackage(new_filename)
def use_working_copy(view_func): def new_func(idml_package, *args, **kwargs): if idml_package.working_copy_path is not None: return view_func(idml_package, *args, **kwargs) tmp_filename = NamedTemporaryFile().name idml_package.extractall(tmp_filename) idml_package.working_copy_path = tmp_filename idml_package.init_lazy_references() if idml_package.debug: # In debug it is useful to have the original trace. idml_package = view_func(idml_package, *args, **kwargs) else: # Catch any exception to reset working_copy_path. try: idml_package = view_func(idml_package, *args, **kwargs) except BaseException, err: idml_package.working_copy_path = None raise err from simple_idml.idml import IDMLPackage # Create a new archive from the extracted one. tmp_package = IDMLPackage("%s.idml" % tmp_filename, mode="w") for root, dirs, filenames in os.walk(tmp_filename): for filename in filenames: filename = os.path.join(root, filename) arcname = filename.replace(tmp_filename, "") tmp_package.write(filename, arcname) tmp_package.close() # swap working_copy with initial IDML Package. new_filename = idml_package.filename idml_package.close() os.unlink(idml_package.filename) os.rename(tmp_package.filename, new_filename) shutil.rmtree(tmp_filename) idml_package.working_copy_path = None return IDMLPackage(new_filename)
def test_add_layer_nodes(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap designmap.add_layer_nodes([ etree.fromstring( """<Layer Self="toto" Name="Layer 2" Visible="true" Locked="false" IgnoreWrap="false" ShowGuides="true" LockGuides="false" UI="true" Expendable="true" Printable="true"> <Properties> <LayerColor type="enumeration">Red</LayerColor> </Properties> </Layer>"""), etree.fromstring( """<Layer Self="titi" Name="Layer 3" Visible="true" Locked="false" IgnoreWrap="false" ShowGuides="true" LockGuides="false" UI="true" Expendable="true" Printable="true"> <Properties> <LayerColor type="enumeration">Blue</LayerColor> </Properties> </Layer>"""), ]) self.assertEqual(len(designmap.layer_nodes), 3) self.assertEqual([n.get("Name") for n in designmap.layer_nodes], ['Layer 1', 'Layer 2', 'Layer 3']) idml_file.close()
def test_add_layer_nodes(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap designmap.add_layer_nodes([ etree.fromstring( """<Layer Self="toto" Name="Layer 2" Visible="true" Locked="false" IgnoreWrap="false" ShowGuides="true" LockGuides="false" UI="true" Expendable="true" Printable="true"> <Properties> <LayerColor type="enumeration">Red</LayerColor> </Properties> </Layer>""" ), etree.fromstring( """<Layer Self="titi" Name="Layer 3" Visible="true" Locked="false" IgnoreWrap="false" ShowGuides="true" LockGuides="false" UI="true" Expendable="true" Printable="true"> <Properties> <LayerColor type="enumeration">Blue</LayerColor> </Properties> </Layer>""" ), ]) self.assertEqual(len(designmap.layer_nodes), 3) self.assertEqual([n.get("Name") for n in designmap.layer_nodes], ['Layer 1', 'Layer 2', 'Layer 3']) idml_file.close()
def test_repr(self): idml_file = IDMLPackage(os.path.join(IDMLFILES_DIR, "4-pages.idml"), mode="r") designmap = idml_file.designmap self.assertEqual(repr(designmap), '<Designmap object designmap.xml at %s>' % hex(id(designmap))) idml_file.close()