ó
â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 e j	 d ƒ d d l
 Z
 d d l Z d d l Z d d l m Z d g Z d	 e j f d
 „  ƒ  YZ d S(   uE   Dialog prompt for handling conflicting files (overwrite, skip, etc.).i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   *Nu   2.0i   (   t	   overwriteu   GtkDialogOverwriteChoosert   GtkDialogOverwriteChooserc           B` sY   e  Z d  Z d Z d Z d Z d Z d d
 d „ Z d „  Z	 d „  Z
 d „  Z d	 „  Z RS(   u¦   
  This class is used to display a GTK dialog prompt in an interactive
  environment when a file about to be saved has the same name as an already
  existing file.
  i   i
   i   u    c         C` s6   t  ƒ  j | | | ƒ | |  _ | |  _ |  j ƒ  d  S(   N(   t   supert   __init__t   _titlet   _parentt	   _init_gui(   t   selft   values_and_display_namest   default_valuet   default_responset   titlet   parent(    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyR   $   s    		c      
   C` sŒ  t  j d d d d  d |  j d t j t j Bƒ |  _ |  j j |  j ƒ |  j j	 |  j
 ƒ |  j j |  j ƒ |  j j t ƒ t j ƒ  |  _ |  j j t j t j ƒ t j d ƒ |  _ |  j j t ƒ |  j j t ƒ t j ƒ  |  _ |  j j |  j ƒ t j d t ƒ |  _ |  j j |  j ƒ |  j j  |  j d t d t ƒ|  j j  |  j d t d t ƒt j! d	 t" d
 ƒ ƒ |  _# |  j# j$ t ƒ |  j j% j |  j& ƒ |  j j% j  |  j d t d t ƒ|  j j% j  |  j# d t d t ƒi  |  _' x3 |  j( D]( \ } } |  j j) | | ƒ |  j' | <q÷W|  j j* j |  j+ ƒ |  j# j, d |  j- ƒ t |  _. |  j j, d |  j/ ƒ |  j j0 |  j' |  j1 ƒ d  S(   NR   u    t   roleR   t   flagst   homogeneoust   expandt   fillt   labelu   _Apply action to all filesu   toggledu   size-allocate(2   t   gimpuit   Dialogt   NoneR
   t   gtkt   DIALOG_MODALt   DIALOG_DESTROY_WITH_PARENTt   _dialogt   set_transient_fort	   set_titleR	   t   set_border_widtht   _DIALOG_BORDER_WIDTHt   set_resizablet   Falset   Imaget   _dialog_icont   set_from_stockt   STOCK_DIALOG_QUESTIONt   ICON_SIZE_DIALOGt   Labelt   _dialog_textt   set_line_wrapt   Truet   set_use_markupt   EventBoxt   _dialog_text_event_boxt   addt   HBoxt   _hbox_dialog_contentst   set_spacingt   _DIALOG_HBOX_CONTENTS_SPACINGt
   pack_startt   CheckButtont   _t   _checkbutton_apply_to_allt   set_use_underlinet   vboxt   _DIALOG_VBOX_SPACINGt   _buttonsR   t
   add_buttont   action_areat   _DIALOG_ACTION_AREA_SPACINGt   connectt$   _on_checkbutton_apply_to_all_toggledt   _is_dialog_text_allocated_sizet'   _on_dialog_text_event_box_size_allocatet	   set_focusR   (   R   t   valuet   display_name(    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyR   3   sJ    				""	 			c         C` sû   | d  k	 ri t j j | ƒ \ } } | rQ t d ƒ j | t j j | ƒ ƒ } qu t d ƒ j | ƒ } n t d ƒ } | t d ƒ 7} |  j j d j t	 j
 | ƒ ƒ ƒ |  j j ƒ  |  j j ƒ  |  _ |  j |  j k rç |  j |  _ n  |  j j ƒ  |  j S(   Nu*   A file named "{}" already exists in "{}". u"   A file named "{}" already exists.
u*   A file with the same name already exists.
u   What would you like to do?u(   <span font_size="large"><b>{}</b></span>(   R   t   ost   patht   splitR8   t   formatt   basenameR+   t
   set_markupt   gobjectt   markup_escape_textR   t   show_allt   runt   _overwrite_modet   _valuesR   t   hide(   R   t   filepatht   dirpatht   filenamet   text_choose(    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyt   _choosee   s"    	c         C` s   |  j  j ƒ  |  _ d  S(   N(   R9   t
   get_activet   _is_apply_to_all(   R   t   checkbutton(    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyRB   ‚   s    c         C` sT   |  j  sP t |  _  | j ƒ  } |  j j j ƒ  } |  j j d | j | j ƒ n  d  S(   Nu   width-request(	   RC   R-   t   get_allocationR   R;   R+   t   set_propertyt   widtht   x(   R   t   dialog_text_event_boxt
   allocationt   dialog_text_allocationt   dialog_vbox_allocation(    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyRD   …   s    			N(   t   __name__t
   __module__t   __doc__R"   R5   R<   R@   R   R   R   RY   RB   RD   (    (    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyR      s   		2		(   Rg   t
   __future__R    R   R   R   t   future.builtinsRH   t   pygtkt   requireR   RN   R   t    R   t   pgoverwritet   __all__t   InteractiveOverwriteChooserR   (    (    (    sW   /home/josie/.config/GIMP/2.10/plug-ins/export_layers/pygimplib/gui/overwrite_chooser.pyt   <module>   s   "
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # -*- coding: utf-8 -*-

"""Widget for `gimp.Parasite` instances."""

from __future__ import absolute_import, division, print_function, unicode_literals
from future.builtins import *

import pygtk
pygtk.require('2.0')
import gtk
import gobject

import gimp

from .. import utils as pgutils

__all__ = [
  'ParasiteBox',
]


class ParasiteBox(gtk.HBox):
  """
  This is a subclass of `gtk.VBox` to edit `gimp.Parasite` instances
  interactively.
  
  Signals:
  
  * `'parasite-changed'` - The parasite was modified by the user.
  """
  
  __gsignals__ = {b'parasite-changed': (gobject.SIGNAL_RUN_FIRST, None, ())}
  
  _HBOX_SPACING = 5
  _VBOX_SPACING = 3
  
  def __init__(self, parasite):
    gtk.HBox.__init__(self)
    
    self._should_invoke_parasite_changed_signal = True
    
    self._init_gui(parasite)
  
  def get_parasite(self):
    return gimp.Parasite(*self._get_values())
  
  def set_parasite(self, parasite):
    self._set_values(parasite)
  
  def _init_gui(self, parasite):
    self._parasite_name_entry = gtk.Entry()
    
    self._parasite_flags_spin_button = gtk.SpinButton(
      gtk.Adjustment(
        value=parasite.flags,
        lower=0,
        upper=2**32,
        step_incr=1,
        page_incr=10,
      ),
      digits=0)
    self._parasite_flags_spin_button.set_numeric(True)
    
    self._parasite_data_entry = gtk.Entry()
    
    self._vbox_name_label = gtk.Label(pgutils.safe_encode_gtk(_('Name')))
    self._vbox_name_label.set_alignment(0.0, 0.5)
    
    self._vbox_name = gtk.VBox()
    self._vbox_name.set_spacing(self._VBOX_SPACING)
    self._vbox_name.pack_start(self._vbox_name_label, expand=False, fill=False)
    self._vbox_name.pack_start(self._parasite_name_entry, expand=False, fill=False)
    
    self._vbox_flags_label = gtk.Label(pgutils.safe_encode_gtk(_('Flags')))
    self._vbox_flags_label.set_alignment(0.0, 0.5)
    
    self._vbox_flags = gtk.VBox()
    self._vbox_flags.set_spacing(self._VBOX_SPACING)
    self._vbox_flags.pack_start(self._vbox_flags_label, expand=False, fill=False)
    self._vbox_flags.pack_start(
      self._parasite_flags_spin_button, expand=False, fill=False)
    
    self._vbox_data_label = gtk.Label(pgutils.safe_encode_gtk(_('Data')))
    self._vbox_data_label.set_alignment(0.0, 0.5)
    
    self._vbox_data = gtk.VBox()
    self._vbox_data.set_spacing(self._VBOX_SPACING)
    self._vbox_data.pack_start(self._vbox_data_label, expand=False, fill=False)
    self._vbox_data.pack_start(self._parasite_data_entry, expand=False, fill=False)
    
    self.set_spacing(self._HBOX_SPACING)
    self.pack_start(self._vbox_name, expand=False, fill=False)
    self.pack_start(self._vbox_flags, expand=False, fill=False)
    self.pack_start(self._vbox_data, expand=False, fill=False)
    
    self._set_values(parasite)
    self._connect_changed_events()
  
  def _get_values(self):
    return (
      pgutils.safe_decode_gtk(self._parasite_name_entry.get_text()),
      self._parasite_flags_spin_button.get_value_as_int(),
      pgutils.safe_decode_gtk(self._parasite_data_entry.get_text()))
  
  def _set_values(self, parasite):
    self._should_invoke_parasite_changed_signal = False
    
    self._parasite_name_entry.set_text(pgutils.safe_encode_gtk(parasite.name))
    self._parasite_flags_spin_button.set_value(parasite.flags)
    self._parasite_data_entry.set_text(pgutils.safe_encode_gtk(parasite.data))
    
    self._should_invoke_parasite_changed_signal = True
  
  def _connect_changed_events(self):
    self._parasite_name_entry.connect('changed', self._on_parasite_changed)
    self._parasite_flags_spin_button.connect('value-changed', self._on_parasite_changed)
    self._parasite_data_entry.connect('changed', self._on_parasite_changed)
  
  def _on_parasite_changed(self, widget, *args, **kwargs):
    if self._should_invoke_parasite_changed_signal:
      self.emit('parasite-changed')


gobject.type_register(ParasiteBox)
                                               