Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Модуль NV Access для TC 8x64

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
The_Immortal



Joined: 05 Nov 2013
Posts: 5

Post (Separately) Posted: Wed Apr 27, 2016 17:58    Post subject: Модуль NV Access для TC 8x64 Reply with quote

Всех приветствую!

Ситуация следующая. Есть свободный проект 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
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Wed Apr 27, 2016 18:18    Post subject: Reply with quote

Переименовывать классы Гислер вряд ли будет, ему не раз говорили об этом, и он вроде отвечал, что какие-то проблемы могут быть из-за этого в самом Лазарусе, который зачем-то хочет, чтобы всё имело класс Window.

Остаётся только городить огороды - определять классы окон по другим признакам (по размерам и координатам внутри окна тотала, по иерархии и т.п.)...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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