View previous topic :: View next topic |
Author |
Message |
The_Immortal
Joined: 05 Nov 2013 Posts: 5
|
(Separately) Posted: Wed Apr 27, 2016 17:58 Post subject: Модуль NV Access для TC 8x64 |
|
|
Всех приветствую!
Ситуация следующая. Есть свободный проект NVDA (nvaccess.org), который упрощает жизнь слепым людям по работе с компьютером с помощью озвучивания всех действий, происходящих в ОС. В частности, программный пакет имеет модули, которые работают с определенным ПО. Подобный модуль (ссылку на модуль, увы, дать не могу, т.к. форум этого сделать не дает) есть и для TC (Питон):
Code: | #appModules/totalcmd.py
#A part of NonVisual Desktop Access (NVDA)
#Copyright (C) 2006-2012 NVDA Contributors
#This file is covered by the GNU General Public License.
#See the file COPYING for more details.
import appModuleHandler
from NVDAObjects.IAccessible import IAccessible
import speech
import controlTypes
import ui
oldActivePannel=0
class AppModule(appModuleHandler.AppModule):
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
if obj.windowClassName in ("TMyListBox", "TMyListBox.UnicodeClass"):
clsList.insert(0, TCList)
class TCList(IAccessible):
def event_gainFocus(self):
global oldActivePannel
if oldActivePannel !=self.windowControlID:
oldActivePannel=self.windowControlID
obj=self
while obj and obj.parent and obj.parent.windowClassName!="TTOTAL_CMD":
obj=obj.parent
counter=0
while obj and obj.previous and obj.windowClassName!="TPanel":
obj=obj.previous
if obj.windowClassName!="TDrivePanel":
counter+=1
if counter==2:
ui.message(_("left"))
else:
ui.message(_("right"))
super(TCList,self).event_gainFocus()
def reportFocus(self):
if self.name:
speakList=[]
if controlTypes.STATE_SELECTED in self.states:
speakList.append(controlTypes.stateLabels[controlTypes.STATE_SELECTED])
speakList.append(self.name.split("\\")[-1])
speech.speakMessage(" ".join(speakList))
else:
super(TCList,self).reportFocus() |
Но к большому сожалению данный модуль не работает в TC 8x64, т.к. таких имен классов окон, как "TDrivePanel", "TPanel" и т.п. - нет. Они все идентифицируются как "Window". Соответственно с однозначной идентификацией возникают понятные проблемы.
Подскажите, пожалуйста, что можно придумать, дабы оживить вышеуказанный модуль?
Спасибо! _________________ The_Immortal |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Wed Apr 27, 2016 18:18 Post subject: |
|
|
Переименовывать классы Гислер вряд ли будет, ему не раз говорили об этом, и он вроде отвечал, что какие-то проблемы могут быть из-за этого в самом Лазарусе, который зачем-то хочет, чтобы всё имело класс Window.
Остаётся только городить огороды - определять классы окон по другим признакам (по размерам и координатам внутри окна тотала, по иерархии и т.п.)... _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|