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
|
#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""Application object.
This module contains the application object that manages the windows
on screen, and can be used to create new windows of various types.
"""
__copyright__ = "Copyright © 2005 Canonical Ltd."
__author__ = "Scott James Remnant <scott@ubuntu.com>"
import pygtk
pygtk.require("2.0")
import gtk
from branchwin import BranchWindow
class BzrkApp(object):
"""Application manager.
This object manages the bzrk application, creating and managing
individual branch windows and ensuring the application exits when
the last window is closed.
"""
def __init__(self):
self._num_windows = 0
def show(self, branch, start):
"""Open a new window to show the given branch."""
self._num_windows += 1
window = BranchWindow()
window.set_branch(branch, start)
window.connect("destroy", self._destroy_cb)
window.show()
def _destroy_cb(self, widget):
"""Callback for when a window we manage is destroyed."""
self._num_windows -= 1
if self._num_windows <= 0:
self.quit()
def main(self):
"""Start the GTK+ main loop."""
gtk.main()
def quit(self):
"""Stop the GTK+ main loop."""
gtk.main_quit()
|