1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Authors: Quinn Storm (quinn@beryl-project.org)
# Patrick Niklaus (marex@opencompositing.org)
# Guillaume Seguin (guillaume@segu.in)
# Christopher Williams (christopherw@verizon.net)
# Copyright (C) 2007 Quinn Storm
import pygtk
import gtk
import gtk.gdk
from ccm.Pages import *
from ccm.Utils import *
from ccm.Constants import *
from ccm.Conflicts import *
import locale
import gettext
locale.setlocale(locale.LC_ALL, "")
gettext.bindtextdomain("ccsm", DataDir + "/locale")
gettext.textdomain("ccsm")
_ = gettext.gettext
class MainWin(gtk.Window):
currentCategory = None
def __init__(self, Context, pluginPage=None, categoryName=None):
gtk.Window.__init__(self)
self.ShowingPlugin = None
self.Context = Context
self.connect("destroy", self.Quit)
self.set_default_size(990, 580)
self.set_title(_("CompizConfig Settings Manager"))
# Build the panes
self.MainBox = gtk.HBox()
self.add(self.MainBox)
self.LeftPane = gtk.VBox()
self.RightPane = gtk.VBox()
self.RightPane.set_border_width(5)
self.MainBox.pack_start(self.LeftPane, False, False)
self.MainBox.pack_start(self.RightPane, True, True)
self.MainPage = MainPage(self, self.Context)
self.CurrentPage = None
self.SetPage(self.MainPage)
self.LeftPane.set_size_request(self.LeftPane.size_request()[0], -1)
self.show_all()
if pluginPage in self.Context.Plugins:
self.ShowPlugin(None, self.Context.Plugins[pluginPage])
if categoryName in self.Context.Categories:
self.ToggleCategory(None, categoryName)
def Quit(self, *args):
gtk.main_quit()
def SetPage(self, page):
if page == self.CurrentPage:
return
if page != self.MainPage:
page.connect('go-back', self.BackToMain)
if self.CurrentPage:
leftWidget = self.CurrentPage.LeftWidget
rightWidget = self.CurrentPage.RightWidget
leftWidget.hide_all()
rightWidget.hide_all()
self.LeftPane.remove(leftWidget)
self.RightPane.remove(rightWidget)
if self.CurrentPage != self.MainPage:
leftWidget.destroy()
rightWidget.destroy()
self.LeftPane.pack_start(page.LeftWidget, True, True)
self.RightPane.pack_start(page.RightWidget, True, True)
self.CurrentPage = page
self.show_all()
def BackToMain(self, widget):
self.SetPage(self.MainPage)
def RefreshPage(self, updatedPlugin):
currentPage = self.CurrentPage
if isinstance(currentPage, PluginPage) and currentPage.Plugin:
for basePlugin in updatedPlugin.GetExtensionBasePlugins ():
# If updatedPlugin is an extension plugin and a base plugin
# is currently being displayed, then update its current page
if currentPage.Plugin.Name == basePlugin.Name:
if currentPage.CheckDialogs(basePlugin, self):
currentPage.RefreshPage(basePlugin, self)
break
gtk.window_set_default_icon_name('ccsm')
|