# -*- coding: utf-8 -*-
#Boa:Frame:Frame1

import wx

def create(parent):
    return Frame1(parent)

cc = ['black','brown','red','orange','yellow','green','blue','purple','grey','white']
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1PANEL1, 
 wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1TEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(7)]



class Frame1(wx.Frame):
    
 
    
    def _init_coll_boxSizer1_Items(self, parent):
        # generated method, don't edit

        parent.AddWindow(self.panel1, 0, border=0, flag=0)
        parent.AddWindow(self.staticText1, 0, border=0, flag=0)
        parent.AddSizer(self.boxSizer2, 0, border=0, flag=0)
        parent.AddWindow(self.staticText2, 0, border=0, flag=0)

    def _init_coll_boxSizer2_Items(self, parent):
        # generated method, don't edit

        parent.AddWindow(self.button1, 0, border=0, flag=0)
        parent.AddWindow(self.textCtrl1, 0, border=0, flag=0)
        parent.AddWindow(self.button2, 0, border=0, flag=0)

    def _init_sizers(self):
        # generated method, don't edit
        self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)

        self.boxSizer2 = wx.BoxSizer(orient=wx.HORIZONTAL)

        self._init_coll_boxSizer1_Items(self.boxSizer1)
        self._init_coll_boxSizer2_Items(self.boxSizer2)

        self.SetSizer(self.boxSizer1)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(345, 246), size=wx.Size(350, 269),
              style=wx.DEFAULT_FRAME_STYLE, title=u'Code des couleurs')
        self.SetClientSize(wx.Size(350, 241))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(350, 140),
              style=wx.TAB_TRAVERSAL)
        self.panel1.Bind(wx.EVT_PAINT, self.OnPanel1Paint)

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label=u' Entrer la valeur de la r\xe9sistance, en ohms\xa0:',
              name='staticText1', parent=self, pos=wx.Point(0, 140),
              size=wx.Size(350, 29), style=wx.MAXIMIZE_BOX)
        self.staticText1.SetFont(wx.Font(13, wx.DEFAULT, wx.NORMAL, wx.NORMAL,
              False, u'Ubuntu'))
        self.staticText1.SetInitialSize(wx.Size(350, 29))

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'Montrer',
              name='button1', parent=self, pos=wx.Point(0, 169),
              size=wx.Size(112, 43), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
              id=wxID_FRAME1BUTTON1)

        self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label=u'Effacer',
              name='button2', parent=self, pos=wx.Point(232, 169),
              size=wx.Size(116, 43), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
              id=wxID_FRAME1BUTTON2)

        self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
              parent=self, pos=wx.Point(112, 169), size=wx.Size(120, 43),
              style=0, value=u'')

        self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2, label=u'',
              name='staticText2', parent=self, pos=wx.Point(0, 212),
              size=wx.Size(350, 28), style=0)

        self._init_sizers()

    def __init__(self, parent):
        self._init_ctrls(parent)
        
    def OnPanel1Paint(self, event):
        dc = wx.PaintDC(self.panel1)
        dc.Clear()
        dc.SetPen(wx.Pen(wx.BLACK, 6))
        dc.DrawLine(10, 70, 330, 70)
        dc.SetPen(wx.Pen(wx.BLACK, 3))
        dc.SetBrush(wx.LIGHT_GREY_BRUSH)
        dc.DrawRectangle(85, 40, 170, 60)
        dc.SetPen(wx.Pen(wx.BLACK))
        dc.SetBrush(wx.LIGHT_GREY_BRUSH)
        for x in range(3):
            dc.DrawRectangle(115+x*35,40,18,60)

    def OnButton1Button(self, event):
        v1ch=self.textCtrl1.GetValue()
        
        try:
            v = float(v1ch)
            
            # conversion en valeur numérique
        except:
            err =1
            # erreur : entrée non numérique
        else:
            err =0
        if err ==1 or v < 10 or v > 1e11 :
            self.staticText2.SetLabel('Valeur non numérique ou < 10 ou > 1e11')
            # entrée incorrecte ou hors limites
        else:
            li =[0]*3
            # liste des 3 codes à afficher
            # extraction du nombre de zéros à accoler aux 2 chiffres significatifs :
            while v >= 100:
                v = v / 10
                li[2]=li[2]+1
            # extraction du premier chiffre significatif :
            li[0] = int(v/10)
            # extraction du second chiffre significatif :
            li[1] = int(v - li[0]*10 +.5)
            #self.staticText2.SetLabel(str(li[1]))
            # +.5 pour arrondir correctement
            # cas particulier 996 ohm :
            if li[1] == 10 :
                li[1] = 0
                li[0] = li[0] + 1
            if li[0] == 10 :
                li[0] = 1
                li[2] = li[2] + 1
            self.staticText2.SetLabel("Valeurs corespondantes " + str(li[0]) + str(li[1]) + str(li[2]))
            # Coloration des 3 lignes :
            dc = wx.PaintDC(self.panel1)
            for x in range(3):
                dc.SetBrush(wx.Brush(cc[li[x]],wx.SOLID))
                dc.DrawRectangle(115+x*35,40,18,60)
        event.Skip()

    def OnButton2Button(self, event):
        self.textCtrl1.SetValue('')
        self.staticText2.SetLabel('')
        dc = wx.PaintDC(self.panel1)
        dc.SetBrush(wx.LIGHT_GREY_BRUSH)
        for x in range(3):
            #dc.SetBrush(wx.Brush(ring[x],wx.SOLID))
            dc.DrawRectangle(115+x*35,40,18,60)
        event.Skip()
        

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = create(None)
    frame.Show()
    app.MainLoop()
