diff --git a/pyfpdb/Tables_Demo.py b/pyfpdb/Tables_Demo.py index 92bb1a3c..199e81c2 100755 --- a/pyfpdb/Tables_Demo.py +++ b/pyfpdb/Tables_Demo.py @@ -3,7 +3,7 @@ Main program module to test/demo the Tables subclasses. """ -# Copyright 2008 - 2009, Ray E. Barker +# Copyright 2008 - 2010, Ray E. Barker # 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 @@ -24,10 +24,8 @@ Main program module to test/demo the Tables subclasses. # Standard Library modules import sys import os -import re # pyGTK modules -import pygtk import gtk import gobject @@ -103,7 +101,7 @@ if __name__=="__main__": fake = fake_hud(table) print "fake =", fake -# gobject.timeout_add(100, check_on_table, table, fake) + gobject.timeout_add(100, check_on_table, table, fake) print "calling main" gtk.main() diff --git a/pyfpdb/XTables.py b/pyfpdb/XTables.py index 29a9b1d9..6b06eb0f 100644 --- a/pyfpdb/XTables.py +++ b/pyfpdb/XTables.py @@ -1,11 +1,9 @@ #!/usr/bin/env python -"""Discover_Tables.py +"""XTables.py -Inspects the currently open windows and finds those of interest to us--that is -poker table windows from supported sites. Returns a list -of Table_Window objects representing the windows found. +XWindows specific methods for TableWindows Class. """ -# Copyright 2008 - 2009, Ray E. Barker +# Copyright 2008 - 2010, Ray E. Barker # 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 @@ -25,14 +23,11 @@ of Table_Window objects representing the windows found. # Standard Library modules import re -import os # pyGTK modules -import pygtk import gtk # Other Library modules -import Xlib import Xlib.display # FreePokerTools modules @@ -46,72 +41,41 @@ name_atom = disp.get_atom("WM_NAME", 1) class Table(Table_Window): def find_table_parameters(self, search_string): -# self.window = None -# done_looping = False -# for outside in root.query_tree().children: -# for inside in outside.query_tree().children: -# if done_looping: break -# prop = inside.get_property(name_atom, Xlib.Xatom.STRING, 0, 1000) -# print prop -# if prop is None: continue -# if prop.value and re.search(search_string, prop.value): -# if self.check_bad_words(prop.value): continue -## if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): -## if self.check_bad_words(inside.get_wm_name()): -## print "bad word =", inside.get_wm_name() -## continue -# self.window = inside -# self.parent = outside -# done_looping = True -# break + self.window = None + done_looping = False + for outside in root.query_tree().children: + for inside in outside.query_tree().children: + if done_looping: break + if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): + if self.check_bad_words(inside.get_wm_name()): continue + self.window = inside + self.parent = outside + done_looping = True + break - window_number = None - for listing in os.popen('xwininfo -root -tree').readlines(): - if re.search(search_string, listing): -# print listing - mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing) - self.number = int( mo.group(1), 0) - self.width = int( mo.group(4) ) - self.height = int( mo.group(5) ) - self.x = int( mo.group(6) ) - self.y = int( mo.group(7) ) - self.title = re.sub('\"', '', mo.group(2)) - self.exe = "" # not used? - self.hud = None -# done_looping = False -# for outside in root.query_tree().children: -# for inside in outside.query_tree().children: -# if done_looping: break -# if inside.id == window_number: -# self.window = inside -# self.parent = outside -# done_looping = True -# break - - if window_number is None: + if self.window == None or self.parent == None: + print "Window %s not found. Skipping." % search_string return None -# my_geo = self.window.get_geometry() -# pa_geo = self.parent.get_geometry() -# -# self.x = pa_geo.x + my_geo.x -# self.y = pa_geo.y + my_geo.y -# self.width = my_geo.width -# self.height = my_geo.height -# self.exe = self.window.get_wm_class()[0] -# self.title = self.window.get_wm_name() -# self.site = "" -# self.hud = None + my_geo = self.window.get_geometry() + pa_geo = self.parent.get_geometry() -# window_string = str(self.window) - mo = re.match('Xlib\.display\.Window\(([\dxabcdef]+)', window_string) + self.x = pa_geo.x + my_geo.x + self.y = pa_geo.y + my_geo.y + self.width = my_geo.width + self.height = my_geo.height + self.exe = self.window.get_wm_class()[0] + self.title = self.window.get_wm_name() + self.site = "" + self.hud = None + self.number = self.get_xid() + + def get_xid(self): + mo = re.match('Xlib\.display\.Window\(([\dxabcdef]+)', str(self.window)) if not mo: - print "Not matched" - self.gdk_handle = None + return None else: - self.number = int( mo.group(1), 0) - print "number =", self.number -# self.gdk_handle = gtk.gdk.window_foreign_new(int(self.number)) + return int( mo.group(1), 0) def get_geometry(self): try: