Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Firefox Ubuntu CZ Menu + Aplikace  (Přečteno 2270 krát)

petrakis

  • Stálý člen
  • **
  • Příspěvků: 513
Firefox Ubuntu CZ Menu + Aplikace
« kdy: 01 Listopadu 2009, 11:56:10 »
Zpocatku jsem nechtel psat nove tema, kdyz moderatori usoudi tak to presunou do hlavniho ohladne addonu. Tenhle zpusob je napsan hlavne pro Ubuntu pod Gnome (upravit si to vsak pro jine prostredi je velice snadne). Po nejake dobe jsem se dostal k tomu abych zprovoznil zpousteni aplikaci primo z menu. Bezpecnostni opatreni ze strany mozilly jsou dost striktni a nedoporucuje se propojeni shellu s jadrem firefoxu coz ma svou logiku. Dalsi problem je ze k podpore vsech moznych aplikaci kod addounu bude hodne velkej. Jelikoz jsem to vsak chctel i kvuli svym potrebam , pomoci pythonu to jde. Mozilla jeste nepodporuje primou integraci pythonu tak jako javascriptu ale zpusob implementace ktery popisu je eleganti, jednoduchej a kazdej si to muze nastavit na miru.

V Ubuntu Cz menu si staci aktivovat submenu Extra's kde muzeme umistnovat javascriptove snippety (http://forum.ubuntu.cz/index.php/topic,38943.0.html)

Vybereme si jedno pole , nazev pojmenujeme treba super launcher a do url zadame cestu k souboru pack.py ktery si ted popiseme, takze kdyz soubor pack.py mame ulozenej treba v domovskym adresai cesta bude vypadat takhle -> /home/petrakis/pack.py  (samozrejmosti je ze uzivatelske jmeno si zmenite na sve)
Nasledne kdys klikneme na na nami vytvorenou polozku v menu firefox se nas zepta jestli script chceme otevrit anebo ulozit. My jej chceme otevrit, treba vsak vybrat program kterym ho chceme otevirat. Otevirat jej budeme pythonem , nekdo vsak ma defaultni verzi pythonu 2.4, nekdo 2.5 anebo 2.6 a 3.0. Zadame si cestu k nasi verzi -> File System/usr/bin/python2.4 (verze 2.4 je jako priklad, zkousejte svou verzi az se vam otevre popup okno s aplikaci, kdyz se vam otevre, zavrete jej a otevrete znovu a az pak potvrdte aby firefox oteviral pyhon asociaci vami zvolenou verzi pythonu). Od tehle chvile se vam bude otevirat aplikace s vami zvolenima programama k rychlemu zpousteni primo z firefoxu.

screenshot:



A ted k souboru pack.py

V souboru jsem schvalne ponechal take spousteni programu pres wine aby kazdy kdo chce videl jak to jde. Dulezite veci budu popisovat niz.

Radky ktere musite zmenit podle sve konfigurace jsou cesty k Wine aplikacim a cesta k ikonce aplikace

radek ikonky aplikace je tenhle:
self.win.set_icon_from_file('/usr/share/icons/exotic/scalable/apps/browser.png')

A ted k wine aplikacim. V souboru kterej popisuji se nachazeji 3 Wine Aplikace (Dreamweaver,Photoshop a Flash)

zakladni prefix vypada asi takhle (cestu k vasi wine aplikaci si najdete v editaci vaseho hlavniho menu systemu (prikaz v terminalu-> alacarte)):

env WINEPREFIX="/home/petrakis/.wine" wine "C:\Program Files\Macromedia\Dreamweaver 8\Dreamweaver.exe"

nakolik v pythonove syntaxi jak budete videt v kodu se dvojite uvozovky jiz nachazeji, syntaxe bude takovahle:

env WINEPREFIX='/home/petrakis/.wine' wine 'C:\Program Files\Macromedia\Dreamweaver 8\Dreamweaver.exe'

zmenili sme dvojite uvozovky za obycejne


Pri editaci souboru musite dbat na nasledujici:


Priklad vytvoreni zpoustece terminalu:

button = gtk.Button("Terminal")
button.connect("clicked",self.term,self.moz)
button.set_size_request(110,30)
hbox.pack_start(button)
button.show()

