; Bc@sgdGHdkZdkZdkZdkZdkZdkZdkZdkZdklZdk Z dk Z dk Z dk l Z dkZeid\ZZZZZZZZZZZZZZZZZ Z!Z"eid\Z#Z$Z%Z&Z'Z(Z)Z*eid\Z+Z,Z-Z.dei/e ei0fdYZ1d fd YZ2d ei3fd YZ4dS( simporting Views.DesignerN(sIS(sInspectableObjectViewiiis DesignerViewcBstZdZdZeZeiZe Z e e he dZ e iZdZdZe dZfdZdZdZd Zd Zd Zd Ze e d ZdZdZdZdZdZdZ dZ!e dZ"dZ#dZ$dZ%dZ&dZ'e i(e i)gZ*dZ+dZ,dZ-dZ.dZ/d Z0d!Z1d"Z2d#Z3d$Z4d%Z5d&Z6d'Z7d(Z8d)Z9d*Z:e d+Z;e d,Z<e d-Z=d.Z>d/Z?d0Z@d1ZAd2ZBd3ZCd4ZDd5ZEd6ZFd7ZGd8ZHd9ZId:ZJd;ZKd<ZLd=ZMd>ZNd?ZOd@ZPdAZQdBZRdCZSdDZTdEZUdFZVdGZWdHZXdIZYdJZZRS(Ks\ Frame Designer for design-time creation/manipulation of visual controls on frames. sDesignercCslti||||d|} |o |i } |i } |i }nd} d} t}|o|| |         cCs||_t||_|i|i|ii|i |||i } ti}tii||d| idd| id|i| id|id|iti||||||_|io |itiitin|it i!d|i"ti#|i$d|_%||_&||i&_t'|_(t)|_*t+|_,t-||_.||ii|||_/t0i1|iid|i/_2||i/_3t'|_4ddf|_5|i/|t'g|i6d<|i7i8d|i9|ii|i/i:t)|_;t+|_<t'|_=g|_>t+|_?t+|_@t+|_AtiB|_C|iCiDtEd|iCiF|iCiDtGd |iCiDtHd |iCiDtId |iCiDtJd |iCiF|iCiDtKd |iCiDtLd|iCiDtMd|iCiF|iCiDtNd|iCiF|iCiDtOd|iCiDtPd|iCiDtQd|iCiFt0iR|iCtSdtTiUddd|iCiF|iCiDtVd|i"tiW|iX|i"tiY|iZdtJ|i"tiY|i[dt\|i"tiY|i]dt^|i"tiY|i_dt`|i"tiY|iadtP|i"tiY|ibdtQ|i"tiY|icdtE|i"tiY|iddtG|i"tiY|iedtH|i"tiY|ifdtI|i"tiY|igdtK|i"tiY|ihdtL|i"tiY|iidtM|i"tiY|ijdtO|i"tiY|ikdtV|i"tiY|ildtS|i"tiY|imdtN|i"tiY|indto|i"tiY|ipdtq|i"tiY|irdts|i"tiY|itdtu|i"tiY|ivdtw|i"tiY|ixdty|i"tiY|izdt{|i"tiY|i|dt}|i"tiY|i~dt|i"tiY|idt|i"tiY|idt|i"tiY|idtg}xd tJfdt\fdt^fdt`fdtEfd tHfd tIfdtofdtqfdtsfd tufd!twfd"tyfd#t{fd$t}fd%tfd&tfd'tfd(tfdtSffD]8\} } tTiU| \} }} |i8| || fqW|iti|dS()NistitlessposssizesstylesImages/Icons/Designer.icosUpsCutsCopysPastesDeletesRecreatesRelayout selectionsRelayout Designers Fit sizers Snap to gridsAlign...sSize...sFind in index...sHelpFinds>Pops up a text input for starting a search of the help indexessCreation/Tab order...sids InspectorsEditors ContextHelpsEscapesMoveLefts MoveRightsMoveUpsMoveDownsWidthIncsWidthDecs HeightIncs HeightDecs SelectLefts SelectRightsSelectUps SelectDown(sselfscontrollerViewsDesignerNamespacesobjectNamespaces setupArgssmodelsmains mainConstrsparamssCompanionClassshandledConstrParamssparents specialAttrssargsswxsDEFAULT_FRAME_STYLEsstylesFrames__init__sgets defFramePoss defFrameSizes defFrameStylesInspectableObjectViews inspectorscompPals dialogLooksSetBackgroundColoursSystemSettingss GetColoursSYS_COLOUR_BTNFACEsSetIconsISsloadsBindsEVT_MOVEs OnFramePosspageIdxsdataViewsNones sizersViewsTrues saveOnClosesFalses confirmCancelsDesignerControlsEvtHandlersctrlEvtHandlers companionsUtilsswindowIdentifiersidscontrols mainMultiDragslastSizesobjectss objectOrdersappendsSetNamesinitDesignTimeControlsactives destroyings selectionsmultiSelections vetoResizes forceResizes deletingCtrlsMenusmenusAppendswxID_CTRLPARENTsAppendSeparators wxID_EDITCUTs wxID_EDITCOPYswxID_EDITPASTEswxID_EDITDELETEswxID_EDITRECREATEswxID_EDITRELAYOUTSELswxID_EDITRELAYOUTDESGNswxID_EDITFITSIZERswxID_EDITSNAPGRIDswxID_EDITALIGNs wxID_EDITSIZEsappendMenuItemswxID_FINDININDEXs PreferencesskeyDefsswxID_EDITCREATEORDERs EVT_CLOSEs OnCloseWindowsEVT_MENUsOnControlDeletes OnInspectors wxID_SHOWINSPsOnEditors wxID_SHOWEDTRs OnCtrlHelps wxID_CTRLHELPsOnAlignSelectedsOnSizeSelectedsOnSelectParents OnCutSelectedsOnCopySelectedsOnPasteSelectedsOnRecreateSelectedsOnRelayoutSelectionsOnRelayoutDesigners OnSnapToGridsOnCreationOrders OnFindInIndexs OnFitSizers OnMoveLeftswxID_EDITMOVELEFTs OnMoveRightswxID_EDITMOVERIGHTsOnMoveUpswxID_EDITMOVEUPs OnMoveDownswxID_EDITMOVEDOWNs OnWidthIncswxID_EDITWIDTHINCs OnWidthDecswxID_EDITWIDTHDECs OnHeightIncswxID_EDITHEIGHTINCs OnHeightDecswxID_EDITHEIGHTDECs OnSelectLeftswxID_EDITSELECTLEFTs OnSelectRightswxID_EDITSELECTRIGHTs OnSelectUpswxID_EDITSELECTUPs OnSelectDownswxID_EDITSELECTDOWNsaccLstsnameswIdstpeskeyscodesSetAcceleratorTablesAcceleratorTable(sselfsparents inspectorsmodelscompPalsCompanionClasssdataViewskeysstylescodesargsswIdstpesnamesaccLst((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys__init__cs    !                           cCsti|iSdS(N(sUtilss duplicateMenusselfsmenu(sself((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys generateMenusc CsD| o|ii}nx[|iiD]J}t|tdjo|d djo|i|ii|q+q+Wx*|i i D]\}}}|iqW|io |ii odtitifg}nt}ti||||gi} |i i D]} | | dq ~ }|ii|i|dS(s# Generate source code for Designer s _init_coll_i s %sself.%s()iN(smodulesselfsmodels getModulesidentifyCollectionMethodssocslens removeMethodsmainsobjectssvaluesscompnsctrlsprntsupdatePosAndSizes sizersViews sourceconsts bodyIndents init_sizersscollDepssNonesInspectableObjectViews saveCtrlss definedCtrlssappends_[1]sis companionsswriteWindowIdsscollectionMethod( sselfs definedCtrlssmodulescollDepssctrlsprntsocs companionsscompns_[1]si((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys saveCtrlss *4cCsxN|iD]C}|i|di||||jo||i|d Rename control, references to control and update parent tree N(sselfsbuildParentRelationshipsprelsprefsoldNameskeysschildrensrenameCtrlAndParentRefssnewNamesInspectableObjectViews renameCtrls sizersViewsdesignerRenameNotifys inspectors containments selectedNamesselNamesrefreshContainments selectionsname(sselfsoldNamesnewNamesprelsprefschildrensselName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys renameCtrl+s    cCs|i||ii||ti||||ii|||i o|i i||n|i i |ii i }|i o|i |i i i nx|D]}|i||qW|iii}||jo d}n|i|dS(sa Hook that also updates the Model and window ids of the Frame when it's name changes sN(sselfsSetNamesnewNamesmodels renameMainsoldNamesInspectableObjectViews renameFramesdataViews sizersViews collEditorssvaluessextends collEditors inspectors containments selectedNamesselNamesrefreshContainment(sselfsoldNamesnewNames collEditorss collEditorsselName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys renameFrameAs"    cCsw|ip|iodSnh}|i oti||i||_n|ii i i dy|ii |i }|i|ii i iidd}t|i_z4|ii|ii|i}h}h}|i|id|id|||i|id|idt |idjoa|i!|id|||d|t |i}||}|ii i iit#|n|i$||i%t&t |o't'i(t)i*|t'i(d nWdt+|i_X|ii i iid |i,|ii i iid|ii i i d t|_Wn#|ii i iidnXdS( si Model View method that is called when the Designer should create itself from source NsCreating frameif20.0siiiZs*These links were not resolved (Details...)iPsDesigner refreshed(-sselfs destroyingsopenedscompss selections SelectionTagssSingleSelectionGroups inspectorsmodelseditors statusBarssetHintsobjectCollectionsscollectionMethodsobjColsindexOnCtrlNamesprogresssSetValues stepsDonesTrues vetoSelects companions setConstrs mainConstrs ctrlCompnsdepssdepLnkss initObjPropsspropertiesByNamescreatorss initObjEvtss eventsByNameslensinitObjectsAndCompanionssstepsintsfinaliseDepLinkssOnRelayoutDesignersNoneswxs LogWarningspprintspformatsFalsesrefreshContainment(sselfsdepLnkss stepsDonesobjColscompssstepsdepss ctrlCompn((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys refreshCtrl^sP    # #      cCs|iidit|io||ii}|ii}|i i }|i o|i|i i n|i|||i ig||i o|i ig|n|ii|i idd|i o|i iddn|ii}|iip ||j|i_|iii|iti||ii}|o2|iidi|i|iiidin|iiidnK|i idd|i o|i iddn|iiidddS( s) Update model with streamed out controls sSourcesDatasSizerss__init__sDesigner session Posted.sDesigner session Cancelled.sWarningN(sselfsmodelsviewss disableSourcesFalses saveOnClosesdatasoldDatas getModulesmodulesdataViews objectOrders otherRefss sizersViewsextends saveCtrlssrefreshFromModulesdeleteFromNotebooksnewDatasmodifiedseditorsupdateModulePagesInspectableObjectViews refreshModelsGotoLinesclassessmainsmethodssstarts setStatus(sselfsoldDatasmodules otherRefssnewData((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys refreshModels8         2 cCsti||i||_dS(s Create a selection group N(s SelectionTagssSingleSelectionGroupsselfs inspectors selection(sself((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys initSelectionscCs|i|||id|d|ii}t i ||i }|||t |}|i|||it t |||SdS(s[ Create and register given control and companion. See also: newControl s compClasssevalDctN(sselfs setupArgssctrlNamesparamss CtrlCompanionshandledConstrParamssmodels specialAttrssargssUtilssctrlNameFromSrcRefswindowParentNamesparentsNones CtrlClasss companions addObjectsdesignTimeControl(sselfs CtrlClasss CtrlCompanionsctrlNamesparamssparentsargss companion((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys loadControls c Cs|i||i|i} || |||}|i d|i |i f}|i|\}||i<|i| ||i||||i o|i||i|ii)|||ii9||| dSnWdt?|_XdS(s Handle selection of a control from a users click of creation of a new one if a component was selected on the palette. Some ctrls do not register clicks, the click is then picked up from the parent which checks if a click intersects any child regions. For efficiency this is only applied for 2 levels. Also handles single and multiple selection logic. iiisDatasSizersN(@sTruesselfs vetoResizesctrls companionsobjectssGetNamesnamesctrlNamescheckChildCtrlClickspossselCtrlsselCompnsselPosscompPals selections containersparents GetParentsClientToScreens screenPossScreenToClients GetToolBarstbsysGetSizeswxsPoints SelectionTagss granularisesxs CtrlClasss CtrlCompanionshostsmodelsviewssviewsfocuss OnSelectOrAdds newControls selectNones selectCtrlsmultiSelections multiSelectsMultiSelectionGroups inspectors newSelectionsassignsdestroysNoneslensrangesselIdxsSingleSelectionGroupsclearMultiSelectionsappendssels moveCaptures mainMultiDragsotherssremovescapSelsassureSingleSelectionsFalse(sselfsctrlsposs multiSelectsselCompnsselCtrlssels CtrlCompanionscapSelstbsselPossparentsselIdxs companionsotherss CtrlClasss screenPoss newSelectionsctrlNamesview((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysselectControlByPoss     !      !    &   #                cCsO|io|ii|jo$|iid|iidn|idS(s# Called when frame is repositioned sPositionN(sselfs selections inspectorsconstructorUpdatespropertyUpdateseventsSkip(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnFramePosus cCs|i o6|io,tiddtitiBdttijot |_t |_dSn|i o|i t nt |_ t |_y|io|iit|_n|io+x|iD]}|iqWt|_n|ii|iii|iWnt |_ t |_nX|ii|i|it |i|iid=|`|i|idS(sw When the Designer closes, the code generation process is started. General Inspector and Designer clean-up sCancel Designer session?sCancelsparentNsDesigner(sselfs saveOnCloses confirmCancelswxs MessageBoxsYES_NOs ICON_WARNINGsNonesNOsTruesFalses IsIconizedsIconizes destroyings vetoResizes selectionsdestroysmultiSelectionssels inspectorscleanups containments refreshModelsmenusDestroysShowsmodelsviewss companionseventsSkip(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnCloseWindow~sD!#                    cCs^|i}|iti|i|i}|i |}|i |_ |i|_dS(s_ Store popup position of the menu relative to the control that triggered the event N(seventsGetEventObjectsctrlsClientToScreenswxsPointsGetXsGetYs screenPossselfsScreenToClients parentPossxspopxsyspopy(sselfsevents screenPoss parentPossctrl((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnRightDowns  ' cCs1|iii|iii|iiidS(s Bring Editor to the front N(sselfsmodelseditorsrestoresmodulessfilenamesfocus(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnEditorscCsA|ii|iiidjo|iiidndS(s Bring Inspector to the front iiN(sselfs inspectorsrestorespagess GetSelections SetSelection(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnInspectors cCs|iodSnt|_zg}|io8|iiotiddSn|iig}n<|i o1gi }|i D]}||iq~}nx|D]}|i|qWWdt|_XdS(s( Delete the currently selected controls NsNothing to delete(sselfs deletingCtrlsTruesctrlss selectionsisProxySelectionswxsLogErrorsnamesmultiSelectionsappends_[1]sselsctrlNames deleteCtrlsFalse(sselfseventssels_[1]sctrlssctrlName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnControlDeletes$     1cCs.|iioti|iiindS(s$ Show help for the selected control N(sselfs inspectorsselCmpsHelps showCtrlHelpsGetClass(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnCtrlHelps cCsC|io5ti||i}z|iWd|iXndS(s+ Show alignment dialog for multi selectionsN(sselfsmultiSelections CtrlAlignsControlAlignmentFramesdlgs ShowModalsDestroy(sselfseventsdlg((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnAlignSelecteds  cCsC|io5ti||i}z|iWd|iXndS(s& Show size dialog for multi selectionsN(sselfsmultiSelectionsCtrlSizesControlSizeFramesdlgs ShowModalsDestroy(sselfseventsdlg((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnSizeSelecteds  cCsJ|io|i|iin&|io|i|idindS(s' Select parent of the selected control iN(sselfs selections selectParentsmultiSelection(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnSelectParents   cCs|io8|iiotiddSq}|iig}n<|io1gi}|iD]}||iq]~}ng}|i |g|t itii||idS(s( Cut current selection to the clipboard sNothing to cutN(sselfs selectionsisProxySelectionswxsLogErrorsnamesctrlssmultiSelectionsappends_[1]sselsoutputscutCtrlssUtilsswriteTextToClipboardsosslinesepsjoinsrefreshContainment(sselfsevents_[1]soutputsselsctrls((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnCutSelecteds   1cCs|io8|iiotiddSq}|iig}n<|io1gi}|iD]}||iq]~}ng}|i |g|t itii|dS(s) Copy current selection to the clipboard sNothing to copyN(sselfs selectionsisProxySelectionswxsLogErrorsnamesctrlssmultiSelectionsappends_[1]sselsoutputs copyCtrlssUtilsswriteTextToClipboardsosslinesepsjoin(sselfsevents_[1]soutputsselsctrls((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnCopySelecteds   1cCs|io|iii o|i|iin|i|iitti i t i }t|o|i|i|}t|djo{|iio6|iii|i|ddi|iin|ii|i|dd|i|ddq|iioIx|D]}|i|q-W|ii|iitidq|iit|_g|_x`|D]T}|i|\}}}t"i#||i|}|i|||ii%|qWqndS(s= Paste current clipboard contents into the current selection iis0Only 1 control can be pasted into this containerN(&sselfs selectionsselCompns containers selectParents pasteCtrlssnamesstrsUtilssreadTextFromClipboardssplitsosslinesepspastedslensrefreshContainmentscollapseNamesToContainerssisProxySelectionslinkToNewestControlsobjectssReparents selectCtrlsctrlNames deleteCtrls selectNones inspectorscleanupswxsLogErrorsdestroysNonesmultiSelectionsselCtrlsprnts SelectionTagssMultiSelectionGroups newSelectionsappend(sselfseventsprntspastedsselCtrls newSelectionsselCompnsctrlName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnPasteSelecteds@ !  &      cCs|io|ii|jog}|ii}|iii}|i|\}}|i |gg||i |||i |i ii|ndS(s Recreate the current selection by cutting and pasting it. The clipboard is not disturbed. This is useful for applying changes to constructor parameters N(sselfs selectionsoutputsnamesctrlNames GetParentsparentsgetParentNamess parentNamesdummyscutCtrlss pasteCtrlssrefreshContainments inspectors containments selectName(sselfseventsdummysparents parentNamesoutputsctrlName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnRecreateSelected<s  cCs5|io|igSn|io |iSngSdS(N(sselfs selectionsmultiSelection(sself((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys getSelAsListNs    cCs|it|idS(N(ssels setSelectionsTrues resizeCtrl(sselfssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys moveUpdateVs cCshxa|iD]S}|i|jo=|iid|i_|iid|i_|i|q q WdS(Ni(sselfs getSelAsListssels selectionspositionsxsstartPoss moveUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnMoveLeftZs  cCshxa|iD]S}|i|jo=|iid|i_|iid|i_|i|q q WdS(Ni(sselfs getSelAsListssels selectionspositionsxsstartPoss moveUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnMoveRight`s  cCshxa|iD]S}|i|jo=|iid|i_|iid|i_|i|q q WdS(Ni(sselfs getSelAsListssels selectionspositionsysstartPoss moveUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnMoveUpfs  cCshxa|iD]S}|i|jo=|iid|i_|iid|i_|i|q q WdS(Ni(sselfs getSelAsListssels selectionspositionsysstartPoss moveUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnMoveDownls  cCs|i|itdS(N(ssels resizeCtrls setSelectionsTrue(sselfssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys sizeUpdatess cCsK|i}|o |i|jo'|iid|i_|i|ndS(Ni(sselfs selectionsselssizesxs sizeUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnWidthIncws cCs^|i}|o |i|jo|iidjo'|iid|i_|i|ndS(Nii(sselfs selectionsselssizesxs sizeUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnWidthDec|s *cCsK|i}|o |i|jo'|iid|i_|i|ndS(Ni(sselfs selectionsselssizesys sizeUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnHeightIncs cCs^|i}|o |i|jo|iidjo'|iid|i_|i|ndS(Nii(sselfs selectionsselssizesys sizeUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnHeightDecs *c%Csd}ddg}||i| } |i|i\}}|i }d}t} x`|iiD]O}|i|dd!\}}||jo ||jo|||||\}}}}}!}$t||t|| t|| f\}}}t||t|| f\}}t||t|| t|$| f\}} } t|!|t|!| f\} } ||| || |f\}}}| || |f\}"}#t,|t-t,|t,|jo| p|t,||jp5t,|"t,|#jo|" p|"t,|"|jot-t.i/||||t.i/|"|"|#|#t.i/||||}|djp ||jo|}|} qqqlqlW| o|i1i2i3| i ndS(Nc Cs|i|if\}}|i|if\}} ti |i |i d|i |i d}ti |i | i d|i | i d}||fddfjo~ti |i |i |i |ti |i |i |i |i ti |i |i |ti |i |i | i fSn||fddfjo~ti |i |i |ti |i |i |i ti |i | i |i |ti |i | i |i | i fSn||fddfjo~ti |i |i |i |ti |i |i |i |i ti |i |i |ti |i | i |i fSn||fddfjo~ti |i |i |ti |i |i |i ti |i |i | i |ti |i | i |i | i fSndS(Nisxiisy(sselctrls GetPositionsGetSizesselpossselsizesctrlsposssizeswxsPointsxsys selMidPoints ctrlMidPointsdimsdir( sselctrlsctrlsdimsdirsselposs selMidPointsposs ctrlMidPointsselsizessize((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys compSidess..~~~sxsyiii(4s compSidessdimssindexsdimsotherdimsselfsgetParentNamessselctrls GetParents parentNamesdummysGetNamesselNamesdistLosNones nearestCtrlsobjectsskeyssobjNamesctrlsparentsdirspos1pspos0pspos2pscpos1pscpos0pscpos2psgetattrsposs otherpos1s otherpos2spos0s otherpos0scposs cotherpos1s cotherpos2scpos0s cotherpos0sdposs dotherpos1s dotherpos2sdpos0s dotherpos0sabssminsmathssqrtsdists inspectors containments selectName(%sselfsselctrlsdimsdirsdistsctrls parentNamesdpossdistLos nearestCtrlsotherdims cotherpos2s cotherpos1s cotherpos0s dotherpos2spos0s dotherpos1s compSidesscpos1psobjNamespos0pspos2psselNamesparentsdummysposs otherpos1sdimss otherpos2scposspos1ps otherpos0scpos0scpos0psdpos0s dotherpos0scpos2p((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysselectInDimentionDirections6   '3$3$$cCs>|i}|o |i|jo|i|iddndS(Nsxi(sselfs selectionsselsselectInDimentionDirection(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnSelectLefts cCs>|i}|o |i|jo|i|iddndS(Nsxi(sselfs selectionsselsselectInDimentionDirection(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnSelectRights cCs>|i}|o |i|jo|i|iddndS(Nsyi(sselfs selectionsselsselectInDimentionDirection(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnSelectUps cCs>|i}|o |i|jo|i|iddndS(Nsyi(sselfs selectionsselsselectInDimentionDirection(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnSelectDowns cCsx|iD]}|i|jokti|ii|i_ti|ii|i_|ii|i _|ii|i _|i |q q WdS(N( sselfs getSelAsListssels selections SelectionTagss granularisespositionsxsysstartPoss moveUpdate(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnSnapToGrids cCsft|_|i}|o|inti|ti |i |i ti |i dS(N(sTruesselfs forceResizesctrlsGetSizerssizersLayoutswxs PostEvents SizeEventsGetSizesGetIds CallAftersRefresh(sselfsctrlssizer((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys relayoutCtrls   (cCs+x$|iD]}|i|iq WdS(N(sselfs getSelAsListssels relayoutCtrls selection(sselfseventssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnRelayoutSelections cCs|i|dS(N(sselfs relayoutCtrl(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnRelayoutDesignerscCsEx>|iD]0}|ii}|o|i|iq q WdS(N(sselfs getSelAsListssels selectionsGetSizerssizersFit(sselfseventsselssizer((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnFitSizers  cCsQ|i}|o=|ii}||ijo d}n|i|ndS(Ns(sselfs selectionsselsGetNamesselNamesshowCreationOrderDlg(sselfseventsselsselName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnCreationOrders   cCs|iii|dS(N(sselfsmodelseditorsOnHelpFindIndexsevent(sselfsevent((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnFindInIndex scCst|_|idS(N(sTruesselfs saveOnClosesClose(sselfs inspector((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysdoPosts cCs t|_t|_|idS(N(sFalsesselfs saveOnClosesTrues confirmCancelsClose(sselfs inspector((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysdoCancels  ([s__name__s __module__s__doc__sviewNamesFalsesdockeds sourceconsts init_ctrlsscollectionMethodsTruessupportsParentViewsNones setupArgsswxsDefaultPositionsdefPoss__init__s generateMenus saveCtrlssrenameCtrlAndParentRefss renameCtrls renameFrames refreshCtrls refreshModels initSelections loadControls newControlsinitObjCreators initSizerssgetParentNamess removeEventsgetObjectsOfClasss getAllObjectss selectParents deleteCtrls selectNones notifyActionsclosesfocussgetSizerConnectListsToolBars StatusBars ignoreWindowssconnectToolBarsdisconnectToolBarscheckChildCtrlClicksclearMultiSelectionsassureSingleSelectionsflattenParentRelationshipsexpandNamesToContainersscollapseNamesToContainerssselectControlByPoss OnFramePoss OnCloseWindows OnRightDownsOnEditors OnInspectorsOnControlDeletes OnCtrlHelpsOnAlignSelectedsOnSizeSelectedsOnSelectParents OnCutSelectedsOnCopySelectedsOnPasteSelectedsOnRecreateSelecteds getSelAsLists moveUpdates OnMoveLefts OnMoveRightsOnMoveUps OnMoveDowns sizeUpdates OnWidthIncs OnWidthDecs OnHeightIncs OnHeightDecsselectInDimentionDirections OnSelectLefts OnSelectRights OnSelectUps OnSelectDowns OnSnapToGrids relayoutCtrlsOnRelayoutSelectionsOnRelayoutDesigners OnFitSizersOnCreationOrders OnFindInIndexsdoPostsdoCancel(((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys DesignerView,s  -      D .        !     <     /          )             A           sDesignerNamespacecBstZdZdZRS(NcCs ||_dS(N(sdesignersselfs _designer(sselfsdesigner((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys__init__scCs|id}|ii|o|i|dSnl|iii|o|ii|dSn@|io|iii|o|ii|dSn t |dS(Ns _designeri( sselfs__dict__sdesignersobjectsshas_keysnamesdataViews sizersViews sizerViewsAttributeError(sselfsnamesdesigner((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys __getattr__s  (s__name__s __module__s__init__s __getattr__(((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysDesignerNamespaces sDesignerControlsEvtHandlercBstZdZedZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZRS(NcCsktii|||_hd|i<d|i<d|i<d|i<|_ ddfgf|_ dS(Nslinessdotssbitmapsgridi( swxs EvtHandlers__init__sselfsdesignersdrawGrid_intersectingLiness drawGrid_dotssdrawGrid_bitmaps drawGrid_gridsdrawGridMethodss_points(sselfsdesigner((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys__init__,s 9cCs|g}|o|i|inx|D]}|iti|i |iti |i |iti |i |iti|i|iti|i|iti|iq.WtioTtio|ititifjp |itjo|iti|iqndS(N(sctrlsctrlssconnectChildrensextends GetChildrensBindswxs EVT_MOTIONsselfs OnMouseOvers EVT_LEFT_DOWNsOnControlSelects EVT_LEFT_UPsOnControlReleasesEVT_LEFT_DCLICKsOnControlDClicksEVT_SIZEsOnControlResizesEVT_MOVEs OnControlMoves PreferencessdrawDesignerGridsdrawDesignerGridForSubWindowss __class__sPanelsScrolledWindows DesignerViews EVT_PAINTsOnPaint(sselfsctrlsconnectChildrensctrls((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys connectEvts6s  6cCs|io~|i}|i}|i}|i o|i i ||q|i o.x+|i D]}|i |||i qcWqn|idS(N(seventsDraggingsselfsdesignersdsgns GetPositionspossGetEventObjectsctrls selectionsmovingsmultiSelectionssels mainMultiDragsSkip(sselfseventsdsgnsctrlsposssel((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnMouseOverJs       "cCsy|i}|i}| o |i}n?t|do.|i|}|i }|i |}n||fSdS(Ns_composite_child( sevents GetPositionspossGetEventObjectsctrlsselfsdesignershasattrsClientToScreens GetParentsScreenToClient(sselfseventsctrlspos((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysgetCtrlAndPosFromEvtXs    cCsL|i}|i|\}}|i|||io|i ndS(sB Control is clicked. Either select it or add control from palette N( sselfsdesignersdsgnsgetCtrlAndPosFromEvtseventsctrlspossselectControlByPoss ShiftDownsSkip(sselfseventspossdsgnsctrl((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnControlSelectes   cCsg|i}|io|iin6|io+x|iD]}|iq8Wt|_n|i dS(s% A select or drag operation is ended N( sselfsdesignersdsgns selections moveReleasesmultiSelectionsselsNones mainMultiDragseventsSkip(sselfseventsselsdsgn((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnControlReleasevs     cCs`|i}z2|iodSn|i|ijoz|ii|ijo|i odSn|ii|_|i o|i i ||i n=|i o2|i|i|i i ||i dSn|i o |i i od}t}xj|iiD]Y}t|djo%|ddjo|di|ijo|d}|d}qqW|djo,|i}|idd|i|iqqn|i o|i i |i i!f\}}|i i#|i i$||f|i i |i i!fjo|i i%|i i&q:nWdt'|_ |i(|i)XdS(s? Control is resized, emulate native wxWidgets layout behaviour Niisi(*sselfsdesignersdsgns vetoResizeseventsGetIdsGetSizesGetslastSizes forceResizes selections selectCtrls companionsmultiSelectionsclearMultiSelectionsassureSingleSelections GetAutoLayouts dialogLayoutscsNonesctrlsobjectssvaluessctrlLstslens __class__s ignoreWindowss GetClientSizesss SetDimensionssxsyssizespositionsps sizeFromCtrls setSelections sizeUpdatespositionUpdatesFalsesRefreshsSkip(sselfseventsdsgnsctrlsctrlLstscspss((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnControlResizesL  '    ;   (   %   c Cs|i}|io|i|\}}|i|||i ||jo|i }d} n|i } |i | d}|i| |||i\}}}|i|iindS(Nsi(sselfsdesignersdsgns selectionsgetCtrlAndPosFromEvtseventsctrlspossselectControlByPoss ShiftDowns companionsctrlNamesGetNamesobjectsscheckChildCtrlClicks GetPositionsselCtrlsselCompnsselPoss defaultActions moveRelease( sselfseventsselPossdsgnsctrlsselCompnsselCtrlsposs companionsctrlName((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnControlDClicks       cCso|i}|ot|ti o:|i}|o#ti|ti |i qan|i dS(N( seventsGetEventObjectsctrls isinstanceswxs StatusBars GetParentsparents PostEvents SizeEventsGetSizesSkip(sselfseventsparentsctrl((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys OnControlMoves   'c Csti|}|i||i|g}xCt |i |dD]*}|i d|||i||fqGWxCt |i|dD]*} |i | |d| ||i fqW|i|dS(s, Draw horizontal and vertical lines iiN(swxsPenscolspen1sdcsSetPensSetLogicalFunctionsloglFuncslinessrangesszesyssgsappendsxs DrawLineList( sselfsdcscolsloglFuncsszessgspen1slinessysx((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys _drawLiness  ((cCs|ii}tid|iAd|iAd|iA}|i ||ti |||i |titi||dS(s6 Cute hack to draw dots by intersecting lines iN(sdcs GetBackgrounds GetColoursbgColswxsColoursRedsGreensBluesxorBgColsselfs _drawLinessCOPYsszessgsWHITEsXOR(sselfsdcsszessgsbgColsxorBgCol((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysdrawGrid_intersectingLiness 3icCs|ii}tit|i|i dt|i |i dt|i |i d}|i ||ti||dS(sI The default method, drawing horizontal and vertical grid lines. iN(sdcs GetBackgrounds GetColoursbgColswxsColoursmaxsRedsselfsdarkensGreensBlues darkerBgCols _drawLinessCOPYsszessg(sselfsdcsszessgsbgCols darkerBgCol((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys drawGrid_grids c Cstiti}|i||i\\}} }|| f|i |i fjo~g}x\t|i |dD]C}x:t|i |dD]!}|i||||fqWqqW|| f|f|_n|i|dS(sG The slowest method, drawing each dot of the grid individually iN(swxsPensBLACKspen1sdcsSetPensselfs_pointssszexsszeyspointssszesxsysrangessgsappends DrawPointList( sselfsdcsszessgspen1syspointssxsszexsszey((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys drawGrid_dotss #cCsdS(s This should be the most efficient method, when the granularity is changed, a new (possibly +-32x32) bitmap should be created with transparent background and black grid points. This can then be blitted over background N((sselfsdcsszessg((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysdrawGrid_bitmapscCs|iidjo.titi}tititi}n"ti|dti }ti }|i||i|dS(Ns BlankSizeri(ssizers __class__s__name__swxsPensREDspensBrushsFDIAGONAL_HATCHsbrushsvalidColsSOLIDsTRANSPARENT_BRUSHsdcsSetPensSetBrush(sselfsdcssizersvalidColspensbrush((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys updateDCPropss  cCs|i||ti|i}|i}|i |i |i |i |i|i}x|D]}}|io|i||iqc|i||ti|i}|i}|i |i |i |i |iqcWdS(N(sselfs updateDCPropssdcssizers Preferencess dsHasSizerCols GetPositionsspsGetSizessss DrawRectanglesxsyswidthsheights GetChildrenscsscsIsSizers drawSizerInfosGetSizers dsInSizerCol(sselfsdcssizerscssssspssc((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys drawSizerInfos  "    cCs|i}|oti|}|i}ti }|i ti }|iz;|||||i}|o|i||nWd|iXn|idS(N(seventsGetEventObjectsctrlswxsPaintDCsdcsGetSizesszes Preferencess dsGridSizessgsselfsdrawGridMethodssdrawGridMethodsdrawGrids BeginDrawingsGetSizerssizers drawSizerInfos EndDrawingsSkip(sselfseventsdrawGridsctrlsdcsszessizerssg((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysOnPaint+s     (s__name__s __module__s__init__sFalses connectEvtss OnMouseOversgetCtrlAndPosFromEvtsOnControlSelectsOnControlReleasesOnControlResizesOnControlDClicks OnControlMoves _drawLinessdrawGrid_intersectingLinessdarkens drawGrid_grids drawGrid_dotssdrawGrid_bitmaps updateDCPropss drawSizerInfosOnPaint(((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pysDesignerControlsEvtHandler+s$    2      (5scopysosspprintsmathswxs PreferencessUtilssHelpsISs CtrlAlignsCtrlSizes sourceconstsInspectableViewssInspectableObjectViews SelectionTagsswxNewIdsswxID_CTRLPARENTs wxID_EDITCUTs wxID_EDITCOPYswxID_EDITPASTEswxID_EDITDELETEs wxID_SHOWINSPs wxID_SHOWEDTRs wxID_CTRLHELPswxID_EDITALIGNs wxID_EDITSIZEswxID_EDITRECREATEswxID_EDITSNAPGRIDswxID_EDITRELAYOUTswxID_EDITRELAYOUTSELswxID_EDITRELAYOUTDESGNswxID_EDITCREATEORDERswxID_EDITFITINSIDESIZERswxID_FINDININDEXswxID_EDITFITSIZERswxID_EDITMOVELEFTswxID_EDITMOVERIGHTswxID_EDITMOVEUPswxID_EDITMOVEDOWNswxID_EDITWIDTHINCswxID_EDITWIDTHDECswxID_EDITHEIGHTINCswxID_EDITHEIGHTDECswxID_EDITSELECTLEFTswxID_EDITSELECTRIGHTswxID_EDITSELECTUPswxID_EDITSELECTDOWNsFramesFrameRestorerMixins DesignerViewsDesignerNamespaces EvtHandlersDesignerControlsEvtHandler(0swxID_EDITFITINSIDESIZERswxID_EDITRECREATEs PreferencesswxID_EDITHEIGHTDECswxID_EDITRELAYOUTDESGNswxID_EDITMOVERIGHTswxID_EDITMOVELEFTs DesignerViewswxID_EDITHEIGHTINCswxID_EDITSELECTUPs wxID_SHOWEDTRs wxID_EDITSIZEswxID_EDITRELAYOUTSELs wxID_EDITCOPYswxID_EDITSELECTDOWNs wxID_EDITCUTspprintswxID_EDITWIDTHDECswxID_EDITCREATEORDERswxsDesignerNamespacesmathswxID_EDITMOVEUPswxID_EDITALIGNswxID_EDITRELAYOUTswxID_EDITSELECTRIGHTsISswxID_EDITMOVEDOWNswxID_EDITSNAPGRIDsDesignerControlsEvtHandlers SelectionTagss wxID_CTRLHELPs sourceconstswxID_EDITFITSIZERscopyswxID_EDITWIDTHINCswxID_EDITDELETEsCtrlSizeswxID_EDITPASTEsHelpsUtilsswxID_FINDININDEXswxID_EDITSELECTLEFTs CtrlAlignswxID_CTRLPARENTs wxID_SHOWINSPsossInspectableObjectView((sT/mnt/gmirror/ports/devel/boaconstructor/work/boa-constructor-0.4.4/Views/Designer.pys? s$$     H'"