Advertisement
Guest User

Untitled

a guest
Sep 4th, 2011
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.16 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from urllib2 import urlopen
  4. from urllib import urlencode
  5. import sys,os,gtk,re
  6. try:
  7.     import json
  8. except ImportError:
  9.     os.system("gnome-terminal --title='python-json paketini kurmaniz gerekmektedir.' --command='sudo apt-get install python-json'")
  10.     sys.exit(1)
  11. class translate(object):
  12.     def __init__(self):
  13.     pencere = gtk.Window() # penceremizi çağırdık
  14.     pencere.set_title("Python Google Translator") # penceremiz için başlık
  15.     pencere.add_events(gtk.gdk.ALL_EVENTS_MASK)
  16.     pencere.connect("key-press-event",self.kisayol)
  17.     pencere.set_resizable(False)    #pencerenin yeniden boyutlandırma değeri için yanlış değerini verdik
  18.     pencere.set_icon_from_file("/usr/share/pixmaps/logo.png") #penceremiz için icon
  19.     balon = gtk.Tooltips() # pencere aracları için balon metni kullanabilmek için tooltip aracını balon a eşitledik
  20.     pencere.set_position(gtk.WIN_POS_CENTER)    #pencerenin ekranın ortasında yer almasını sağladık
  21.     pencere.connect("delete_event", gtk.main_quit) # pencere kapatılırsa programın sonlanmasını sağladık
  22.     text = gtk.TextView() # kullanıcıdan girdi alınabilmesi için textwiev özelliğini çağırdık
  23.     text.set_size_request(370, 172) #textview için minimum boyut atadık
  24.     text.set_wrap_mode(gtk.WRAP_WORD) #textviewde yazıların enine uzamaması için wrap word modunu seçtik
  25.     retext = gtk.TextView() #çıktının oluşucağı alan için de yukardaki işlemleri kullandık ;
  26.     retext.set_size_request(370, 172)
  27.     retext.set_wrap_mode(gtk.WRAP_WORD) #
  28.     sw = gtk.ScrolledWindow()
  29.     sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) # eğer textview için alan minumum boyuttan fazlaysa kaydırma çubuğunu kullanılmasını sağladık
  30.     sw.add(text) # scrolled aracında text ve retext i ekledik
  31.     rsw = gtk.ScrolledWindow()
  32.     rsw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 
  33.     rsw.add(retext)
  34.     fram = gtk.Frame() #eklediğimiz scrooled ın text ile birlikte çerçeve içinde görünmesi için frame adlı gtk aracından faydalandık
  35.     fram.add(sw)
  36.     frame = gtk.Frame()
  37.     frame.add(rsw)
  38.    
  39.         self.sozluk = { "Türkçe": "tr",   "İngilizce":   "en",
  40.                                "Almanca": "de", "Fransızca":  "fr",   
  41.                                "Farsça": "fa", "Rusça":  "ru",               
  42.                                "Çince":  "zh-CN","Yunanca": "el",                                             
  43.                                 "Arapça": "ar" }  
  44.     self.bil = gtk.combo_box_new_text()
  45.     self.bil1 = gtk.combo_box_new_text()
  46.     for x in self.sozluk: # listedeki her öğenin x değerini almasını sağladık böylece iki farklı seçeneği de combobox adlı araca taşımış olduk..
  47.         self.bil.append_text(x)
  48.         self.bil1.append_text(x)
  49.     self.bil.set_active(0) #comboxlar için hangi öğenin aktif olmasını set active özelliğiyle seçtik
  50.     self.bil1.set_active(1)
  51.     go = gtk.Button() #çeviri işlemini gerçekleştirme görevi için buton oluştduk
  52.     ek = gtk.Image()
  53.     ek.set_from_file("/usr/share/pixmaps/translate_logo.gif" ) # buton için yazı yerine resim kullandık
  54.     go.add(ek) #resimi butona ekledik
  55.  
  56.     go.connect("clicked",self.islem) #butona tıklandığında hangi işlevin çalışmasını istediğimiz belirttik
  57.     go.set_relief(gtk.RELIEF_NONE) # resimin buton içinde görünmemesi için dış kabuk özelliğini seçmedik
  58.     change = gtk.Button()
  59.     ek1 = gtk.Image()    # değiştirme görevi için farklı bir butona benzeri işlemleri tekrarladık
  60.     ek1.set_from_file("/usr/share/pixmaps/değiştir.png" )
  61.     change.set_relief(gtk.RELIEF_NONE)
  62.     change.add(ek1)
  63.     change.connect("clicked",self.mutant) #butona tıklandığında hangi işlevin çalışmasını istediğimiz belirttik
  64.     change.set_size_request(1,2)
  65.     balon.set_tip(go,"Çeviri İşlemini Gerçekleştirmek İçin Butonu Kullanın",None) # hangi arac için hangi balon metni istediğimizi belirttik
  66.     balon.set_tip(self.bil,"Şu Dilden Çevir",None)
  67.     balon.set_tip(self.bil1,"Şu Dile Çevir",None)
  68.     balon.set_tip(change,"Diller Arasında Geçiş Yap",None)  
  69.     box = gtk.Table(6,6)  #pencere araclarımız penceremize yerleştirmek için gtk Table adlı aracdan faydalandık
  70.     box.set_col_spacings(10)
  71.     box.set_row_spacings(10)
  72.     vpaned = gtk.VPaned()
  73.     vpaned.add(fram)
  74.     vpaned.add(frame)
  75.     box.attach(vpaned,1,5,1,2)
  76.     box.attach(self.bil,1,2,2,3)
  77.     box.attach(self.bil1,3,4,2,3 )
  78.     box.attach(change,4,5,2,3 )
  79.  
  80.     box.attach(go,1,5,4,5)
  81.     pencere.add(box)
  82.  
  83.                                
  84.     self.buffer = text.get_buffer() #textview den bilgi alabilmek ve değiştirmek için buffer özelleiğinden faydalandık
  85.     self.rebuffer =  retext.get_buffer()
  86.     pencere.show_all()
  87.     def mutant(self,filanca):
  88.     a = self.bil1.get_active() #combobox için aktif değer
  89.     b = self.bil.get_active() #diğer combobox için aktif değer
  90.     self.bil.set_active(a) #her iki aracta aynı listeyi kullandığı için seçilen değerler istediğimizi sağladı..
  91.     self.bil1.set_active(b)
  92.     def kisayol(self,widget,event):  
  93.         keyname = gtk.gdk.keyval_name(event.keyval)  
  94.         #   if event.state & gtk.gdk.CONTROL_MASK:    #if event.state & gtk.gdk.SHIFT_MASK :
  95.         if event.state & gtk.gdk.MOD1_MASK:
  96.                 if keyname == "a": self.islem()
  97.     def islem(self,falanca=False):
  98.  
  99.         x,y = self.bil.get_active_text(),self.bil1.get_active_text()
  100.         lang ,lang1 = self.sozluk[x],self.sozluk[y]
  101.     start, end = self.buffer.get_bounds() #buffer aracını kullanarak girdiyi kopyaladık...
  102.     konu= self.buffer.get_slice(start, end)
  103.     self.translate(lang,lang1,konu)    
  104.          
  105.     def translate(self,lang1,lang2,text):  
  106.     langpair='%s|%s'%(lang1,lang2)
  107.     base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
  108.     params=urlencode( (('v',1.0),
  109.                        ('q',text),
  110.                        ('langpair',langpair),) )
  111.     url=base_url+params
  112.     content=urlopen(url).read()
  113.     try:
  114.         trans_dict=json.loads(content)
  115.     except AttributeError:
  116.    
  117.         trans_dict=json.read(content)
  118.         try:
  119.             ceviri = "%s" % ( (trans_dict['responseData']['translatedText']) )  
  120.             ceviri = ceviri.replace("'","'").replace(""","")
  121.     except:
  122.             return
  123.     self.rebuffer.set_text(ceviri)  
  124.  
  125.     def main(self):
  126.     gtk.main()
  127. tra = translate()
  128. tra.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement