81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
#
|
|
# Python GUI - Application class - Gtk
|
|
#
|
|
|
|
import sys
|
|
from gi.repository import Gtk, Gdk
|
|
from GUI.Globals import application
|
|
from GUI.GApplications import Application as GApplication
|
|
|
|
class Application(GApplication):
|
|
|
|
_in_gtk_main = 0
|
|
|
|
def run(self):
|
|
GApplication.run(self)
|
|
|
|
def set_menus(self, menu_list):
|
|
GApplication.set_menus(self, menu_list)
|
|
for window in self._windows:
|
|
window._gtk_update_menubar()
|
|
|
|
# def handle_events(self):
|
|
# #print "Application.handle_events: entering Gtk.main" ###
|
|
# _call_with_excepthook(Gtk.main, Gtk.main_quit)
|
|
# #print "Application.handle_events: returned from Gtk.main" ###
|
|
|
|
def handle_next_event(self, modal_window = None):
|
|
_call_with_excepthook(Gtk.main_iteration)
|
|
|
|
# def _quit(self):
|
|
# self._quit_flag = True
|
|
# Gtk.main_quit()
|
|
|
|
# def _exit_event_loop(self):
|
|
# Gtk.main_quit()
|
|
|
|
def get_target_window(self):
|
|
for window in self._windows:
|
|
if window._gtk_outer_widget.has_toplevel_focus():
|
|
return window
|
|
return None
|
|
|
|
def zero_windows_allowed(self):
|
|
return 0
|
|
|
|
def query_clipboard(self):
|
|
return _gtk_clipboard.wait_is_text_available()
|
|
|
|
def get_clipboard(self):
|
|
return _gtk_clipboard.wait_for_text()
|
|
|
|
def set_clipboard(self, data):
|
|
_gtk_clipboard.set_text(data, len(data))
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
CLIPBOARD = Gdk.atom_intern("CLIPBOARD", False)
|
|
|
|
_gtk_clipboard = Gtk.Clipboard.get(CLIPBOARD)
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
def _call_with_excepthook(proc, breakout = None):
|
|
# This function arranges for exceptions to be propagated
|
|
# across calls to the Gtk event loop functions.
|
|
exc_info = []
|
|
def excepthook(*args):
|
|
exc_info[:] = args
|
|
if breakout:
|
|
breakout()
|
|
old_excepthook = sys.excepthook
|
|
try:
|
|
sys.excepthook = excepthook
|
|
proc()
|
|
finally:
|
|
sys.excepthook = old_excepthook
|
|
if exc_info:
|
|
#print "_call_with_excepthook: raising", exc_info ###
|
|
raise exc_info[0], exc_info[1], exc_info[2]
|
|
|
|
|