summary refs log tree commit diff
diff options
context:
space:
mode:
authorTimo Kaufmann <timokau@zoho.com>2020-11-24 21:58:05 +0100
committerGitHub <noreply@github.com>2020-11-24 21:58:05 +0100
commit6f0c00907bbd81b47052eef59f7b284926a77289 (patch)
tree095c06bc5ba15aa9967bc6283cf747663056387f
parentb31d1b436a4d9f23968a28f8b7d06f20f088689e (diff)
parent297d1d6b83c92c4f6942c6479f176d8004a819dd (diff)
downloadnixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar.gz
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar.bz2
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar.lz
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar.xz
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.tar.zst
nixpkgs-6f0c00907bbd81b47052eef59f7b284926a77289.zip
Merge pull request #98491 from raboof/inkscape-add-inkcut-extension-on-top-of-master
inkscape: add inkcut extension
-rw-r--r--pkgs/applications/graphics/inkscape/extensions.nix6
-rw-r--r--pkgs/applications/misc/inkcut/avoid-name-clash-between-inkcut-and-extension.patch85
-rw-r--r--pkgs/applications/misc/inkcut/default.nix15
-rw-r--r--pkgs/development/python-modules/enamlx/default.nix6
-rw-r--r--pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch274
5 files changed, 386 insertions, 0 deletions
diff --git a/pkgs/applications/graphics/inkscape/extensions.nix b/pkgs/applications/graphics/inkscape/extensions.nix
index 66a758f9fe5..013d3bec352 100644
--- a/pkgs/applications/graphics/inkscape/extensions.nix
+++ b/pkgs/applications/graphics/inkscape/extensions.nix
@@ -1,5 +1,7 @@
 { stdenv
 , fetchFromGitHub
+, runCommand
+, inkcut
 }:
 
 {
@@ -34,4 +36,8 @@
       platforms = platforms.all;
     };
   };
+  inkcut = (runCommand "inkcut-inkscape-plugin" {} ''
+    mkdir -p $out/share/inkscape/extensions
+    cp ${inkcut}/share/inkscape/extensions/* $out/share/inkscape/extensions
+  '');
 }
diff --git a/pkgs/applications/misc/inkcut/avoid-name-clash-between-inkcut-and-extension.patch b/pkgs/applications/misc/inkcut/avoid-name-clash-between-inkcut-and-extension.patch
new file mode 100644
index 00000000000..34e4e6f0e7f
--- /dev/null
+++ b/pkgs/applications/misc/inkcut/avoid-name-clash-between-inkcut-and-extension.patch
@@ -0,0 +1,85 @@
+From ddc1f9e63e7a769c71131b56f6a2a011c649635c Mon Sep 17 00:00:00 2001
+From: Arnout Engelen <arnout@bzzt.net>
+Date: Tue, 24 Nov 2020 15:34:40 +0100
+Subject: [PATCH] Avoid name clash between inkscape plugin and inkcut itself
+
+Ohterwise, with an unfortunate PYTONPATH, inkcut would no longer
+start since it'd try to invoke the inkcut.py from the extension
+instead of the main application
+---
+ plugins/inkscape/{inkcut.py => inkcut4inkscape.py} | 2 +-
+ plugins/inkscape/inkcut_cut.inx                    | 2 +-
+ plugins/inkscape/inkcut_cut.py                     | 2 +-
+ plugins/inkscape/inkcut_open.inx                   | 2 +-
+ plugins/inkscape/inkcut_open.py                    | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+ rename plugins/inkscape/{inkcut.py => inkcut4inkscape.py} (98%)
+
+diff --git a/plugins/inkscape/inkcut.py b/plugins/inkscape/inkcut4inkscape.py
+similarity index 98%
+rename from plugins/inkscape/inkcut.py
+rename to plugins/inkscape/inkcut4inkscape.py
+index 5b90475..7dc8d86 100644
+--- a/plugins/inkscape/inkcut.py
++++ b/plugins/inkscape/inkcut4inkscape.py
+@@ -2,7 +2,7 @@
+ # -*- coding: utf-8 -*-
+ """
+ Inkcut, Plot HPGL directly from Inkscape.
+-   inkcut.py
++   inkcut4inkscape.py
+ 
+    Copyright 2018 The Inkcut Team
+ 
+diff --git a/plugins/inkscape/inkcut_cut.inx b/plugins/inkscape/inkcut_cut.inx
+index 4b44ae5..3db8721 100644
+--- a/plugins/inkscape/inkcut_cut.inx
++++ b/plugins/inkscape/inkcut_cut.inx
+@@ -2,7 +2,7 @@
+   <_name>Cut selection...</_name>
+   <id>org.ekips.filter.inkcut.cut</id>
+   <dependency type="executable" location="extensions">inkcut_cut.py</dependency>
+-  <dependency type="executable" location="extensions">inkcut.py</dependency>
++  <dependency type="executable" location="extensions">inkcut4inkscape.py</dependency>
+   <dependency type="executable" location="extensions">inkex.py</dependency>  
+   <effect>
+     <object-type>all</object-type>
+diff --git a/plugins/inkscape/inkcut_cut.py b/plugins/inkscape/inkcut_cut.py
+index acaf812..777629a 100644
+--- a/plugins/inkscape/inkcut_cut.py
++++ b/plugins/inkscape/inkcut_cut.py
+@@ -37,7 +37,7 @@
+ else:
+     inkex.localize()
+ import subprocess
+-from inkcut import contains_text, convert_objects_to_paths
++from inkcut4inkscape import contains_text, convert_objects_to_paths
+ 
+ 
+ 
+diff --git a/plugins/inkscape/inkcut_open.inx b/plugins/inkscape/inkcut_open.inx
+index 45ee585..2dcd38e 100644
+--- a/plugins/inkscape/inkcut_open.inx
++++ b/plugins/inkscape/inkcut_open.inx
+@@ -2,7 +2,7 @@
+   <_name>Open current document...</_name>
+   <id>org.ekips.filter.inkcut.open</id>
+   <dependency type="executable" location="extensions">inkcut_open.py</dependency>
+-  <dependency type="executable" location="extensions">inkcut.py</dependency>
++  <dependency type="executable" location="extensions">inkcut4inkscape.py</dependency>
+   <dependency type="executable" location="extensions">inkex.py</dependency>  
+   <effect>
+     <object-type>all</object-type>
+diff --git a/plugins/inkscape/inkcut_open.py b/plugins/inkscape/inkcut_open.py
+index b4652eb..e4c2d62 100644
+--- a/plugins/inkscape/inkcut_open.py
++++ b/plugins/inkscape/inkcut_open.py
+@@ -38,7 +38,7 @@
+     inkex.localize()
+ import subprocess
+ 
+-from inkcut import convert_objects_to_paths
++from inkcut4inkscape import convert_objects_to_paths
+ 
+ DEBUG = False
+ try:
diff --git a/pkgs/applications/misc/inkcut/default.nix b/pkgs/applications/misc/inkcut/default.nix
index cfb10cfbe2f..481069feac0 100644
--- a/pkgs/applications/misc/inkcut/default.nix
+++ b/pkgs/applications/misc/inkcut/default.nix
@@ -17,6 +17,12 @@ buildPythonApplication rec {
     sha256 = "1zn5i69f3kimcwdd2qkqd3hd1hq76a6i5wxxfb91ih2hj04vdbmx";
   };
 
+  patches = [
+    # https://github.com/inkcut/inkcut/pull/292 but downloaded
+    # because of https://github.com/NixOS/nixpkgs/issues/32084
+    ./avoid-name-clash-between-inkcut-and-extension.patch
+  ];
+
   nativeBuildInputs = [ wrapQtAppsHook ];
 
   propagatedBuildInputs = [
@@ -49,6 +55,15 @@ buildPythonApplication rec {
   dontWrapQtApps = true;
   makeWrapperArgs = [ "\${qtWrapperArgs[@]}" ];
 
+  postInstall = ''
+    mkdir -p $out/share/inkscape/extensions
+
+    cp plugins/inkscape/* $out/share/inkscape/extensions
+
+    sed -i "s|cmd = \['inkcut'\]|cmd = \['$out/bin/inkcut'\]|" $out/share/inkscape/extensions/inkcut_cut.py
+    sed -i "s|cmd = \['inkcut'\]|cmd = \['$out/bin/inkcut'\]|" $out/share/inkscape/extensions/inkcut_open.py
+  '';
+
   meta = with lib; {
     homepage = "https://www.codelv.com/projects/inkcut/";
     description = "Control 2D plotters, cutters, engravers, and CNC machines";
diff --git a/pkgs/development/python-modules/enamlx/default.nix b/pkgs/development/python-modules/enamlx/default.nix
index a9cfafa020e..344000fa118 100644
--- a/pkgs/development/python-modules/enamlx/default.nix
+++ b/pkgs/development/python-modules/enamlx/default.nix
@@ -17,6 +17,12 @@ buildPythonPackage rec {
     sha256 = "1rlrx3cw6h1zl9svnqbzwdfy8469qa1y7w6576lbhdwpfhpipscy";
   };
 
+  patches = [
+    # Minimally modified version of https://github.com/frmdstryr/enamlx/commit/16df11227b8cee724624541d274e481802ea67e3
+    # (without the change to setup.py), already on master and expected in the first post-0.4.3 release
+    ./replace-unicode-with-str.patch
+  ];
+
   propagatedBuildInputs = [
     enaml
     # Until https://github.com/inkcut/inkcut/issues/105 perhaps
diff --git a/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch b/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch
new file mode 100644
index 00000000000..52df6e9a50e
--- /dev/null
+++ b/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch
@@ -0,0 +1,274 @@
+From 16df11227b8cee724624541d274e481802ea67e3 Mon Sep 17 00:00:00 2001
+From: frmdstryr <frmdstryr@protonmail.com>
+Date: Tue, 3 Nov 2020 21:41:52 -0500
+Subject: [PATCH] Replace Unicode with Str
+
+---
+ enamlx/widgets/abstract_item.py      |  4 ++--
+ enamlx/widgets/console.py            |  4 ++--
+ enamlx/widgets/graphics_view.py      |  8 ++++----
+ enamlx/widgets/plot_area.py          | 14 +++++++-------
+ examples/occ_viewer/advanced.enaml   | 12 ++++++------
+ examples/occ_viewer/occ/part.py      |  6 +++---
+ examples/plot_area/plot_area.enaml   |  2 +-
+ examples/table_view/table_view.enaml |  6 +++---
+ examples/tree_view/tree_view.enaml   |  6 +++---
+ setup.py                             |  2 +-
+ 10 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/enamlx/widgets/abstract_item.py b/enamlx/widgets/abstract_item.py
+index 29a3d87..67a5c6e 100644
+--- a/enamlx/widgets/abstract_item.py
++++ b/enamlx/widgets/abstract_item.py
+@@ -6,7 +6,7 @@
+ Created on Aug 24, 2015
+ """
+ from atom.api import (
+-    Int, Enum, Bool, Unicode, Typed, 
++    Int, Enum, Bool, Str, Typed, 
+     Coerced, Event, Property, ForwardInstance, observe
+ )
+ from enaml.icon import Icon
+@@ -96,7 +96,7 @@ class AbstractWidgetItem(AbstractWidgetItemGroup):
+     column = d_(Int(), writable=False)
+     
+     #: Text to display within the cell
+-    text = d_(Unicode())
++    text = d_(Str())
+     
+     #: Text alignment within the cell
+     text_alignment = d_(Enum(*[(h, v)
+diff --git a/enamlx/widgets/console.py b/enamlx/widgets/console.py
+index bc61e90..2f1e981 100644
+--- a/enamlx/widgets/console.py
++++ b/enamlx/widgets/console.py
+@@ -7,7 +7,7 @@
+ """
+ 
+ from atom.api import (
+-    Instance, Coerced, Int, Enum, Unicode, Dict, Bool,
++    Instance, Coerced, Int, Enum, Str, Dict, Bool,
+     Typed, ForwardTyped, observe
+ )
+ from enaml.core.api import d_
+@@ -47,7 +47,7 @@ class Console(Container):
+     proxy = Typed(ProxyConsole)
+     
+     #: Font family, leave blank for default
+-    font_family = d_(Unicode())
++    font_family = d_(Str())
+     
+     #: Font size, leave 0 for default
+     font_size = d_(Int(0))
+diff --git a/enamlx/widgets/graphics_view.py b/enamlx/widgets/graphics_view.py
+index f7e3e47..e672c63 100644
+--- a/enamlx/widgets/graphics_view.py
++++ b/enamlx/widgets/graphics_view.py
+@@ -7,7 +7,7 @@
+ import sys
+ from atom.api import (
+     Atom, Float, Int, Typed, Bool, Coerced, ForwardTyped, Enum, List, IntEnum,
+-    Instance, Unicode, Value, Event, Property, observe, set_default
++    Instance, Str, Value, Event, Property, observe, set_default
+ )
+ from enaml.colors import ColorMember
+ from enaml.core.declarative import d_, d_func
+@@ -419,10 +419,10 @@ class GraphicsItem(ToolkitObject, ConstrainableMixin):
+     visible = d_(Bool(True))
+     
+     #: Tool tip
+-    tool_tip = d_(Unicode())
++    tool_tip = d_(Str())
+     
+     #: Status tip
+-    status_tip = d_(Unicode())
++    status_tip = d_(Str())
+     
+     # --------------------------------------------------------------------------
+     # Item interaction
+@@ -919,7 +919,7 @@ class GraphicsTextItem(AbstractGraphicsShapeItem):
+     proxy = Typed(ProxyGraphicsTextItem)
+     
+     #: Text
+-    text = d_(Unicode())
++    text = d_(Str())
+     
+     #: Font
+     font = d_(FontMember())
+diff --git a/enamlx/widgets/plot_area.py b/enamlx/widgets/plot_area.py
+index 5136693..383957b 100644
+--- a/enamlx/widgets/plot_area.py
++++ b/enamlx/widgets/plot_area.py
+@@ -8,7 +8,7 @@
+ import sys
+ from atom.atom import set_default
+ from atom.api import (Callable, Int, Tuple, Instance, Enum, Float,
+-                      ContainerList, Bool, FloatRange, Unicode, Dict, Typed,
++                      ContainerList, Bool, FloatRange, Str, Dict, Typed,
+                       ForwardTyped, observe)
+ from enaml.core.declarative import d_
+ from enaml.widgets.api import Container
+@@ -41,10 +41,10 @@ class PlotArea(Container):
+ 
+ class PlotItem(Control):
+     #: Title of data series
+-    title = d_(Unicode())
++    title = d_(Str())
+ 
+     #: Name
+-    name = d_(Unicode())
++    name = d_(Str())
+ 
+     #: Row in plot area
+     row = d_(Int(0))
+@@ -89,10 +89,10 @@ class PlotItem(Control):
+     #: Show legend
+     show_legend = d_(Bool(False))
+ 
+-    label_left = d_(Unicode())
+-    label_right = d_(Unicode())
+-    label_top = d_(Unicode())
+-    label_bottom = d_(Unicode())
++    label_left = d_(Str())
++    label_right = d_(Str())
++    label_top = d_(Str())
++    label_bottom = d_(Str())
+ 
+     # H, V
+     grid = d_(Tuple(bool, default=(False, False)))
+diff --git a/examples/occ_viewer/advanced.enaml b/examples/occ_viewer/advanced.enaml
+index 872d44d..f1c48d5 100644
+--- a/examples/occ_viewer/advanced.enaml
++++ b/examples/occ_viewer/advanced.enaml
+@@ -15,7 +15,7 @@ is then used to unroll a list of these controls into the body of a form.
+ 
+ << autodoc-me >>
+ """
+-from atom.api import Atom, Bool, Enum, Event, Float, Int, Str, Unicode
++from atom.api import Atom, Bool, Enum, Event, Float, Int, Str, Str
+ 
+ from enaml.core.api import DynamicTemplate
+ from enaml.stdlib.fields import FloatField
+@@ -73,8 +73,8 @@ template FormControl(Attr, MemberType: Str):
+         text :: setattr(model, Attr, str(text))
+ 
+ 
+-template FormControl(Attr, MemberType: Unicode):
+-    """ A form control template specialization for Unicode members.
++template FormControl(Attr, MemberType: Str):
++    """ A form control template specialization for Str members.
+ 
+     This control uses a Field to represent the value.
+ 
+@@ -174,7 +174,7 @@ def form_spec(obtype, model):
+     
+     typemap = {int:Int,
+                float:Float,
+-               unicode:Unicode,
++               unicode:Str,
+                str:Str}
+     for name, member in obtype.members().iteritems():
+         if (not name.startswith('_') 
+@@ -263,14 +263,14 @@ class FooModel(Atom):
+     ham = Int(42)
+     first = Str('first')
+     last = Str('last')
+-    owner = Unicode('owner')
++    owner = Str('owner')
+     time = Float(42.56)
+     click = Bool()
+     clack = Bool()
+ 
+ 
+ class BarModel(Atom):
+-    name = Unicode('name')
++    name = Str('name')
+     trigger = Event()
+     choices = Enum('first', 'second', 'third')
+     def _observe_trigger(self, change):
+diff --git a/examples/occ_viewer/occ/part.py b/examples/occ_viewer/occ/part.py
+index 1fe2b85..144354f 100644
+--- a/examples/occ_viewer/occ/part.py
++++ b/examples/occ_viewer/occ/part.py
+@@ -5,7 +5,7 @@
+ '''
+ 
+ from atom.api import (
+-    Typed, ForwardTyped, Unicode
++    Typed, ForwardTyped, Str
+ )
+ from enaml.core.declarative import d_
+ 
+@@ -26,10 +26,10 @@ class Part(ToolkitObject):
+     proxy = Typed(ProxyPart)
+     
+     #: Optional name of the part
+-    name = d_(Unicode())
++    name = d_(Str())
+     
+     #: Optional description of the part
+-    description = d_(Unicode())
++    description = d_(Str())
+     
+     @property
+     def shapes(self):
+diff --git a/examples/plot_area/plot_area.enaml b/examples/plot_area/plot_area.enaml
+index 2085c8f..b5cd3c4 100644
+--- a/examples/plot_area/plot_area.enaml
++++ b/examples/plot_area/plot_area.enaml
+@@ -2,7 +2,7 @@
+ Demonstrating the examples from pyqtgraph
+ """
+ 
+-from atom.api import (Atom, Unicode, Range, List, Bool)
++from atom.api import (Atom, Str, Range, List, Bool)
+ 
+ from enaml.widgets.api import (
+     Window, Container, DockArea,DockItem,PushButton, CheckBox, RadioButton
+diff --git a/examples/table_view/table_view.enaml b/examples/table_view/table_view.enaml
+index 6d7a35e..6fef544 100644
+--- a/examples/table_view/table_view.enaml
++++ b/examples/table_view/table_view.enaml
+@@ -2,7 +2,7 @@ import os
+ import time
+ import random
+ from threading import Thread
+-from atom.api import (Atom, Unicode, Range, ContainerList, Bool)
++from atom.api import (Atom, Str, Range, ContainerList, Bool)
+ 
+ from enamlx.widgets.table_view import (
+     TableView, TableViewRow, TableViewItem
+@@ -38,9 +38,9 @@ class Person(Atom):
+     """ A simple class representing a person object.
+ 
+     """
+-    last_name = Unicode()
++    last_name = Str()
+ 
+-    first_name = Unicode()
++    first_name = Str()
+ 
+     age = Range(low=0)
+ 
+diff --git a/examples/tree_view/tree_view.enaml b/examples/tree_view/tree_view.enaml
+index 37f991f..e88e1fd 100644
+--- a/examples/tree_view/tree_view.enaml
++++ b/examples/tree_view/tree_view.enaml
+@@ -1,5 +1,5 @@
+ import os
+-from atom.api import (Atom, Unicode, Range, List, Bool, ForwardInstance)
++from atom.api import (Atom, Str, Range, List, Bool, ForwardInstance)
+ 
+ from enamlx.widgets.api import (
+     TreeView, TreeViewItem, TreeViewColumn, 
+@@ -33,9 +33,9 @@ class Person(Atom):
+     """ A simple class representing a person object.
+ 
+     """
+-    last_name = Unicode()
++    last_name = Str()
+ 
+-    first_name = Unicode()
++    first_name = Str()
+     
+     children = List(ForwardInstance(lambda:Person))