σ
dςτdc           @` s   d  Z  d d l m Z m Z m Z m Z d d l Td d l Z d d l Z d d l	 Z	 d d l
 m Z d d l
 m Z d d l
 m Z d d l
 m Z d d	 l
 m Z d d
 l
 m Z d d l m Z d   Z d   Z d   Z d   Z d   Z d   Z d S(   u   Plug-in settings.i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   *N(   t	   pygimplib(   t   actions(   t   builtin_constraints(   t   builtin_procedures(   t   export(   t   settings_custom(   t   settings_guic          C` sό  t  j j i d d 6i d d 6d d d g d 6i d  d 6d	 6i d
 d 6i d d g d 6d	 6g d 6 }  |  d j i d d 6d d 6d d 6d d t j f d d t j f d d t j f g d 6t	 d  d 6i d d 6d d 6d  d 6t	 d  d 6i d d 6d d 6t
 d 6d  d  6d g d 6g  |  d
 j i d! d 6d! d 6d" d 6t	 d#  d 6t
 d$ 6i d% d 6d& d 6t j d'  d 6t	 d(  d 6d  d 6d g d 6i d) d 6d* d 6d+ d 6t	 d,  d 6t	 d-  d. 6d  d 6i d/ d 6d0 d 6t j t  d 6t	 d1  d 6d  d  6i d d 6d2 d 6d3 d 6d4 t	 d5  t  j j j f d6 t	 d7  t  j j j f d3 t	 d8  t  j j j f d9 t	 d:  t  j j j f g d 6t	 d;  d 6i d< d 6d= d 6t j d 6d  d  6d  d 6i d d 6d> d 6t d 6d  d  6d  d 6i d% d 6d? d 6t  j j d 6d  d  6d  d 6g  |  j t j   g  |  d
 j t j d@ dA dB t j dC g  g  t  t! j" dD  } t | dE <t
 | dF <|  d
 j t j d@ dG dB t! j" dH | g  g  |  dI j# dJ t$ |  d
  |  dK j# dJ t% |  dL |  dM  |  S(N   Nu   all_settingsu   nameu   specialu   ignore_resetu   ignore_loadu   ignore_saveu   tagsu   gui_typeu   setting_attributesu   mainu   sessionu
   persistentu   setting_sourcesu   groupsu   optionsu   typeu   run_modeu   non_interactiveu   default_valueu   interactiveu   RUN-INTERACTIVEu   RUN-NONINTERACTIVEu   run_with_last_valsu   RUN-WITH-LAST-VALSu   itemsu   The run modeu   display_nameu   imageu   Imageu   booleanu   first_plugin_runu   pdb_typeu   file_extensionu   pngu   File extensionu   adjust_valueu   stringu   output_directoryi   u   Output directoryu   filename_patternu   layer_filename_patternu   [layer name]u   Layer filename patternu2   Layer filename pattern (empty string = layer name)u   descriptionu   images_and_gimp_itemsu   selected_layersu   Selected layersu   overwrite_modeu
   rename_newu   replaceu   _Replaceu   skipu   _Skipu   Rename _new fileu   rename_existingu   Rename _existing fileu.   Overwrite mode (non-interactive run mode only)u   dictu   available_tagsu	   edit_modeu   plugin_versiont   nameu
   procedurest   initial_actionsu   use_layer_sizeu   visibleu   enabledu   also_apply_to_parent_foldersu   constraintsu   layersu   main/proceduresu   after-add-actionu   main/constraintsu   main/selected_layersu   special/image(&   t   pgt   settingt   create_groupst   Nonet   addt	   gimpenumst   RUN_INTERACTIVEt   RUN_NONINTERACTIVEt   RUN_WITH_LAST_VALSt   _t   Truet   gimpt   user_directoryt   collectionst   defaultdictt   sett	   overwritet   OverwriteModest   REPLACEt   SKIPt
   RENAME_NEWt   RENAME_EXISTINGR   t   BUILTIN_TAGSt   Falset   configt   PLUGIN_VERSIONR   t   create_gui_settingst   createR   t   BUILTIN_PROCEDURESt   dictR   t   BUILTIN_CONSTRAINTSt   connect_eventt   _on_after_add_proceduret   _on_after_add_constraint(   t   settingst   visible_constraint_dict(    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyt   create_settings   sΞ    !








c         C` s_   | d j  d k r[ t | d | d  t | d | d  | d j d t | d  n  d  S(   Nu	   orig_nameu   exportu   arguments/output_directoryu   output_directoryu   arguments/export_modeu'   arguments/single_image_filename_patternu   value-changed(   t   valuet'   _set_initial_output_directory_in_exportt3   _set_sensitive_for_image_filename_pattern_in_exportR-   (   t
   procedurest	   proceduret   orig_procedure_dictt   main_settings(    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyR.   ¦   s    
c         C` s    | j  r |  j | j   n  d  S(   N(   R3   t	   set_value(   t   export_output_directory_settingt   output_directory_setting(    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyR4   Ά   s    	c         C` s<   |  j  t j j k r( | j j t  n | j j t  d  S(   N(   R3   t   export_t   ExportModest   ENTIRE_IMAGE_AT_ONCEt   guit   set_sensitiveR   R%   (   t   export_mode_settingt%   single_image_filename_pattern_setting(    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyR5   Ύ   s    c         C` s>   | d j  d k r: | d j j t  t | | |  n  d  S(   Nu	   orig_nameu   selected_in_previewu   arguments/selected_layers(   R3   R@   t   set_visibleR%   t$   _sync_selected_items_with_constraint(   t   constraintst
   constraintt   orig_constraint_dictt   selected_items_settingt   image_setting(    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyR/   Ζ   s    c         C` s3   d   } | |  | |  |  j  d | | |  d  S(   Nc         S` s4   | j  d  k	 r0 | d j |  j  | j  j  n  d  S(   Nu   arguments/selected_layers(   R3   R   R:   t   ID(   RI   t   selected_items_constraintRJ   (    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyt   _on_selected_items_changedΣ   s    
u   value-changed(   R-   (   RI   RG   RJ   RM   (    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyRE   Ρ   s    	(   t   __doc__t
   __future__R    R   R   R   t   future.builtinsR   R   R   t   export_layersR   R   R   R   R   R	   R=   R
   t   export_layers.guiR   R2   R.   R4   R5   R/   RE   (    (    (    sE   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/settings_main.pyt   <module>   s$   "
					                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      # -*- coding: utf-8 -*-

"""Making item names in `pygimplib.itemtree.ItemTree` unique.
"""

from __future__ import absolute_import, division, print_function, unicode_literals
from future.builtins import *

from export_layers import pygimplib as pg


class ItemUniquifier(object):
  """Class renaming `pygimplib.ItemTree.Item` instances to be unique under the
  same parent.
  """
  
  def __init__(self, generator=None):
    self.generator = generator
    
    # key: `Item` instance (parent) or None (item tree root)
    # value: set of `Item` instances
    self._uniquified_items = {}
    
    # key: `Item` instance (parent) or None (item tree root)
    # value: set of `Item.name` strings
    self._uniquified_item_names = {}
  
  def uniquify(self, item, position=None):
    """Renames the `Item` instance by making it unique among all other `Item`
    instances under the same parent `Item`.
    
    To achieve uniquification, a substring in the form of `' (<number>)'` is
    inserted at the end of the item names.
    
    Calling the method with the same `Item` instance will have no effect as
    that instance will be marked as visited. Call `reset()` to clear cache of
    items that were passed to this function.
    
    Parameters:
    
    * `item` - `Item` instance whose `name` attribute will be uniquified.
    
    * `position` - Position (index) where a unique substring is inserted into
      the item's name. If `None`, insert the substring at the end of the name
      (i.e. append it).
    """
    parent = item.parent
    
    if parent not in self._uniquified_items:
      self._uniquified_items[parent] = set()
      self._uniquified_item_names[parent] = set()
    
    already_visited = item in self._uniquified_items[parent]
    if not already_visited:
      self._uniquified_items[parent].add(item)
      
      has_same_name = item.name in self._uniquified_item_names[parent]
      if has_same_name:
        item.name = pg.path.uniquify_string(
          item.name, self._uniquified_item_names[parent], position, generator=self.generator)
      
      self._uniquified_item_names[parent].add(item.name)
  
  def reset(self):
    """Clears cache of items passed to `uniquify()`."""
    self._uniquified_items = {}
    self._uniquified_item_names = {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  