class CTRL(wx.Panel): def __init__(self, parent, IDmodele=None): wx.Panel.__init__(self, parent, -1) self.parent = parent self.IDmodele = IDmodele self._mgr = aui.AuiManager() self._mgr.SetManagedWindow(self) # Propriétés self.SetMinSize((920, 740)) # Importation des données # interactive_data = Data(IDmodele=IDmodele) # categorie = interactive_data.categorie # Création des widgets couleur_zone_travail = wx.Colour(255, 255, 255) self.ctrl_canvas = Panel_canvas( self, IDmodele=self.IDmodele, categorie="", couleur_zone_travail=couleur_zone_travail, mode="visualisation") #, interactive_data=interactive_data) # Barres d'outils self.toolbar1 = self.MakeToolBar1() self.toolbar2 = self.MakeToolBar2() # Création du panel central self._mgr.AddPane(self.ctrl_canvas, aui.AuiPaneInfo().Name("canvas").CenterPane()) # Création des barres d'outils self._mgr.AddPane( self.toolbar1, aui.AuiPaneInfo().Name("barreOutil_modes").Caption("Modes"). ToolbarPane().Top().LeftDockable(True).RightDockable(True)) self._mgr.AddPane( self.toolbar2, aui.AuiPaneInfo().Name("barreOutil_outils").Caption("Modes"). ToolbarPane().Top().LeftDockable(True).RightDockable(True)) self._mgr.Update() # Init Canvas self.ctrl_canvas.Init_canvas() self.SendSizeEvent() def MAJ(self, IDmodele=False): if IDmodele != False: self.IDmodele = IDmodele if self.IDmodele != None: interactive_data = Data(IDmodele=self.IDmodele) categorie = interactive_data.categorie self.ctrl_canvas.IDmodele = self.IDmodele self.ctrl_canvas.interactive_data = interactive_data self.ctrl_canvas.categorie = categorie # Importation if self.IDmodele != None: self.ctrl_canvas.Importation(self.IDmodele) self.ctrl_canvas.OnOutil_ajuster(None) def MakeToolBar1(self): tbar = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_DEFAULT_STYLE | aui.AUI_TB_OVERFLOW) tbar.SetToolBitmapSize(wx.Size(32, 32)) ID_OUTIL_CURSEUR = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_CURSEUR, _(u"Curseur"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Curseur.png"), wx.BITMAP_TYPE_ANY), _(u"Curseur"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_curseur, id=ID_OUTIL_CURSEUR) tbar.ToggleTool(ID_OUTIL_CURSEUR, True) ID_OUTIL_DEPLACER = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_DEPLACER, _(u"Déplacer"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Main.png"), wx.BITMAP_TYPE_ANY), _(u"Déplacer"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_deplacer, id=ID_OUTIL_DEPLACER) ID_OUTIL_ZOOM_OUT = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_OUT, _(u"Zoom arrière"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/zoom_moins.png"), wx.BITMAP_TYPE_ANY), _(u"Zoom arrière"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_zoom_moins, id=ID_OUTIL_ZOOM_OUT) ID_OUTIL_ZOOM_IN = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_IN, _(u"Zoom avant"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/zoom_plus.png"), wx.BITMAP_TYPE_ANY), _(u"Zoom avant"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_zoom_plus, id=ID_OUTIL_ZOOM_IN) tbar.AddSeparator() ID_OUTIL_ZOOM_AJUSTER = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_AJUSTER, _(u"Ajuster et centrer l'affichage"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Ajuster.png"), wx.BITMAP_TYPE_ANY), _(u"Ajuster et centrer l'affichage")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_ajuster, id=ID_OUTIL_ZOOM_AJUSTER) tbar.AddSeparator() ID_OUTIL_AFFICHAGE_APERCU = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_APERCU, _(u"Afficher un aperçu PDF"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Pdf.png"), wx.BITMAP_TYPE_ANY), _(u"Afficher un aperçu PDF")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_apercu, id=ID_OUTIL_AFFICHAGE_APERCU) tbar.Realize() return tbar def MakeToolBar2(self): tbar = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_DEFAULT_STYLE | aui.AUI_TB_OVERFLOW) tbar.SetToolBitmapSize(wx.Size(32, 32)) ID_OUTIL_AFFICHAGE_LABELS = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_LABELS, _(u"Afficher les labels associés aux données"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Calque_label.png"), wx.BITMAP_TYPE_ANY), _(u"Afficher les labels associés aux données"), aui.ITEM_CHECK) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_labels, id=ID_OUTIL_AFFICHAGE_LABELS) tbar.ToggleTool(ID_OUTIL_AFFICHAGE_LABELS, True) ID_OUTIL_AFFICHAGE_REMPLISSAGE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_REMPLISSAGE, _(u"Afficher le remplissage des objets associés aux données"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Calque_fond.png"), wx.BITMAP_TYPE_ANY), _(u"Afficher le remplissage des objets associés aux données"), aui.ITEM_CHECK) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_remplissage, id=ID_OUTIL_AFFICHAGE_REMPLISSAGE) tbar.ToggleTool(ID_OUTIL_AFFICHAGE_REMPLISSAGE, True) ID_OUTIL_AFFICHAGE_COULEURS = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_COULEURS, _(u"Synchroniser les couleurs du remplissage avec les données"), wx.Bitmap( Chemins.GetStaticPath("Images/32x32/Calque_couleurs.png"), wx.BITMAP_TYPE_ANY), _(u"Synchroniser les couleurs du remplissage avec les données"), aui.ITEM_CHECK) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_couleurs, id=ID_OUTIL_AFFICHAGE_COULEURS) tbar.ToggleTool(ID_OUTIL_AFFICHAGE_COULEURS, True) ID_OUTIL_AFFICHAGE_BORDS = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_BORDS, _(u"Afficher les bords des objets associés aux données"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Calque_bords.png"), wx.BITMAP_TYPE_ANY), _(u"Afficher les bords des objets associés aux données"), aui.ITEM_CHECK) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_bords, id=ID_OUTIL_AFFICHAGE_BORDS) tbar.ToggleTool(ID_OUTIL_AFFICHAGE_BORDS, True) tbar.Realize() return tbar
class Dialog(wx.Dialog): def __init__(self, parent, IDmodele=None, nom="", observations="", categorie="categorie_produits", IDdonnee=None, champs_interactifs={}): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX) self.parent = parent self.IDmodele = IDmodele self.IDdonnee = IDdonnee # DLG Attente dlgAttente = wx.BusyInfo(_(u"Veuillez patienter..."), self.parent) self._mgr = aui.AuiManager() self._mgr.SetManagedWindow(self) # Propriétés self.SetMinSize((920, 740)) # Création des widgets couleur_zone_travail = wx.Colour(255, 255, 255) self.ctrl_canvas = Panel_canvas( self, IDmodele=IDmodele, categorie=categorie, couleur_zone_travail=couleur_zone_travail, IDdonnee=IDdonnee, champs_interactifs=champs_interactifs) # Barres d'outils self.toolbar1 = self.MakeToolBar1() self.toolbar2 = self.MakeToolBar2() # Création des panels détachables self.ctrl_infos = Panel_infos(self) self.ctrl_commandes = Panel_commandes(self) self.ctrl_proprietes_doc = Panel_proprietes_image_interactive( self, self.ctrl_canvas, categorie=categorie) self.ctrl_proprietes_objet = Panel_proprietes_objet( self, self.ctrl_canvas) self.ctrl_canvas.ctrl_proprietes = self.ctrl_proprietes_objet # Saisit le nom de l'image self.ctrl_proprietes_doc.SetNom(nom) self.ctrl_proprietes_doc.SetObservations(observations) # Création des panels amovibles self._mgr.AddPane( self.ctrl_infos, aui.AuiPaneInfo().Name("infos").Caption( _(u"Infos")).Bottom().Layer(0).Position(1).CaptionVisible( False).CloseButton(False).MaximizeButton(False).MinSize( (-1, 18))) self._mgr.AddPane( self.ctrl_commandes, aui.AuiPaneInfo().Name("commandes").Caption( _(u"Commandes")).Bottom().Layer(1).Position(2).CaptionVisible( False).CloseButton(False).MaximizeButton(False).MinSize( (-1, 50))) self._mgr.AddPane( self.ctrl_proprietes_doc, aui.AuiPaneInfo().Name("proprietes_doc").Caption( _(u"Propriétés de l'image")).Right().Layer(1).Position( 1).Fixed().CloseButton(False).MaximizeButton(False)) self._mgr.AddPane( self.ctrl_proprietes_objet, aui.AuiPaneInfo().Name("proprietes_objet").Caption( _(u"Propriétés de l'objet")).Right().Layer(1).Position( 2).CloseButton(False).MaximizeButton(False).MinSize( (160, -1))) # Création du panel central self._mgr.AddPane(self.ctrl_canvas, aui.AuiPaneInfo().Name("canvas").CenterPane()) # Création des barres d'outils self._mgr.AddPane( self.toolbar1, aui.AuiPaneInfo().Name("barreOutil_modes").Caption("Modes"). ToolbarPane().Top().LeftDockable(True).RightDockable(True)) self._mgr.AddPane( self.toolbar2, aui.AuiPaneInfo().Name("barreOutils_objets").Caption("Objets"). ToolbarPane().Top().LeftDockable(True).RightDockable(True)) self._mgr.Update() self.Bind(wx.EVT_CLOSE, self.OnBoutonAnnuler) # Logo if 'phoenix' in wx.PlatformInfo: _icon = wx.Icon() else: _icon = wx.EmptyIcon() _icon.CopyFromBitmap( wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Logo.png"), wx.BITMAP_TYPE_ANY)) self.SetIcon(_icon) self.SetTitle(u"Editeur d'images interactives") # Init Canvas self.CenterOnScreen() self.ctrl_canvas.Init_canvas() del dlgAttente # Importation if self.IDmodele != None: self.ctrl_canvas.Importation(self.IDmodele) UTILS_Dialogs.AjusteSizePerso(self, __file__) self.CenterOnScreen() self.ctrl_canvas.OnOutil_ajuster(None) def MakeToolBar1(self): tbar = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_DEFAULT_STYLE | aui.AUI_TB_OVERFLOW) tbar.SetToolBitmapSize(wx.Size(32, 32)) ID_OUTIL_CURSEUR = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_CURSEUR, _(u"Curseur"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Curseur.png"), wx.BITMAP_TYPE_ANY), _(u"Curseur"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_curseur, id=ID_OUTIL_CURSEUR) tbar.ToggleTool(ID_OUTIL_CURSEUR, True) ID_OUTIL_DEPLACER = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_DEPLACER, _(u"Déplacer"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Main.png"), wx.BITMAP_TYPE_ANY), _(u"Déplacer"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_deplacer, id=ID_OUTIL_DEPLACER) ID_OUTIL_ZOOM_OUT = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_OUT, _(u"Zoom arrière"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/zoom_moins.png"), wx.BITMAP_TYPE_ANY), _(u"Zoom arrière"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_zoom_moins, id=ID_OUTIL_ZOOM_OUT) ID_OUTIL_ZOOM_IN = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_IN, _(u"Zoom avant"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/zoom_plus.png"), wx.BITMAP_TYPE_ANY), _(u"Zoom avant"), aui.ITEM_RADIO) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_zoom_plus, id=ID_OUTIL_ZOOM_IN) tbar.AddSeparator() ID_OUTIL_ZOOM_AJUSTER = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_ZOOM_AJUSTER, _(u"Ajuster et centrer l'affichage"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Ajuster.png"), wx.BITMAP_TYPE_ANY), _(u"Ajuster et centrer l'affichage")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_ajuster, id=ID_OUTIL_ZOOM_AJUSTER) tbar.AddSeparator() ID_OUTIL_AFFICHAGE_APERCU = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_AFFICHAGE_APERCU, _(u"Afficher un aperçu PDF"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Pdf.png"), wx.BITMAP_TYPE_ANY), _(u"Afficher un aperçu PDF")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnAffichage_apercu, id=ID_OUTIL_AFFICHAGE_APERCU) tbar.Realize() return tbar def MakeToolBar2(self): tbar = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_DEFAULT_STYLE | aui.AUI_TB_OVERFLOW) tbar.SetToolBitmapSize(wx.Size(32, 32)) ID_OUTIL_OBJET_TEXTE_BLOC = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_TEXTE_BLOC, _(u"Insérer un bloc de texte multi-lignes"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Texte_ligne.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer un bloc de texte multi-lignes")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_texteBloc, id=ID_OUTIL_OBJET_TEXTE_BLOC) ID_OUTIL_OBJET_RECTANGLE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_RECTANGLE, _(u"Insérer un rectangle"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Rectangle.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer un rectangle")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_rectangle, id=ID_OUTIL_OBJET_RECTANGLE) ID_OUTIL_OBJET_LIGNE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_LIGNE, _(u"Insérer une ligne"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Ligne.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer une ligne")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_ligne, id=ID_OUTIL_OBJET_LIGNE) ID_OUTIL_OBJET_CERCLE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_CERCLE, _(u"Insérer une ellipse"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Cercle.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer une ellipse")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_cercle, id=ID_OUTIL_OBJET_CERCLE) ID_OUTIL_OBJET_POLYGONE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_POLYGONE, _(u"Insérer un polygone"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Polygone.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer un polygone")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_polygone, id=ID_OUTIL_OBJET_POLYGONE) ID_OUTIL_OBJET_POLYLINE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_POLYLINE, _(u"Dessiner un polygone à main levée"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Polyline.png"), wx.BITMAP_TYPE_ANY), _(u"Dessiner un polygone à main levée")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_polyline, id=ID_OUTIL_OBJET_POLYLINE) ID_OUTIL_OBJET_IMAGE_DROPDOWN = wx.Window.NewControlId() ID_OUTIL_OBJET_IMAGE = wx.Window.NewControlId() tbar.AddSimpleTool( ID_OUTIL_OBJET_IMAGE_DROPDOWN, _(u"Insérer une image"), wx.Bitmap(Chemins.GetStaticPath("Images/32x32/Image.png"), wx.BITMAP_TYPE_ANY), _(u"Insérer une image")) self.Bind(wx.EVT_TOOL, self.ctrl_canvas.OnOutil_image, id=ID_OUTIL_OBJET_IMAGE) self.Bind(aui.EVT_AUITOOLBAR_TOOL_DROPDOWN, self.ctrl_canvas.OnDropDownImage, id=ID_OUTIL_OBJET_IMAGE_DROPDOWN) tbar.SetToolDropDown(ID_OUTIL_OBJET_IMAGE_DROPDOWN, True) tbar.Realize() return tbar def OnBoutonOk(self, event=None): UTILS_Dialogs.SaveSizePerso(self, __file__) self.EndModal(wx.ID_OK) def OnBoutonAnnuler(self, event=None): UTILS_Dialogs.SaveSizePerso(self, __file__) self.EndModal(wx.ID_CANCEL) def Quitter(self, enregistrer=True): # Quitter self._mgr.UnInit() del self._mgr self.Destroy() def GetIDmodele(self, IDmodele=None): return self.ctrl_canvas.IDmodele