zde dulezity je self.term

nasledne si zadefinujeme tuhle funkci:

def term(self,widget,data):
subprocess.Popen("gnome-terminal", shell=True)
gtk.main_quit()


Je potrebne davat si pozor aby jse nemeli duplicitni nazev definice v tomhle pripade term


To uz by asi stacilo, zde je kod souboru pack.py (Aplikace ktere chcete smazat, proste smazte ale nazapominejte take mazat jejich definice, priklad uvedu smazani dreamwaeveru)

smazeme nasledujici:

button = gtk.Button("Dreamweaver")
button.connect("clicked",self.dr,self.moz)
button.set_size_request(110,30)
hbox.pack_start(button)
button.show()

a ted definici:

def dr(self,widget,data):
subprocess.Popen("env WINEPREFIX='/home/petrakis/.wine' wine 'C:\Program Files\Macromedia\Dreamweaver 8\Dreamweaver.exe' ", shell=True)
gtk.main_quit()



pack.py

Kód: [Vybrat]
#!/usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk
import subprocess
import gtkmozembed



class PyMoz:
       

        def open_folder_selection(self,widget,data):
dialog = gtk.FileChooserDialog(title = "Open Folder" ,
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                              gtk.STOCK_OK, gtk.RESPONSE_OK))
response = dialog.run()

if (response == gtk.RESPONSE_OK):
self.change_path(dialog.get_filename())
dialog.destroy()

return
       
        def delete_event(self,widget,data=None):
print("Exit")
return False

def destroy(self,widget,data=None):
gtk.main_quit()

        def term(self,widget,data):
subprocess.Popen("gnome-terminal", shell=True)
                gtk.main_quit()

        def editor(self,widget,data):
subprocess.Popen("gedit", shell=True)
                gtk.main_quit()

        def google(self,widget,data):
subprocess.Popen("evolution --component=mail", shell=True)
                gtk.main_quit()

       
        def screen(self,widget,data):
             subprocess.Popen("gnome-screenshot --interactive", shell=True)
             gtk.main_quit()

        def fir(self,widget,data):
             subprocess.Popen("firefox", shell=True)
             gtk.main_quit()

       
        def op(self,widget,data):
             subprocess.Popen("opera", shell=True)
             gtk.main_quit()

        def ch(self,widget,data):
             subprocess.Popen("chromium-browser --enable-plugins", shell=True)
             gtk.main_quit()

        def cc(self,widget,data):
             subprocess.Popen("gnome-control-center", shell=True)
             gtk.main_quit()

        def ch2(self,widget,data):
             subprocess.Popen("gftp", shell=True)
             gtk.main_quit()
       

        def calc(self,widget,data):
             subprocess.Popen("gcalctool", shell=True)
             gtk.main_quit()

        def char(self,widget,data):
             subprocess.Popen("gucharmap", shell=True)
             gtk.main_quit()

        def scr(self,widget,data):
             subprocess.Popen("screenlets-manager > /dev/null", shell=True)
             gtk.main_quit()

        def sea(self,widget,data):
             subprocess.Popen("gnome-search-tool", shell=True)
             gtk.main_quit()

        def ut(self,widget,data):
             subprocess.Popen("ubuntu-tweak", shell=True)
             gtk.main_quit()

        def dr(self,widget,data):
             subprocess.Popen("env WINEPREFIX='/home/petrakis/.wine' wine 'C:\Program Files\Macromedia\Dreamweaver 8\Dreamweaver.exe' ", shell=True)
             gtk.main_quit()

        def ph(self,widget,data):
             subprocess.Popen("env WINEPREFIX='/home/petrakis/.wine' wine 'C:\Program Files\Adobe\Photoshop CS\Photoshop.exe'  ", shell=True)
             gtk.main_quit()

        def fl(self,widget,data):
             subprocess.Popen("env WINEPREFIX='/home/petrakis/.wine' wine 'C:\Program Files\Macromedia\Flash 8\Flash.exe' ", shell=True)
             gtk.main_quit()

       
       
def __init__(self):
             
                self.moz = gtkmozembed.MozEmbed()
                box = gtk.VBox(False,0)

