Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

FidocadJ e aggiunta nuovi componenti

Regole da rispettare, modifiche, aggiunte, idee per EY

Moderatore: Foto Utenteadmin

2
voti

[161] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto UtenteDarwinNE » 24 nov 2012, 19:03

Penso di aver risolto il problema anche con le stringhe.
Intanto, ho provato il programma. Ecco le mie osservazioni:

1 - Ogni volta che faccio doppio click in modalità selezione su un elemento, mi si aprono due finestre Parametri :shock:

2 - La tastiera non è visualizzata correttamente (e rimane il bordino verde). Proporrei di utilizzare un GridLayout o simile e lasciare fare le cose il più possibile alla gestione automatica. Ecco cosa vedo (versione 449, Quaqua attivo):

pb_tastiera2.png
pb_tastiera2.png (102.93 KiB) Osservato 4174 volte


3 - Quando la directory delle librerie non è impostata, io direi di indirizzare gentilmente l'utente verso la configurazione del programma, ma di sicuro non mostrare una finestra a tempo. E' molto invasiva, non si capisce di che si tratti e si presenta assai poco bene (scusa se insisto, ma per me è un dettaglio molto importante). Non mi piace adottare come default la home come directory librerie, qualcuno potrebbe finire per riempir di file quel posto senza rendersene conto. Pochi leggono i manuali e posso assicurare che non tantissimi utenti hanno ben chiaro in testa che cosa sia una libreria, dove va piazzata e come ci si serve di essa. Meglio dire chiaramente senza nascondere il problema: non si può aggiungere simboli fino a che una directory sensata non è stata definita manualmente. Qualcuno potrebbe a ragion veduta scegliere "." in qualche caso (a me è capitato), anche se non sarei per nulla d'accordo di sceglierlo per default.

4 - Giocando con una libreria, mi è capitato che alcuni gruppi di simboli sparissero. Non ci ho fatto molto attenzione lì sul momento, e dopo quando me ne sono accorto, non sono riuscito a trovare una procedura per ripetere il problema.

5 - Mi chiedevo se inserendo un nuovo simbolo, con i gruppi non fosse utile un combo box riempito con i nomi già definiti nella libreria su cui si sta lavorando. Che ne pensate?

6 - Quando viene introdotto un simbolo nel disegno e successivamente viene cambiata la chiave al simbolo, nel disegno rimane sempre la vecchia chiave. Qui non saprei cosa fare, si aggiorna il disegno? Si segnala un errore (forse la via più semplice)?

A proposito, occhio ai messaggi GUI: simboli o punteggiatura non possono essere contenuti nel codice, perché le regole di spaziatura e di organizzazione del testo variano di parecchio da lingua a lingua. Bisogna per forza creare due risorse separate per "Chiave" e "Chiave?".
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

4
voti

[162] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto Utentephylum » 24 nov 2012, 19:14

1. non riesco a riprodurlo ma a rigor di logica: ora DialogParam non è modale e non può esserlo se la tastiera non si decide di incorporarla dentro - quindi va aggiunto un check prima o bloccare la finestra principale fin da subito (ora è bloccata appena la finestra è visualizzata completamente)
2. eppure ora usa gridlayout :( mentre la posizione dalla 450 in poi è "appiccicata" al bordo inferiore della finestra parametri - i pulsantini da te sono ancora troppo grandi
3. ook (queued)
4. bisogna indagare - a me non è mai successo
5. si se ti ricordi l'avevo fatto all'inizio quando visualizzavo anche le librerie std - ma poi non l'ho rimesso
6. su questo ci sto ancora pensando :) qualche messaggio fa scrissi qualcosa come "aggiorna chiave non aggiorna l'albero" etc ma "dovrebbe farlo"

GUI: OK (fixed)
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

2
voti

[163] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto UtenteDarwinNE » 24 nov 2012, 19:25

Uhm, per il punto 1 ci rifletto anch'io, ma credo che per com'è fatta DialogParam debba rimanere modale. Attualmente usandola ho l'impressione si cerchi di ottenere qualcosa di intermedio, non ho guardato il codice legato al suo comportamento, ma mi sembra che voglia esser modale salvo per la tastiera, è così?
Forse mettere la tastiera in un tab o una specie di toolbar attivabile, interna a DialogParam? Oppure rendere DialogParam totalmente non modale, ma in quel caso permettere che rimanga visibile mentre si lavora sul disegno. Non saprei, ma mi affiderei quanto possibile ai comportamenti standard.
Sto commentando un po' di codice per vedere se lo capisco. In generale il codice è molto chiaro, ma in qualche caso ho dei dubbi e lascio un punto interrogativo :)
Ho fatto in modo che il menu lingue appaia solo sulle versioni preliminari, un po' come accade con il cronometro/profiler del ridisegno.

Tra poco faccio un commit.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

4
voti

[164] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto Utentephylum » 24 nov 2012, 20:00

al momento funziona cosi':
- quando si apre DialogParameters per la prima volta viene inizializzata la tastiera
- viene settata DialogParameters alwaysontop
- appena DialogParameters ha completato la fase di costruzione blocca la finestra che l'ha chiamata
- all'uscita da dp per OK/Annulla/X viene sbloccata la finestra chiamante e nascosta la tastiera

- quando si sposta dp - la tastiera lo segue

la tastiera:
ad ogni pulsante premuto invia il simbolo al chiamante e gli da il focus
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

0
voti

[165] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto Utenteelettrodomus » 25 nov 2012, 10:32

Ho giocato un po'. Mi sembra che l'interfaccia sia moooolto buona (su win).

Solo alcune osservazioni/suggerimenti:
a. Normalmente con i parametri stringa, si scrive subito senza dover selezionare o cancellare il testo già presente (String); con la tastierina, dovrebbe essere lo stesso, secondo me.
b. Il menù da tasto dx, della libreria, dovrebbe permettere anche lo spostamento di un simbolo in un altro gruppo.
c. Non ho provato, ma vedo che il menù vale anche per le librerie standard. Non modificherei anche quelle, ma permetterei le aggiunte di simboli personalizzati, però.
d. Riguardo alla creazione simbolo, sono per un menù a tendina con i gruppi già presenti nella libreria selezionata.
d.1. Mi piacerebbe (velocizzerebbe il lavoro di composizione di una libreria) che venisse visualizzato il nome dell'ultima libreria e dell'ultimo gruppo che si sono usati, per salvare un simbolo.

Bella la funzione vettorizza. Per creare simboli personalizzati, modificando uno esistente è ottima.
Igor
Avatar utente
Foto Utenteelettrodomus
10,1k 6 11 13
G.Master EY
G.Master EY
 
Messaggi: 2607
Iscritto il: 28 gen 2011, 22:38
Località: Bassa Bresciana

1
voti

[166] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto UtenteDarwinNE » 25 nov 2012, 11:51

Bene, ho visto la revisione 452 e direi che ci stiamo muovendo decisamente nella buona direzione. :ok:

1 - Mi sono dimenticato di dirlo, ma anch'io sono d'accordo con Foto Utenteelettrodomus a riguardo della funzione vettorizza. Funziona molto bene ed è utilissima. Può essere un modo per facilitare la modifica di un simbolo: uno lo piazza dove vuole, lo modifica, lo selezione e definisce una macro. Sarebbe possibile e/o utile che se un simbolo è stato vettorizzato di recente, la finestra di introduzione di nuovo simbolo tenga in memoria la sua configurazione (compresa l'origine)?

2 - Riguardo alla tastierina, va ora molto meglio su MacOSX, anche se qualche problemino resta:
pb_tastiera3.png
pb_tastiera3.png (142.04 KiB) Osservato 4130 volte

In pratica, ci sono tanti tasti ripetuti (Œ e la virgola), che prendono spazio e quindi i simboli sono poco leggibili (ma funzionano).

3 - Sempre riguardo alla tastierina, tende a rimanere attaccata alla finestra dei parametri, ma non sempre, nel senso che viene mostrata sotto la finestra dei parametri, ma posso spostarla. Solo quando sposto anche la finestra dei parametri la tastierina si "ricorda" che vi era attaccata sotto e ci si rimette. Al limite, proporrei di disporla sotto di essa la prima volta, ma poi lasciare l'utente libero di metterla dove vuole.

4 - Alla chiusura della finestra Parametri, ottengo un'eccezione:

Codice: Seleziona tutto
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
   at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1971)
   at java.awt.Component.getLocationOnScreen(Component.java:1945)
   at dialogs.OSKeyb$1.windowActivated(OSKeyb.java:110)
   at java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:372)
   at java.awt.Window.processWindowEvent(Window.java:1883)
   at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
   at java.awt.Window.processEvent(Window.java:1829)
   at java.awt.Component.dispatchEventImpl(Component.java:4744)
   at java.awt.Container.dispatchEventImpl(Container.java:2141)
   at java.awt.Window.dispatchEventImpl(Window.java:2489)
   at java.awt.Component.dispatchEvent(Component.java:4572)
   at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1856)
   at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:920)
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:419)
   at java.awt.Component.dispatchEventImpl(Component.java:4616)
   at java.awt.Container.dispatchEventImpl(Container.java:2141)
   at java.awt.Window.dispatchEventImpl(Window.java:2489)
   at java.awt.Component.dispatchEvent(Component.java:4572)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
   at java.awt.EventQueue.access$400(EventQueue.java:82)
   at java.awt.EventQueue$2.run(EventQueue.java:663)
   at java.awt.EventQueue$2.run(EventQueue.java:661)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
   at java.awt.EventQueue$3.run(EventQueue.java:677)
   at java.awt.EventQueue$3.run(EventQueue.java:675)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
   at java.awt.SentEvent.dispatch(SentEvent.java:55)
   at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:193)
   at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:220)
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:296)
   at java.awt.Component.dispatchEventImpl(Component.java:4616)
   at java.awt.Container.dispatchEventImpl(Container.java:2141)
   at java.awt.Window.dispatchEventImpl(Window.java:2489)
   at java.awt.Component.dispatchEvent(Component.java:4572)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
   at java.awt.EventQueue.access$400(EventQueue.java:82)
   at java.awt.EventQueue$2.run(EventQueue.java:663)
   at java.awt.EventQueue$2.run(EventQueue.java:661)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
   at java.awt.EventQueue$3.run(EventQueue.java:677)
   at java.awt.EventQueue$3.run(EventQueue.java:675)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
   at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
   at java.awt.EventQueue.access$400(EventQueue.java:82)
   at java.awt.EventQueue$2.run(EventQueue.java:663)
   at java.awt.EventQueue$2.run(EventQueue.java:661)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
   at java.awt.EventQueue$3.run(EventQueue.java:677)
   at java.awt.EventQueue$3.run(EventQueue.java:675)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


5 - Rimane il problema della doppia apertura della finestra Parametri, che sospetto essere un problema legato al mio codice: un doppio click che viene processato due volte? In questo caso, si vedono dei problemi: la tastierina funziona solo con la seconda finestra aperta.

Adesso dò un'occhiata al codice anch'io, per vedere se capisco da dove viene il problema 5.

EDIT: forse ho capito per il 5. Ho cercato di risolvere (rev. 453), ma ho il dubbio se per caso la finestra con Linux e Win non appare del tutto.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

3
voti

[167] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto Utentephylum » 25 nov 2012, 13:54

@Foto Utenteelettrodomus
a) mmm ok - per il momento mi sono preoccupata solo che la tastiera inserisca nel punto dove si trova il cursore è invece necessario che qualcuno dia il focus (p.es clicchi) al campo su cui vuole usare la tastiera, altrimenti non sa a chi inoltrare i tasti - al momento la pressione del tasto che apre la tastiera ruba il focus al campo stringa che lo ha di default - queued
b) si piu' che il tasto destro via DnD ma in futuro
c) l'operazione sulle librerie std è internamente bloccata (volevo evitare di bloccare il menu in partenza), è previsto solo un modo top secret (trovatelo) per aggiungere elementi ma non rimuoverli o cambiare i gruppi o altro
d) si tornerà presto - se vi ricordate l'avevo messo
d1) mmm ok - queued

@Foto UtenteDarwinNE
1. come d1
2. i pulsanti sono solo 90 non capisco perché a te ne visualizza quasi 200, forse siccome nel .java sono salvati in uf8 succede qualcosa quando compili, potrei risolvere salvandoli con escape \uxxx o caricandoli da una risorsa
3. beh il movimento che fa è proprio quello, l'idea è se l'utente la sposta e non la trova piu' spostando la finestra parametri questa ritorna
4. mmm a me non succede ma sia cambiando il tipo di movimento che aggiungendo un if - si puo' risolvere
5. a me non succede e ho provato anche con un mouse virtuale ma in caso posso adottare contromisure piu' forti
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

0
voti

[168] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto UtenteDarwinNE » 25 nov 2012, 14:15

2 - Provo a dare un'occhiata io qui su MacOSX, allora. Per il momento, non ti preoccupare, vedo cosa posso fare.

3 - Ma come può succedere che un utente non trovi più una finestra del genere, che se ne sta così in evdenza? Secondo me, è meglio posizionarla una sola volta, poi lasciarla spostare all'utente come meglio crede. Meglio non andare contro i comportamenti standard dei vari SO, è una sicura fonte di bug.

5 - Fai un update. Nella versione che ho messo sul SVN non compaiono più le due finestre qui su OSX, ma vorrei sapere se tutto è OK anche su Windows.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

3
voti

[169] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto Utentephylum » 25 nov 2012, 14:37

intanto ho aggiunto il combo con i gruppi :)

3. se la sposta oltre i margini è difficile riprenderla - comunque per disattivare l'inseguimento basta commentare il listener
5. no ora ne ho due io di paramdialog :cry:
cambierei

Codice: Seleziona tutto
if(evt.getClickCount() >= 2) {
setPropertiesForPrimitive();


con
Codice: Seleziona tutto
if(evt.getClickCount() == 2) {
setPropertiesForPrimitive();
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

0
voti

[170] Re: FidocadJ e aggiunta nuovi componenti

Messaggioda Foto UtenteDarwinNE » 25 nov 2012, 14:50

Dunque, ho provato due o tre cosette e la soluzione più semplice mi è sembrata quella di introdurre i simboli nel codice tramite le sequenze d'escape. Ora da me sembra funzionare correttamente:

pb_tastiera4.png
pb_tastiera4.png (131.74 KiB) Osservato 4113 volte


Ogni tanto spostando la finestra dei parametri, la tastierina la segue, ogni tanto no.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

PrecedenteProssimo

Torna a Chiarimenti, regole, informazioni, proposte

Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti