
    ը	fAY                        d Z ddlmZ ddlZddlZddlZddlmc mZ	 ddl
mc mc mZ ddlmZ ddlmZmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZmZmZ dd
lm Z  ddl!m"Z"m#Z# ddl$m%Z% ddl&m'Z' 	 ddl(m)Z)  G d dejX                  e"      Z- G d dej\                        Z/ G d de-      Z0 G d de	jb                        Z2 G d deejf                        Z4y# e*$ r ddl+mc m(c m)Z) Y uw xY w)a  
@package iscatt.frame

@brief Main scatter plot widgets.

Classes:
 - frame::IClassIScattPanel
 - frame::IScattDialog
 - frame::MapDispIScattPanel
 - frame::ScatterPlotsPanel
 - frame::CategoryListCtrl

(C) 2013 by the GRASS Development Team

This program is free software under the GNU General Public License
(>=v2). Read the file COPYING that comes with GRASS for details.

@author Stepan Turek <stepan.turek seznam.cz> (mentor: Martin Landa)
    )print_functionN)	globalvar)GErrorGMessage)SetOpacityDialog)	StaticBoxMenuListCtrlScattsManager)MainToolbarEditingToolbarCategoryToolbar)idScattToidBands)ManageBusyCursorMixinRenameClassDialog)ScatterPlotWidget)ContrastColor)auic                   h    e Zd Zdej                  fdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zy)IClassIScattPanelNc                     t         j                  j                   |t         j                         t	        j                            j                  |||       _        i  _         j                          j                  d<   t          j                         j                  d<    j                          t          j                         _        t        j                  t         j                         _         j                  j!                   j                  d   dt         j"                          j                  j!                   j                  d   dt         j"                          j                  j!                   j$                  dt         j"                  t         j&                  z  t         j(                  z  d	
        j                  j!                   j                  dt         j"                          j$                  j+                           j                  d   j+                           j-                   j                          j                  j.                  j1                   fd        j                  j2                  j1                   fd        j                  j4                  j1                   fd        j7                          y )Nparentid)window	guiparentgifaceiclass_mapwinmainToolbarr   	scatt_mgreditingToolbarr   
proportionflag   r&   r'   border   c                  (     j                  d      S NTbusy	UpdateCurselfs   -/usr/lib/grass83/gui/wxpython/iscatt/frame.py<lambda>z,IClassIScattPanel.__init__.<locals>.<lambda>U       D8Q     c                  (     j                  d      S r-   r0   r2   s   r4   r5   z,IClassIScattPanel.__init__.<locals>.<lambda>V   r6   r7   c                  (     j                  d      S )NFr.   r0   r2   s   r4   r5   z,IClassIScattPanel.__init__.<locals>.<lambda>W   s    U9S r7   )wxPanel__init__ID_ANYr   _createScattMgrr#   toolbars_createMainToolbarr   _createCategoryPanelScatterPlotsPanel
plot_panelBoxSizerVERTICAL	mainsizerAddEXPAND	catsPanelLEFTRIGHTHideSetSizercomputingStartedconnectrenderingStartedrenderingFinishedLayout)r3   r   r   r    r   s   `    r4   r<   zIClassIScattPanel.__init__1   s    	$v"))<&&tD9--V= . 

 '+'>'>'@m$*84>>+
&' 	!!$'+D$..AR[[14==7ABIIVMM*+		 	 	
 	NNqryy277/BRXX/MVW 	 	
 	4??qryyI&',,.dnn%''//0QR''//0QR((001ST 	r7   c                 8    | j                   j                          y N)r#   CleanUpr2   s    r4   CloseWindowzIClassIScattPanel.CloseWindow]   s     r7   c                 f    | j                   j                  |       t        j                  | |       y rT   )rC   SetBusyr   r1   )r3   r/   s     r4   r1   zIClassIScattPanel.UpdateCur`   s$    %''d3r7   c                      y)NF r2   s    r4   _selCatInIScattz!IClassIScattPanel._selCatInIScattd   s    r7   c                 0    t        | | j                        S )Nr"   r   r#   r2   s    r4   r@   z$IClassIScattPanel._createMainToolbarg   s    $$..AAr7   c                     t        | ||      S )Nr   r   r3   r   r   r    s       r4   r>   z!IClassIScattPanel._createScattMgrj   s    tF-XXr7   c                 :    | j                   j                  ||      S rT   )rC   NewScatterPlot)r3   scatt_id	transposes      r4   ra   z IClassIScattPanel.NewScatterPlotm   s    --h	BBr7   c                 `    | j                   d   j                  |       | j                          y )Nr$   )r?   ShowrR   r3   shows     r4   ShowPlotEditingToolbarz(IClassIScattPanel.ShowPlotEditingToolbarp   s#    &',,T2r7   c                     | j                   j                  |       | j                  j                  | j                  j	                                | j                          y rT   )rI   re   rC   SetVirtualSizeGetBestVirtualSizerR   rf   s     r4   ShowCategoryPanelz#IClassIScattPanel.ShowCategoryPanelt   s>    D! 	&&t'I'I'KLr7   c                 8   t        j                  |      | _        t        | j                  | j                  j                         | j                               | _        | j                  j                  d       | j                  j                  d       t        | j                  t         j                  dt        d      z        }t        j                  |t         j                        }| j                  | j                        | j                   d<   |j#                  | j                  d	t         j$                  t         j&                  z  d
       | j                   d   r |j#                  | j                   d   d       | j                  j)                  |       y )N)r   )r   cats_mgrsel_cats_in_iscatt)d   )rp      z %s Classes)r   r   labelcategoryToolbarr+   r(   r)   r   )r&   )r:   r;   rI   CategoryListCtrlr#   GetCategoriesManagerr[   	cats_list
