Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from urllib2 import urlopen
- from urllib import urlencode
- import sys,os,gtk,re
- try:
- import json
- except ImportError:
- os.system("gnome-terminal --title='python-json paketini kurmaniz gerekmektedir.' --command='sudo apt-get install python-json'")
- sys.exit(1)
- class translate(object):
- def __init__(self):
- pencere = gtk.Window() # penceremizi çağırdık
- pencere.set_title("Python Google Translator") # penceremiz için başlık
- pencere.add_events(gtk.gdk.ALL_EVENTS_MASK)
- pencere.connect("key-press-event",self.kisayol)
- pencere.set_resizable(False) #pencerenin yeniden boyutlandırma değeri için yanlış değerini verdik
- pencere.set_icon_from_file("/usr/share/pixmaps/logo.png") #penceremiz için icon
- balon = gtk.Tooltips() # pencere aracları için balon metni kullanabilmek için tooltip aracını balon a eşitledik
- pencere.set_position(gtk.WIN_POS_CENTER) #pencerenin ekranın ortasında yer almasını sağladık
- pencere.connect("delete_event", gtk.main_quit) # pencere kapatılırsa programın sonlanmasını sağladık
- text = gtk.TextView() # kullanıcıdan girdi alınabilmesi için textwiev özelliğini çağırdık
- text.set_size_request(370, 172) #textview için minimum boyut atadık
- text.set_wrap_mode(gtk.WRAP_WORD) #textviewde yazıların enine uzamaması için wrap word modunu seçtik
- retext = gtk.TextView() #çıktının oluşucağı alan için de yukardaki işlemleri kullandık ;
- retext.set_size_request(370, 172)
- retext.set_wrap_mode(gtk.WRAP_WORD) #
- sw = gtk.ScrolledWindow()
- 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
- sw.add(text) # scrolled aracında text ve retext i ekledik
- rsw = gtk.ScrolledWindow()
- rsw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- rsw.add(retext)
- 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
- fram.add(sw)
- frame = gtk.Frame()
- frame.add(rsw)
- self.sozluk = { "Türkçe": "tr", "İngilizce": "en",
- "Almanca": "de", "Fransızca": "fr",
- "Farsça": "fa", "Rusça": "ru",
- "Çince": "zh-CN","Yunanca": "el",
- "Arapça": "ar" }
- self.bil = gtk.combo_box_new_text()
- self.bil1 = gtk.combo_box_new_text()
- 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..
- self.bil.append_text(x)
- self.bil1.append_text(x)
- self.bil.set_active(0) #comboxlar için hangi öğenin aktif olmasını set active özelliğiyle seçtik
- self.bil1.set_active(1)
- go = gtk.Button() #çeviri işlemini gerçekleştirme görevi için buton oluştduk
- ek = gtk.Image()
- ek.set_from_file("/usr/share/pixmaps/translate_logo.gif" ) # buton için yazı yerine resim kullandık
- go.add(ek) #resimi butona ekledik
- go.connect("clicked",self.islem) #butona tıklandığında hangi işlevin çalışmasını istediğimiz belirttik
- go.set_relief(gtk.RELIEF_NONE) # resimin buton içinde görünmemesi için dış kabuk özelliğini seçmedik
- change = gtk.Button()
- ek1 = gtk.Image() # değiştirme görevi için farklı bir butona benzeri işlemleri tekrarladık
- ek1.set_from_file("/usr/share/pixmaps/değiştir.png" )
- change.set_relief(gtk.RELIEF_NONE)
- change.add(ek1)
- change.connect("clicked",self.mutant) #butona tıklandığında hangi işlevin çalışmasını istediğimiz belirttik
- change.set_size_request(1,2)
- balon.set_tip(go,"Çeviri İşlemini Gerçekleştirmek İçin Butonu Kullanın",None) # hangi arac için hangi balon metni istediğimizi belirttik
- balon.set_tip(self.bil,"Şu Dilden Çevir",None)
- balon.set_tip(self.bil1,"Şu Dile Çevir",None)
- balon.set_tip(change,"Diller Arasında Geçiş Yap",None)
- box = gtk.Table(6,6) #pencere araclarımız penceremize yerleştirmek için gtk Table adlı aracdan faydalandık
- box.set_col_spacings(10)
- box.set_row_spacings(10)
- vpaned = gtk.VPaned()
- vpaned.add(fram)
- vpaned.add(frame)
- box.attach(vpaned,1,5,1,2)
- box.attach(self.bil,1,2,2,3)
- box.attach(self.bil1,3,4,2,3 )
- box.attach(change,4,5,2,3 )
- box.attach(go,1,5,4,5)
- pencere.add(box)
- self.buffer = text.get_buffer() #textview den bilgi alabilmek ve değiştirmek için buffer özelleiğinden faydalandık
- self.rebuffer = retext.get_buffer()
- pencere.show_all()
- def mutant(self,filanca):
- a = self.bil1.get_active() #combobox için aktif değer
- b = self.bil.get_active() #diğer combobox için aktif değer
- self.bil.set_active(a) #her iki aracta aynı listeyi kullandığı için seçilen değerler istediğimizi sağladı..
- self.bil1.set_active(b)
- def kisayol(self,widget,event):
- keyname = gtk.gdk.keyval_name(event.keyval)
- # if event.state & gtk.gdk.CONTROL_MASK: #if event.state & gtk.gdk.SHIFT_MASK :
- if event.state & gtk.gdk.MOD1_MASK:
- if keyname == "a": self.islem()
- def islem(self,falanca=False):
- x,y = self.bil.get_active_text(),self.bil1.get_active_text()
- lang ,lang1 = self.sozluk[x],self.sozluk[y]
- start, end = self.buffer.get_bounds() #buffer aracını kullanarak girdiyi kopyaladık...
- konu= self.buffer.get_slice(start, end)
- self.translate(lang,lang1,konu)
- def translate(self,lang1,lang2,text):
- langpair='%s|%s'%(lang1,lang2)
- base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
- params=urlencode( (('v',1.0),
- ('q',text),
- ('langpair',langpair),) )
- url=base_url+params
- content=urlopen(url).read()
- try:
- trans_dict=json.loads(content)
- except AttributeError:
- trans_dict=json.read(content)
- try:
- ceviri = "%s" % ( (trans_dict['responseData']['translatedText']) )
- ceviri = ceviri.replace("'","'").replace(""","")
- except:
- return
- self.rebuffer.set_text(ceviri)
- def main(self):
- gtk.main()
- tra = translate()
- tra.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement