mvk13 / EyePaint

0 stars 0 forks source link

Confirmation dialogues #64

Closed bullfinch3000 closed 10 years ago

bullfinch3000 commented 10 years ago

Jag har implementerat en grundläggande dialog som en ny Windows Form. Den lägger sig som en modalbox ovanpå ritprogrammet och ber om bekräftelse från användaren innan programmet får fortsätta.

Frågor: @carlthome Ser uppdelningen och refaktoriseringen till en GazeAwareForm vettig ut? Kan du se några problem eller konstigheter? @ragnhildkarlsson Skulle du kunna hårdvarutesta dialogen och se om det funkar med en eyetracker?

bullfinch3000 commented 10 years ago

Enligt rapport från Ragnhild kraschar programmet efter att man valt någon knapp i modalboxen och återgått till ritläget. Krasch sker endast när man använder eyetracking och inte annars. I brist på egen eyetracker får jag vänta till imorgon för att kunna felsöka problemet.

carlthome commented 10 years ago

Fint! Men designerläget i Visual Studio fungerar inte längre. Det kommer bli svårt att arbeta utan stöd för auto-genereringen av partial klasser. Går det att lösa?

"The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: EyePaintingForm --- The base class 'EyePaint.GazeAwareForm' could not be loaded. Ensure the assembly has been referenced and that all projects have been built."

bullfinch3000 commented 10 years ago

Har du samma problem även efter rebuild?

carlthome commented 10 years ago

Ja, men med felmeddelandet

Unable to load DLL 'Tobii.EyeX.Client.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

vilket är märkligt, eftersom det går bra att bygga och starta applikationen, dvs. DLL:en hamnar där den ska. Post-build eller pre-build gör ingen skillnad.

Fungerar designläget för dig?

carlthome commented 10 years ago

"Ser uppdelningen och refaktoriseringen till en GazeAwareForm vettig ut? Kan du se några problem eller konstigheter?"

Se till att initialisering av EyeX motorn ligger i onLoad eventet för forms, istället för i konstruktorn. Kommer inte ihåg exakt men det var någonting i Tobii manualen om att man måste koppla upp sin klientapplikation med EyeX servern varje gång man återupptar en form, och utifall att dialogerna tar över programmet kanske controller-form:en tappar sin koppling till EyeX servern, i vilket fall det skulle kunna krascha när en dialog stängs. Bara en tanke.

bullfinch3000 commented 10 years ago

Nej jag får också DLL-problemet. Försöker felsöka nu men blir inte riktigt klok på det.

bullfinch3000 commented 10 years ago

Jag testar att flytta initialiseringskoden till onload, så får vi se i testerna imorgon.

bullfinch3000 commented 10 years ago

@carlthome @ragnhildkarlsson @erickl har någon av er möjlighet att hjälpa till med felsökning och hårdvarutestning? Jag får inte min eye tracker att fungera...

bullfinch3000 commented 10 years ago

Efter en del ominstallationer och omstarter har jag nu fått min eye tracker att funka.

Problemet med att applikationen kraschar efter att modalboxen stängs verkar bero på anropet BeginInvoke(a) i metoden HandleInteractionQuery. Den anropas från modalbox-instansen efter att formuläret stängs och säger ifrån eftersom det inte finns någon UI-tråd att koppla dess action till.

Om @carlthome eller någon annan har en metod för att undvika detta får ni gärna hojta till.

bullfinch3000 commented 10 years ago

Det var en enkel lösning i slutändan. En if-sats som kollade om formulär-instansen hade en aktiv handle var allt som krävdes.

Nu är denna branch hårdvarutestad och verifierad. Om ni tillåter skulle jag gärna merga in den nu.

videkarlsson commented 10 years ago

Förlåt förseningen här kommer tumme upp! :)