1 |
|
from __future__ import nested_scopes |
2 |
|
|
3 |
# |
# |
4 |
# This file is part of GNU Enterprise. |
# This file is part of GNU Enterprise. |
5 |
# |
# |
30 |
# NOTES: |
# NOTES: |
31 |
# |
# |
32 |
|
|
33 |
|
|
34 |
import sys |
import sys |
35 |
import string |
import string |
36 |
import traceback |
import traceback |
670 |
r= x |
r= x |
671 |
return r |
return r |
672 |
|
|
673 |
|
def sortByYAndThenByX (self, a, b): |
674 |
|
# 2= x, 1= y |
675 |
|
if a.yabs<b.yabs: |
676 |
|
return -1 |
677 |
|
elif a.yabs==b.yabs: |
678 |
|
if a.xabs<b.xabs: |
679 |
|
return -1 |
680 |
|
elif a.xabs==b.xabs: |
681 |
|
return 0 |
682 |
|
elif a.xabs>b.xabs: |
683 |
|
return 1 |
684 |
|
elif a.yabs>b.yabs: |
685 |
|
return 1 |
686 |
|
|
687 |
|
def absolutize (self, entry, xoff, yoff): |
688 |
|
try: |
689 |
|
entry.xabs= entry.x+xoff |
690 |
|
entry.yabs= entry.y+yoff |
691 |
|
except: |
692 |
|
entry.xabs= xoff |
693 |
|
entry.yabs= yoff |
694 |
|
return entry |
695 |
|
|
696 |
def _getFocusableEntries (self, children): |
def _getFocusableEntries (self, children, xoff, yoff): |
|
# I *hate* debug |
|
|
|
|
|
# GDebug.printMesg (1, "_gFE: children: %s" % map (self.gimmeNames, children)) |
|
697 |
entryNo= 0 |
entryNo= 0 |
698 |
|
children= map (lambda x: self.absolutize (x, xoff, yoff), children) |
699 |
result= children |
result= children |
700 |
for entry in children: |
for entry in children: |
701 |
# shouldn't this be 'in containers'? |
# shouldn't this be 'in containers'? |
702 |
if entry._type in [ 'GFBox', 'GFBlock' ]: |
if entry._type in [ 'GFBox', 'GFBlock' ]: |
703 |
next= self._getFocusableEntries (entry._children) |
next= self._getFocusableEntries (entry._children, entry.xabs, entry.yabs) |
704 |
# replace the box with its children recursively |
# replace the box with its children recursively |
705 |
result= result[:entryNo]+next+result[entryNo+1:] |
result= result[:entryNo]+next+result[entryNo+1:] |
706 |
entryNo= entryNo+len (next) |
entryNo= entryNo+len (next) |
707 |
entryNo= entryNo+1 |
entryNo= entryNo+1 |
708 |
|
|
709 |
# GDebug.printMesg (1, "_gFE: result: %s" % map (self.gimmeNames, result)) |
# GDebug.printMesg (1, "_gFE: result: %s" % map (self.gimmeNames, result)) |
710 |
return filter ( |
result= filter ( |
711 |
lambda x: x._type=="GFButton" or |
lambda x: x._type=="GFButton" or |
712 |
(x._type=="GFEntry" and not x.style=="label" and not x.hidden and not x.style=='textlookup'), |
(x._type=="GFEntry" and not x.style=="label" and not x.hidden and not x.style=='textlookup'), |
713 |
result) |
result) |
714 |
|
result.sort (self.sortByYAndThenByX) |
715 |
|
# print map ( |
716 |
|
# lambda x: |
717 |
|
# "%s, %d:%d, %d:%d" % (x.name, x.xabs, x.x, x.yabs, x.y) |
718 |
|
# , result |
719 |
|
# ) |
720 |
|
return result |
721 |
|
|
722 |
# |
# |
723 |
# nextEntry |
# nextEntry |
730 |
nextEntry = None |
nextEntry = None |
731 |
keepNext = 0 |
keepNext = 0 |
732 |
|
|
733 |
entryList= self._getFocusableEntries (self._currentPage._children) |
entryList= self._getFocusableEntries (self._currentPage._children, 0, 0) |
734 |
# print entryList |
# print entryList |
735 |
# print TabStops |
# print TabStops |
736 |
for object in entryList: |
for object in entryList: |
765 |
nextEntry = None |
nextEntry = None |
766 |
lastEntry = self._currentEntry |
lastEntry = self._currentEntry |
767 |
|
|
768 |
entryList= self._getFocusableEntries (self._currentPage._children) |
entryList= self._getFocusableEntries (self._currentPage._children, 0, 0) |
769 |
for object in entryList: |
for object in entryList: |
770 |
if (object._type in TabStops and (not object.hidden)): |
if (object._type in TabStops and (not object.hidden)): |
771 |
nextEntry = object |
nextEntry = object |