SetMinSizeSetInitialSizer   r=   _StaticBoxSizerrE   _createCategoryToolbarr?   rG   rH   TOPrM   )r3   r   box_capt	catsSizers       r4   rA   z&IClassIScattPanel._createCategoryPanel~   s    0)>>^^88:#335
 	!!),%%i0>>yy1Y<'

 %%h<	+/+F+Ft~~+V'(dnnRVV9KTUV==*+MM$--(9:qMI	*r7   c                 F    t        || j                  | j                        S )N)r   r#   rx   )r   r#   rx   )r3   r   s     r4   r}   z(IClassIScattPanel._createCategoryToolbar   s    T^^t~~
 	
r7   )__name__
__module____qualname__r:   r=   r<   rV   r1   r[   r@   r>   ra   rh   rl   rA   r}   rZ   r7   r4   r   r   0   sF    59bii *X!4BYC+4
r7   r   c                   T    e Zd Z ed      ej
                  ej                  fdZd Zy)IScattDialogzInteractive Scatter Plot Toolc                 d   t        j                  j                  | ||f||d| | j                  t        j                  t
        j                  j                  t        j                  d      t         j                               t        | |      | _        t        j                  t         j                        }|j                  | j                  dt         j                          | j#                  |       | j%                  t         j&                  | j(                         | j+                  d       y )N)styletitlez	grass.icor+   r%   ),  r   )r:   Dialogr<   SetIconIconospathjoinr   ICONDIRBITMAP_TYPE_ICOMapDispIScattPaneliscatt_panelrD   rE   rG   rH   rM   Bind	EVT_CLOSEOnCloseWindowry   )r3   r   r   r   r   r   kwargsrF   s           r4   r<   zIScattDialog.__init__   s     			4P5PPGGBGGLL!2!2K@"BTBTU	
 /tV<KK,	d''ABIIFi 		",, 2 23
#r7   c                 $    |j                          y rT   )Skipr3   events     r4   r   zIScattDialog.OnCloseWindow   s    

r7   N)	r   r   r   r{   r:   r=   DEFAULT_FRAME_STYLEr<   r   rZ   r7   r4   r   r      s'    
 /099$$$2r7   r   c                   <    e Zd Zej                  fdZd Zd Zd Zy)r   c                 8    t        j                  | f|||d| y )N)r   r   r   )r   r<   )r3   r   r   r   r   s        r4   r<   zMapDispIScattPanel.__init__   s    ""4Wv"WPVWr7   c                     t        | |      S )N)r   r   r   r_   s       r4   r>   z"MapDispIScattPanel._createScattMgr   s    tF;;r7   c                 4    t        | | j                  dg      S )N	add_group)r   r#   	opt_toolsr]   r2   s    r4   r@   z%MapDispIScattPanel._createMainToolbar   s    4>>k]
 	
