#!/usr/bin/env python
# -*- coding: UTF8 -*-

# Python module gresistor.py
# Autogenerated from gresistor.glade
# Generated on Sat Oct  8 18:49:23 2005

# Warning: Do not modify any context comment such as #--
# They are required to keep user's code

import os

import gtk

import pango

from SimpleGladeApp import SimpleGladeApp
from SimpleGladeApp import bindtextdomain

app_name = "gresistor"
app_version = "0.0.1"

glade_dir = os.path.join('/usr', 'share', 'gresistor')
locale_dir = ""

bindtextdomain(app_name, locale_dir)

class Gresistor(SimpleGladeApp):

    def __init__(self, path="gresistor.glade",
                 root="gResistor",
                 domain=app_name, **kwargs):
        path = os.path.join(glade_dir, path)
        SimpleGladeApp.__init__(self, path, root, domain, **kwargs)

    #-- Gresistor.new {
    def getvalue(self,m,v1,v2,v3,v4,v5,v6):
        global value
        multi=''
        meas=''
        tol=''
        temp=''
        #Set temperature
        if (v6==0):
            temp=''
        elif (v6==1):
            temp='100ppm'
        elif (v6==2):
            temp='50ppm'
        elif (v6==3):
            temp='15ppm'
        elif (v6==4):
            temp='25ppm'            
        #Set tolerances
        if (v5==0):
            tol='20%'
        elif (v5==1):
            tol='1%'
        elif (v5==2):
            tol='2%'
        elif (v5==3):
            tol='0.5%'
        elif (v5==4):
            tol='0.25%'            
        elif (v5==5):
            tol='0.1%'
        elif (v5==6):
            tol='5%'
        elif (v5==7):
            tol='10%'
        #set multiply
        if (v4==0):
            multi=''
            meas=" Ω"
        elif (v4==1):
            multi='0'
            meas=" Ω"
        elif (v4==2):
            multi='00'
            meas=" Ω"    
        elif (v4==3):
            multi=''
            meas="KΩ"
        elif (v4==4):
            multi='0'
            meas="KΩ"
        elif (v4==5):
            multi='00'
            meas="KΩ"    
        elif (v4==6):
            multi=''
            meas="MΩ"
        elif (v4==7):
            multi='0'
            meas="MΩ"    
        if (m==0):
            if (v1==0):
                v1=''
            value=str(v1)+str(v2)+multi+meas+' ± '+tol
        if (m==1):
            if (v1==0)and(v2==0):
                v1=''
                v2=''
            elif (v1==0):
                v1=''
            value=str(v1)+str(v2)+str(v3)+multi+meas+' ± '+tol
        if (m==2):
            if (v1==0)and(v2==0):
                v1=''
                v2=''
            elif (v1==0):
                v1=''
            value=str(v1)+str(v2)+str(v3)+multi+meas+' ± '+tol+' '+temp
    def new(self):
        #define colors
        self.fg_gc = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc1 = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc2 = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc3 = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc4 = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc5 = gtk.gdk.GC(self.drawingarea1.window)
        self.bg_gc6 = gtk.gdk.GC(self.drawingarea1.window) 
        #select 1 option
        self.label8.set_sensitive(0)
        self.combobox7.set_sensitive(0)
        self.label5.set_sensitive(0)
        self.combobox4.set_sensitive(0)
        #state of the comboboxes
        self.combobox1.set_active(0)
        self.combobox2.set_active(0)
        self.combobox3.set_active(0)
        self.combobox4.set_active(0)
        self.combobox5.set_active(0)
        self.combobox6.set_active(0)
        self.combobox7.set_active(0)
        #colors to use
        fg_color = gtk.gdk.color_parse('black')        
        bg_color = gtk.gdk.color_parse('#BD987F')
        self.bg_gc.set_rgb_fg_color(bg_color) 
        self.fg_gc.set_rgb_fg_color(fg_color) 
        self.setcolor(1,self.combobox2.get_active_text())
        self.setcolor(2,self.combobox3.get_active_text())
        self.setcolor(3,self.combobox4.get_active_text())
        self.setcolor(4,self.combobox5.get_active_text())
        self.setcolor(5,self.combobox6.get_active_text())
        self.setcolor(6,self.combobox7.get_active_text())
    #-- Gresistor.new }

    #-- Gresistor custom methods {
    #   Write your own methods here
    #-- Gresistor custom methods }

    #-- Gresistor.on_combobox1_changed {

    def setcolor(self,x,a):
        if (x==1):
            self.bg_gc1.set_rgb_fg_color(gtk.gdk.color_parse(a))
        if (x==2):
            self.bg_gc2.set_rgb_fg_color(gtk.gdk.color_parse(a))

        if (x==3):
            self.bg_gc3.set_rgb_fg_color(gtk.gdk.color_parse(a))
        if (x==4):
            if (a=='Sylver'):
                a='#CDD5DE'
            self.bg_gc4.set_rgb_fg_color(gtk.gdk.color_parse(a))
        if (x==5):
            if (a=='Sylver'):
                a='#CDD5DE'
            elif (a=='None'):
                a='#BD987F'
            self.bg_gc5.set_rgb_fg_color(gtk.gdk.color_parse(a))
        if (x==6):
            if (a=='None'):
                a='#BD987F'
            self.bg_gc6.set_rgb_fg_color(gtk.gdk.color_parse(a))

    def on_combobox1_changed(self, widget, *args):
        global index
        index = self.combobox1.get_active()
        #what if 2 option selected
        if (index==1):
           self.combobox4.set_sensitive(1)
           self.label5.set_sensitive(1)
           self.combobox7.set_sensitive(0)
           self.label8.set_sensitive(0)
           self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
        #what if 1 option selected
        if (index==0):
           self.combobox4.set_sensitive(0)
           self.label5.set_sensitive(0)
           self.combobox7.set_sensitive(0)
           self.label8.set_sensitive(0)
           self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
        #what if 3 option selected
        if (index==2):
           self.combobox4.set_sensitive(1)
           self.label5.set_sensitive(1)
           self.combobox7.set_sensitive(1)
           self.label8.set_sensitive(1)
           self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
        self.drawingarea1.queue_draw ()
    #-- Gresistor.on_combobox1_changed }

    #-- Gresistor.on_combobox2_changed {
    def on_combobox2_changed(self, widget, *args):
        self.setcolor(1,self.combobox2.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox2_changed }

    #-- Gresistor.on_combobox3_changed {
    def on_combobox3_changed(self, widget, *args):
        self.setcolor(2,self.combobox3.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox3_changed }

    #-- Gresistor.on_combobox4_changed {
    def on_combobox4_changed(self, widget, *args):
        self.setcolor(3,self.combobox4.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox4_changed }

    #-- Gresistor.on_combobox5_changed {
    def on_combobox5_changed(self, widget, *args):
        self.setcolor(4,self.combobox5.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox5_changed }

    #-- Gresistor.on_combobox6_changed {
    def on_combobox6_changed(self, widget, *args):
        self.setcolor(5,self.combobox6.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox6_changed }

    #-- Gresistor.on_combobox7_changed {
    def on_combobox7_changed(self, widget, *args):
        self.setcolor(6,self.combobox7.get_active_text())
        self.drawingarea1.queue_draw ()
        self.getvalue(index,self.combobox2.get_active(),self.combobox3.get_active(),self.combobox4.get_active(),self.combobox5.get_active(),self.combobox6.get_active(),self.combobox7.get_active())
    #-- Gresistor.on_combobox7_changed }

    #-- Gresistor.on_drawingarea1_expose_event {
    def on_drawingarea1_expose_event(self, widget, *args):
        width, height = self.drawingarea1.window.get_size()
        x = 250/4
        y = 250/4
        w = (width-300)/2
        h = 250/2
     #   self.drawingarea1.window.draw_arc(self.bg_gc, True, x,y, w,h, 0, 250*64)
        font_desc = pango.FontDescription('Sans 22')
        layout = self.drawingarea1.create_pango_layout(value)
        layout.set_font_description(font_desc)
        text_width, text_height = layout.get_pixel_size()
        self.drawingarea1.window.draw_layout(self.fg_gc, (width-text_width)/2, 10, layout)

     #   Trasez rezistenta
        self.drawingarea1.window.draw_rectangle(self.fg_gc, False, w+40, 70,60, 74)
        self.drawingarea1.window.draw_rectangle(self.bg_gc, True, w+41, 71,59, 73)

        self.drawingarea1.window.draw_rectangle(self.fg_gc, False, w+190, 70,60, 74)
        self.drawingarea1.window.draw_rectangle(self.bg_gc, True, w+191, 71,59, 73)

        self.drawingarea1.window.draw_rectangle(self.fg_gc, False, w+100, 82,90, 50)
        self.drawingarea1.window.draw_rectangle(self.bg_gc, True, w+101, 83,89, 49)

        self.drawingarea1.window.draw_line(self.fg_gc, w, 107, w+40, 107)
        self.drawingarea1.window.draw_line(self.fg_gc, w+250, 107, w+290, 107)
    #   Trasez dreptunghiuri de culoare
        self.drawingarea1.window.draw_rectangle(self.bg_gc1,True, w+65, 71,10, 73)
        self.drawingarea1.window.draw_rectangle(self.bg_gc2,True, w+110, 83,10, 49)
    # self.drawingarea1.window.draw_rectangle(self.bg_gc3,True, w+130, 83,10, 49)
        self.drawingarea1.window.draw_rectangle(self.bg_gc4,True, w+150, 83,10, 49)
        self.drawingarea1.window.draw_rectangle(self.bg_gc5,True, w+170, 83,10, 49)
    # self.drawingarea1.window.draw_rectangle(self.bg_gc6,True, w+215, 71,10, 73)
    #-- Gresistor.on_drawingarea1_expose_event }
        if (index==1):
            self.drawingarea1.window.draw_rectangle(self.bg_gc3,True, w+130, 83,10, 49)    
        if (index==2):
            self.drawingarea1.window.draw_rectangle(self.bg_gc6,True, w+215, 71,10, 73)
            self.drawingarea1.window.draw_rectangle(self.bg_gc3,True, w+130, 83,10, 49)   

#-- main {

def main():
    g_resistor = Gresistor()

    g_resistor.run()

if __name__ == "__main__":
    main()

#-- main }
