[Çözüldü] Quickly create ubuntu-application ile oluşturulan arayüzde düzenlemeler yapmak

Başlatan guopx, 28 Temmuz 2013 - 03:31:51

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

guopx

Geçenlerde youtube'da şu videoya denk geldim http://www.youtube.com/watch?v=sO8hiPreNBg Quickly ile nasıl arayüz oluşturulur anlatan bir video. Çok hoşuma gitti ben de kendi uygulamamı yazayım dedim  :) Bash ile flickr fotoğraflarını masaüstü arka planı olarak atayan bir betik yazmıştım onu python'a çevirip bir uygulama haline getirmek istiyorum.
Şöyle bir arayüz oluşturdum http://imgim.com/ekrang%C3%B6r%C3%BCnt%C3%BCs%C3%BC2013-07-2802:50:31.png  Butonları ve pencereyi Glade ile oluşturmak kolay zaten asıl takıldığım yer şu:
Şimdi oluşturduğum arayüzde üstte 6 tane buton var onları toolbar kullanarak oluşturdum. Bir de Arayüzün gövdesini oluşturan bir notebook oluşturdum. Ekran görüntüsü böyle:

Yapmak istediğim şey bu üstteki butonlara tıklandığında ilgili içeriğin oluşturduğum notebook widget'ine yüklenmesi. Örneğin "add photos" butonuna tıklandı altta add photos için oluşturduğum içerik çıkacak, Network butonuna tıklandı network ayarları sayfası çıkacak... Aynı ubuntu tweak uygulamasında olduğu gibi. Takıldığım şey bu içeriklerin her birini ne şekilde hazırlamam gerektiği ve nasıl bir kodla toolbardaki butonlara bağlamam gerektiği.
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
### BEGIN LICENSE
# This file is in the public domain
### END LICENSE

import gettext
from gettext import gettext as _
gettext.textdomain('turuncu')
from gi.repository import Gtk # pylint: disable=E0611
import logging
logger = logging.getLogger('turuncu')

from turuncu_lib import Window
from turuncu.AboutTuruncuDialog import AboutTuruncuDialog

# See turuncu_lib.Window.py for more details about how this class works
class TuruncuWindow(Window):
    __gtype_name__ = "TuruncuWindow"
   
    def finish_initializing(self, builder): # pylint: disable=E1002
        """Set up the main window"""
        super(TuruncuWindow, self).finish_initializing(builder)

        self.AboutDialog = AboutTuruncuDialog

        # Code for other initialization actions should be added here.
        self.overview = self.builder.get_object("overview")
        self.add_photos = self.builder.get_object("add_photos")
        self.flickr_settins = self.builder.get_object("flickr_settins")
        self.general_settings = self.builder.get_object("general_settings")
        self.network_settings = self.builder.get_object("network_settings")
        self.exit_button = self.builder.get_object("exit_button")
        self.notebook = self.builder.get_object("notebook")
       
        self.toolbar = self.builder.get_object("toolbar")
        context = self.toolbar.get_style_context()
        context.add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
   
    def on_overview_clicked(self, widget):
        print "overwiew"
   
    def on_add_photos_clicked(self, widget):
        print "add_photos"
       
    def on_flickr_settings_clicked(self, widget):
        print "flickr_settings"
   
    def on_general_settings_clicked(self, widget):
        print "general_settings"
   
    def on_network_settings_clicked(self, widget):
        print "network_settings"   
       
    def on_exit_button_clicked(self, widget):
        exit(0)

Kodları yazdığım python belgesinin içeriği bu. Mesela overview butonunu self.overview = self.builder.get_object("overview")
def on_overview_clicked(self, widget):
        print "overwiew"
kodlarıyla çalıştırıyorum. Ve bu halinde anlaşıldığı üzere programı quickly run ile çalıştırıp "overview butonuna tıkladığımda uçbirime  "overview" basıyor. Benim istediğim şey ise notebook içine ilgili içeriğin yüklenmesi. Yapmak istediğim arayüzün biraz ubuntu tweak ile benzer olduğunu söylemiştim. Ubuntu tweak'in kaynak kodlarına baktım biraz orada   self.feature_dict['overview'] = self.notebook.append_page(clip_page, Gtk.Label('overview'))
self.notebook.set_current_page(self.feature_dict['apps'])
gibi birkaç metod gördüm ama nasıl uygulayacağım konusunda bir fikrim yok. Ve bir diğer konu da bahsettiğim içerikleri glade ile yapıp tek tek .ui şeklinde mi yoksa ana pencereyle aynı sayfada mı yapmam gerektiği ve bu ikisini nasıl bağlamam gerektiği.
Aslında açıkçası cin olmadan adam çarpmaya kalkıyorum  :) Sadece amatör düzeyde python bilgisiyle olacak iş değil bu ama umarım amatörce de olsa derdimi anlatabilmişimdir ::) Yardım eden veya fikirlerini beyan eden herkese çok teşekkürler.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Temmuz 2013 - 02:16:13

Ubuntu tweak kaynak kodlarını daha ayrıntılı inceleyince aslında olayın çok basit olduğunu anladım  :)  Her buton için bir notebook sekmesi var ve butona tıklandığında o notebook sayfası açılıyor.

Ve kod içinde de self.notebook.set_current_page(sekme_numarası) ile istenilen sekmeyi öne getirmiş oluyoruz. Yani mesela "overview" sayfasını notebook'un 1. sayfasında oluşturuyoruz sonra self.notebook.set_current_page(0) kodunu kullanarak overview butonu tıklandığında notebook'un birinci sayfasının açılmasını sağlıyoruz. En son glade notebook ayarlarından sekmeleri göster'i hayır olarak işaretliyoruz. Çözülmüştür  :)
Sevdiklerine sevdiğini söyle çok geç olmadan.