self.win = gtk.Window()
               
                self.win.add(box)
               
                hbox = gtk.HBox(5,5)
                frame = gtk.Frame("Tools")
                hbox.pack_start(frame)
                frame.show()
                box.pack_start(hbox,False,False,5)
                hbox.show()
               
               
                hbox = gtk.HBox(5,5)
                button = gtk.Button("Terminal")
button.connect("clicked",self.term,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()

               
                button = gtk.Button(" Editor ")
button.connect("clicked",self.editor,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Calculator")
button.connect("clicked",self.calc,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()
               
               
                button = gtk.Button("Screenshot")
button.connect("clicked",self.screen,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

                box.pack_start(hbox,False,False)
                hbox.show()

                hbox = gtk.HBox(5,5)
                button = gtk.Button("Char. Map")
button.connect("clicked",self.char,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()
               
               
                button = gtk.Button("Screenlets")
button.connect("clicked",self.scr,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Ubuntu Tweak")
button.connect("clicked",self.ut,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Search Files")
button.connect("clicked",self.sea,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

                box.pack_start(hbox,False,False,5)
                hbox.show()


                hbox = gtk.HBox(5,5)
                frame = gtk.Frame("Browsers")
                hbox.pack_start(frame)
                frame.show()
                box.pack_start(hbox,False,False,5)
                hbox.show()

                hbox = gtk.HBox(5,5)
                button = gtk.Button("Evolution")
button.connect("clicked",self.google,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Firefox")
button.connect("clicked",self.fir,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Chromium")
button.connect("clicked",self.ch,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()
               
               
                button = gtk.Button("Opera")
button.connect("clicked",self.op,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Gftp")
button.connect("clicked",self.ch2,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

                box.pack_start(hbox,False,False,5)
                hbox.show()

                hbox = gtk.HBox(5,5)
                frame = gtk.Frame("Programming")
                hbox.pack_start(frame)
                frame.show()
                box.pack_start(hbox,False,False,5)
                hbox.show()

                hbox = gtk.HBox(5,5)
                button = gtk.Button("Dreamweaver")
button.connect("clicked",self.dr,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Photoshop")
button.connect("clicked",self.ph,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Macromedia Flash")
button.connect("clicked",self.fl,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()
               
                box.pack_start(hbox,False,False,5)
                hbox.show()


                hbox = gtk.HBox(5,5)
                frame = gtk.Frame("Home- Control Center - Close")
                hbox.pack_start(frame)
                frame.show()
                box.pack_start(hbox,False,False,5)
                hbox.show()

                hbox = gtk.HBox(5,5)
                button = gtk.Button("Home Folder")
button.connect("clicked",self.open_folder_selection,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()

                button = gtk.Button("Control Center")
button.connect("clicked",self.cc,self.moz)
                button.set_size_request(110,30)
hbox.pack_start(button)
                button.show()

               
                button = gtk.Button("Close Super Launcher")
button.connect("clicked",self.destroy,self.moz)
                button.set_size_request(110,30)
                hbox.pack_start(button)
                button.show()

                box.pack_start(hbox,False,False,5)
                hbox.show()
box.pack_start(self.moz,True,True,0)
self.moz.show()
                self.moz.set_size_request(550,0)
                title=self.moz.get_title()
self.win.set_title("Super Launcher")
self.win.set_icon_from_file('/usr/share/icons/exotic/scalable/apps/browser.png')
self.win.show_all()


       

if __name__ == "__main__":
PyMoz()
gtk.main()

Soubor si ulozte a nezapomente nastavit mu prava aby byl zpustitelny.

PS: samozrejmosti je ze si muzete vytvorit zpoustec a otevirat pack.py jako vasi desktopovou aplikaci.
Znalosti ⇛ Linux: Pokročilý ┃ Programování: Pokročilý ┃ Angličtina: Pokročilý
Systém: Ubuntu 10.04 32-bit (en_US.utf8)
Specifikace⇛ Intel Core 2 E8400 3.00GHz │ RAM 3072 MiB │ DG31PR INTEL - Intel DG31PR Grafické karty: nVidia NV44 [GeForce 6200 TurboCache(TM)] [10DE:161] Sítě: Ethernet: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10EC:8168]

 

Provoz zaštiťuje spolek OpenAlt.