r7   c                      y)NTrZ   r2   s    r4   r[   z"MapDispIScattPanel._selCatInIScatt   s    r7   N)	r   r   r   r:   r=   r<   r>   r@   r[   rZ   r7   r4   r   r      s    *,)) X<

r7   r   c                       e Zd Zej                  fdZd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)rB   c                    t         j                  j                  | |       | j                  ddd       || _        t        j                  | t
        j                        | _        t        j                  | j                        | _        | j                  j                          | j                          | j                  t
        j                  | j                          | j                  t
        j"                  | j$                         | j                  t        j&                  | j(                         d}| j+                  d       d| _        | j                  t
        j.                  | j0                         d| _        i | _        i | _        i | _        | j                  t
        j:                  | j<                         | j                  j>                  jA                  | jB                         y )NFT)scroll_xscroll_yscrollToTopr   )rp   i  r+   r   )"scrolledScrolledPanelr<   SetupScrollingr#   r:   r;   r=   	mainPanelr   
AuiManager_mgrUpdate	_doLayoutr   EVT_SCROLLWINOnScrollEVT_SCROLL_CHANGEDOnScrollChangedEVT_AUI_PANE_CLOSEOnPlotPaneClosedSetAutoLayoutignore_scrollEVT_MOUSEWHEELOnMouseWheelscatt_iscatt_id_scatt_irc   scattsr   OnClosecursorPlotMoverO   CursorPlotMove)r3   r   r#   r   dlgSizes        r4   r<   zScatterPlotsPanel.__init__   sR   ''f5UTuM""))< NN4>>2	 					"""DMM2		"'')=)=>		#(($*?*?@ 	1 		"##T%6%67 "		",,-%%--d.A.ABr7   c                 n    t        j                  | j                        D ]  }|j                  |        y rT   )six
itervaluesr   r1   )r3   r/   scatts      r4   rX   zScatterPlotsPanel.SetBusy   s*    ^^DKK0 	"EOOD!	"r7   c                    	 t        t        |            }t        t        |            }d}| j                  |      }| j                  |      }|r
|d||fz  z  }|j	                  |       | j
                  j                          y #  d}Y `xY w)NTFz	   %d, %d)intround_getPane_creteCaptionCaptionr   RefreshCaptions)r3   xyrb   coordspanecaptions          r4   r   z ScatterPlotsPanel.CursorPlotMove   s    	E!HAE!HAF }}X&$$X.{aV++GW		!!#	Fs   *B Bc                 x    | j                   |   }| j                  |      }| j                  j                  |      S rT   )r   _getScatterPlotNamer   GetPane)r3   rb   r   names       r4   r   zScatterPlotsPanel._getPane
  s7    ''1''0yy  &&r7   c                 X   | j                   |   }| j                  |      }| j                  j                  |      }| j                   |= | j                  |= |j                         r+|j                          | j                  j                  |       | j                  j                          y rT   )	r   r   r   r   r   IsOkDestroyOnClose	ClosePaner   )r3   rb   r   r   r   s        r4   ScatterPlotClosedz#ScatterPlotsPanel.ScatterPlotClosed  s    ''1''0yy  &!!(+KK!99;!II%		r7   c                 2    d| _         |j                          y )N   r   r   r   s     r4   r   zScatterPlotsPanel.OnMouseWheel  s    

r7   c                      y rT   rZ   )r3   childs     r4   ScrollChildIntoViewz%ScatterPlotsPanel.ScrollChildIntoView"  s     	r7   c                     t        |j                  j                  t              r%|j                  j                  j	                          y y rT   )
isinstancer   r   r   rU   r   s     r4   r   z"ScatterPlotsPanel.OnPlotPaneClosed'  s2    ejj''):;JJ%%' <r7   c                 B    t        j                  | j                         y rT   )r:   	CallAfterrR   r   s     r4   r   z!ScatterPlotsPanel.OnScrollChanged+  s    
T[[!r7   c                 n    | j                   dkD  r| xj                   dz  c_         y |j                          y Nr   r+   r   r   s     r4   r   zScatterPlotsPanel.OnScroll.  s*    !!#JJLr7   c                    t        j                  t         j                        }|j                  | j                  dt         j
                         | j                  |       | j                          | j                          y )Nr+   r%   )	r:   rD   rE   rG   r   rH   rM   rR   r   )r3   rF   s     r4   r   zScatterPlotsPanel._doLayout7  sO    KK,	dnnCi r7   c                 n    t        d       | j                  j                          | j                          y)zClose dialogclosedN)printr#   rU   Destroyr   s     r4   r   zScatterPlotsPanel.OnClose?  s$     	h r7   c                      y rT   rZ   r   s     r4   
OnSettingszScatterPlotsPanel.OnSettingsF  s    r7   c                     | j                  | j                        }| j                  | j                  |<   | xj                  dz  c_        |S Nr+   )r   r   r   )r3   rb   r   s      r4   _newScatterPlotNamez%ScatterPlotsPanel._newScatterPlotNameI  s=    ''5*.,,h'r7   c                     d|z  }|S )Nzscatter plot %drZ   )r3   ir   s      r4   r   z%ScatterPlotsPanel._getScatterPlotNameO  s     1$r7   c                 f   t        | j                  | j                  ||      }|j                  j	                  | j
                         || j                  |<   | j                  |      }| j                  j                  |t        j                         j                  d      j                  d      j                  | j                  |            j!                  d      j#                  |      j%                         j'                  d      j)                  d      j+                  d      j-                  d      j/                  d      j1                  d             | j                  j3                          | j5                  | j7                                | j9                          || j:                  |<   |S )N)r   r#   rb   rc   T)rp   r   r+   r   )r   r   r#   
plotClosedrO   r   rc   r   r   AddPaner   AuiPaneInfoDockable	FloatableNamer   MinSizer   CenterPositionMaximizeButtonMinimizeButtonCaptionVisibleCloseButtonLayerr   rj   rk   rR   r   )r3   rb   rc   r   r   s        r4   ra   z ScatterPlotsPanel.NewScatterPlotS  s<    ">>nn	
 	  !7!78#,x $$X.		OOXd^Yt_T$**845WYWWVXXa[^D!^D!^D![U1X	
" 			D3356 %Hr7   c                    | j                   |   }| j                  j                         }t        |t	        |            \  }}||   j                  d      d   }||   j                  d      d   }|r|}|}|}t        d      d|d|S )N@r   zscatter plotz x: z y: )rc   r#   GetBandsr   lensplitr{   )	r3   rb   rc   bandsb1_idb2_idx_by_btmps	            r4   r   zScatterPlotsPanel._creteCaptionz  s    NN8,	'') (#e*=uEl  %a(El  %a(CCC#$^#4c3??r7   c                     | j                   S rT   )r#   r2   s    r4   GetScattMgrzScatterPlotsPanel.GetScattMgr  s    ~~r7   N)r   r   r   r:   r=   r<   rX   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r   r  rZ   r7   r4   rB   rB      sg    -/YY &CP"$ '


("%N@"r7   rB   c                       e Zd Zej                  fdZd Zd Zd Zd Z	d Z
d Zej                  fdZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)rv   c                 X   t        j                  | ||t        j                  t        j                  z  t        j
                  z  t        j                  z  t        j                  z  t        j                  z         t        d      dff| _
        || _        | j                  | j                         || _        | j                  t        | j                  j!                                      t        j"                  | _        t&        j(                  j                  |        | j+                  t        j,                  | j.                         | j+                  t        j0                  | j.                         | j+                  t        j2                  | j4                         | j                  j6                  j9                  | j:                         | j                  j<                  j9                  | j:                         | j                  j>                  j9                  | j:                         y )N)r   z
Class namer   )columns) r
   r<   r:   	LC_REPORT
LC_VIRTUAL	LC_HRULES	LC_VRULESLC_SINGLE_SELLC_NO_HEADERr{   r  ro   Populatern   SetItemCountr  GetCategories	NOT_FOUNDrightClickedItemIdxlistmixListCtrlAutoWidthMixinr   EVT_COMMAND_RIGHT_CLICKOnCategoryRightUpEVT_RIGHT_UPEVT_LIST_ITEM_SELECTEDOnSelsetCategoryAttrsrO   r   deletedCategoryaddedCategory)r3   r   rn   ro   r   s        r4   r<   zCategoryListCtrl.__init__  s~   ,,mmll ll 	
 oo	
	
 <&13 #5dll+ #dmm99;<=#%<< &&//5 			",,d.D.DE		"//4#9#9: 			"++TZZ8&&..t{{;%%--dkk:##++DKK8r7   c                    | j                  t        | j                  j                                      t        | j                  j                               r7| j	                  dt        | j                  j                               dz
         y y r   )r  r  rn   r  RefreshItems)r3   r   s     r4   r   zCategoryListCtrl.Update  sc    #dmm99;<=t}}**,-aT]]%@%@%B!Ca!GH .r7   c                    | j                   |   d   }|dk(  r	 |j                  d       | j
                  j                         |   }| j
                  j                  j                  | j                         | j
                  j                  |||i       | j
                  j                  j                  | j                         | j                  |       y # t        $ r t        | t	        d             Y y w xY w)Nr+   r   asciiz!Please use only ASCII characters.r   message)r  encodeUnicodeEncodeErrorr   r{   rn   r  r%  
disconnectr   SetCategoryAttrsrO   Select)r3   rowcolumntextattrcat_ids         r4   SetVirtualDatazCategoryListCtrl.SetVirtualData  s    ||F#A&6>G$
 ,,.s3&&11$++>&&vd|<&&..t{{;C & a0S.TUs   C C76C7c                 T    t        |      D ]  \  }}| j                  ||d           y Nr   )	enumerateInsertColumn)r3   r  r   cols       r4   r  zCategoryListCtrl.Populate  s.    ( 	)FAsaQ(	)r7   c                    | j                   j                  j                  | j                         | j                   j	                         }| j                   j                  j                  | j                         |dk  rt        t        d             y | j                  t        | j                   j                                      y )Nr   z/Maximum limit of categories number was reached.)rn   r'  r0  r   AddCategoryrO   r   r{   r  r  r  )r3   r7  s     r4   r?  zCategoryListCtrl.AddCategory  s    ##..t{{;**,##++DKK8A:1FGH#dmm99;<=r7   c                    t        | j                         d      }g }|D ]  }| j                  j                         |   }|j	                  |       | j                  j
                  j                  | j                         | j                  j                  |       | j                  j
                  j                  | j                          | j                  t        | j                  j                                      y )NT)reverse)sortedGetSelectedIndicesrn   r  appendr&  r0  r   DeleteCategoryrO   r  r  )r3   	indexListcatsr   r7  s        r4   rE  zCategoryListCtrl.DeleteCategory  s    4224dC	 	?A]]00215FKKMM))44T[[AMM((0MM))11$++>	? 	#dmm99;<=r7   c                 
   | j                   rg| j                         }g }| j                  j                         }|D ]  }|j	                  ||           |r| j                  j                  |d          |j                          y r:  )ro   rC  rn   r  rD  SetSelectedCatr   )r3   r   rF  sel_catsrG  r   s         r4   r$  zCategoryListCtrl.OnSel  ss    ""//1IH==..0D )Q() ,,Xa[9

r7   c                     g }d}	 | j                  |t        j                  |      }|dk(  r	 |S |}|j                  |       =Nrp   )GetNextItemr:   LIST_NEXT_ALLrD  )r3   stateindices	lastFoundindexs        r4   rC  z#CategoryListCtrl.GetSelectedIndices  sR    	$$Y0@0@%HE{  "	u% r7   c                 z    | j                         }|D ]  }| j                  |d        | j                  d       y)zDeselect all itemsr   )onN)rC  r2  OnCategorySelected)r3   rF  r   s      r4   DeselectAllzCategoryListCtrl.DeselectAll  s?    ++-	 	!AKKaK 	! 	%r7   c                     | j                   |   d   }| j                  j                         |   }| j                  j                  |      |   S r   )r  rn   r  GetCategoryAttrs)r3   itemr=  r6  r7  s        r4   OnGetItemTextzCategoryListCtrl.OnGetItemText  sF    ||C #,,.t4}}--f5d;;r7   c                      yrL  rZ   )r3   rY  s     r4   OnGetItemImagezCategoryListCtrl.OnGetItemImage  s    r7   c                    | j                   j                         |   }| j                   j                  |      }|d   rP|d   }t        j                  t        t        |j                  d             }t        j                  t        |       }nZt        j                  j                  t        j                        }t        j                  j                  t        j                        }t        j                         | _        | j                  j                  |       | j                  j!                  |       | j                  S )Nrg   color:)rn   r  rX  r:   Colourmapr   r  r   SystemSettings	GetColourSYS_COLOUR_INACTIVECAPTIONSYS_COLOUR_INACTIVECAPTIONTEXTItemAttrlSetBackgroundColourSetTextColour)r3   rY  r7  cattrcback_ctext_cs          r4   OnGetItemAttrzCategoryListCtrl.OnGetItemAttr  s    ,,.t4..v6=gAYYC 67FYYf 56F&&001N1NOF&&001R1RSF ""6*V$vvr7   c                 f	   	  j                  |j                         |j                         f      \  }}|t        j                  k7  r|t        j
                  z  r| _         j                  } j                  j                         }||    j                  j                        d   	t               }|j                  t        j                  t        d            } j                  t        j                   j                   |       |j                  t        j                  t        d            } j                  t        j                   j"                  |       |j                  t        j                  t        d            } j                  t        j                   j$                  |       	rt        d      }nt        d      }|j                  t        j                  |      } j                  t        j                   	fd|       |j'                          |j                  t        j                  t        d            } j                  t        j                   j(                  |       |d	k(  r |j+                  |j-                         d
       |j                  t        j                  t        d            } j                  t        j                   j.                  |       |t1        |      dz
  k(  r |j+                  |j-                         d
       |j'                          |j                  t        j                  t        d            } j                  t        j                   j2                  |       |d	k(  r |j+                  |j-                         d
       |j                  t        j                  t        d            } j                  t        j                   j4                  |       |t1        |      dz
  k(  r |j+                  |j-                         d
       |j'                          |j                  t        j                  t        d            } j                  t        j                   j6                  |        j9                  |       |j;                          y)z Show context menu on right clickrg   zRename classz	Set colorzChange opacity levelrL   re   c                 0    j                  d i      S )Nrg   r7  attrs_setCatAttrs)r   r7  r3   showeds    r4   r5   z4CategoryListCtrl.OnCategoryRightUp.<locals>.<lambda>J  s    $++6&f*AU+V r7   zMove to topr   FzMove to bottomr+   zMove category upzMove category downzExport class rasterN)HitTestGetXGetYr:   r  LIST_HITTEST_ONITEMr  rn   r  rX  r	   Appendr=   r{   r   EVT_MENUOnRename
OnSetColorOnPopupOpacityLevelAppendSeparator	OnMoveTopEnableGetIdOnMoveBottomr  OnMoveUp
OnMoveDownOnExportCatRast	PopupMenur   )
r3   r   rY  flagscat_idxrG  menur5  r7  ru  s
   `       @@r4   r!  z"CategoryListCtrl.OnCategoryRightUp*  s   llEJJL%**,#?@e2<<EB,B,B$B'+D$ **}}**,g//7?v{{299a&78		"++t}}d3{{299an5		"++t5{{299a(>&?@		"++t77>V9DV9D{{299d+		KKV	
 	{{299a&67		"++t~~t4a<KK

e,{{299a(8&9:		"++t00$7c$i!m#KK

e,{{299a(:&;<		"++t}}d3a<KK

e,{{299a(<&=>		"++t5c$i!m#KK

e,{{299a(=&>?		"++t33T:tr7   c                     | j                   }| j                  j                         |   }| j                  j                  |       y)zExport training areasN)r  rn   r  ExportCatRastr3   r   r  r7  s       r4   r  z CategoryListCtrl.OnExportCatRastn  s8     **,,.w7##F+r7   c                     | j                   }| j                  j                         |   }| j                  j                  ||dz
         | j	                  dt        | j                  j                                      y Nr+   r   r  rn   r  ChangePositionr)  r  r  s       r4   r  zCategoryListCtrl.OnMoveUpy  ^    **,,.w7$$VWq[9!S!<!<!>?@r7   c                     | j                   }| j                  j                         |   }| j                  j                  ||dz          | j	                  dt        | j                  j                                      y r  r  r  s       r4   r  zCategoryListCtrl.OnMoveDown  r  r7   c                     | j                   }| j                  j                         |   }| j                  j                  |d       | j	                  dt        | j                  j                                      y r:  r  r  s       r4   r  zCategoryListCtrl.OnMoveTop  sZ    **,,.w7$$VQ/!S!<!<!>?@r7   c                    | j                   }| j                  j                         }||   }| j                  j                  |t	        |      dz
         | j                  dt	        | j                  j                                      y r  )r  rn   r  r  r  r)  )r3   r   r  rG  r7  s        r4   r  zCategoryListCtrl.OnMoveBottom  sf    **}}**,g$$VSY];!S!<!<!>?@r7   c                    | j                   }| j                  j                         |   }| j                  j                  |      d   }t	        t
        |j                  d            }t        j                         }|j                  t        j                  |        t        j                  | |      }|j                         j                  d       |j                         t        j                  k(  ri|j                         j!                         j#                         }dj%                  t	        t&        |            }| j                  j)                  |d|i       |j+                          y)Popup opacity level indicatorr^  r_  TN)r  rn   r  rX  ra  r   r  r:   
ColourData	SetColourr`  ColourDialogGetColourDataSetChooseFull	ShowModalID_OKrc  Getr   strr1  r   )r3   r   r  r7  r=  col_datadlgr^  s           r4   r}  zCategoryListCtrl.OnSetColor  s   **,,.w7mm,,V4W=#syy~&==?299c?+oodH-))$/==?bhh&%%'113779EHHSe_-EMM**6GU3CDr7   c                      j                   j                          j                      j                   j                        }|d   dz  }|d   }t	         |t        d|z              }|j                  j                   fd       |j                          |j                         t        j                  k(  r j                  d|i       |j                          y)	r  opacityrq   r   zChange opacity of class <%s>)r  r   c                 .    j                  d| i      S )Nr  rq  rs  )valuer7  r3   s    r4   r5   z6CategoryListCtrl.OnPopupOpacityLevel.<locals>.<lambda>  s    $++6)UAS+T r7   rq  N)rn   r  r  rX  r   r{   applyOpacityrO   CentreOnParentr  r:   r  rt  r   )r3   r   	cat_attrsr  r   r  r7  s   `     @r4   r~  z$CategoryListCtrl.OnPopupOpacityLevel  s     ,,.t/G/GHMM226:	)$s* %q)G$)N'O
 	  T	
 	==?bhh&VIu3EFr7   c                    | j                   j                         | j                     }| j                   j                  |      }t	        | |d         }|j                          	 |j                         t        j                  k(  rV|j                         j                         }|st        | t        d             n | j                   j                  |d|i       nny|j                          y )Nr   )old_namezEmpty name was inserted.r,  )rn   r  r  rX  r   r  r  r:   r  
GetNewNamestripr   r{   r1  r   )r3   r   r7  r  r  r   s         r4   r|  zCategoryListCtrl.OnRename  s    ,,.t/G/GHMM226:	y/@A}}"((*~~'--/D!4N2OPMM226FD>J  	r7   c                     | j                   j                  j                  | j                         | j                   j	                  ||       | j                   j                  j                  | j                         y rT   )rn   r%  r0  r   r1  rO   )r3   r7  rr  s      r4   rt  zCategoryListCtrl._setCatAttrs  sN    &&11$++>&&vu5&&..t{{;r7   N)r   r   r   r:   r=   r<   r   r8  r  r?  rE  r$  LIST_STATE_SELECTEDrC  rV  rZ  r\  rn  r!  r  r  r  r  r  r}  r~  r|  rt  rZ   r7   r4   rv   rv     s    @B		 $9LI
")>>
 (*'='= 
&<(BH	,AAAA*,(<r7   rv   )5__doc__
__future__r   r   r   r:   wx.lib.scrolledpanellibscrolledpanelr   wx.lib.mixins.listctrlmixinslistctrlr  corer   	core.gcmdr   r   gui_core.dialogsr   gui_core.wrapr   r	   r
   iscatt.controllersr   iscatt.toolbarsr   r   r   iscatt.iscatt_corer   iscatt.dialogsr   r   iscatt.plotsr   iclass.dialogsr   agwr   ImportErrorwx.lib.agw.auir;   r   r   r   r   r   rB   r  rv   rZ   r7   r4   <module>r     s   ( & 	 
 	 ' ' ( (  & - 3 3 , H H / C * (!
k
"7 k
\299 >*  .. DE<x!?!? E<G  !  !s   3C C/.C/