212 Commits

Author SHA1 Message Date
Demetrio Cassarino 0d31c0dd28 -ottimizzato funzioni in scriptwindow 2025-03-20 11:36:14 +01:00
Demetrio Cassarino 9fd4fb3f60 -introdotto avalon texteditor per script lua 2025-03-19 08:09:00 +01:00
Demetrio Cassarino 7b6063d337 -piccola modifica a finestra di dialogo
-piccola modifica a usercontrol generico
2025-03-14 08:07:20 +01:00
Demetrio Cassarino 63dec23d10 -commento a colorazione script 2025-03-13 11:50:23 +01:00
Demetrio Cassarino 32b743c7e1 -modificato colore in script 2025-03-13 10:02:47 +01:00
Demetrio Cassarino c7debc8c31 -pulizia codice script 2025-03-12 09:47:40 +01:00
Daniele Bariletti 1a5d6a5ab5 - migliorata la gestione della modifica dei pezzi parte di un lavello.
- aggiunta la possibilità di aggiungere un numero indefinito di info ad un pezzo durante la sua creazione.
2025-03-07 16:22:21 +01:00
Daniele Bariletti d812365abc Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-03-06 13:06:51 +01:00
Daniele Bariletti acc8cd3a5e - i fondi di lavandino hanno due modalità di fori: slot e bore
- aggiornato dizionario costanti
- aggiornata scrittura info e passaggio dati al LUA
- aggiornato elenco parametri nell'UC di creazione e edit.
2025-03-06 13:06:46 +01:00
Demetrio Cassarino 5f2c355121 -pulizia codice 2025-03-03 17:17:44 +01:00
Demetrio Cassarino f3bd024f29 -aggiunto controllo tempo per apertura script
-pulizia codice
-aggiunto apertura più file lua
2025-03-03 10:00:50 +01:00
Demetrio Cassarino 305913a8a9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-28 08:19:57 +01:00
Demetrio Cassarino 82f4944844 -pulizia codice 2025-02-28 08:19:54 +01:00
Daniele Bariletti 16203c4596 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-27 17:18:16 +01:00
Daniele Bariletti ef196d84e5 - modifica della modalità di creazione del fondo composito. 2025-02-27 17:18:11 +01:00
Demetrio Cassarino 456e8697be Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-27 17:10:11 +01:00
Demetrio Cassarino 88502249dd -pulizia codice
-aggiunto gestione colore su script
2025-02-27 17:09:31 +01:00
Daniele Bariletti 412df1c856 - aggiunta funzione per pulire gli outloop dei part creati come template. 2025-02-27 14:29:27 +01:00
Daniele Bariletti fac1206613 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-27 12:13:44 +01:00
Daniele Bariletti 9dc4278783 - aggiunta la funzione per la creazione di tutit i solidi mancanti.
- miglirata la funzione per il refresh del partSolid.
- migliorata la gestione della creazione dei template.
2025-02-27 12:13:39 +01:00
Demetrio Cassarino 3388afffb5 -aggiunto espressione regolare per script 2025-02-27 11:03:47 +01:00
Demetrio Cassarino 93a54a47bb Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-26 14:55:12 +01:00
Demetrio Cassarino 7d1b2004d9 -piccola modifica allo script 2025-02-26 14:55:09 +01:00
Daniele Bariletti 34493aca8f Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-26 11:55:06 +01:00
Daniele Bariletti 8035f6ee87 - gestito l'inserimento dati per la creazione del fondo di lavandino come pezzo unico. 2025-02-26 11:55:01 +01:00
Demetrio Cassarino 2023a6217d Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-25 09:16:02 +01:00
Demetrio Cassarino 6043e8bf16 -pulizia codice 2025-02-25 09:15:59 +01:00
Daniele Bariletti 95b1d94ea9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-25 08:38:48 +01:00
Daniele Bariletti 8f1e5821cd - piccole correzioni. 2025-02-25 08:38:44 +01:00
Demetrio Cassarino c1272fa5d2 -modificato gestione ischecked togglebutton 2025-02-24 16:20:26 +01:00
Daniele Bariletti 8adc2d749b Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-24 12:52:56 +01:00
Daniele Bariletti 69f52511e0 - aggiunta della funzione per la creazione di un fondo buca come pezzo unico.
- uso di const string per tipi di paretina.
2025-02-24 12:52:13 +01:00
Demetrio Cassarino 7a7e15f34b -aggiunto usercontrol lenght, angle, extremity 2025-02-24 12:20:54 +01:00
Demetrio Cassarino 9adb463d30 Merge commit 'dff00ca1e719368adec19fbfd6f477e64365f632' into develop 2025-02-24 09:54:55 +01:00
Demetrio Cassarino dff00ca1e7 -aggiunto colorazione testo richtext 2025-02-24 09:54:22 +01:00
Nicola Pievani d3a7ef97a6 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-24 09:28:04 +01:00
Nicola Pievani 48edd0abc4 Gestione parametrcio 2D 2025-02-24 09:27:34 +01:00
Daniele Bariletti edb2d25953 - gestita la scrittura delle info ad un part creato tramite template. 2025-02-21 12:17:32 +01:00
Daniele Bariletti 4786a666fd - aggiunti gli enum per gli UC. 2025-02-21 11:17:52 +01:00
Daniele Bariletti bf6d36be9b - corretta gestione della selezione per modalità edit. 2025-02-21 09:22:20 +01:00
Daniele Bariletti 701c6e816a Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-20 17:52:09 +01:00
Daniele Bariletti f2da51ffa7 - correzioni alla gestione dell'apertura dell'UC per la modifica delle paretine. 2025-02-20 17:52:05 +01:00
Demetrio Cassarino f70eba5633 riattivato splashscreen 2025-02-20 17:10:35 +01:00
Nicola Pievani 1e006a8eb6 Gestione parametrica 2d 2025-02-20 17:10:30 +01:00
Demetrio Cassarino 433cec7c52 Merge commit 'b7e6d1dd7d70e38a79385ca85eb7975e14b7de2d' into ScriptEditor 2025-02-20 08:18:03 +01:00
Demetrio Cassarino 862ee938c3 -aggiunto svg per script
-sistemato dizionario
-sistemato rimozione del testo su invio
2025-02-19 16:52:54 +01:00
Daniele Bariletti b7e6d1dd7d - modifica dell'UC per la modifica di un piano cucina. 2025-02-19 16:10:31 +01:00
Daniele Bariletti b5026d0a62 - aggiunta dell'UC per la modifica di un piano cucina. 2025-02-19 16:04:46 +01:00
Daniele Bariletti 2cf32788c4 - aggiunti controlli. 2025-02-19 15:52:44 +01:00
Daniele Bariletti f62672b1c6 Merge remote-tracking branch 'origin/ScriptEditor' into develop 2025-02-19 09:17:08 +01:00
Demetrio Cassarino 93e1651af4 -modifa a script rimesso richtext 2025-02-19 09:14:59 +01:00
Daniele Bariletti 804f72527b - draw dopo la cancellazione di un pezzo. 2025-02-19 09:12:58 +01:00
Demetrio Cassarino 7c5a2b6106 -aggiunto funzione che recupera il testo dal richtextbox 2025-02-18 08:49:12 +01:00
Daniele Bariletti e537861ca5 - corretta la gestione della lista PartSolid alla creazione e modifica dei pezzi.
- aggiunta la scelta del tipo di giunzione alla creazione delle paretine
- ricreazione dei vicini alla cancellazione di una paretina.
2025-02-17 17:35:56 +01:00
Daniele Bariletti 92e76f0c32 - aggiunti enum per la modifica delle paretine
- aggiunta informazione addizionale per paretine e fondo di una buca(se create tutte insieme)
- migliorata la gestione dell'UC per la modifica dei Part.
2025-02-14 16:59:32 +01:00
Demetrio Cassarino d04d9fedc7 -aggiunto script editor per file lua
-al momento funziona con textbox
2025-02-14 16:55:52 +01:00
Daniele Bariletti 17fb0e9f51 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-13 10:08:02 +01:00
Daniele Bariletti 68e2cc5c08 - aggiunto enum per il tipo di part
- migliorato l'UC per l'edit delle paretine
- migliorata la gestinoe degli UC
- aggiunta gestione dei click per l'edit paretina
- aggiunta la proprietà indice del selezionato per la comboBoxParam
- upgrade per lo spessore delle linee negli SVG.
2025-02-13 10:07:57 +01:00
Demetrio Cassarino ce39300091 -pulizia codice 2025-02-13 09:20:51 +01:00
Demetrio Cassarino 9c646a6ff7 -Aggiunto svg per grid 2025-02-12 15:18:51 +01:00
Daniele Bariletti 152e1baba1 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-11 17:14:28 +01:00
Daniele Bariletti acb55fe3f1 - rimossa l'informzione Paired durante l'export. 2025-02-11 17:14:24 +01:00
Demetrio Cassarino 71cc57613f -piccola correzione 2025-02-11 17:11:03 +01:00
Demetrio Cassarino 6cc2323793 -piccola modfica in dizionario 2025-02-11 16:37:29 +01:00
Demetrio Cassarino ef1a116586 -pulizia codice 2025-02-11 15:12:37 +01:00
Demetrio Cassarino e8bb8d7929 -piccola aggiunta 2025-02-11 14:13:25 +01:00
Demetrio Cassarino f93fea1ad8 -creato una singola funzione generica per li load e remove degli usercontrol 2025-02-11 12:59:32 +01:00
Demetrio Cassarino ee2666e43b Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-11 10:27:20 +01:00
Demetrio Cassarino 72a6c5e7c4 -piccola modifica ad import
-rimosso update title
2025-02-11 10:26:55 +01:00
Daniele Bariletti f1df09ce61 - correzione recupero vicini dalle info
- clear della lista dei part selezionati
- aggiunta di operazioni alla funzione di delete dei pezzi.
2025-02-11 10:20:16 +01:00
Daniele Bariletti 6e391acf0a - aggiunto il modulo per aggreagre tutte le funzioni per la gestione delle paretine. 2025-02-10 13:03:42 +01:00
Daniele Bariletti 5e0a14656d Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-10 12:58:29 +01:00
Daniele Bariletti b18e2f308f - aggiunto l'UC per la modifica di una paretina
- modificato il nome dell'UC per la creazione di una paretina
- aggiunta controllo per la canellazione di part.
2025-02-10 12:58:24 +01:00
Demetrio Cassarino 021573b51c -aggiunto possibilità di trascinare file per aprirlo 2025-02-10 12:55:24 +01:00
Demetrio Cassarino 0135412ea1 -aggiunto zoom all 2025-02-10 11:45:01 +01:00
Demetrio Cassarino 673d06727a -piccola modifica finestra di dialogo 2025-02-10 09:04:35 +01:00
Daniele Bariletti 3819e89f9a - corretto data type per textbox e textblock dell'UC
- aggiunta funzione per il riempimento automatico di una buca.
2025-02-07 17:28:09 +01:00
Daniele Bariletti a743c980b5 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-07 14:26:09 +01:00
Daniele Bariletti 31ba339f7e - aggiunta gestione della selezione dei part per la creazione di uno split bottom. 2025-02-07 14:26:04 +01:00
Demetrio Cassarino 316cfcfce0 -modifica su apertura progetto 2025-02-07 14:24:58 +01:00
Daniele Bariletti 728f465356 - migliorata gestione degli id da mantenere evidenziati. 2025-02-07 12:20:38 +01:00
Daniele Bariletti c6de02e026 - aggiustamenti ai comandi per l'aggiunta di paretine. 2025-02-07 11:34:51 +01:00
Demetrio Cassarino 12f3a33412 -aggiunto spazio 2025-02-07 11:23:30 +01:00
Demetrio Cassarino c4b881fcd9 -sistemato mrufile 2025-02-06 16:54:54 +01:00
Demetrio Cassarino c2011e5408 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-06 15:56:12 +01:00
Demetrio Cassarino 120e3fcc42 -piccola modfica su salvataggio 2025-02-06 15:56:09 +01:00
Daniele Bariletti 4e799ebc9b - resa generica la funzione GetValue. 2025-02-06 15:53:38 +01:00
Daniele Bariletti 2b2619c51c Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-06 15:38:47 +01:00
Daniele Bariletti 71101d8fd7 - corretta gestione della lista del partSolid. 2025-02-06 15:37:59 +01:00
Demetrio Cassarino 09459328a5 -modifica tabcontrol toppanel
-modifica keydown
2025-02-06 15:35:18 +01:00
Demetrio Cassarino a4ffb5ed63 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-06 12:15:37 +01:00
Demetrio Cassarino e3f9f7b376 -piccola correzione parametriccompo 2025-02-06 12:15:34 +01:00
Daniele Bariletti 5ee3c8d15b - piccola correzione. 2025-02-06 10:04:22 +01:00
Daniele Bariletti cfe838c454 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-06 10:03:16 +01:00
Daniele Bariletti 71f12ea2b0 - ripristinato versione release. 2025-02-06 09:58:39 +01:00
Demetrio Cassarino 180ba2ca8d -aggiunta lettura generica parametri disegno 2025-02-05 17:32:10 +01:00
Demetrio Cassarino 250d639dcc Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-05 12:27:06 +01:00
Demetrio Cassarino 457fa2a4fe -piccola modifica scenehost 2025-02-05 12:27:03 +01:00
Daniele Bariletti c33484be6d Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-05 12:22:23 +01:00
Daniele Bariletti 56070171d8 - aggiornato margine dei pulsanti nell'UC. 2025-02-05 12:22:18 +01:00
Demetrio Cassarino c470ab556c Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-05 11:20:58 +01:00
Demetrio Cassarino bed47db10e piccola modfica grafica 2025-02-05 11:20:55 +01:00
Daniele Bariletti 3b0b8a7b51 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-05 09:21:20 +01:00
Daniele Bariletti a54a5686f3 - piccola correzione
- aggiunta di un'info per l'esportazione
- cambio della notazione per l'accoppiamento.
2025-02-05 09:21:12 +01:00
Demetrio Cassarino 6aa5ad0a8a -cambiato percorso wpflib5 2025-02-05 08:54:10 +01:00
Demetrio Cassarino e473a38246 -aggiunto update messaggi per gridpanel 2025-02-04 16:54:16 +01:00
Demetrio Cassarino 0bfa71b125 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-04 16:47:25 +01:00
Demetrio Cassarino 77b45aa9b1 -aggiunto ridimensionameto griglia, possibilità di averla o no 2025-02-04 16:47:20 +01:00
Daniele Bariletti cee752da32 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-02-04 09:05:52 +01:00
Daniele Bariletti 3dc7cb4c9f - estensione dell'import del loop
- aggiunta della funzione per cancellare i part
- aggiunto evento per la creazione del fondello split.
2025-02-04 09:05:47 +01:00
Demetrio Cassarino 3634c83160 -piccola modfica su subtitle di toppanellist 2025-02-03 15:23:49 +01:00
Demetrio Cassarino feafffa4d2 -pulizia codice 2025-02-03 12:09:57 +01:00
Daniele Bariletti d4d5a6503f - UC paretine aggiornato con gli input per il fondello. 2025-02-03 10:24:03 +01:00
Demetrio Cassarino dca277d0ec -aggiornato visualizzazione messaggi al cambio lingua 2025-02-03 09:03:14 +01:00
Demetrio Cassarino 48a8aaa113 modfiche stile immagine toppanel1 2025-02-03 08:20:13 +01:00
Demetrio Cassarino 67ec36aed4 -cambio messaggio 2025-02-03 08:13:13 +01:00
Demetrio Cassarino 16513d16f0 -aggiunto update dei messaggi 2025-01-31 16:49:02 +01:00
Demetrio Cassarino ebf5a95a2d -aggiunti pulsanti apri e nuovo file 2025-01-31 10:22:20 +01:00
Demetrio Cassarino 3d7960556b cambio img con svg in xaml 2025-01-30 17:12:56 +01:00
Demetrio Cassarino 6e83913be8 -aggiunto controllo in managedialog su directory vuota
-sistemato lettura chiave
-sistemato lettura lingua da file ini
-aggiunto didascalia ai pulsanti
2025-01-30 15:27:51 +01:00
Demetrio Cassarino f35c7a6870 -piccola dimensione bottoni 2025-01-29 16:57:50 +01:00
Demetrio Cassarino 96e5af8ba2 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-29 16:52:02 +01:00
Demetrio Cassarino fdf49c18db -aggiunto short cut
-piccole modifiche a salvataggio e apertura
-aggiunto immagini messagebox
2025-01-29 16:51:59 +01:00
Daniele Bariletti 2f250a554d Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-28 17:08:40 +01:00
Daniele Bariletti 00272afc5c - aggiunto lo UC per l'aggiunta di paretine. 2025-01-28 17:08:36 +01:00
Demetrio Cassarino 48e6209bb3 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-28 16:07:17 +01:00
Demetrio Cassarino a4b32b186f -aggiunto scelta toppaneltema
-piccoli aggiustamenti
2025-01-28 16:07:13 +01:00
Daniele Bariletti 335dbe806a Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-27 10:40:26 +01:00
Daniele Bariletti 55adab9e68 - aggiunta la funzione per l'export (da migliorare). 2025-01-27 10:40:22 +01:00
Demetrio Cassarino abf9f88d7b -piccole modifiche 2025-01-27 10:22:03 +01:00
Demetrio Cassarino 0d0e24494a -piccole modifiche e pulizia codice 2025-01-27 10:12:09 +01:00
Demetrio Cassarino 7e647a1552 -sistemato converter
-aggiunto nuovo tab
2025-01-24 14:45:09 +01:00
Daniele Bariletti 97c058be03 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-23 17:35:06 +01:00
Daniele Bariletti 1f2bbb9b6b - aggiunta dei comandi per alzatina e frontalini. 2025-01-23 17:35:01 +01:00
Demetrio Cassarino 45aacda576 -inserimento toppanelbutton 2025-01-23 17:05:46 +01:00
Demetrio Cassarino a3acf8aeca -sistemato svg 2025-01-23 09:55:32 +01:00
Demetrio Cassarino eac593dd01 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-23 09:50:19 +01:00
Demetrio Cassarino 0843e49491 -piccola modifica managedialog 2025-01-23 09:50:16 +01:00
Daniele Bariletti 4b65c1db02 - merge non fatto. 2025-01-23 09:18:43 +01:00
Daniele Bariletti 60fd277b94 - ripristinato top panel. 2025-01-23 09:10:25 +01:00
Demetrio Cassarino 0bc432c092 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-23 08:32:49 +01:00
Demetrio Cassarino ac018aeb53 -piccole modifiche 2025-01-23 08:32:46 +01:00
Daniele Bariletti 0f1ab3af27 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-22 17:06:43 +01:00
Daniele Bariletti 0b2112622c - aggiunta correzione ad un controllo per la modalità alzatine. 2025-01-22 17:06:38 +01:00
Demetrio Cassarino 1ee8a8f0e0 -aggiunto egtmsg
-aggiunto svg
2025-01-22 17:01:16 +01:00
Demetrio Cassarino 180bfa730e -piccole modifiche
-aggiunto cambio colore testo
-sistemato salva
2025-01-21 15:37:59 +01:00
Daniele Bariletti 668c2ef78b - piccole correzioni e aggiunte. 2025-01-21 11:58:11 +01:00
Daniele Bariletti 624099c2f4 - modifica alla gestione del salvataggio storia
- piccola correzione.
2025-01-17 08:55:44 +01:00
Demetrio Cassarino f8c64f1cad -correzione merge 2025-01-16 15:30:19 +01:00
Demetrio Cassarino abb0082b90 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-16 15:27:26 +01:00
Demetrio Cassarino 067ad44f03 -aggiunto aboutbox e splashscreen 2025-01-16 15:24:29 +01:00
Daniele Bariletti b19aeafdf3 - migliorata la gestione degli UC per le trasformazioni. 2025-01-16 11:56:46 +01:00
Daniele Bariletti 2082e91b7c - correzione del merge. 2025-01-15 17:57:06 +01:00
Daniele Bariletti 1b5bf009fd Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-15 17:53:58 +01:00
Daniele Bariletti 83a4b9bd01 - uniformato l'uso dello User Control generico per Rotate, Pair e Move. 2025-01-15 17:47:09 +01:00
Demetrio Cassarino e9629399ef -piccole modifiche grafiche 2025-01-15 09:08:25 +01:00
Demetrio Cassarino 5aa20fa4c8 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-14 12:32:04 +01:00
Demetrio Cassarino 2533192b24 -aggiunto popup view
-pulito codice
2025-01-14 12:32:00 +01:00
Daniele Bariletti 3cc5fdc4f7 - rimosse MoveV
- piccole modifiche.
2025-01-13 16:24:25 +01:00
Demetrio Cassarino 29e0485a8e Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-13 15:43:50 +01:00
Demetrio Cassarino e433c06461 -creato usercontrol generico 2025-01-13 15:42:39 +01:00
Daniele Bariletti 475bd0ed83 - correzione a rotate
- aggiunte chiamate alla funzioni per la creazione delle paretine
- piccole aggiunte.
2025-01-13 15:35:16 +01:00
Daniele Bariletti 0a0381222c Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-13 09:24:36 +01:00
Daniele Bariletti 66654b0ee8 - aggiunte le chiamate ai lua per creare i solidi e per i TemplateTool
- aggiunto bottone per la creazione solidi.
2025-01-13 09:24:31 +01:00
Demetrio Cassarino 07e2771552 -cambiato button con togglebutton 2025-01-13 08:53:17 +01:00
Demetrio Cassarino 517a5268ee -piccole modifiche grafiche 2025-01-10 17:12:00 +01:00
Demetrio Cassarino 89bc3e9be1 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-10 16:09:39 +01:00
Demetrio Cassarino 973f14e2df -aggiunta scelta tema e piccole modifiche grafiche 2025-01-10 16:05:07 +01:00
Daniele Bariletti 38b4d49e6e - correzioni alle operazioni di pair, rotate e move e loro UC.
- aggiunta la selezione delle curve compo.
2025-01-10 13:17:33 +01:00
Daniele Bariletti 88e9a0f305 - aggiunto l'UC per il move. 2025-01-09 16:26:29 +01:00
Daniele Bariletti 0bf092b9c9 - modifiche stilistiche. 2025-01-09 16:26:05 +01:00
Daniele Bariletti f0067b34a8 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-09 09:04:10 +01:00
Daniele Bariletti ee3f0c09fc - gestione pop up al movimento della finestra. 2025-01-09 09:04:05 +01:00
Demetrio Cassarino fd60c6b0dc Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-09 08:32:50 +01:00
Demetrio Cassarino 9d65365f1b -agiunte finestre egtmanagedialog, egtcolorpicker e egtmessage e optionwindow 2025-01-08 17:25:50 +01:00
Daniele Bariletti 09e1821400 - aggiunta lista bottoni bottomCenter. 2025-01-08 17:23:18 +01:00
Daniele Bariletti f08f731e67 - gestione SelOptionUC 2025-01-08 17:21:47 +01:00
Daniele Bariletti 9a2f7c7e90 - semplificazione gestione UC rotate e pair 2025-01-08 17:20:40 +01:00
Daniele Bariletti 21a59cbe60 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-07 17:40:04 +01:00
Daniele Bariletti abe94daebf - aggiunto l'UC per la selezione del tipo di oggetto da evidenziare.
- agginuto il riferimento alla SceneButtonVM
- aggiunte le funzioni undo e redo.
2025-01-07 17:38:44 +01:00
Demetrio Cassarino 21f221e1f0 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-07 15:55:48 +01:00
Demetrio Cassarino 015d543937 -piccole modifiche e correzioni 2025-01-07 15:55:05 +01:00
Daniele Bariletti cfa1ec9bae piccole correzioni. 2025-01-07 15:53:50 +01:00
Demetrio Cassarino 627ac9a7e2 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-07 14:43:28 +01:00
Demetrio Cassarino 3a5dfd9108 -pulizia codice 2025-01-07 14:37:38 +01:00
Daniele Bariletti 486f3df30a - correzioni e aggiunte. 2025-01-07 14:35:58 +01:00
Daniele Bariletti 5647264f01 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-07 10:15:14 +01:00
Daniele Bariletti 66c7fa4a4b - organizzato il codice con le region. 2025-01-07 10:15:09 +01:00
Demetrio Cassarino 34ed932d7a Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2025-01-07 09:27:25 +01:00
Demetrio Cassarino bfee6b66a5 -aggiunto icone 2025-01-07 09:27:22 +01:00
Daniele Bariletti a69a257d35 - aggiunta gestione dei click sulla scena per accoppiamento e rotazione. 2025-01-07 09:20:18 +01:00
Daniele Bariletti a0aa2ec740 - piccole migliorie e aggiunte. 2025-01-07 09:19:46 +01:00
Daniele Bariletti 2f384b4324 - aggiunta funzioni al SolidManager. 2025-01-07 09:19:07 +01:00
Daniele Bariletti 0e2641f1cf - proprietà checked per i toggle button
- gestione degli UC per input nella SceneButton.
2025-01-07 09:18:55 +01:00
Daniele Bariletti 09e6c01520 - configurato l'UC per l'accoppiamento. 2025-01-07 09:17:49 +01:00
Daniele Bariletti aca4eaaeaf - aggiunta l'UC per la rotazione. 2025-01-07 09:17:36 +01:00
Daniele Bariletti aff04c9e4f aggiunta la finestra UC per il pair. 2025-01-02 18:18:32 +01:00
Daniele Bariletti a0d946667f aggiunte funzioni per la gestione della scena ( SceneHost). 2025-01-02 16:46:33 +01:00
Daniele Bariletti cca3fe0e0f aggiunte funzioni per sceneButton e SolidManager. 2025-01-02 16:46:03 +01:00
Daniele Bariletti 4fd5ab6cd8 aggiunto il file per utilità EstCalc. 2025-01-02 16:44:33 +01:00
Daniele Bariletti 946f3cba82 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2024-12-31 17:15:18 +01:00
Daniele Bariletti eb36414e56 - aggiunti moduli di utility
- inizio popolamento bottoni.
2024-12-31 17:15:13 +01:00
Nicola Pievani fb31e1a5ff Gestione grafica DockPanel e bottoni 2024-12-31 17:14:30 +01:00
Nicola Pievani f79defbab1 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2024-12-31 12:42:45 +01:00
Nicola Pievani 13c7403589 Gestione immagini bottone 2024-12-31 12:41:51 +01:00
Daniele Bariletti a5adaea91e Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtstone3d into develop 2024-12-31 12:02:58 +01:00
Daniele Bariletti 8e4ab01451 - aggiunto autoassemblaggio
- aggiunto mark delle linee.
2024-12-31 12:01:02 +01:00
Nicola Pievani 55172e0496 Gestione configurazione Pulsanti da INI 2024-12-30 17:45:18 +01:00
Daniele Bariletti 2e0dce53c0 aggiunta funzionalità per aprire e salvare file. 2024-12-30 15:45:50 +01:00
Nicola Pievani b6e6cd375d Inizio configurazione pulsanti scena 2024-12-30 12:21:42 +01:00
Demetrio Cassarino a35e9bc62a -aggiunto seconda scena 2024-12-20 17:31:10 +01:00
Demetrio Cassarino 6c9c19d7fa -first commit 2024-12-20 16:16:57 +01:00
175 changed files with 54788 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
# /
/revision.h
/*.aps
/*.ncb
/*.suo
/*.user
/*.sdf
/*.opensdf
/Debug32
/Release32
/Trial32
/Debug64
/Release64
/ipch
/bin
/obj
/.vs
/*.tmp
+77
View File
@@ -0,0 +1,77 @@
<Window x:Class="AboutBoxV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Title="AboutBoxV"
Background="Transparent"
Height="486"
Width="735"
WindowStyle="None"
ResizeMode="NoResize"
AllowsTransparency="True"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner">
<Border Style="{StaticResource WhiteBottomBlueRow_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="1"
Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Image Grid.RowSpan="2"
Source="/Resources/AboutBox/EgalwareLogo.png"
Style="{StaticResource AboutBox_Image}"/>
<TextBlock Grid.Column="2"
Name="DescriptionLbl"
Style="{StaticResource DescriptionLbl_TextBlock}"/>
<TextBlock Grid.Row="1"
Grid.Column="2"
Name="VersionLbl"
Style="{StaticResource VersionLbl_TextBlock}"/>
</Grid>
<Image Grid.Row="3"
Grid.Column="1"
Source="/Resources/AboutBox/EgalwareLogo.png"
Style="{StaticResource AboutBoxLogo_Image}"/>
<TextBox Grid.Row="3"
Grid.Column="3"
Name="InfoLbl"
Style="{StaticResource AboutBox_TextBox}"/>
<TextBlock Grid.Row="5"
Grid.Column="3"
Name="CopyrightLbl"
Style="{StaticResource Copyright_AboutBox_TextBlock}"/>
<Button Grid.Row="7"
Grid.Column="3"
Style="{StaticResource AboutBoxOk_Button}">
<Image Source="\Resources\Common\Ok.png"
Style="{StaticResource Button_Image}"/>
</Button>
</Grid>
</Border>
</Window>
+48
View File
@@ -0,0 +1,48 @@
Imports EgtUILib
Public Class AboutBoxV
#Region "METHODS"
Private Sub AboutBoxWD_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
Me.Owner = Application.Current.MainWindow
DescriptionLbl.Text = My.Application.Info.Description.ToString()
VersionLbl.Text = "Version : " & My.Application.Info.Version.Major.ToString() &
"." & My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
CopyrightLbl.Text = My.Application.Info.Copyright.ToString()
Dim sInfo As String = String.Empty
Dim sKey As String = String.Empty
EgtGetKeyInfo(sKey)
Dim sKlev As String = Map.refMainWindowVM.MainWindowM.nKeyLevel.ToString()
Dim sOpts As String = Map.refMainWindowVM.MainWindowM.nKeyOptions.ToString()
Dim sLeftDays As String = ""
Dim nLeftDays As Integer
If EgtGetKeyLeftDays(nLeftDays) AndAlso nLeftDays < 500 Then sLeftDays = " (" & nLeftDays.ToString() & ")"
sInfo = If(EgtIsDebug(), "*** Debug Libraries ***" & Environment.NewLine, "")
sInfo &= "User " & Environment.MachineName & "\" & Environment.UserName &
" Inst" & Map.refMainWindowVM.MainWindowM.nInstance.ToString() &
" Ulv" & Map.refMainWindowVM.MainWindowM.nUserLevel.ToString() &
" Dbg" & Map.refMainWindowVM.MainWindowM.DebugLevel().ToString() & Environment.NewLine
sInfo &= sKey & " - " & sKlev & " - " & sOpts & sLeftDays & Environment.NewLine
sInfo &= "DataRoot " & Map.refMainWindowVM.MainWindowM.sDataRoot & Environment.NewLine
sInfo &= "MachinesRoot " & Map.refMainWindowVM.MainWindowM.sMachinesRoot & Environment.NewLine
Dim sOpSys As String = String.Empty
EgtGetOsInfo(sOpSys)
sInfo &= sOpSys & Environment.NewLine
Dim sCPU As String = String.Empty
EgtGetCpuInfo(sCPU)
sInfo &= sCPU & Environment.NewLine
Dim sMem As String = String.Empty
EgtGetMemoryInfo(sMem)
sInfo &= sMem & Environment.NewLine
Dim sScene As String = String.Empty
EgtGetSceneInfo(sScene)
sInfo &= sScene
InfoLbl.Text = sInfo
End Sub
#End Region ' Methods
End Class
+48
View File
@@ -0,0 +1,48 @@
Imports EgtUILib
Public Class AngleVM
Inherits SceneUserControlVM
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_ADDCONSTRAINT.ToUpper()
DirectCast(Map.refSceneButtonVM.m_AngleUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden
DirectCast(Map.refSceneButtonVM.m_AngleUC, SceneUserControlV).Annulla.Visibility = Visibility.Hidden
LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
' ' Inserisci Angolo
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, EgtMsg(110048), ParamType.STR))
' Angolo
AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, ParamType.DOUB, Visibility.Visible, True))
End Sub
Public Overrides Sub Conferma()
LoadEditParametric()
Close()
End Sub
Public Overrides Sub ShowPreview()
End Sub
Public Overrides Sub Annulla()
Close()
End Sub
Private Sub Close()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_AngleUC)
SolidManagerM.ManageUndoRedo()
End Sub
#End Region ' Methods
End Class
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
+14
View File
@@ -0,0 +1,14 @@
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Utility/EgtStone3DDarkDictionary.xaml"/>
<ResourceDictionary Source="Utility/EgtStone3DDictionary.xaml"/>
<ResourceDictionary Source="Utility/EgtStone3DDefaultStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
+35
View File
@@ -0,0 +1,35 @@
Class Application
' Gli eventi a livello di applicazione, ad esempio Startup, Exit e DispatcherUnhandledException,
' possono essere gestiti in questo file.
#Region "FIELDS & PROPERTIES"
#End Region ' Fields & Properties
#Region "METHODS"
Protected Overrides Sub OnStartup(e As StartupEventArgs)
MyBase.OnStartup(e)
ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose
If e.Args.Count = 0 Then
' creo finestra SplashScreen
Dim SplashScreen As New SplashScreenV
Me.MainWindow = SplashScreen
Me.MainWindow.Show()
Map.SetRefSplashScreen(SplashScreen)
End If
' Creo la View principale
Me.MainWindow = New MainWindowV
' Mostro la View principale
Me.MainWindow.Show()
' inizializzo finestra interfaccia
Dim m_SecondaryWindowWnd = New SecondaryWindowV(Application.Current.MainWindow) With {
.Owner = Me.MainWindow
}
m_SecondaryWindowWnd.Show()
End Sub
#End Region ' Methods
End Class
+171
View File
@@ -0,0 +1,171 @@
Imports System.IO
Imports EgtUILib.EgtInterface
Imports EgtWPFLib5
Public Class ParametricCompoVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private m_sLuaPath As String = String.Empty
Friend ReadOnly bFileExsist As Boolean = False
Private m_nVeinCtx As Integer
Private m_nPartId As Integer = GDB_ID.NULL
Public Property nPartId As Integer
Get
Return m_nPartId
End Get
Set(value As Integer)
m_nPartId = value
End Set
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(sFile As String, nVeinCtx As Integer, Optional dir As String = "")
MyBase.New()
m_nVeinCtx = nVeinCtx
Title = EGT_PARAMETRIC.ToUpper()
' Recupero path cartella che contiene i componenti
If Not File.Exists(dir & sFile) Then
GetMainPrivateProfileString(K_COMPO, COMPO_DIR, "", m_sLuaPath)
' Controllo se il file esiste
m_sLuaPath &= sFile
Else
m_sLuaPath = dir & sFile
End If
If File.Exists(m_sLuaPath) Then
LoadParamList()
bFileExsist = True
Else
EgtOutLog("File " & m_sLuaPath & " non esiste nella cartella dei componenti")
End If
' aggiorno visualizzazione
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End Sub
#End Region ' Contructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
' Pulisco lista variabili
ParamList.Clear()
EgtLuaExecFile(m_sLuaPath)
Dim sPar As String = "0"
EgtLuaGetGlobStringVar("CMP.Npar", sPar)
If Not String.IsNullOrEmpty(sPar) Then
Dim sName As String = String.Empty
EgtLuaGetGlobStringVar("CMP.Nome", sName)
Dim nPar As Integer = CInt(sPar)
ParamList.Add(New _TextBlockParam(EGT_MESSAGE, sName, Visibility.Visible))
' Recupero nome, tipo e valore delle variabili globali
For Index As Integer = 1 To nPar
Dim NewCompo As GenericParam = Nothing
If NameTypeValueFromLua(Index, NewCompo) Then
ParamList.Add(NewCompo)
End If
Next
End If
End Sub
Private Sub ExecLua()
If Not File.Exists(m_sLuaPath) Then
EgtOutLog("Matching error: missing file (" & m_sLuaPath & ")")
Return
End If
' Parsing
EgtLuaExecFile(m_sLuaPath)
EgtSetCurrentContext(m_nVeinCtx)
For Index As Integer = 0 To ParamList.Count - 1
If TypeOf ParamList(Index) Is _TextBoxParam Then
Dim _TextBox As _TextBoxParam = DirectCast(ParamList(Index), _TextBoxParam)
EgtLuaSetGlobNumVar("CMP.V" & Index, CDbl(_TextBox.sValue))
ElseIf TypeOf ParamList(Index) Is _CheckBoxParam Then
Dim _CheckBox As _CheckBoxParam = DirectCast(ParamList(Index), _CheckBoxParam)
EgtLuaSetGlobBoolVar("CMP.V" & Index, _CheckBox.IsChecked)
End If
Next
EgtLuaExecLine("CMP_Draw" & "(true)")
EgtLuaResetGlobVar("CMP")
' rinomino il part con un nome univoco
Dim nPart As Integer = EgtGetLastPart()
EgtLuaSetGlobNumVar("TOOL.nId", nPart)
EgtLuaCallFunction("TOOL.RenameNewPart")
EgtLuaCallFunction("TOOL.ReorganizeEdges")
EgtLuaCallFunction("TOOL.ClearVariables")
nPartId = EgtGetLastPart()
End Sub
Public Overrides Sub Conferma()
Map.refSceneHostVM.m_bPreviewShown = False
ExecLua()
EgtDraw()
Close()
End Sub
Public Overrides Sub Annulla()
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
SolidManagerM.Delete(nPartId)
EgtDraw()
Close()
End Sub
Public Overrides Sub ShowPreview()
Map.refSceneHostVM.m_bPreviewShown = True
ExecLua()
EgtDraw()
End Sub
Private Sub Close()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
SolidManagerM.RefreshPartSolid(nPartId)
' debug
EgtSaveFile("D:\\Temp\\marmo\\Vein3D\\template.nge", 2)
' debug
End Sub
Private Function NameTypeValueFromLua(nInd As Integer, ByRef Param As GenericParam) As Boolean
Dim bOk As Boolean = True
Dim sName As String = String.Empty
Dim nType As Integer = 0
bOk = bOk AndAlso EgtLuaGetGlobStringVar(LUA_NAME & nInd.ToString(), sName)
bOk = bOk AndAlso EgtLuaGetGlobIntVar(LUA_TYPE & nInd.ToString(), nType)
Return bOk AndAlso FromLua(nInd, sName, nType, Param)
End Function
Private Function FromLua(nInd As Integer, sName As String, nType As Integer, ByRef Param As GenericParam) As Boolean
Dim sVal As String = String.Empty
Dim dVal As Double = 0
Dim nVal As Integer = 0
Dim bOk As Boolean
Select Case nType
Case ParamType.BOOL
bOk = EgtLuaGetGlobBoolVar(LUA_VALUE & nInd.ToString(), ParamType.BOOL)
Param = New _CheckBoxParam(sName, sVal)
Return bOk
Case ParamType.INT
bOk = EgtLuaGetGlobIntVar(LUA_VALUE & nInd.ToString(), nVal)
Param = New _TextBoxParam(sName, nVal.ToString(), nType)
Return bOk
Case ParamType.LEN, ParamType.DOUB
bOk = EgtLuaGetGlobNumVar(LUA_VALUE & nInd.ToString(), dVal)
Param = New _TextBoxParam(sName, dVal.ToString(), nType)
Return bOk
Case ParamType.STR
bOk = EgtLuaGetGlobStringVar(LUA_VALUE & nInd.ToString(), sVal)
Param = New _TextBoxParam(sName, sVal, nType)
Return bOk
End Select
Return False
End Function
#End Region ' Methods
End Class
+173
View File
@@ -0,0 +1,173 @@
Module ConstEgtStone3D
Public Const EGT_ROTATE As String = "Rotate"
Public Const EGT_AUTOPAIR As String = "AutoPair"
Public Const EGT_PAIR As String = "Pair"
Public Const EGT_UNPAIR As String = "Unpair"
Public Const EGT_RESET_INTERS As String = "ResetInters"
Public Const EGT_UNDO As String = "Undo"
Public Const EGT_REDO As String = "Redo"
Public Const EGT_SEL_TYPE As String = "SelType"
Public Const EGT_IMPORT_LOOP As String = "ImportLoop"
Public Const EGT_CREATE_SOLID_LOOP As String = "CreateSolidFromLoop"
Public Const EGT_CREATE_ALL_SOLIDS As String = "CreateAllSolids"
Public Const EGT_MOVE As String = "Move"
Public Const EGT_ADD_ALZ As String = "AddSplashTop"
Public Const EGT_ADD_FRO As String = "AddWaterfall"
Public Const EGT_ADD_PANEL As String = "AddPanel"
Public Const EGT_EDIT_PANEL As String = "EditPanel"
Public Const EGT_EDIT_PARAMETRIC As String = "EditParametric"
Public Const EGT_EXPORTPROJECT As String = "ExportProject"
Public Const EGT_DELETE As String = "Delete"
Public Const EGT_PARAMETRIC As String = "Parametric Compo"
Public Const EGT_LENGHT As String = "Lunghezza"
Public Const EGT_ANGLE As String = "Angolo"
Public Const EGT_EXTREMITY As String = "Estremita'"
Public Const EGT_ADDCONSTRAINT As String = "Aggiungi Vincolo"
Public Const EGT_MESSAGE As String = "Messaggio"
Public Const EGT_PANEL As String = "Paretina"
Public Const EGT_BOTTOM As String = "Fondo"
Public Const EGT_SPLASHTOP As String = "Alzatina"
Public Const EGT_WATERFALL As String = "Frontalino"
Public Const EGT_SINK As String = "Paretine e fondo"
Public Const EGT_SINK_SPLITBOTTOM As String = "Paretine e fondo composto"
Public Const EGT_SPLITBOTTOM As String = "Fondo composito"
Public Const EGT_SLOT As String = "Fessura"
Public Const EGT_BORE As String = "Foro"
Public Const EGT_X As String = "X"
Public Const EGT_Y As String = "Y"
Public Const EGT_Z As String = "Z"
Public Const EGT_XY As String = "XY"
Public Const EGT_YX As String = "YX"
Public Const EGT_YZ As String = "YZ"
Public Const EGT_ZY As String = "ZY"
Public Const EGT_ZX As String = "ZX"
Public Const EGT_XZ As String = "XZ"
Public Const ASSEMBLER_FILENAME As String = "AssemblerLog.txt"
Public Const TERNA_FILENAME As String = "TernaVeinMatch.nge"
Public Const CREATESOLID_FILENAME As String = "CreateSOLID_FromPartsInPark.lua"
Public Const OPERATIONSOLID_FILENAME As String = "OperationOnSolid.lua"
Public Const DICTIONARY_FILENAME As String = "Dictionary.xaml"
Public Const ASSEMBLER As String = " Avvio Assembler"
' unità di misura
Public Const MILLIMETER As String = "mm"
Public Const INCH As String = "in"
Public Const CHILD As String = "Child"
Public Const SOLID As String = "Solid"
Public Const MYSOLIDSURF As String = "MySolidSurf"
Public Const PAIRED As String = "Paired"
Public Const GROUP As String = "Group"
Public Const SURFACE As String = "Surface"
Public Const PARENT As String = "Parent"
Public Const REGION As String = "Region"
Public Const TEMP As String = "Temp"
Public Const TERNA As String = "Terna"
Public Const AXISX As String = "AxisX"
Public Const AXISY As String = "AxisY"
Public Const AXISZ As String = "AxisZ"
Public Const OUTLOOP As String = "OutLoop"
Public Const INLOOP As String = "InLoop"
Public Const TOPLIST_BTN As String = "TopListBtn"
Public Const LEFTLIST_BTN As String = "LeftListBtn"
Public Const RIGHTLIST_BTN As String = "RightListBtn"
Public Const BOTTOMLIST_BTN As String = "BottomListBtn"
Public Const BOTTOMCENTERLIST_BTN As String = "BottomCenterListBtn"
Public Const TOPPANELLIST_BTN As String = "TopPanelListBtn"
Public Const PARAMETRICLIST_BTN As String = "ParametricListBtn"
Public Const INFOLLIST_BTN As String = "InfoListBtn"
Public Const TOPPANELOFFICELIST_BTN As String = "TopPanelOfficeListBtn"
Public Const UTILITY_FOLDER As String = "Utility"
Public Const TABLE As String = "Table"
Public Const SUBTITLE As String = "SubTitle"
' nome file cn in progetto
Public Const KEY_ISOFILE_PATH As String = "IsoFilePath"
Public Const FILE_PATH As String = "FilePath"
' info per griglia
Public Const GRID_ON As String = "GRID ON "
Public Const GRID_OFF As String = "GRID OFF"
' enum per le fasi di accoppiamento
Public Enum PairStage As Integer
FirstLine = 0
SecondLine = 1
FacePair = 2
End Enum
' enum per le fasi di rotazione
Public Enum RotateStage As Integer
SelectPart = 0
SelectAxis = 1
InsertAngle = 2
End Enum
' enum per le fasi di movimento
Public Enum MoveStage As Integer
SelectPart = 0
InsertMovement = 1
End Enum
' enum per le fasi di creazione paretina
Public Enum NewPanelStage As Integer
InsertParam = 0
End Enum
' enum per le fasi di modifica paretina
Public Enum EditPanelStage As Integer
SelectPart = 0
InsertNewParam = 1
ShowPreview = 2
End Enum
Public Enum PartType As Integer
Unknown = -1
TopKitchen = 0
Panel = 1
SinkSplitBottom = 2
Sink = 3
End Enum
Public Enum JunctionType As Integer
TrimStart = 0
TrimEnd = 1
Angled = 3
End Enum
'enum per le fasi di modifica di un piano cucina
Public Enum EditParametricStage As Integer
SelectPart = 0
SelectPoint = 1
SelectEdge = 2
End Enum
' Constanti ParametricCompo
Public Enum ParamType As Integer
BOOL = 1
INT = 2
LEN = 3
DOUB = 4
STR = 5
End Enum
Public Const LUA_CMP_VARS As String = "CMP"
Public Const LUA_VALUE As String = LUA_CMP_VARS & ".V"
Public Const LUA_NAME As String = LUA_CMP_VARS & ".N"
Public Const LUA_TYPE As String = LUA_CMP_VARS & ".T"
End Module
+46
View File
@@ -0,0 +1,46 @@
Module ConstGen
' Abilitazioni licenza
Friend Enum KEY_OPT As UInteger
BASE = 1 ' Prodotto EgtStone3D
End Enum
' File con dati di licenza
Public Const LIC_FILE_NAME As String = "EgtCAM5.lic"
Public Const S_LICENCE As String = "Licence"
Public Const K_LOCKID As String = "LockId"
Public Const K_KEY As String = "Key"
Public Const K_NESTKEY As String = "NestKey"
' File di log generale
Public Const GENLOG_FILE_NAME As String = "EgtStone3D#.txt"
' Sottodirettorio di configurazione
Public Const CONF_DIR As String = "Config"
' Sottodirettorio delle risorse
Public Const RES_DIR As String = "Resources"
' Sottodirettorio temporaneo
Public Const TEMP_DIR As String = "Temp"
' Sottodirettorio lavorazioni
Public Const MACHININGS_DIR As String = "Machinings"
' Sottodirettorio materiali
Public Const MATERIALS_DIR As String = "Materials"
' Sottodirettorio per lavorazioni travi
Public Const _3DPRINTING_DIR As String = "EgtStone3D"
' Sottodirettorio di default per le macchine
Public Const MACHINES_DFL_DIR As String = "Machines"
' Sottodirettorio di default per toolmakers
Public Const TOOLMAKERS_DFL_DIR As String = "ToolMakers"
' Sottodirettorio di configurazione
Public Const COMPO_DIR As String = "Compo_Dir"
' Sottodirettorio del Vein 3D
Public Const VEIND3D_DIR As String = "Vein3D_Dir"
' Sottodirettorio delle risorse
Public Const RESOURCES_DIR As String = "Resources"
' Sottodirettorio del Create Solid
Public Const CREATESOLID_DIR As String = "CreateSolid"
' Sottodirettorio dell'Operation Solid
Public Const OPERATIONSOLID_DIR As String = "OperationSolid"
End Module
+23
View File
@@ -0,0 +1,23 @@
Module ConstIni
Public Const INI_FILE_NAME As String = "EgtStone3D.ini"
Public Const K_NETKEY As String = "NetKey"
Public Const K_3PRNBASEDIR As String = "BaseDir"
Public Const K_LINEWIDTH As String = "LineWidth"
Public Const K_CUSTOMCOLORS As String = "CustomColors"
Public Const K_VEIND3D As String = "Vein3D"
Public Const K_COMPO As String = "Compo"
Public Const K_THEMA As String = "Thema"
Public Const K_LASTNGEDIR As String = "LastNgeDir"
Public Const K_LASTIMPDIR As String = "LastImpDir"
Public Const K_CNCFLAG As String = "CncFlag"
Public Const K_TOPPANEL As String = "TopPanelThema"
Public Const S_PRINTING3D As String = "3dPrinting"
Public Const S_COLORS As String = "Colors"
Public Const S_MRUFILES As String = "MruFiles"
Public Const S_MRUIMPORTFILES As String = "MruImportFiles"
Public Const S_IMPORT As String = "Import"
Public Const K_GRIDSTATE As String = "GridState"
End Module
+199
View File
@@ -0,0 +1,199 @@
<EgtWPFLib5:EgtMainWindow x:Class="EgtColorPickerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Title="{Binding sTitle}"
WindowStartupLocation="CenterOwner"
Style="{StaticResource ColorPicker_Window}">
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TabControl Style="{StaticResource TreeView_TC}">
<TabItem Header="{Binding BasicColor_Msg}">
<Grid Style="{StaticResource EgtColorPicker_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding BasicColors}"
SelectedItem="{Binding SelColor}"
ItemContainerStyle="{StaticResource BasicColorsItem_ListBox}"
Style="{StaticResource BasicColors_ListBox}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="13"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Fill}"
Style="{StaticResource EgtColorPicker_Rect}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</TabItem>
<TabItem Header="{Binding ColorPicker_Msg}">
<TabItem.Resources>
<Style TargetType="{x:Type EgtWPFLib5:EgtHexItem}" BasedOn="{StaticResource EgtHexItem}">
<Setter Property="BorderThickness" Value="1.5"/>
<Setter Property="BorderBrush" Value="{StaticResource EgalwareWhite}"/>
</Style>
</TabItem.Resources>
<EgtWPFLib5:EgtHexList ItemsSource="{Binding HexList}"
SelectedItem="{Binding sHexSelColor}"
Style="{StaticResource EgtHexList}">
<EgtWPFLib5:EgtHexList.ItemTemplate>
<DataTemplate/>
</EgtWPFLib5:EgtHexList.ItemTemplate>
<EgtWPFLib5:EgtHexList.ItemContainerStyle>
<Style TargetType="EgtWPFLib5:EgtHexItem" BasedOn="{StaticResource EgtHexItem}">
<Setter Property="Grid.Row" Value="{Binding nRow}"/>
<Setter Property="Grid.Column" Value="{Binding nColumn}"/>
<Setter Property="Background" Value="{Binding Background}"/>
</Style>
</EgtWPFLib5:EgtHexList.ItemContainerStyle>
</EgtWPFLib5:EgtHexList>
</TabItem>
<TabItem Header="{Binding ColorPickerTheme_Msg}">
<Grid Style="{StaticResource EgtColorPicker_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding BasicColorsTheme}"
SelectedItem="{Binding SelColorTheme}"
ItemContainerStyle="{StaticResource BasicColorsItem_ListBox}"
Style="{StaticResource BasicColorsTheme_ListBox}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="13"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Fill}"
Style="{StaticResource EgtColorPicker_Rect}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</TabItem>
</TabControl>
</Grid>
<Grid Grid.Column="1"
Style="{StaticResource CustomColor_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding CustomColor_Msg}"
Style="{StaticResource CustomColor_TxBl}"/>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding CustomColors}"
SelectedItem="{Binding SelCustomColor}"
ItemContainerStyle="{StaticResource BasicColorsItem_ListBox}"
Style="{StaticResource BasicColors_ListBox}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="13"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Fill}"
Style="{StaticResource EgtColorPicker_Rect}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Grid Grid.Row="2"
Style="{StaticResource CurrColor_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid Style="{StaticResource SaveColor_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Rectangle Fill="{Binding CurrColor}"
Style="{StaticResource CurrColor_Rect}"/>
<Button Grid.Row="1"
x:Name="SaveColor"
Content="{Binding AddCColor_Msg}"
Command="{Binding SaveColor_Command}"
Style="{StaticResource LeftPanel_TextButton}"/>
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Red_Msg}"
Style="{StaticResource Red_TxBl}"/>
<TextBox Grid.Column="1"
Text="{Binding Red, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource Red_TxBx}"/>
<TextBlock Grid.Row="1"
Text="{Binding Green_Msg}"
Style="{StaticResource Color_TxBl}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Text="{Binding Green, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource ColorPicker_TxBx}"/>
<TextBlock Grid.Row="2"
Text="{Binding Blu_Msg}"
Style="{StaticResource Color_TxBl}"/>
<TextBox Grid.Column="1"
Grid.Row="2"
Text="{Binding Blue, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource ColorPicker_TxBx}"/>
<TextBlock Grid.Row="3"
Text="{Binding Hexadecimal_Msg}"
Style="{StaticResource Color_TxBl}"/>
<TextBox Grid.Column="1"
Grid.Row="3"
Text="{Binding Hexadecimal}"
Style="{StaticResource ColorPicker_TxBx}"/>
</Grid>
</Grid>
</Grid>
</Grid>
<UniformGrid Grid.Row="2"
Rows="1"
Style="{StaticResource EgtColorPicker_UniformGrid}">
<Button IsDefault="True"
Content="OK"
Command="{Binding Ok_Command}"
Style="{StaticResource EgtColorPicker_Btn}"/>
<Button Content="Cancel"
Command="{Binding Cancel_Command}"
Style="{StaticResource EgtColorPicker_Btn}"/>
</UniformGrid>
</Grid>
</EgtWPFLib5:EgtMainWindow>
+68
View File
@@ -0,0 +1,68 @@
Imports EgtWPFLib5
Imports System.Windows.Forms
Public Class EgtColorPickerV
#Region "FIELDS & PROPERTIES"
Private WithEvents m_EgtColorPickerVM As EgtColorPickerVM
Private Shadows DialogResult As DialogResult
Public Property CustomColors As Integer()
Get
Return m_EgtColorPickerVM.GetCustomColors()
End Get
Set(value As Integer())
m_EgtColorPickerVM.SetCustomColors(value)
End Set
End Property
Public Property Color As System.Drawing.Color
Get
Return System.Drawing.Color.FromArgb(255, m_EgtColorPickerVM.Red, m_EgtColorPickerVM.Green, m_EgtColorPickerVM.Blue)
End Get
Set(value As System.Drawing.Color)
m_EgtColorPickerVM.Red = value.R
m_EgtColorPickerVM.Green = value.G
m_EgtColorPickerVM.Blue = value.B
End Set
End Property
#End Region ' Fields & Properties
#Region "CONTRUCTORS"
Sub New(Owner As Window, EtgColorPickerVM As EgtColorPickerVM)
MyBase.New(Owner)
InitializeComponent()
Me.DataContext = EtgColorPickerVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_EgtColorPickerVM = EtgColorPickerVM
End Sub
#End Region ' Constructors
#Region "EVENTS"
Private Sub CloseWindow(DialogResult As MessageBoxResult) Handles m_EgtColorPickerVM.m_CloseWindow
Me.DialogResult = DialogResult
Me.Close()
End Sub
#End Region ' Events
#Region "METHODS"
''' <summary>
''' Apre una finestra EgtColorPicker
''' </summary>
''' <returns></returns>
Public Overloads Function ShowDialog() As DialogResult
MyBase.ShowDialog()
Return Me.DialogResult
End Function
#End Region ' Methods
End Class
@@ -0,0 +1,332 @@
<EgtWPFLib5:EgtMainWindow x:Class="EgtManageFileDialogV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Title="{Binding sTitle}"
WindowStartupLocation="CenterOwner"
Style="{StaticResource ManageFileDialogV_Window}">
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Command="{Binding GoBack_Command}"
Style="{StaticResource GoBack_Btn}">
<Image Source="\Resources\EgtDialog\Restore.png"
Style="{StaticResource Button_Image}"/>
</Button>
<TextBlock Grid.Column="1"
Text="{Binding sSelPath}"
Style="{StaticResource SelPath_TxBl}"/>
<ComboBox Grid.Column="2"
ItemsSource="{Binding ViewModeList}"
SelectedItem="{Binding SelViewMode}"
Style="{StaticResource ViewMode_CmBx}"/>
</Grid>
<Grid Grid.Row="1"
Style="{StaticResource TopPanel_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="4*"/>
</Grid.ColumnDefinitions>
<TreeView x:Name="FileTree"
ItemsSource="{Binding RootList}"
Style="{StaticResource FileTree_TV}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type EgtStone3D:EgtFolder}"
ItemsSource="{Binding TreeItemList_View}">
<StackPanel Style="{StaticResource SceneButtonH_StackPanel}">
<Image Source="{Binding sIconSource}"
Style="{StaticResource IconSource_Img}"/>
<TextBlock Text="{Binding sName}"
Style="{StaticResource DialogWindow_TxBl}"/>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:EgtItem}">
<StackPanel Style="{StaticResource SceneButtonH_StackPanel}">
<Image Source="{Binding sIconSource}"
Style="{StaticResource IconSource_Img}"/>
<TextBlock Text="{Binding sName}"
Style="{StaticResource DialogWindow_TxBl}"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
<TabControl Grid.Column="1"
SelectedIndex="{Binding nSelTab}"
Style="{StaticResource TreeView_TC}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem Header="LISTBOX">
<ListBox Grid.Row="1"
x:Name="FileList"
ItemsSource="{Binding SelTreeItem.FolderList, Mode=TwoWay}"
SelectedItem="{Binding ItemSelected, Mode=TwoWay}"
Margin="5,5,5,5"
BorderThickness="0"
Background="{DynamicResource ListBox.Static.Background}"
IsSynchronizedWithCurrentItem="True">
<ListBox.Resources>
<DataTemplate x:Key="ListTemplateView"
DataType="{x:Type EgtStone3D:EgtDirectory}">
<Grid Style="{StaticResource ListTemplateView_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding sIconSource}"
Style="{StaticResource IconSource_Img}"/>
<TextBlock Grid.Column="1"
Text="{Binding sName}"
Style="{StaticResource DialogWindow_TxBl}"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="TilesTemplateView"
DataType="{x:Type EgtStone3D:EgtDirectory}">
<Grid Style="{StaticResource TilesTemplateView_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding sIconSource}"
Style="{StaticResource Button_Image}"/>
<UniformGrid Grid.Column="1"
Rows="3"
Style="{StaticResource TemplateView_UniformGrid}">
<TextBlock Text="{Binding sName}"
Style="{StaticResource TemplateView_TxBl}"/>
<TextBlock Text="{Binding ghTypeItem}"
Style="{StaticResource TemplateView_TxBl}"/>
<TextBlock Text="{Binding sDimension}"
Style="{StaticResource TemplateView_TxBl}"/>
</UniformGrid>
</Grid>
</DataTemplate>
<DataTemplate x:Key="ContentTemplateView"
DataType="{x:Type EgtStone3D:EgtDirectory}">
<Grid Style="{StaticResource ContentTemplateView_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding sIconSource}"
Style="{StaticResource Button_Image}"/>
<UniformGrid Grid.Column="1"
Rows="2"
Style="{StaticResource TemplateView_UniformGrid}">
<TextBlock Text="{Binding sName}"
Style="{StaticResource TemplateView_TxBl}"/>
<TextBlock Text="{Binding ghTypeItem}"
Style="{StaticResource TemplateView_TxBl}"/>
</UniformGrid>
<UniformGrid Grid.Column="2"
Rows="2"
Style="{StaticResource TemplateView_UniformGrid}">
<TextBlock Text="{Binding sLastModifyDate}"
Style="{StaticResource TemplateView_TxBl}"/>
<TextBlock Text="{Binding sDimension}"
Style="{StaticResource TemplateView_TxBl}"/>
</UniformGrid>
</Grid>
<Border Grid.Row="1"
Style="{StaticResource TemplateView_Border}"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:EgtDirectory}">
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}" Value="0">
<Setter Property="ContentTemplate" Value="{StaticResource ListTemplateView}" />
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}" Value="1">
<Setter Property="ContentTemplate" Value="{StaticResource TilesTemplateView}" />
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}" Value="2">
<Setter Property="ContentTemplate" Value="{StaticResource ContentTemplateView}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Style>
<Style TargetType="{x:Type ListBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}"
Value="0">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}"
Value="1">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.nSelTempleteListView, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}"
Value="2">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"
HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
</TabItem>
<TabItem Header="DATAGRID">
<DataGrid ItemsSource="{Binding SelTreeItem.FolderList, Mode=TwoWay}"
SelectedItem="{Binding ItemSelected}"
ColumnHeaderStyle="{StaticResource DataGridColumnHeader}"
RowStyle="{StaticResource RowDataGrid_CustomHighLight}"
CellStyle="{StaticResource CellDataGrid_CustomHighLight}">
<DataGrid.Columns>
<DataGridTemplateColumn Width="5*">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Name_Msg, RelativeSource={RelativeSource AncestorType=DataGrid}}"
Style="{StaticResource DataGrid_TxBl}"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding sIconSource}"
Style="{StaticResource Name_Image}"/>
<TextBlock Grid.Column="1"
Text="{Binding sName}"
Style="{StaticResource Name_TxBl}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding sLastModifyDate}"
Width="2*"
ElementStyle="{StaticResource DataGridTextColumn_TxBl}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.LastModify_Msg, RelativeSource={RelativeSource AncestorType=DataGrid}}"
Style="{StaticResource DataGrid_TxBl}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding ghTypeItem}"
Width="1*"
ElementStyle="{StaticResource DataGridTextColumn_TxBl}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Type_Msg, RelativeSource={RelativeSource AncestorType=DataGrid}}"
Style="{StaticResource DataGrid_TxBl}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sDimension}"
Width="1*"
ElementStyle="{StaticResource DataGridTextRColumn_TxBl}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Dimension_Msg, RelativeSource={RelativeSource AncestorType=DataGrid}}"
Style="{StaticResource DataGrid_TxBl}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.DoubleClick_Command, RelativeSource={RelativeSource AncestorType={x:Type EgtWPFLib5:EgtMainWindow}}}"/>
</DataGrid.InputBindings>
</DataGrid>
</TabItem>
</TabControl>
</Grid>
<Grid Grid.Row="2"
Style="{StaticResource TopPanel_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding FileName_Msg}"
Style="{StaticResource FileName_TxBl}"/>
<TextBox Grid.Column="1"
Text="{Binding sSaveFileName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Style="{StaticResource ParameterList_TxBx}"/>
<ComboBox Grid.Column="2"
ItemsSource="{Binding FilterList}"
SelectedItem="{Binding SelFilter, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="sNameExstension"
Style="{StaticResource RightPanel_ComboBox}"/>
</Grid>
<UniformGrid Grid.Row="3"
Rows="1"
Style="{StaticResource Button_UniformGrid}">
<Button IsDefault="True"
Content="OK"
Command="{Binding Ok_Command}"
Style="{StaticResource Ok_Btn}"/>
<Button Content="Cancel"
IsCancel="True"
Command="{Binding Cancel_Command}"
Style="{StaticResource Cancel_Btn}"/>
</UniformGrid>
</Grid>
</EgtWPFLib5:EgtMainWindow>
@@ -0,0 +1,149 @@
Imports System.Windows.Forms
Public Class EgtManageFileDialogV
#Region "FIELDS & PROPERTIES"
Private WithEvents m_EgtManageFileDialogVM As EgtManageFileDialogVM
Private Shadows DialogResult As DialogResult
''' <summary>
''' Stringa che specifica il titolo da mostrare
''' </summary>
Public Overloads Property Title As String
Get
Return m_EgtManageFileDialogVM.sTitle
End Get
Set(value As String)
m_EgtManageFileDialogVM.sTitle = value
End Set
End Property
Public Property Filter As String
Get
Return m_EgtManageFileDialogVM.sFilter
End Get
Set(value As String)
m_EgtManageFileDialogVM.sFilter = value
End Set
End Property
Public Property SelFilter As EgtExstension
Get
Return m_EgtManageFileDialogVM.SelFilter
End Get
Set(value As EgtExstension)
m_EgtManageFileDialogVM.SelFilter = value
End Set
End Property
Public Property InitialDirectory As String
Get
Return m_EgtManageFileDialogVM.sInitialDirectory
End Get
Set(value As String)
m_EgtManageFileDialogVM.sInitialDirectory = value
End Set
End Property
Public Property SafeFileName As String
Get
Return m_EgtManageFileDialogVM.sSaveFileName
End Get
Set(value As String)
m_EgtManageFileDialogVM.sSaveFileName = value
End Set
End Property
Public Property FileName As String
Get
Return m_EgtManageFileDialogVM.sFileName
End Get
Set(value As String)
m_EgtManageFileDialogVM.sFileName = value
End Set
End Property
Public Property FilterIndex As Integer
Get
Return m_EgtManageFileDialogVM.nFilterIndex
End Get
Set(value As Integer)
m_EgtManageFileDialogVM.nFilterIndex = value
End Set
End Property
Public Property Mode As Integer
Get
Return m_EgtManageFileDialogVM.nMode
End Get
Set(value As Integer)
m_EgtManageFileDialogVM.nMode = value
End Set
End Property
Public Property CheckFileExists As Boolean
Get
Return m_EgtManageFileDialogVM.bCheckFileExists
End Get
Set(value As Boolean)
m_EgtManageFileDialogVM.bCheckFileExists = value
End Set
End Property
Public Property ValidateNames As Boolean
Get
Return m_EgtManageFileDialogVM.bValidateNames
End Get
Set(value As Boolean)
m_EgtManageFileDialogVM.bValidateNames = value
End Set
End Property
Public Property OverwritePrompt As Boolean
Get
Return m_EgtManageFileDialogVM.bOverwritePrompt
End Get
Set(value As Boolean)
m_EgtManageFileDialogVM.bOverwritePrompt = value
End Set
End Property
#End Region ' Fields & Properties
#Region "CONTRUCTORS"
Sub New(Owner As Window, EgtManageFileDialogVM As EgtManageFileDialogVM)
MyBase.New(Owner)
InitializeComponent()
Me.DataContext = EgtManageFileDialogVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_EgtManageFileDialogVM = EgtManageFileDialogVM
End Sub
#End Region ' Constructor
#Region "EVENTS"
Private Sub CloseWindow(DialogResult As DialogResult) Handles m_EgtManageFileDialogVM.m_CloseWindow
Me.DialogResult = DialogResult
Me.Close()
End Sub
#End Region ' Events
#Region "METHODS"
Public Overloads Function ShowDialog() As DialogResult
MyBase.ShowDialog()
Return Me.DialogResult
End Function
Private Sub ListBoxItem_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
m_EgtManageFileDialogVM.MouseDoubleClick()
End Sub
#End Region ' Methods
End Class
@@ -0,0 +1,944 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Windows.Forms
Imports EgtWPFLib5
Imports EgtUILib
Imports System.Data
Public Class EgtManageFileDialogVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Public Enum VisualizationContainerType As Integer
LISTBOX = 0
DATAGRID = 1
End Enum
Public Enum VisualizationType As Integer
LISTTEMPLATE = 0
TILESTEMPLATE = 1
CONTENTTEMPLATE = 2
DETAILSTEMPLATE = 3
End Enum
Public Enum ModeTypes As Integer
FILE = 1
FOLDER = 2
End Enum
Private m_sTitle As String
Public Property sTitle As String
Get
Return m_sTitle
End Get
Set(value As String)
m_sTitle = value
End Set
End Property
' Scelta della modalità di salvataggio 1 = file 2 = folder
Private m_nMode As Integer
Public Property nMode As Integer
Get
Return m_nMode
End Get
Set(value As Integer)
m_nMode = value
End Set
End Property
Private m_bCheckFileExists As Boolean
Public Property bCheckFileExists As Boolean
Get
Return m_bCheckFileExists
End Get
Set(value As Boolean)
m_bCheckFileExists = value
End Set
End Property
Private m_bValidateNames As Boolean
Public Property bValidateNames As Boolean
Get
Return m_bValidateNames
End Get
Set(value As Boolean)
m_bValidateNames = value
End Set
End Property
Private m_bOverwritePrompt As Boolean
Public Property bOverwritePrompt As Boolean
Get
Return m_bOverwritePrompt
End Get
Set(value As Boolean)
m_bOverwritePrompt = value
End Set
End Property
Private m_RootList As New ObservableCollection(Of EgtDirectory)
Public Property RootList As ObservableCollection(Of EgtDirectory)
Get
Return m_RootList
End Get
Set(value As ObservableCollection(Of EgtDirectory))
m_RootList = value
End Set
End Property
Public m_SelTreeItem As EgtDirectory
Public Property SelTreeItem As EgtDirectory
Get
Return m_SelTreeItem
End Get
Set(value As EgtDirectory)
m_SelTreeItem = value
NotifyPropertyChanged(NameOf(SelTreeItem))
End Set
End Property
Friend Sub UpdateSelTreeItem(Item As EgtDirectory)
m_SelTreeItem = Item
NotifyPropertyChanged(NameOf(SelTreeItem))
End Sub
Public m_ItemSelected As EgtDirectory
Public Property ItemSelected As EgtDirectory
Get
Return m_ItemSelected
End Get
Set(value As EgtDirectory)
m_ItemSelected = value
Dim Item As EgtItem = TryCast(m_ItemSelected, EgtItem)
If Not IsNothing(Item) Then
sSaveFileName = Item.sName
Else
Dim Folder As EgtFolder = TryCast(m_ItemSelected, EgtFolder)
If Not IsNothing(Folder) Then
sSaveFileName = Folder.sName
End If
End If
End Set
End Property
Friend Sub SetItemSelected(value As EgtDirectory)
m_ItemSelected = value
NotifyPropertyChanged(NameOf(ItemSelected))
End Sub
' Percorso del file o della cartella
Private m_sSelPath As String
Public Overloads Property sSelPath As String
Get
Return m_sSelPath
End Get
Set(value As String)
m_sSelPath = value
NotifyPropertyChanged(NameOf(sSelPath))
End Set
End Property
' Textbox per visualizzare il file o la folder selezionata
Private m_sSaveFileName As String
Public Property sSaveFileName As String
Get
Return m_sSaveFileName
End Get
Set(value As String)
m_sSaveFileName = value
NotifyPropertyChanged(NameOf(sSaveFileName))
End Set
End Property
' Lista filtri estensione
Private m_FilterList As ObservableCollection(Of EgtExstension)
Public Property FilterList As ObservableCollection(Of EgtExstension)
Get
Return m_FilterList
End Get
Set(value As ObservableCollection(Of EgtExstension))
m_FilterList = value
End Set
End Property
' Scelta filtro estensione per visualizzazione
Public m_SelFilter As EgtExstension
Public Property SelFilter As EgtExstension
Get
Return m_SelFilter
End Get
Set(value As EgtExstension)
m_SelFilter = value
Dim CurrItem As EgtFolder = TryCast(m_SelTreeItem, EgtFolder)
If Not IsNothing(CurrItem) Then
CollectionViewSource.GetDefaultView(CurrItem.FolderList).Refresh()
End If
End Set
End Property
' Lista modalita' di visualizzazione
Private m_ViewModeList As ObservableCollection(Of IdNameStruct)
Public Property ViewModeList As ObservableCollection(Of IdNameStruct)
Get
Return m_ViewModeList
End Get
Set(value As ObservableCollection(Of IdNameStruct))
m_ViewModeList = value
End Set
End Property
' Scelta modalita' di visualizzazione
Private m_SelViewMode As IdNameStruct
Public Property SelViewMode As IdNameStruct
Get
Return m_SelViewMode
End Get
Set(value As IdNameStruct)
m_SelViewMode = value
Select Case m_SelViewMode.Id
Case VisualizationType.LISTTEMPLATE
m_nSelTab = VisualizationContainerType.LISTBOX
nSelTempleteListView = 0
WriteMainPrivateProfileString(S_TEMPLETESEL, K_CURRTEMPLETESEL, VisualizationType.LISTTEMPLATE)
Case VisualizationType.TILESTEMPLATE
m_nSelTab = VisualizationContainerType.LISTBOX
nSelTempleteListView = 1
WriteMainPrivateProfileString(S_TEMPLETESEL, K_CURRTEMPLETESEL, VisualizationType.TILESTEMPLATE)
Case VisualizationType.CONTENTTEMPLATE
m_nSelTab = VisualizationContainerType.LISTBOX
nSelTempleteListView = 2
WriteMainPrivateProfileString(S_TEMPLETESEL, K_CURRTEMPLETESEL, VisualizationType.CONTENTTEMPLATE)
Case VisualizationType.DETAILSTEMPLATE
m_nSelTab = VisualizationContainerType.DATAGRID
WriteMainPrivateProfileString(S_TEMPLETESEL, K_CURRTEMPLETESEL, VisualizationType.DETAILSTEMPLATE)
End Select
NotifyPropertyChanged(NameOf(nSelTab))
End Set
End Property
' Indice modalita' di visualizzazione
Private m_nSelViewModeIndex As Integer
Public Property nSelViewModeIndex As Integer
Get
Return m_nSelViewModeIndex
End Get
Set(value As Integer)
m_nSelViewModeIndex = value
End Set
End Property
' Indice di selezione del TabControl che cambia la ListBox/DataGrid
Private m_nSelTab As Integer
Public Property nSelTab As Integer
Get
Return m_nSelTab
End Get
Set(value As Integer)
m_nSelTab = value
End Set
End Property
#Region "Initial data from window opening"
' Indice del filtro estensione impostato durante creazione finestra
Private m_nFilterIndex As Integer
Public Property nFilterIndex As Integer
Get
Return m_nFilterIndex
End Get
Set(value As Integer)
m_nFilterIndex = value
m_SelFilter = m_FilterList.FirstOrDefault(Function(x) x.nIndexExstension = m_nFilterIndex)
sFileName = Path.GetFileNameWithoutExtension(sFileName) & m_SelFilter.sExstension.Trim("*"c)
End Set
End Property
' lista delle estensioni impostata durante creazione finestra
Private m_sFilter As String
Public Property sFilter As String
Get
Return m_sFilter
End Get
Set(value As String)
m_sFilter = value
Dim nIndex As Integer = 1
If Not IsNothing(sFilter) Then
Dim FilterListSplit As String() = sFilter.Split("|"c)
For i As Integer = 0 To FilterListSplit.Count - 1
If i Mod 2 = 0 Then
Dim strExstension As New EgtExstension() With {.m_nIndexExstension = nIndex, .m_sNameExstension = FilterListSplit(i), .m_sExstension = FilterListSplit(i + 1)}
m_FilterList.Add(strExstension)
nIndex += 1
End If
Next
End If
End Set
End Property
' Path della cartella iniziale impostata durante creazione finestra
Private m_sInitialDirectory As String
Public Property sInitialDirectory As String
Get
Return m_sInitialDirectory
End Get
Set(value As String)
m_sInitialDirectory = value
If m_sFileName = String.Empty Then m_sSaveFileName = "New.nge"
m_sSelPath = m_sInitialDirectory
Dim DirectoryStart As String() = m_sInitialDirectory.Split("\"c)
Dim m_RootListTmp As New ObservableCollection(Of EgtDirectory)
Dim dir As EgtDirectory
Dim count As Integer = 1
Dim currItem As EgtFolder
m_RootListTmp = m_RootList
For Each directory As String In DirectoryStart
dir = m_RootListTmp.FirstOrDefault(Function(x) x.sName.Trim("\") = directory)
If Not IsNothing(dir) Then
dir.IsExpanded = True
currItem = TryCast(dir, EgtFolder)
m_RootListTmp = currItem.FolderList
If count = DirectoryStart.Count Then
dir.IsSelected = True
Else
count += 1
End If
End If
Next
End Set
End Property
' Nome del file iniziale impostato durante creazione finestra
Private m_sFileName As String
Public Property sFileName As String
Get
Return m_sFileName
End Get
Set(value As String)
m_sFileName = value
m_sSaveFileName = m_sFileName
End Set
End Property
#End Region ' Initial data from window opening
' Scelta per la visualizzazione del templete della lista
Private m_nSelTempleteListView As Integer
Public Property nSelTempleteListView As Integer
Get
Return m_nSelTempleteListView
End Get
Set(value As Integer)
m_nSelTempleteListView = value
NotifyPropertyChanged(NameOf(nSelTempleteListView))
End Set
End Property
#Region "Messages"
Public ReadOnly Property Name_Msg As String
Get
Return EgtMsg(15060) ' Nome
End Get
End Property
Public ReadOnly Property LastModify_Msg As String
Get
Return EgtMsg(15061) ' Ultima Modifica
End Get
End Property
Public ReadOnly Property Type_Msg As String
Get
Return EgtMsg(15062) ' Tipo
End Get
End Property
Public ReadOnly Property Dimension_Msg As String
Get
Return EgtMsg(15063) ' Dimensione
End Get
End Property
Public ReadOnly Property FileName_Msg As String
Get
' Nome File Nome Cartella
Return If(m_nMode = ModeTypes.FILE, EgtMsg(15065), EgtMsg(15066))
End Get
End Property
#End Region
' Comandi
Private m_cmdCancel As ICommand
Private m_cmdOk As ICommand
Private m_cmdGoBack As ICommand
Private m_cmdDoubleClick As ICommand
Friend Event m_CloseWindow(bDialogResult As DialogResult)
#End Region ' Fields & Properties
#Region "CONTRUCTORS"
Sub New()
m_RootList.Clear()
EgtDirectory.refUpdateSelTreeItem = AddressOf UpdateSelTreeItem
Dim drives As DriveInfo() = DriveInfo.GetDrives().Where(Function(d) d.IsReady).ToArray()
m_FilterList = New ObservableCollection(Of EgtExstension)
EgtFolder.SetEgtManageFileDialogVM(Me)
For i As Integer = 0 To drives.Count() - 1
Dim directory As New EgtFolder(drives(i).RootDirectory, Nothing, "\Resources\EgtDialog\Root.png")
m_RootList.Add(directory)
Next
m_SelFilter = New EgtExstension()
SetVisualizzationList()
Dim IndexTemplete As Integer = GetMainPrivateProfileInt(S_TEMPLETESEL, K_CURRTEMPLETESEL, VisualizationContainerType.DATAGRID)
SelViewMode = m_ViewModeList.FirstOrDefault(Function(x) x.Id = IndexTemplete)
NotifyPropertyChanged(NameOf(RootList))
NotifyPropertyChanged(NameOf(FilterList))
NotifyPropertyChanged(NameOf(ViewModeList))
NotifyPropertyChanged(NameOf(FileName_Msg))
NotifyPropertyChanged(NameOf(SelViewMode))
End Sub
#End Region ' Constructors
#Region "METHODS"
''' <summary>
''' Inizializza la ComboBox per la scelta dei template
''' </summary>
Private Sub SetVisualizzationList()
m_ViewModeList = New ObservableCollection(Of IdNameStruct)
Dim ItemVisualization As New IdNameStruct With {
.Id = 0,
.Name = EgtMsg(15067) ' Elenco
}
m_ViewModeList.Add(ItemVisualization)
ItemVisualization.Id = 3
ItemVisualization.Name = EgtMsg(15068) ' Dettagli
m_ViewModeList.Add(ItemVisualization)
ItemVisualization.Id = 1
ItemVisualization.Name = EgtMsg(15069) ' Riquadri
m_ViewModeList.Add(ItemVisualization)
ItemVisualization.Id = 2
ItemVisualization.Name = EgtMsg(15070) ' Contenuto
m_ViewModeList.Add(ItemVisualization)
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "Ok"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok()
Dim CurrItem As EgtItem = TryCast(m_ItemSelected, EgtItem)
Dim simbolsCharacter As String() = {"<"c, ">"c, ":"c, "'"c, "/"c, "\"c, "|"c, "?"c, "*"c,
"CON", "PRN", "AUX", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9",
"LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}
If nMode = ModeTypes.FILE Then
If Not IsNothing(CurrItem) And m_bCheckFileExists And m_bValidateNames Then
For Each simbol As String In simbolsCharacter
If m_sSaveFileName.Contains(simbol) Then
' Errore file contiene simboli non conformi
If EgtStone3D.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(15072), sTitle, MessageBoxButton.OKCancel, MessageBoxImage.Error) = MessageBoxResult.Cancel Then
sSaveFileName = CurrItem.sName
Return
End If
Else
m_sFileName = m_SelTreeItem.sFullName & "\" & m_sSaveFileName
End If
Next
ElseIf m_bValidateNames = False And m_bOverwritePrompt Then
If Not IsNothing(CurrItem) Then
If m_sFileName.Equals(m_sSaveFileName) OrElse m_sSaveFileName.Equals(CurrItem.sName) Then
' File già esistente. Vuoi sovrascrivere?
If EgtStone3D.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(15073), sTitle, MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.No Then
Return
End If
End If
Else
m_sFileName = m_SelTreeItem.sFullName & "\" & m_sSaveFileName
End If
Else
m_sFileName = m_SelTreeItem.sFullName & "\" & m_sSaveFileName
End If
ElseIf nMode = ModeTypes.FOLDER Then
For Each simbol As String In simbolsCharacter
If m_sSaveFileName.Contains(simbol) Then
' Errore file contiene simboli non conformi
If EgtStone3D.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(15072), sTitle, MessageBoxButton.OKCancel, MessageBoxImage.Error) = MessageBoxResult.Cancel Then
Return
End If
Else
m_sFileName = m_SelTreeItem.sFullName
End If
Next
End If
RaiseEvent m_CloseWindow(DialogResult.OK)
End Sub
#End Region 'Ok
#Region "GoBack"
Public ReadOnly Property GoBack_Command As ICommand
Get
If m_cmdGoBack Is Nothing Then
m_cmdGoBack = New Command(AddressOf GoBack)
End If
Return m_cmdGoBack
End Get
End Property
Public Sub GoBack()
If Not IsNothing(m_SelTreeItem) AndAlso Not IsNothing(m_SelTreeItem.m_ParentFolder) Then
If TypeOf m_SelTreeItem.m_ParentFolder Is EgtFolder Then
Dim CurrParentFolder As EgtFolder = DirectCast(m_SelTreeItem.m_ParentFolder, EgtFolder)
CurrParentFolder.SetIsSelected(True, False)
End If
m_sSelPath = DirectCast(m_SelTreeItem, EgtFolder).sFullName
NotifyPropertyChanged(NameOf(sSelPath))
End If
End Sub
#End Region 'GoBack
#Region "Cancel"
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
Public Sub Cancel()
RaiseEvent m_CloseWindow(DialogResult.Cancel)
End Sub
#End Region 'Cancel
#Region "DoubleClick"
Public ReadOnly Property DoubleClick_Command As ICommand
Get
If m_cmdDoubleClick Is Nothing Then
m_cmdDoubleClick = New Command(AddressOf MouseDoubleClick)
End If
Return m_cmdDoubleClick
End Get
End Property
Public Sub MouseDoubleClick()
m_ItemSelected.IsExpanded = True
If TypeOf m_ItemSelected Is EgtFolder Then
Dim CurrItemSelected As EgtFolder = DirectCast(m_ItemSelected, EgtFolder)
CurrItemSelected.SetIsSelected(True, True)
m_sSelPath = CurrItemSelected.sFullName
ElseIf TypeOf m_ItemSelected Is EgtItem Then
Dim CurrItemSelected As EgtItem = DirectCast(m_ItemSelected, EgtItem)
m_ItemSelected.IsExpanded = False
If File.Exists(CurrItemSelected.sFullName) Then
m_sFileName = CurrItemSelected.sFullName
RaiseEvent m_CloseWindow(DialogResult.OK)
Else
EgtOutLog("File Inesistente")
End If
End If
NotifyPropertyChanged(NameOf(sSelPath))
End Sub
#End Region 'DoubleClick
#End Region ' Commands
End Class
Public Class EgtExstension
Inherits VMBase
#Region "FIELDS & PROPERTIES"
' Indice estensione
Public m_nIndexExstension As Integer
Public Property nIndexExstension As Integer
Get
Return m_nIndexExstension
End Get
Set(value As Integer)
m_nIndexExstension = value
NotifyPropertyChanged(NameOf(nIndexExstension))
End Set
End Property
' Nome della stringa Filter Splittata m_sNameExstension = EgtStone3D project
Public m_sNameExstension As String
Public Property sNameExstension As String
Get
Return m_sNameExstension
End Get
Set(value As String)
m_sNameExstension = value
NotifyPropertyChanged(NameOf(sNameExstension))
End Set
End Property
' Estensione della stringa Filter Splittata m_sExstension = *.wme
Public m_sExstension As String
Public Property sExstension As String
Get
Return m_sExstension
End Get
Set(value As String)
m_sExstension = value
NotifyPropertyChanged(NameOf(sExstension))
End Set
End Property
#End Region ' Fields & Properties
End Class
Public MustInherit Class EgtDirectory
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend Shared refUpdateSelTreeItem As Action(Of EgtDirectory)
Friend Shared m_refEgtManageFileDialogVM As EgtManageFileDialogVM
Friend Shared Sub SetEgtManageFileDialogVM(EgtManageFileDialogVM As EgtManageFileDialogVM)
m_refEgtManageFileDialogVM = EgtManageFileDialogVM
End Sub
Protected m_bIsSelected As Boolean
Public MustOverride Property IsSelected As Boolean
Protected m_bIsExpanded As Boolean
Public Overridable Property IsExpanded As Boolean
Public MustOverride ReadOnly Property sFullName As String
Protected m_sName As String
Public MustOverride ReadOnly Property sName As String
Protected m_sIconSource As String
Public Overridable ReadOnly Property sIconSource As String
Get
Return m_sIconSource
End Get
End Property
Protected m_sTypeItem As String
Public MustOverride ReadOnly Property sTypeItem As String
Protected m_ghTypeItem As String
Public Overridable ReadOnly Property ghTypeItem As String
Protected m_dtLastModifyDate As Date
Public MustOverride ReadOnly Property sLastModifyDate As String
Public m_ParentFolder As EgtFolder
Public Property ParentFolder As EgtFolder
Get
Return m_ParentFolder
End Get
Set(value As EgtFolder)
m_ParentFolder = value
End Set
End Property
#End Region ' Fields & Properties
End Class
Public Class EgtFolder
Inherits EgtDirectory
#Region "FIELDS & PROPERTIES"
Private m_ItemList_View As CollectionView = Nothing
Private m_TreeItemList_ViewSource As CollectionViewSource = Nothing
Private m_TreeItemList_View As CollectionView = Nothing
Public ReadOnly Property TreeItemList_View As CollectionView
Get
Return m_TreeItemList_View
End Get
End Property
Private m_DirectoryInfo As DirectoryInfo
Private m_FolderList As New ObservableCollection(Of EgtDirectory)
Public Property FolderList As ObservableCollection(Of EgtDirectory)
Get
Return m_FolderList
End Get
Set(value As ObservableCollection(Of EgtDirectory))
m_FolderList = value
End Set
End Property
Public Overrides ReadOnly Property sFullName As String
Get
Return m_DirectoryInfo.FullName
End Get
End Property
Public Overrides ReadOnly Property sName As String
Get
Return m_DirectoryInfo.Name
End Get
End Property
Public Overrides ReadOnly Property sTypeItem As String
Get
Return EgtMsg(15064) ' Cartella di File
End Get
End Property
Public Overrides ReadOnly Property sLastModifyDate As String
Get
Return m_DirectoryInfo.LastWriteTime.ToString("dd/MM/yyyy HH:mm:ss")
End Get
End Property
Public Overrides Property IsExpanded As Boolean
Get
Return m_bIsExpanded
End Get
Set(value As Boolean)
m_bIsExpanded = value
NotifyPropertyChanged(NameOf(IsExpanded))
If m_bIsExpanded Then
SetFolderList()
End If
End Set
End Property
Public Overrides Property IsSelected As Boolean
Get
Return m_bIsSelected
End Get
Set(value As Boolean)
m_bIsSelected = value
m_refEgtManageFileDialogVM.sSelPath = m_DirectoryInfo.FullName
If m_bIsSelected Then
SetFolderList()
refUpdateSelTreeItem(Me)
NotifyPropertyChanged(NameOf(IsSelected))
End If
End Set
End Property
Friend Sub SetIsSelected(value As Boolean, bRefreshList As Boolean)
Dim sSelListItemPath As String = ""
If Not IsNothing(m_refEgtManageFileDialogVM.SelTreeItem) Then
sSelListItemPath = m_refEgtManageFileDialogVM.SelTreeItem.sFullName
End If
m_bIsSelected = value
m_refEgtManageFileDialogVM.sSelPath = m_DirectoryInfo.FullName
If m_bIsSelected Then
If bRefreshList Then SetFolderList()
refUpdateSelTreeItem(Me)
End If
If Not IsNothing(sSelListItemPath) Then
Dim SelFolderItem As EgtDirectory = m_FolderList.FirstOrDefault(Function(x) x.sFullName = sSelListItemPath)
If Not IsNothing(SelFolderItem) Then
m_refEgtManageFileDialogVM.SetItemSelected(SelFolderItem)
End If
End If
NotifyPropertyChanged(NameOf(IsSelected))
End Sub
#End Region ' Fields & Properties
#Region "CONTRUCTORS"
Sub New()
End Sub
Sub New(DirectoryInfo As DirectoryInfo, Parent As EgtDirectory, Optional IconSource As String = "\Resources\EgtDialog\Folder.png")
m_DirectoryInfo = DirectoryInfo
m_sIconSource = IconSource
Try
If DirectoryInfo.EnumerateDirectories.Count > 0 Then
m_FolderList.Add(New EgtFolder())
End If
Catch ex As Exception
End Try
m_ParentFolder = Parent
m_ItemList_View = CollectionViewSource.GetDefaultView(m_FolderList)
m_ItemList_View.Filter = AddressOf ItemFilter
m_TreeItemList_ViewSource = New CollectionViewSource() With {.Source = m_FolderList}
m_TreeItemList_View = m_TreeItemList_ViewSource.View
m_TreeItemList_View.Filter = AddressOf TreeItemListFilter
NotifyPropertyChanged(NameOf(sName))
NotifyPropertyChanged(NameOf(sLastModifyDate))
NotifyPropertyChanged(NameOf(sTypeItem))
NotifyPropertyChanged(NameOf(sIconSource))
NotifyPropertyChanged(NameOf(FolderList))
NotifyPropertyChanged(NameOf(ParentFolder))
End Sub
#End Region ' Constructors
#Region "METHODS"
''' <summary>
''' Funzione per la visualizzazione delle sole cartelle nell'albero TreeView
''' </summary>
''' <param name="CurrItem"></param>
''' <returns></returns>
Private Function TreeItemListFilter(CurrItem As Object) As Boolean
Return TypeOf CurrItem Is EgtFolder
End Function
''' <summary>
''' Funzione per il controllo del filtro per i singoli Item se l'estensione scelta e' .icrs verrano visualizzati tutti i file con l'estensione .icrs
''' </summary>
''' <param name="Item"></param>
''' <returns></returns>
Private Function ItemFilter(Item As Object) As Boolean
Dim CurrItem As EgtItem = TryCast(Item, EgtItem)
If Not IsNothing(CurrItem) AndAlso Not IsNothing(m_refEgtManageFileDialogVM.m_SelFilter.m_sExstension) Then
If CurrItem.sTypeItem = m_refEgtManageFileDialogVM.m_SelFilter.m_sExstension.TrimStart("*") Then
Return True
ElseIf m_refEgtManageFileDialogVM.m_SelFilter.m_sExstension.TrimStart("*") = ".*" Then
Return True
Else
Return False
End If
End If
Return True
End Function
''' <summary>
''' Funzione per popolare la lista FolderList
''' </summary>
Private Sub SetFolderList()
Dim DirectoryList() As DirectoryInfo
Dim FileList() As FileInfo
Try
' ProgramData
DirectoryList = m_DirectoryInfo.GetDirectories().Where(Function(file) (file.Attributes And FileAttributes.Hidden And file.Name <> EgtMsg(15071)) = 0).ToArray()
FileList = m_DirectoryInfo.GetFiles().Where(Function(file) (file.Attributes And FileAttributes.Hidden) = 0).ToArray()
Catch ex As Exception
DirectoryList = Nothing
FileList = Nothing
End Try
m_FolderList.Clear()
If Not IsNothing(DirectoryList) AndAlso m_FolderList.Count = 0 Then
For Each subDir As DirectoryInfo In DirectoryList
Dim directory As New EgtFolder(subDir, Me)
m_FolderList.Add(directory)
Next
End If
If Not IsNothing(FileList) Then
For Each files As FileInfo In FileList
Dim file As New EgtItem(files)
m_FolderList.Add(file)
Next
End If
End Sub
#End Region ' Methods
End Class
Public Class EgtItem
Inherits EgtDirectory
#Region "FIELDS & PROPERTIES"
Private m_FileInfo As FileInfo
Public Overrides ReadOnly Property sFullName As String
Get
Return m_FileInfo.FullName
End Get
End Property
Public Overrides ReadOnly Property sName As String
Get
Return m_FileInfo.Name
End Get
End Property
Public Overrides ReadOnly Property sTypeItem As String
Get
If Not IsNothing(m_FileInfo) AndAlso Not IsNothing(m_FileInfo.Extension) AndAlso Not String.IsNullOrWhiteSpace(m_FileInfo.Extension) Then
Return m_FileInfo.Extension
Else
Return ""
End If
End Get
End Property
Public Overrides ReadOnly Property ghTypeItem As String
Get
Return If(Not String.IsNullOrWhiteSpace(sTypeItem), "File " & sTypeItem.ToUpper(), "")
End Get
End Property
Public ReadOnly Property sDimension As String
Get
Return If(m_FileInfo.Length / 1024 / 1024 > 1, String.Format("{0:#,##0.00}", m_FileInfo.Length / 1024 / 1024) & " Mb", String.Format("{0:#,##0.00}", m_FileInfo.Length / 1024) & " Kb")
End Get
End Property
Public Overrides ReadOnly Property sLastModifyDate As String
Get
Return m_FileInfo.LastWriteTime.ToString("dd/MM/yyyy HH:mm:ss")
End Get
End Property
Public Overrides Property IsSelected As Boolean
Get
Return m_bIsSelected
End Get
Set(value As Boolean)
m_bIsSelected = value
refUpdateSelTreeItem(Me)
End Set
End Property
#End Region ' Fields & Properties
#Region "CONTRUCTORS"
Sub New(FileInfo As FileInfo)
m_FileInfo = FileInfo
m_sIconSource = "\Resources\EgtDialog\New.png"
NotifyPropertyChanged(NameOf(sName))
NotifyPropertyChanged(NameOf(sDimension))
NotifyPropertyChanged(NameOf(sLastModifyDate))
NotifyPropertyChanged(NameOf(sTypeItem))
NotifyPropertyChanged(NameOf(sIconSource))
End Sub
#End Region ' Constructors
End Class
+47
View File
@@ -0,0 +1,47 @@
<EgtWPFLib5:EgtMainWindow x:Class="EgtMessageBoxV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Title="{Binding sTitle}"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterOwner"
Style="{StaticResource Dialog_Window}">
<Grid Style="{StaticResource EgtMessageBoxMain_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource EgtMessageBox_Grid}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding sIconSource}"
Style="{StaticResource EgtMessageBox_Image}"/>
<TextBlock Grid.Column="1"
Text="{Binding sMessage}"
Style="{StaticResource EgtMessageBox_TxBl}"/>
</Grid>
<ItemsControl Grid.Row="1"
ItemsSource="{Binding ButtonList}"
Style="{StaticResource EgtMessageBox_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button IsDefault="{Binding bIsDefault}"
Content="{Binding sMessage}"
Command="{Binding Command_Command}"
Style="{StaticResource EgtColorPicker_Btn}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</EgtWPFLib5:EgtMainWindow>
+109
View File
@@ -0,0 +1,109 @@
Imports EgtWPFLib5
Public Class EgtMessageBoxV
#Region "FIELDS & PROPERTIES"
Private WithEvents m_EgtMessageBoxVM As EgtMessageBoxVM
Private Shadows DialogResult As MessageBoxResult
#End Region ' Fields & Properties
#Region "CONTRUCTOR"
Sub New(Owner As Window, EgtMessageBoxVM As EgtMessageBoxVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = EgtMessageBoxVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_EgtMessageBoxVM = EgtMessageBoxVM
End Sub
#End Region ' Constructor
#Region "METHODS"
''' <summary>
''' Apre una EgtMessageBox con un messaggio che ritorna un risultato
''' </summary>
''' <param name="Owner">Finestra di appartenenza</param>
''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String) As MessageBoxResult
Dim NewMessagebox As New EgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText))
NewMessagebox.ShowDialog()
Return NewMessagebox.DialogResult
End Function
''' <summary>
''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
''' </summary>
''' <param name="Owner">Finestra di appartenenza</param>
''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String) As MessageBoxResult
Dim NewMessagebox As New EgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption))
NewMessagebox.ShowDialog()
Return NewMessagebox.DialogResult
End Function
''' <summary>
''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
''' </summary>
''' <param name="Owner">Finestra di appartenenza</param>
''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton) As MessageBoxResult
Dim NewMessagebox As New EgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button))
NewMessagebox.ShowDialog()
Return NewMessagebox.DialogResult
End Function
''' <summary>
''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
''' </summary>
''' <param name="Owner">Finestra di appartenenza</param>
''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
''' <param name="Icon">Valore che specifica quale icona mostrare</param>
''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton, Icon As MessageBoxImage) As MessageBoxResult
Dim NewMessagebox As New EgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button, Icon))
NewMessagebox.ShowDialog()
Return NewMessagebox.DialogResult
End Function
''' <summary>
''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
''' </summary>
''' <param name="Owner">Finestra di appartenenza</param>
''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
''' <param name="Icon">Valore che specifica quale icona mostrare</param>
''' <param name="DefaultResult">Valore che specifica il bottone di default</param>
''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton, Icon As MessageBoxImage, DefaultResult As MessageBoxResult) As MessageBoxResult
Dim NewMessagebox As New EgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button, Icon, DefaultResult))
NewMessagebox.ShowDialog()
Return NewMessagebox.DialogResult
End Function
#End Region ' Methods
#Region "EVENTS"
Private Sub CloseWindow(DialogResult As MessageBoxResult) Handles m_EgtMessageBoxVM.m_CloseWindow
Me.DialogResult = DialogResult
Me.Close()
End Sub
#End Region ' Events
End Class
+37
View File
@@ -0,0 +1,37 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35327.3
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EgtStone3D", "EgtStone3D.vbproj", "{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|Any CPU.ActiveCfg = Debug|x86
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|Any CPU.Build.0 = Debug|x86
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|x64.ActiveCfg = Debug|x64
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|x64.Build.0 = Debug|x64
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|x86.ActiveCfg = Debug|x86
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Debug|x86.Build.0 = Debug|x86
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|Any CPU.Build.0 = Release|Any CPU
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|x64.ActiveCfg = Release|x64
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|x64.Build.0 = Release|x64
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|x86.ActiveCfg = Release|x86
{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EE454A76-E60D-432C-A4F5-E115AC602892}
EndGlobalSection
EndGlobal
+604
View File
@@ -0,0 +1,604 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{10C7D2D3-8D43-4F83-9299-2DF704A55CD6}</ProjectGuid>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<OutputType>WinExe</OutputType>
<RootNamespace>EgtStone3D</RootNamespace>
<AssemblyName>EgtStone3D</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<MyType>Custom</MyType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>true</IncrementalBuild>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DebugSymbols>false</DebugSymbols>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>false</IncrementalBuild>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\EgalwareLogo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Debug\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Release\</OutputPath>
<DocumentationFile>EgtStone3D.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtUILib">
<HintPath>..\..\..\EgtProg\Dll32\EgtUILib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib5, Version=2.7.1.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\EgtStone3D\EgtWPFLib5.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.AvalonEdit, Version=6.3.0.90, Culture=neutral, PublicKeyToken=9cc39be672370310, processorArchitecture=MSIL">
<HintPath>packages\AvalonEdit.6.3.0.90\lib\net462\ICSharpCode.AvalonEdit.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework.Aero2" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System.Net.Http" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="Application.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="AboutBoxWindow\AboutBoxV.xaml.vb">
<DependentUpon>AboutBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="Angle\AngleVM.vb" />
<Compile Include="CompoLib\ParametricCompoVM.vb" />
<Compile Include="Constants\ConstEgtStone3D.vb" />
<Compile Include="EgtColorPicker\EgtColorPickerV.xaml.vb">
<DependentUpon>EgtColorPickerV.xaml</DependentUpon>
</Compile>
<Compile Include="EgtManageFileDialog\EgtManageFileDialogV.xaml.vb">
<DependentUpon>EgtManageFileDialogV.xaml</DependentUpon>
</Compile>
<Compile Include="EgtManageFileDialog\EgtManageFileDialogVM.vb" />
<Compile Include="EgtMessageBox\EgtMessageBoxV.xaml.vb">
<DependentUpon>EgtMessageBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="Extremity\ExtremityVM.vb" />
<Compile Include="GridPanel\GridDimensionPanelV.xaml.vb">
<DependentUpon>GridDimensionPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="GridPanel\GridPanelVM.vb" />
<Compile Include="GridPanel\GridPanelV.xaml.vb">
<DependentUpon>GridPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="GridPanel\GridViewPanelV.xaml.vb">
<DependentUpon>GridViewPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="Length\LengthVM.vb" />
<Compile Include="MainWindow\MainWindowV.xaml.vb">
<DependentUpon>MainWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="Move\MoveVM.vb" />
<Compile Include="OptionsWindow\OptionModule.vb" />
<Compile Include="OptionsWindow\OptionWindowV.xaml.vb">
<DependentUpon>OptionWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="OptionsWindow\OptionWindowVM.vb" />
<Compile Include="Pair\PairVM.vb" />
<Compile Include="Panel\EditPanelVM.vb" />
<Compile Include="Panel\EditParametricVM.vb" />
<Compile Include="Panel\NewPanelVM.vb" />
<Compile Include="Panel\PanelManagerM.vb" />
<Compile Include="ProjManager\ProjManagerButtonV.xaml.vb">
<DependentUpon>ProjManagerButtonV.xaml</DependentUpon>
</Compile>
<Compile Include="ProjManager\ProjManagerV.xaml.vb">
<DependentUpon>ProjManagerV.xaml</DependentUpon>
</Compile>
<Compile Include="ProjManager\ProjManagerVM.vb" />
<Compile Include="Rotate\RotateVM.vb" />
<Compile Include="SceneButton\SceneButtonV.xaml.vb">
<DependentUpon>SceneButtonV.xaml</DependentUpon>
</Compile>
<Compile Include="SceneButton\SceneButtonVM.vb" />
<Compile Include="SceneHost\MySceneHostVM.vb" />
<Compile Include="SceneHost\SceneHostV.xaml.vb">
<DependentUpon>SceneHostV.xaml</DependentUpon>
</Compile>
<Compile Include="SceneUserControl\SceneUserControlV.xaml.vb">
<DependentUpon>SceneUserControlV.xaml</DependentUpon>
</Compile>
<Compile Include="SceneUserControl\SceneUserControlVM.vb" />
<Compile Include="ScriptWindow\ScriptWindowV.xaml.vb">
<DependentUpon>ScriptWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="ScriptWindow\ScriptWindowVM.vb" />
<Compile Include="SecondaryWindow\SecondaryWindowV.xaml.vb">
<DependentUpon>SecondaryWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="SecondaryWindow\SecondaryWindowVM.vb" />
<Compile Include="SelOption\SelOptionV.xaml.vb">
<DependentUpon>SelOptionV.xaml</DependentUpon>
</Compile>
<Compile Include="SelOption\SelOptionVM.vb" />
<Compile Include="SplashScreen\SplashScreenV.xaml.vb">
<DependentUpon>SplashScreenV.xaml</DependentUpon>
</Compile>
<Compile Include="SVG\SVGVM.vb" />
<Compile Include="SVG\SVGV.xaml.vb">
<DependentUpon>SVGV.xaml</DependentUpon>
</Compile>
<Compile Include="ThemesDataService\ThemesDataServiceM.vb" />
<Compile Include="ThemesDataService\ThemesDataServiceVM.vb" />
<Compile Include="TopPanel\TopPanel1V.xaml.vb">
<DependentUpon>TopPanel1V.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelButton1V.xaml.vb">
<DependentUpon>TopPanelButton1V.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelButtonV.xaml.vb">
<DependentUpon>TopPanelButtonV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelHome1V.xaml.vb">
<DependentUpon>TopPanelHome1V.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelHomeV.xaml.vb">
<DependentUpon>TopPanelHomeV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelInfoParametricV.xaml.vb">
<DependentUpon>TopPanelInfoParametricV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelListButton_1V.xaml.vb">
<DependentUpon>TopPanelListButton_1V.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelListV.xaml.vb">
<DependentUpon>TopPanelListV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelOfficeListButtonV.xaml.vb">
<DependentUpon>TopPanelOfficeListButtonV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelV.xaml.vb">
<DependentUpon>TopPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelViewProspectiveV.xaml.vb">
<DependentUpon>TopPanelViewProspectiveV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelViewV.xaml.vb">
<DependentUpon>TopPanelViewV.xaml</DependentUpon>
</Compile>
<Compile Include="TopPanel\TopPanelVM.vb" />
<Compile Include="Utility\AssLogM.vb" />
<Compile Include="Utility\ColorScriptM.vb" />
<Compile Include="Utility\EstCalc.vb" />
<Compile Include="Utility\GeomEntityColors.vb" />
<Compile Include="Utility\Map.vb" />
<Compile Include="Application.xaml.vb">
<DependentUpon>Application.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Constants\ConstGen.vb" />
<Compile Include="Constants\ConstIni.vb" />
<Compile Include="MainWindow\MainWindowM.vb" />
<Compile Include="Utility\PartSolidM.vb" />
<Compile Include="Utility\RegexM.vb" />
<Compile Include="Utility\SolidManagerM.vb" />
<Compile Include="ViewPanelProspective\ViewPanelProspectiveV.xaml.vb">
<DependentUpon>ViewPanelProspectiveV.xaml</DependentUpon>
</Compile>
<Compile Include="ViewPanelProspective\ViewPanelProspectiveVM.vb" />
<Compile Include="ViewPanel\ViewPanelV.xaml.vb">
<DependentUpon>ViewPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="ViewPanel\ViewPanelVM.vb" />
<Page Include="AboutBoxWindow\AboutBoxV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="EgtColorPicker\EgtColorPickerV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="EgtManageFileDialog\EgtManageFileDialogV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="EgtMessageBox\EgtMessageBoxV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="GridPanel\GridDimensionPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="GridPanel\GridPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="GridPanel\GridViewPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainWindow\MainWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="OptionsWindow\OptionWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ProjManager\ProjManagerButtonV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ProjManager\ProjManagerV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SceneButton\SceneButtonV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SceneHost\SceneHostV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SceneUserControl\SceneUserControlV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ScriptWindow\ScriptWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SecondaryWindow\SecondaryWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SelOption\SelOptionV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SplashScreen\SplashScreenV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SVG\SVGV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanel1V.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelButton1V.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelButtonV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelHome1V.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelHomeV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelInfoParametricV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelListButton_1V.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelListV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelOfficeListButtonV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelViewProspectiveV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TopPanel\TopPanelViewV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Utility\EgtStone3DDarkDictionary.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Utility\EgtStone3DDefaultStyle.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Utility\EgtStone3DDictionary.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ViewPanelProspective\ViewPanelProspectiveV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ViewPanel\ViewPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Import Include="System.Threading.Tasks" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows" />
<Import Include="System.Windows.Controls" />
<Import Include="System.Windows.Data" />
<Import Include="System.Windows.Documents" />
<Import Include="System.Windows.Input" />
<Import Include="System.Windows.Shapes" />
<Import Include="System.Windows.Media" />
<Import Include="System.Windows.Media.Imaging" />
<Import Include="System.Windows.Navigation" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainWindow\MainWindowVM.vb" />
<Compile Include="My Project\AssemblyInfo.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="My Project\MyExtensions\MyWpfExtension.vb">
<VBMyExtensionTemplateID>Microsoft.VisualBasic.WPF.MyExtension</VBMyExtensionTemplateID>
<VBMyExtensionTemplateVersion>1.0.0.0</VBMyExtensionTemplateVersion>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
</EmbeddedResource>
<None Include="My Project\app.manifest" />
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="packages.config" />
<Resource Include="Resources\EgalwareLogo.ico" />
<Resource Include="Resources\Fonts\Roboto-Light.ttf" />
<Resource Include="Resources\Fonts\Roboto-Regular.ttf" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjManager\newfile.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjManager\save.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjManager\folder.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Common\Close.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Common\Maximize.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Common\Minimize.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjManager\saveas.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Common\Restore.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtDialog\Folder.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtDialog\New.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtDialog\Restore.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtDialog\Root.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ProjManager\settings.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Common\Ok.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\AboutBox\EgalwareLogo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopPanel\vista.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ViewPanel\LookFromBACK.png" />
<Resource Include="Resources\ViewPanel\LookFromBOTTOM.png" />
<Resource Include="Resources\ViewPanel\LookFromFRONT.png" />
<Resource Include="Resources\ViewPanel\LookFromLEFT.png" />
<Resource Include="Resources\ViewPanel\LookFromRIGHT.png" />
<Resource Include="Resources\ViewPanel\LookFromTOP.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\SplashScreen\LogoEgalware.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\SplashScreen\PictureCicken.jpg" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopPanelList\autopair.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopPanelList\avoid intersection.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopPanelList\explode.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Asterisk.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Error.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Exclamation.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Hand.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Information.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Question.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\EgtMessageBox\Warning.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 e x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\GridViewPanel\ZoomAll.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtStone3D\EgtStone3DR32.exe
IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Debug" copy $(TargetPath) c:\EgtProg\EgtStone3D\EgtStone3DD32.exe</PostBuildEvent>
</PropertyGroup>
</Project>
+50
View File
@@ -0,0 +1,50 @@
Imports EgtUILib
Public Class ExtremityVM
Inherits SceneUserControlVM
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_ADDCONSTRAINT.ToUpper()
DirectCast(Map.refSceneButtonVM.m_ExtremityUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden
DirectCast(Map.refSceneButtonVM.m_ExtremityUC, SceneUserControlV).Annulla.Visibility = Visibility.Hidden
LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
' Scegli quale estremità vincolare
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, EgtMsg(110047), ParamType.STR))
Dim ExtremityOptionList As New List(Of ParamCmBx)({New ParamCmBx("Start"),
New ParamCmBx("End")})
' Estremità
AddGenericParam(New _ComboBoxParam(EgtMsg(110046), ExtremityOptionList, 0, Visibility.Visible))
End Sub
Public Overrides Sub Conferma()
LoadEditParametric()
Close()
End Sub
Public Overrides Sub ShowPreview()
End Sub
Public Overrides Sub Annulla()
Close()
End Sub
Private Sub Close()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ExtremityUC)
SolidManagerM.ManageUndoRedo()
End Sub
#End Region ' Methods
End Class
+35
View File
@@ -0,0 +1,35 @@
<Grid x:Class="GridDimensionPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Margin="0,10,0,5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button Content="{Binding MeasureUnit}"
ToolTip="{Binding MeasureUnit_Msg}"
Command="{Binding StatusUnitsCommand}"
Style="{StaticResource GridPanel_Btn}"/>
<Button Grid.Row="1"
Name="GridDimensionBtn"
Command="{Binding ShowPopUpCommand}"
Style="{StaticResource Grid_Btn}">
<EgtStone3D:SVGV FileSource="{Binding FileGridDimSVG, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
<Popup IsOpen="{Binding IsOpenGridDimension}"
AllowsTransparency="True"
PopupAnimation="Scroll"
StaysOpen="False"
PlacementTarget="{Binding ElementName=GridDimensionBtn}">
<TextBox Text="{Binding GridDimensionText, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource GridPanel_TextBox}">
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding GridDimensionCommand}"/>
</TextBox.InputBindings>
</TextBox>
</Popup>
</Grid>
+3
View File
@@ -0,0 +1,3 @@
Public Class GridDimensionPanelV
End Class
+13
View File
@@ -0,0 +1,13 @@
<WrapPanel x:Class="GridPaneV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Style="{StaticResource GridPanel_WrapPanel}">
<EgtStone3D:GridViewPanelV DataContext="{StaticResource GridPanelVM}"/>
<Separator Style="{StaticResource TopPanel_Separator}"/>
<EgtStone3D:GridDimensionPanelV DataContext="{StaticResource GridPanelVM}"/>
</WrapPanel>
+3
View File
@@ -0,0 +1,3 @@
Public Class GridPanelV
End Class
+265
View File
@@ -0,0 +1,265 @@
Imports EgtWPFLib5
Imports EgtUILib
Public Class GridPanelVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private m_StatusGridText As String = If(OptionModule.m_bGridState, GRID_ON, GRID_OFF)
Public ReadOnly Property StatusGridText As String
Get
Return m_StatusGridText
End Get
End Property
Friend Sub SetStatusGridText(value As String)
m_StatusGridText = value
NotifyPropertyChanged(NameOf(StatusGridText))
End Sub
Private m_GridDimensionText As String = If(OptionModule.m_bMmUnits, LenToString(OptionModule.m_dSnapStepMm, 4), LenToString(OptionModule.m_dSnapStepInch, 4))
Public Property GridDimensionText As String
Get
Return m_GridDimensionText
End Get
Set(value As String)
m_GridDimensionText = value
NotifyPropertyChanged(NameOf(GridDimensionText))
End Set
End Property
Private m_MeasureUnit As String = If(OptionModule.m_bMmUnits, MILLIMETER, INCH)
Public ReadOnly Property MeasureUnit As String
Get
Return m_MeasureUnit
End Get
End Property
Public Sub SetMeasureUnit(nMeasureUnit As Integer)
m_MeasureUnit = If(nMeasureUnit = 0, INCH, MILLIMETER)
NotifyPropertyChanged(NameOf(MeasureUnit))
End Sub
Private m_FileGridOnOffSVG As String = String.Empty
Public Property FileGridOnOffSVG As String
Get
Return m_FileGridOnOffSVG
End Get
Set(value As String)
m_FileGridOnOffSVG = value
NotifyPropertyChanged(NameOf(FileGridOnOffSVG))
End Set
End Property
Friend Sub SetFileGridOnOffSVG(sFileGridOnOffSVG As String)
m_FileGridOnOffSVG = sFileGridOnOffSVG
NotifyPropertyChanged(NameOf(FileGridOnOffSVG))
End Sub
Private m_FileGridDimSVG As String = String.Empty
Public Property FileGridDimSVG As String
Get
Return m_FileGridDimSVG
End Get
Set(value As String)
m_FileGridDimSVG = value
NotifyPropertyChanged(NameOf(FileGridDimSVG))
End Set
End Property
Friend Sub SetFileGridDimSVG(sFileGridDimSVG As String)
m_FileGridDimSVG = sFileGridDimSVG
NotifyPropertyChanged(NameOf(FileGridDimSVG))
End Sub
Private m_IsOpenGridDimension As Boolean = False
Public Property IsOpenGridDimension As Boolean
Get
Return m_IsOpenGridDimension
End Get
Set(value As Boolean)
m_IsOpenGridDimension = value
End Set
End Property
Friend Sub SetIsOpenGridDimension(bIsOpenGridDimension As Boolean)
m_IsOpenGridDimension = bIsOpenGridDimension
NotifyPropertyChanged(NameOf(IsOpenGridDimension))
End Sub
#Region "Messages"
Public ReadOnly Property MeasureUnit_Msg
Get
Return EgtMsg(110037) ' Unità di Misura
End Get
End Property
#End Region ' Messages
#Region "ToolTip"
Public ReadOnly Property ZoomAllToolTip As String
Get
Return EgtMsg(5254) ' Zoom All
End Get
End Property
#End Region ' ToolTip
' Definizione dei comandi
Private m_cmdStatusGrid As ICommand
Private m_cmdGridDimension As ICommand
Private m_cmdStatusUnits As ICommand
Private m_cmdZoomAll As ICommand
Private m_cmdShowPopUpCmd As ICommand
#End Region ' Fields & Properties
#Region "CONTRUCTOR"
Sub New()
Map.SetRefGridPanelVM(Me)
SetFileGridOnOffSVG(Map.refMainWindowVM.MainWindowM.sResourcesDir & "\GridON.svg")
SetFileGridDimSVG(Map.refMainWindowVM.MainWindowM.sResourcesDir & "\GridDIM.svg")
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Sub UpdateStatusGrid(bShowGrid As Boolean, bShowGridFrame As Boolean)
SetStatusGridText(If(bShowGrid, GRID_ON, GRID_OFF))
EgtSetGridShow(bShowGrid, bShowGrid And bShowGridFrame)
End Sub
Friend Sub UpdateStatusUnits(bMmUnits As Boolean)
SetMeasureUnit(If(bMmUnits, 1, 0)) 'StatusUnitsText = If(bMmUnits, "mm", "in")
EgtSetUiUnits(bMmUnits)
End Sub
Friend Sub UpdateMessageGridPanel()
NotifyPropertyChanged(NameOf(MeasureUnit_Msg))
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "StatusGridCommand"
Public ReadOnly Property StatusGridCommand As ICommand
Get
If m_cmdStatusGrid Is Nothing Then
m_cmdStatusGrid = New Command(AddressOf StatusGrid)
End If
Return m_cmdStatusGrid
End Get
End Property
Public Sub StatusGrid(ByVal param As Object)
Dim tmpGridState As Integer
OptionModule.m_bGridState = GetMainPrivateProfileInt(S_GENERAL, K_GRIDSTATE, 1)
If OptionModule.m_bGridState Then
tmpGridState = 0
Else
tmpGridState = 1
End If
UpdateStatusGrid(tmpGridState, OptionModule.m_bShowGridFrame)
WriteMainPrivateProfileString(S_GENERAL, K_GRIDSTATE, tmpGridState.ToString())
EgtDraw()
End Sub
#End Region ' StatusGridCommand
#Region "GridDimensionCommand"
Public ReadOnly Property GridDimensionCommand As ICommand
Get
If m_cmdGridDimension Is Nothing Then
m_cmdGridDimension = New Command(AddressOf GridDimension)
End If
Return m_cmdGridDimension
End Get
End Property
Public Sub GridDimension(ByVal param As Object)
If OptionModule.m_bMmUnits Then
StringToLen(m_GridDimensionText, OptionModule.m_dSnapStepMm)
EgtSetGridGeo(OptionModule.m_dSnapStepMm, OptionModule.m_nMinLineSStep, OptionModule.m_nMajLineSStep, OptionModule.m_nExtSStep)
Else
StringToLen(m_GridDimensionText, OptionModule.m_dSnapStepInch)
EgtSetGridGeo(OptionModule.m_dSnapStepInch, OptionModule.m_nMinLineSStep, OptionModule.m_nMajLineSStep, OptionModule.m_nExtSStep)
End If
EgtSetGridColor(OptionModule.m_MinLnColor, OptionModule.m_MajLnColor)
Keyboard.ClearFocus()
EgtDraw()
End Sub
#End Region ' GridDimensionCommand
#Region "StatusUnitsCommand"
Public ReadOnly Property StatusUnitsCommand As ICommand
Get
If m_cmdStatusUnits Is Nothing Then
m_cmdStatusUnits = New Command(AddressOf StatusUnits)
End If
Return m_cmdStatusUnits
End Get
End Property
Public Sub StatusUnits(ByVal param As Object)
Map.refSceneHostVM.StatusUnitsCommand()
If OptionModule.m_bMmUnits Then
m_GridDimensionText = LenToString(OptionModule.m_dSnapStepMm, 4)
Else
m_GridDimensionText = LenToString(OptionModule.m_dSnapStepInch, 4)
End If
WriteMainPrivateProfileString(S_SCENE, K_MMUNITS, If(OptionModule.m_bMmUnits, 1, 0).ToString())
End Sub
#End Region ' StatusUnitsCommand
#Region "ZoomAllCommand"
Public ReadOnly Property ZoomAllCommand As ICommand
Get
If m_cmdZoomAll Is Nothing Then
m_cmdZoomAll = New Command(AddressOf ZoomAll)
End If
Return m_cmdZoomAll
End Get
End Property
''' <summary>
''' Execute the ZoomAll. This method is invoked by the ZoomAllCommand.
''' </summary>
Public Sub ZoomAll(ByVal param As Object)
Map.refSceneHostVM.MainScene.ZoomAll()
End Sub
#End Region ' ZoomAllCommand
#Region "ShowPopUpCommand"
Public ReadOnly Property ShowPopUpCommand As ICommand
Get
If m_cmdShowPopUpCmd Is Nothing Then
m_cmdShowPopUpCmd = New Command(AddressOf ShowPopUp)
End If
Return m_cmdShowPopUpCmd
End Get
End Property
Public Sub ShowPopUp(ByVal param As Object)
If m_IsOpenGridDimension Then
SetIsOpenGridDimension(False)
'SetView_Msg("▼" & EgtMsg(110019)) ' Vista
Else
SetIsOpenGridDimension(True)
'SetView_Msg("▲" & EgtMsg(110019)) ' Vista
End If
End Sub
#End Region ' ShowPopUpCommand
#End Region ' Commands
End Class
+24
View File
@@ -0,0 +1,24 @@
<Grid x:Class="GridViewPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Margin="0,0,10,5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button ToolTip="{Binding ZoomAllToolTip}"
Command="{Binding ZoomAllCommand}"
Style="{StaticResource Proj_Btn}">
<Image Source="/Resources/GridViewPanel/ZoomAll.png"
Style="{StaticResource Proj_Img}"/>
</Button>
<Button Grid.Row="1"
ToolTip="{Binding StatusGridText}"
Command="{Binding StatusGridCommand}"
Style="{StaticResource Grid_Btn}">
<EgtStone3D:SVGV FileSource="{Binding FileGridOnOffSVG, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
</Grid>
+3
View File
@@ -0,0 +1,3 @@
Public Class GridViewPanelV
End Class
+48
View File
@@ -0,0 +1,48 @@
Imports EgtUILib
Public Class LengthVM
Inherits SceneUserControlVM
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_ADDCONSTRAINT.ToUpper()
DirectCast(Map.refSceneButtonVM.m_LengthUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden
DirectCast(Map.refSceneButtonVM.m_LengthUC, SceneUserControlV).Annulla.Visibility = Visibility.Hidden
LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
' Inserisci Lunghezza
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, EgtMsg(110045), ParamType.STR))
' Lunghezza
AddGenericParam(New _TextBoxParam(EgtMsg(110044), 0, ParamType.DOUB, Visibility.Visible, True))
End Sub
Public Overrides Sub Conferma()
LoadEditParametric()
Close()
End Sub
Public Overrides Sub ShowPreview()
End Sub
Public Overrides Sub Annulla()
Close()
End Sub
Private Sub Close()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_LengthUC)
SolidManagerM.ManageUndoRedo()
End Sub
#End Region ' Methods
End Class
+12
View File
@@ -0,0 +1,12 @@
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EgtStone3D"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
+3
View File
@@ -0,0 +1,3 @@
Class MainWindow
End Class
+387
View File
@@ -0,0 +1,387 @@
Imports System.Threading
Imports EgtUILib.EgtInterface
Imports EgtUILib.GenInterface
Imports EgtWPFLib5
Imports System.Math
Public Class MainWindowM
#Region "FIELDS & PROPERTIES"
' massimo numero di istanze del programma ammesse
Const MAX_INST As Integer = 32
Private m_objMutex As Mutex
Private m_sDataRoot As String = String.Empty
Friend ReadOnly Property sDataRoot As String
Get
Return m_sDataRoot
End Get
End Property
Private m_sDataDir As String = String.Empty
Friend ReadOnly Property sDataDir As String
Get
Return m_sDataDir
End Get
End Property
Private m_sConfigDir As String = String.Empty
Public ReadOnly Property sConfigDir As String
Get
Return m_sConfigDir
End Get
End Property
Private m_sVein3DDir As String = String.Empty
Friend ReadOnly Property sVein3DDir As String
Get
Return m_sVein3DDir
End Get
End Property
Private m_sResourcesDir As String = String.Empty
Friend ReadOnly Property sResourcesDir As String
Get
Return m_sResourcesDir
End Get
End Property
Private m_sCreateSolidPath As String = String.Empty
Friend ReadOnly Property sCreateSolidPath As String
Get
Return m_sCreateSolidPath
End Get
End Property
Private m_sOperationSolidPath As String = String.Empty
Friend ReadOnly Property sOperationSolidPath As String
Get
Return m_sOperationSolidPath
End Get
End Property
Private m_nDebug As Integer = 0
Public ReadOnly Property DebugLevel As Integer
Get
Return m_nDebug
End Get
End Property
Private m_bFirstInstance As Boolean = False
Friend ReadOnly Property bFirstInstance As Boolean
Get
Return m_bFirstInstance
End Get
End Property
Private m_nInstance As Integer = 0
Friend ReadOnly Property nInstance As Integer
Get
Return m_nInstance
End Get
End Property
Private m_nUserLevel As Integer = 1
Friend ReadOnly Property nUserLevel As Integer
Get
Return m_nUserLevel
End Get
End Property
Private m_nKeyLevel As Integer = 0
Friend ReadOnly Property nKeyLevel As Integer
Get
Return m_nKeyLevel
End Get
End Property
Private m_nKeyOptions As UInteger = 0
Friend ReadOnly Property nKeyOptions As Integer
Get
Return m_nKeyOptions
End Get
End Property
Friend ReadOnly Property sVersion As String
Get
Return My.Application.Info.Version.Major.ToString() & "." &
My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
End Get
End Property
Private m_s3dPrintingDir As String
Friend ReadOnly Property s3dPrintingDir As String
Get
Return m_s3dPrintingDir
End Get
End Property
Private m_sMaterialsDir As String
Friend ReadOnly Property sMaterialsDir As String
Get
Return m_sMaterialsDir
End Get
End Property
Private m_sTempDir As String
Friend ReadOnly Property sTempDir As String
Get
Return m_sTempDir
End Get
End Property
Private m_sMachinesRoot As String
Friend ReadOnly Property sMachinesRoot As String
Get
Return m_sMachinesRoot
End Get
End Property
Private m_sToolMakersDir As String
Friend ReadOnly Property sToolMakersDir As String
Get
Return m_sToolMakersDir
End Get
End Property
Private m_sResourcesRoot As String
Friend ReadOnly Property sResourcesRoot As String
Get
Return m_sResourcesRoot
End Get
End Property
Private m_sLogFile As String
Friend ReadOnly Property sLogFile As String
Get
Return m_sLogFile
End Get
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
InitializeEgtEnvironment()
LoadLuaFile()
End Sub
#End Region ' Constructor
#Region "METHODS"
Private Sub InitializeEgtEnvironment()
' Impostazione path radice per i dati
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
If EgtUILib.GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sDataRoot & "\" & DAT_FILE_NAME) = 0 Then
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
End If
' Impostazione direttorio di configurazione
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
' Impostazione direttorio per file temporanei
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
' Impostazione path Ini file
IniFile.m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
' Impostazione path machinings e materials dir
m_sMaterialsDir = m_sDataRoot & "\" & MATERIALS_DIR
' Impostazione direttorio per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Impostazione direttorio per toolmakers
If GetMainPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir) = 0 Then
m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_DFL_DIR
End If
' Impostazione direttorio 3dPrinting
If GetMainPrivateProfileString(S_PRINTING3D, K_3PRNBASEDIR, "", m_s3dPrintingDir) = 0 Then
m_s3dPrintingDir = m_sDataRoot & "\" & _3DPRINTING_DIR
End If
' Verifico indice di istanza
ManageInstance()
' Imposto tipo di chiave
EgtSetLockType(KEY_TYPE.HW)
' Leggo e imposto chiave di protezione
Dim sLicFileName As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_LICENCE, LIC_FILE_NAME, sLicFileName)
Dim sLicFile As String = m_sConfigDir & "\" & sLicFileName
Dim sKey As String = String.Empty
EgtUILib.GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
EgtSetKey(sKey)
' Impostazioni per chiave di rete
Dim bNetKey As Boolean = (GetMainPrivateProfileInt(S_GENERAL, K_NETKEY, 0) = 1)
EgtSetNetHwKey(bNetKey)
Dim sLockId As String = ""
EgtUILib.GetPrivateProfileString(S_LICENCE, K_LOCKID, "", sLockId, sLicFile)
If Not String.IsNullOrEmpty(sLockId) Then
EgtSetLockId(sLockId)
End If
' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(3279, 100, 0, m_nKeyLevel) And
EgtGetKeyOptions(3279, 100, 0, m_nKeyOptions)
' Inizializzazione generale di EgtInterface
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
m_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
Dim sLogMsg As String = "User " & Environment.MachineName & "\" & Environment.UserName & " (" & m_nInstance.ToString() & ")" & vbLf &
My.Application.Info.Title.ToString() & " ver. " &
My.Application.Info.Version.Major.ToString() &
"." & My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
EgtInit(m_nDebug, m_sLogFile, sLogMsg)
EgtSetTempDir(m_sTempDir)
EgtSetIniFile(IniFile.m_sIniFile)
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
Dim sMsgDir As String = String.Empty
If GetMainPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then
sMsgDir = m_sConfigDir
End If
' Inizializzo OptionModule
OptionModule.InitOptionModule()
' Leggo lingua corrente
Dim sLanguage As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sLanguage)
' Recupero nome file dei messaggi della lingua corrente
Dim sMsgName As String = "EgalTechIta.txt"
Dim nIndex As Integer = 1
While True
Dim ReadLanguage As Language = GetMainPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
If IsNothing(ReadLanguage) Then Exit While
If String.Compare(ReadLanguage.Name, sLanguage, True) = 0 Then
sMsgName = ReadLanguage.FilePath
Exit While
End If
nIndex += 1
End While
' Leggo file messaggi
Dim sMsgFilePath As String = sMsgDir & "\" & sMsgName
If Not EgtLoadMessages(sMsgFilePath) Then
EgtOutLog("Error in EgtLoadMessages")
End If
' Leggo e imposto unità di misura per interfaccia utente
EgtSetUiUnits(GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
' Leggo e imposto livello utilizzatore
m_nUserLevel = Math.Min(m_nKeyLevel, GetMainPrivateProfileInt(S_GENERAL, K_USERLEVEL, 1))
' Imposto dir font Nfe e font default
Dim sNfeDir As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir)
Dim sDefFont As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_DEFAULTFONT, "", sDefFont)
EgtSetFont(sNfeDir, sDefFont)
' imposto dir di default per libreria Lua e lancio libreria di base
Dim sLuaLibsDir As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_LIBSDIR, "", sLuaLibsDir)
EgtSetLuaLibs(sLuaLibsDir)
Dim sLuaBaseLib As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_BASELIB, "EgtBase", sLuaBaseLib)
EgtLuaRequire(sLuaBaseLib)
' Leggo tema corrente
Dim sThema As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_THEMA, "", sThema)
' Leggo tema toppanel corrente
Dim sThemaTopPanel As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_TOPPANEL, "", sThemaTopPanel)
' Impostazione direttorio delle risorse
m_sResourcesDir = m_sDataRoot & "\" & RESOURCES_DIR
' Info su opzioni chiave
EgtOutLog("KeyOptions : " & bKey.ToString() & " " & m_nKeyOptions.ToString())
End Sub
Private Sub ManageInstance()
Dim bCreated As Boolean
Try
m_objMutex = New Mutex(False, "Global\EgtStone3D", bCreated)
Catch
bCreated = False
End Try
m_bFirstInstance = bCreated
If bCreated Then
' Prima istanza
m_nInstance = 1
' Aggiorno stato istanze attive
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, m_nInstance.ToString())
Else
' Leggo il massimo numero di istanze ammesse
Dim nMaxInst As Integer = GetMaxInstances()
' Cerco il primo indice di istanza libero
Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
m_nInstance = 1
Dim nMask As Integer = 1
While (nTmp And nMask) <> 0 And m_nInstance <= MAX_INST
m_nInstance += 1
nMask *= 2
End While
' Se l'indice supera il massimo
If m_nInstance > nMaxInst Then
' porto in primo piano la prima istanza
Dim bFound As Boolean = False
' processi del programma a 32 bit
Dim localProc As Process() = Process.GetProcessesByName("EgtStone3DR32")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, 1)
Exit For
End If
Next
' se non trovati processi a 32 bit provo a 64 bit
If Not bFound Then
localProc = Process.GetProcessesByName("EgtStone3DR64")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, SW.RESTORE)
Exit For
End If
Next
End If
' esco dal programma
End
End If
' Aggiorno stato istanze attive
nTmp += (1 << (m_nInstance - 1))
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
End If
End Sub
Friend Function GetMaxInstances() As Integer
' Leggo il massimo numero di istanze ammesse
Dim nMaxInst As Integer = GetMainPrivateProfileInt(S_GENERAL, K_MAXINST, 1)
Return Max(1, Min(nMaxInst, MAX_INST))
End Function
Friend Function GetKeyOption(nKeyOpt As KEY_OPT) As Boolean
Return ((m_nKeyOptions And nKeyOpt) <> 0)
End Function
Friend Sub Close()
' Terminazione generale di EgtInterface
EgtExit()
' Aggiorno istanze usate
m_objMutex.WaitOne(1000)
Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
nTmp -= (1 << (m_nInstance - 1))
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
m_objMutex.ReleaseMutex()
' Rilascio mutex
If Not IsNothing(m_objMutex) Then m_objMutex.Close()
End Sub
Private Sub LoadLuaFile()
' carico il file LUA con tutte le funzioni di accoppiamento
GetMainPrivateProfileString(K_VEIND3D, VEIND3D_DIR, "", m_sVein3DDir)
' Path del lua da utilizzare
GetMainPrivateProfileString(K_VEIND3D, CREATESOLID_DIR, "", m_sCreateSolidPath)
' Path del lua da utilizzare
GetMainPrivateProfileString(K_VEIND3D, OPERATIONSOLID_DIR, "", m_sOperationSolidPath)
End Sub
#End Region ' Methods
End Class
+18
View File
@@ -0,0 +1,18 @@
<EgtWPFLib5:EgtMainWindow x:Class="MainWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
AllowDrop="True"
Drop="MainWindowV_Drop"
Style="{StaticResource NoStyle_Window}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<EgtStone3D:SceneHostV Grid.Row="1"/>
</Grid>
</EgtWPFLib5:EgtMainWindow>
+122
View File
@@ -0,0 +1,122 @@
Imports System.Windows.Interop
Imports EgtUILib
Imports EgtWPFLib5
Imports System.IO
Class MainWindowV
#Region "FIELDS & PROPERTIES"
Private m_MainWindowVM As MainWindowVM
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
m_MainWindowVM = New MainWindowVM
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
Me.DataContext = m_MainWindowVM
' creo finestra della scena
AddHandler Me.ContentRendered, AddressOf MainWindowV_ContentRendered
AddHandler Me.Loaded, AddressOf MainWindowV_Loaded
AddHandler Me.Closing, AddressOf MainWindowV_Closing
AddHandler Me.StateChanged, AddressOf MainWindowV_StateChanged
Map.SetRefMainWindowV(Me)
Dim Dir_Vein3D As String = String.Empty
Dim Path_CreateSolid As String = CREATESOLID_FILENAME
Dim Path_OperationSolid As String = OPERATIONSOLID_FILENAME
' carico il file LUA con tutte le funzioni di accoppiamento
GetMainPrivateProfileString(K_VEIND3D, VEIND3D_DIR, "", Dir_Vein3D)
' Path del lua da utilizzare
GetMainPrivateProfileString(K_VEIND3D, CREATESOLID_DIR, "", Path_CreateSolid)
' Path del lua da utilizzare
GetMainPrivateProfileString(K_VEIND3D, OPERATIONSOLID_DIR, "", Path_OperationSolid)
' avvio il file OperationOnSolid.lua
Dim sLuaPath As String = Dir_Vein3D & Path_OperationSolid
' Verifico esistenza file Matching nel direttorio passato
If Not File.Exists(sLuaPath) Then
EgtOutLog("Matching error: missing file (" & sLuaPath & ")")
Return
End If
' Parsing
EgtLuaExecFile(sLuaPath)
AssLog(Date.Now.ToString & " Avvio Assembler")
EgtLuaSetGlobBoolVar("ASS.bActiveHist", True) ' attivo il salvataggio della storia
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", True) Then AssLog("ASS.bSaveHist = True")
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", False) Then AssLog("ASS.bSaveTemp = False")
' avvio il file CreateSOLID_FromPartsInPark.lua
sLuaPath = Dir_Vein3D & Path_CreateSolid
' Verifico esistenza file Matching nel direttorio passato
If Not File.Exists(sLuaPath) Then
EgtOutLog("Matching error: missing file (" & sLuaPath & ")")
Return
End If
' Parsing
EgtLuaExecFile(sLuaPath)
' avvio il file TemplateTool.lua
sLuaPath = Dir_Vein3D & "TemplateTool.lua"
' Verifico esistenza file Matching nel direttorio passato
If Not File.Exists(sLuaPath) Then
EgtOutLog("Matching error: missing file (" & sLuaPath & ")")
Return
End If
' Parsing
EgtLuaExecFile(sLuaPath)
End Sub
#End Region ' Constructor
#Region "EVENTS"
Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs)
' Carico e imposto posizione finestra
WinPosFromIniToWindow(S_GENERAL, K_WINPLACE, Me)
' Recupero e imposto handle finestra principale
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
EgtSetMainWindowHandle(hMainWnd)
End Sub
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs)
m_MainWindowVM.ContentRendered()
End Sub
Private Sub MainWindowV_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
e.Cancel = True
Return
End If
' Salvo posizione finestra (se non minimizzata)
If WindowState <> WindowState.Minimized Then
WinPosFromWindowToIni(Me, S_GENERAL, K_WINPLACE)
End If
End Sub
Private Sub MainWindowV_StateChanged(sender As Object, e As EventArgs)
If Not IsNothing(Map.refSecondaryWindowV) AndAlso Not Map.refSecondaryWindowV.WindowChangingState Then
Map.refSecondaryWindowV.WindowState = Me.WindowState
End If
End Sub
Private Sub MainWindowV_Drop(sender As Object, e As DragEventArgs)
' Se drag di file
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' Attivo il programma
Me.Activate()
' Recupero l'array di stringhe con i nomi del file
Dim sFiles() As String = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
' Apro il primo come file standard
If Map.refSecondaryWindowVM.OpenStdFile(sFiles(0)) Then Return
End If
End Sub
#End Region ' Events
End Class
+110
View File
@@ -0,0 +1,110 @@
Imports EgtUILib.EgtInterface
Imports EgtWPFLib5
Public Class MainWindowVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
' Riferimento al Model della MainWindow
Private m_MainWindowM As MainWindowM
Friend ReadOnly Property MainWindowM As MainWindowM
Get
Return m_MainWindowM
End Get
End Property
Private m_OptionWindowVM As OptionWindowVM
Friend ReadOnly Property OptionWindowVM As OptionWindowVM
Get
Return m_OptionWindowVM
End Get
End Property
Private m_SceneButtonVM As SceneButtonVM
Friend ReadOnly Property SceneButtonVM As SceneButtonVM
Get
Return m_SceneButtonVM
End Get
End Property
' Definizione Comandi
Private m_cmdAboutBox As ICommand
Private m_cmdCloseApplication As ICommand
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM
Map.BeginInit(Me)
' Creo Model della MainWindow
m_MainWindowM = New MainWindowM
' Creo SceneButton
m_SceneButtonVM = New SceneButtonVM
' Creo Option
m_OptionWindowVM = New OptionWindowVM
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Sub ContentRendered()
EgtSetView(VT.ISO_SE, False)
End Sub
Friend Sub CloseApplication()
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
Return
End If
' Termino il Model
m_MainWindowM.Close()
' Termino il programma
Application.Current.Shutdown()
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "AboutBoxCommand"
Public ReadOnly Property AboutBoxCommand As ICommand
Get
If m_cmdAboutBox Is Nothing Then
m_cmdAboutBox = New Command(AddressOf AboutBox)
End If
Return m_cmdAboutBox
End Get
End Property
Public Sub AboutBox(ByVal param As Object)
Dim AboutBoxWindow As New AboutBoxV
AboutBoxWindow.Owner = Application.Current.MainWindow
AboutBoxWindow.ShowDialog()
End Sub
#End Region ' AboutBoxCommand
#Region "CloseApplicationCommand"
Public ReadOnly Property CloseApplicationCommand As ICommand
Get
If m_cmdCloseApplication Is Nothing Then
m_cmdCloseApplication = New Command(AddressOf CloseApplication)
End If
Return m_cmdCloseApplication
End Get
End Property
Public Sub CloseApplication(ByVal param As Object)
CloseApplication()
End Sub
#End Region ' CloseApplicationCommand
#End Region ' Commands
End Class
+240
View File
@@ -0,0 +1,240 @@
Imports EgtUILib
Public Class MoveVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_Stage As MoveStage = MoveStage.SelectPart
Private Property Stage As MoveStage
Get
Return m_Stage
End Get
Set(value As MoveStage)
m_Stage = value
DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
ChangeTextColor()
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg_Stg0 As String
Get
Return EgtMsg(110023) ' Seleziona il pezzo da spostare
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg1 As String
Get
Return EgtMsg(110025) ' Inserisci il vettore di spostamento
End Get
End Property
#End Region ' Messages
#End Region ' Fields & properties
#Region "CONTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_MOVE.ToUpper()
LoadParamList()
Stage = If(Map.refSceneHostVM.m_nIdPart = GDB_ID.NULL, MoveStage.SelectPart, MoveStage.InsertMovement)
ActivateButton()
RemoveAllUC()
End Sub
#End Region ' Contructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
ParamList.Add(New _TextBlockParam(EGT_MESSAGE, MsgList(Stage), ParamType.STR, Visibility.Visible))
ParamList.Add(New _TextBoxParam("X", "0", ParamType.LEN, Visibility.Visible))
ParamList.Add(New _TextBoxParam("Y", "0", ParamType.LEN, Visibility.Visible))
ParamList.Add(New _TextBoxParam("Z", "0", ParamType.LEN, Visibility.Visible))
End Sub
Public Sub AdvanceStage()
Stage += 1
End Sub
Public Function AtStage()
Return Stage
End Function
Private Function ReadMoveInput()
' recupero i valori nelle box
Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam)
Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam)
Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam)
' verifico che siano validi
If String.IsNullOrEmpty(x_TextBox.sValue) Then x_TextBox.sValue = "0"
If String.IsNullOrEmpty(y_TextBox.sValue) Then y_TextBox.sValue = "0"
If String.IsNullOrEmpty(z_TextBox.sValue) Then z_TextBox.sValue = "0"
' restituisco il vettore
Return New Vector3d(CDbl(x_TextBox.sValue),
CDbl(y_TextBox.sValue),
CDbl(z_TextBox.sValue))
End Function
Public Overrides Sub Conferma()
' se non avevo visualizzato la preview allora sposto il/i pezzo/i
If Not Map.refSceneHostVM.m_bPreviewShown Then
Dim vtMove As Vector3d = ReadMoveInput()
'''' gestione dell'opzione 'AllSelected
'If Not AreSameVectorExact(vtMove, New Vector3d) Then
' If Not AllOption_Move.IsChecked Then
' Move(m_nIdPart, vtMove, True, False)
' Else
' Dim ListSelected As List(Of PartSolid)
' ListSelected = GetAllSelected()
' For Each PartSolidInSel As PartSolid In ListSelected
' Move(PartSolidInSel.PartId, vtMove, True, False)
' Next
' End If
' m_bPreview = True
'End If
If Map.refSceneHostVM.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then
SolidManagerM.Move(Map.refSceneHostVM.m_nIdPart, vtMove, False, True)
End If
End If
''''' gestione dell'opzione 'AllSelected
'If Not AllOption_Move.IsChecked Then
' ' AddEvent(New ObjectEvent(m_nIdPart, LastTempTransf()))
' If EgtLuaSetGlobIntVar("ASS.nTempToSave", -1) Then AssLog("ASS.nTempToSave = -1")
' If EgtLuaCallFunction("ASS.AddEventFromTemp") Then AssLog("ASS.AddEventFromTemp()")
'Else
' Dim ListSelected As List(Of PartSolid)
' ListSelected = GetAllSelected()
' 'For Each PartSolidInSel As PartSolid In ListSelected
' 'AddEvent(New ObjectEvent(PartSolidInSel.PartId, LastTempTransf()))
' For nTrasf As Integer = -ListSelected.Count() To 0 Step +1
' If EgtLuaSetGlobIntVar("ASS.nTempToSave", nTrasf) Then AssLog("ASS.nTempToSave = " & nTrasf.ToString)
' If EgtLuaCallFunction("ASS.AddEventFromTemp") Then AssLog("ASS.AddEventFromTemp()")
' Next
'End If
'' devo salvare le operazioni svolte durante l'accoppiamento come parte della storia globale
'For nItTime As Integer = -Map.refSceneHostV.m_nTransfNum To -1 Step 1
' '' scorro le ultime trasformazioni temporanee
' If EgtLuaSetGlobIntVar("ASS.nTempToSave", nItTime) Then AssLog("ASS.nTempToSave = " & nItTime.ToString)
' If EgtLuaCallFunction("ASS.AddEventFromTemp") Then AssLog("ASS.AddEventFromTemp()")
'Next
If EgtLuaSetGlobIntVar("ASS.nTempToSave", Map.refSceneHostVM.m_nTransfNum + 1) Then AssLog("ASS.nTempToSave = " & (Map.refSceneHostVM.m_nTransfNum + 1).ToString)
If EgtLuaCallFunction("ASS.AddLastestEventsFromTemp") Then AssLog("ASS.AddLastestEventsFromTemp()")
DeselectAll()
Map.refSceneHostVM.m_bPreviewShown = False
' gestisco le attivazioni di undo/redo
SolidManagerM.ManageUndoRedo()
Close()
End Sub
Public Overrides Sub Annulla()
' faccio il reset del pairing
If Map.refSceneHostVM.m_nTransfNum > Map.refSceneHostVM.m_MaxTempTime Then
Map.refSceneHostVM.m_nTransfNum = Map.refSceneHostVM.m_MaxTempTime
End If
For op As Integer = Map.refSceneHostVM.m_nTransfNum To 0 Step -1
If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
Next
Close()
End Sub
Public Overrides Sub ShowPreview()
Dim Btn As SceneBtn = DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).GetButton(EGT_MOVE)
If TypeOf (Btn) Is _ToggleButton Then
If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
Else
EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
Return
End If
Dim vtMove As Vector3d = ReadMoveInput()
If Map.refSceneHostVM.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then
If Map.refSceneHostVM.m_bPreviewShown = True Then
' resetto il movimento precedente
If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
End If
'''' eventuale gestione di un'opzione 'All Selected
'If Not AllOption_Move.IsChecked And m_nIdPart <> -1 Then
' Dim PartSolidSelected As PartSolid = GetPartSolid(m_nIdPart)
' If IsNothing(PartSolidSelected) Then Return
' Move(m_nIdPart, vtMove, False, True)
'Else
' Dim ListSelected As List(Of PartSolid)
' ListSelected = GetAllSelected()
' For Each PartSolidInSel As PartSolid In ListSelected
' If IsNothing(PartSolidInSel) Then Return
' Move(PartSolidInSel.PartId, vtMove, False, True)
' Next
'End If
SolidManagerM.Move(Map.refSceneHostVM.m_nIdPart, vtMove, False, True)
Map.refSceneHostVM.m_bPreviewShown = True
EgtDraw()
End If
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_MOVE)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
End If
' resetto la storia temporanea
If EgtLuaCallFunction("ASS.ResetTempStory") Then AssLog("ASS.ResetTempStory()")
' resetto il contatore per le operazioni temporanee e la variabile che indica se è stata visualizzata la preview
Map.refSceneHostVM.m_nTransfNum = 0
Map.refSceneHostVM.m_bPreviewShown = False
' setto le variabili per il salvataggio della storia normale
Dim bSave As Boolean = True
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
' rimuovo lo UC dalla griglia
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_MoveUC)
SolidManagerM.ManageUndoRedo()
End Sub
Private Sub ActivateButton()
' Disattivo pulsante Rotate
DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton).IsChecked = False
' Disattivo pulsante Pair
DirectCast(Map.refSceneButtonVM.GetButton(EGT_PAIR), _ToggleButton).IsChecked = False
' Attivo pulsante Move
DirectCast(Map.refSceneButtonVM.GetButton(EGT_MOVE), _ToggleButton).IsChecked = True
End Sub
Private Sub RemoveAllUC()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_AngleUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditParametricUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ExtremityUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_LengthUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_PairUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_RotateUC)
End Sub
#End Region ' Methods
End Class
+56
View File
@@ -0,0 +1,56 @@
Imports System
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Runtime.InteropServices
Imports System.Windows
' Le informazioni generali relative a un assembly sono controllate dal seguente
' set di attributi. Modificare i valori di questi attributi per modificare le informazioni
' associate a un assembly.
' Controllare i valori degli attributi degli assembly
<Assembly: AssemblyTitle("EgtStone3D")>
<Assembly: AssemblyDescription("EgtStone3D Debug 32 bit")>
<Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("EgtStone3D")>
<Assembly: AssemblyCopyright("Copyright © 2025")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(false)>
'Per iniziare a creare applicazioni localizzabili, impostare
'<UICulture>CultureYouAreCodingWith</UICulture> nel file VBPROJ
'all'interno di un <PropertyGroup>. Ad esempio, se si utilizza l'inglese (Stati Uniti)
'nei file di origine, impostare <UICulture> su "en-US". Rimuovere quindi il commento
'dall'attributo NeutralResourceLanguage seguente. Aggiornare "en-US" nella riga
'seguente in modo che corrisponda all'impostazione di UICulture nel file di progetto.
'<Assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
'L'attributo ThemeInfo indica la possibile posizione dei dizionari risorse generici e specifici del tema.
'Primo parametro: posizione dei dizionari risorse specifici del tema
'(da usare se nella pagina non viene trovata una risorsa,
' oppure nei dizionari delle risorse dell'applicazione)
'Parametro 2: posizione del dizionario risorse generico
'(da usare se nella pagina non viene trovata una risorsa,
'un'applicazione e alcun dizionario risorse specifico del tema)
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
'Se il progetto viene esposto a COM, il GUID seguente verrà usato come ID del typelib
<Assembly: Guid("96f84cf6-cf62-45fe-8c15-4e14ec834e55")>
' Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori:
'
' Versione principale
' Versione secondaria
' Numero di build
' Revisione
'
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
+121
View File
@@ -0,0 +1,121 @@
#If _MyType <> "Empty" Then
Namespace My
''' <summary>
''' Modulo utilizzato per definire le proprietà disponibili nello spazio dei nomi My per WPF
''' </summary>
''' <remarks></remarks>
<Global.Microsoft.VisualBasic.HideModuleName()> _
Module MyWpfExtension
Private s_Computer As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Devices.Computer)
Private s_User As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.ApplicationServices.User)
Private s_Windows As New ThreadSafeObjectProvider(Of MyWindows)
Private s_Log As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Logging.Log)
''' <summary>
''' Restituisce l'oggetto applicazione per l'applicazione in esecuzione
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Application() As Application
Get
Return CType(Global.System.Windows.Application.Current, Application)
End Get
End Property
''' <summary>
''' Restituisce le informazioni sul computer host.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Computer() As Global.Microsoft.VisualBasic.Devices.Computer
Get
Return s_Computer.GetInstance()
End Get
End Property
''' <summary>
''' Restituisce le informazioni per l'utente corrente. Se si desidera eseguire l'applicazione con le
''' credenziali utente di Windows correnti, chiamare My.User.InitializeWithWindowsUser().
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property User() As Global.Microsoft.VisualBasic.ApplicationServices.User
Get
Return s_User.GetInstance()
End Get
End Property
''' <summary>
''' Restituisce il registro applicazioni. I listener possono essere configurati dal file di configurazione dell'applicazione.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Log() As Global.Microsoft.VisualBasic.Logging.Log
Get
Return s_Log.GetInstance()
End Get
End Property
''' <summary>
''' Restituisce la raccolta di oggetti Window definiti nel progetto.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Windows() As MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return s_Windows.GetInstance()
End Get
End Property
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
<Global.Microsoft.VisualBasic.MyGroupCollection("System.Windows.Window", "Create__Instance__", "Dispose__Instance__", "My.MyWpfExtenstionModule.Windows")> _
Friend NotInheritable Class MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Private Shared Function Create__Instance__(Of T As {New, Global.System.Windows.Window})(ByVal Instance As T) As T
If Instance Is Nothing Then
If s_WindowBeingCreated IsNot Nothing Then
If s_WindowBeingCreated.ContainsKey(GetType(T)) = True Then
Throw New Global.System.InvalidOperationException("The window cannot be accessed via My.Windows from the Window constructor.")
End If
Else
s_WindowBeingCreated = New Global.System.Collections.Hashtable()
End If
s_WindowBeingCreated.Add(GetType(T), Nothing)
Return New T()
s_WindowBeingCreated.Remove(GetType(T))
Else
Return Instance
End If
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.Diagnostics.DebuggerHidden()> _
Private Sub Dispose__Instance__(Of T As Global.System.Windows.Window)(ByRef instance As T)
instance = Nothing
End Sub
<Global.System.Diagnostics.DebuggerHidden()> _
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Public Sub New()
MyBase.New()
End Sub
<Global.System.ThreadStatic()> Private Shared s_WindowBeingCreated As Global.System.Collections.Hashtable
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function Equals(ByVal o As Object) As Boolean
Return MyBase.Equals(o)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Friend Overloads Function [GetType]() As Global.System.Type
Return GetType(MyWindows)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function ToString() As String
Return MyBase.ToString
End Function
End Class
End Module
End Namespace
Partial Class Application
Inherits Global.System.Windows.Application
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
Friend ReadOnly Property Info() As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return New Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(Global.System.Reflection.Assembly.GetExecutingAssembly())
End Get
End Property
End Class
#End If
+62
View File
@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:$clrversion$
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("$safeprojectname$.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace
+117
View File
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+73
View File
@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.EgtStone3D.My.MySettings
Get
Return Global.EgtStone3D.My.MySettings.Default
End Get
End Property
End Module
End Namespace
+7
View File
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
+79
View File
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- Opzioni manifesto di Controllo dell'account utente
Per modificare il livello di Controllo dell'account utente di Windows, sostituire il
nodo requestedExecutionLevel con uno dei seguenti.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Se si specifica l'elemento requestedExecutionLevel, la funzionalità Virtualizzazione file system e registro di sistema verrà disabilitata.
Rimuovere questo elemento se l'applicazione richiede questa virtualizzazione per
compatibilità con le versioni precedenti.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Elenco delle versioni di Windows in cui è stata testata questa applicazione e
per cui è stato previsto l'uso. Rimuovere il commento dagli elementi appropriati per
fare in modo che Windows selezioni automaticamente l'ambiente più compatibile. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- Indica che l'applicazione è sensibile ai valori DPI e non verrà scalata automaticamente da Windows in caso di
valori DPI maggiori. Le applicazioni Windows Presentation Foundation (WPF) sono automaticamente sensibili ai valori DPI, pertanto non è necessario
acconsentire esplicitamente. Con le applicazioni Windows Forms destinate a .NET Framework 4.6 per cui è stato acconsentito esplicitamente a questa impostazione,
è anche necessario impostare 'EnableWindowsFormsHighDpiAutoResizing' su 'true' nel relativo file app.config.
Imposta l'applicazione in modo riconosca i percorsi lunghi. Vedere https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
-->
<!-- Abilita i temi per finestre di dialogo e controlli comuni di Windows (Windows XP e versioni successive) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>
+142
View File
@@ -0,0 +1,142 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Friend Module OptionModule
#Region "FIELDS & PROPERTIES"
' Parametri che contengono lista delle lingue disponibili e lingua selezionata
Friend m_LanguageList As New ObservableCollection(Of Language)
Friend m_SelectedLanguage As Language
' Colori di sfondo della vista e della griglia
Friend m_TopSceneBackground As Color3d
Friend m_BotSceneBackground As Color3d
Friend m_GridColor As Color3d
' Flag per visualizzazione spessa delle linee
Friend m_bThickLine As Boolean
' Flag per visualizzazione smussata delle superfici
Friend m_bSmoothTriMesh As Boolean
' Colore di default in disegno
Friend m_DefMaterialColor As Color3d
' Colore di evidenziazione
Friend m_MarkColor As Color3d
' Colore superfici
Friend m_SelSurfColor As Color3d
' Colore rettangolo di zoom
Friend m_RectangleZoomColor As Color3d
' Colore linea di distanz
Friend m_LineDistanceColor As Color3d
' selezione tema (default=0)
Friend m_SelectedThema As Integer = 0
' selezione tema toppanel (default=0)
Friend m_SelectedThemaTopPanel As Integer = 0
Friend m_bShowGridFrame As Boolean
Friend m_bGridState As Integer
Friend m_bMmUnits As Boolean
Friend m_MinLnColor As Color3d
Friend m_MajLnColor As Color3d
Friend m_dSnapStepMm As Double
Friend m_dSnapStepInch As Double
Friend m_nMinLineSStep As Integer
Friend m_nMajLineSStep As Integer
Friend m_nExtSStep As Integer
#End Region ' Fields & Properties
#Region "METHODS"
' inizializzazione lettura variabili ad inizio programma
Friend Sub InitOptionModule()
' Leggo elenco lingue disponibili da file ini
Dim nIndex As Integer = 1
Dim ReadLanguage As Language = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex, IniFile.m_sIniFile)
While Not IsNothing(ReadLanguage)
OptionModule.m_LanguageList.Add(ReadLanguage)
nIndex += 1
ReadLanguage = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex, IniFile.m_sIniFile)
End While
If nIndex = 1 Then
EgtOutLog("Error missing languages section in Config.ini")
EgtStone3D.EgtMessageBoxV.Show(Application.Current.MainWindow, "Error : missing languages informations", "EgtCAM5", MessageBoxButton.OK, MessageBoxImage.Error)
End
End If
' Inizializzo la lingua corrente
OptionModule.m_SelectedLanguage = OptionModule.m_LanguageList(0)
Dim sMsgName As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sMsgName)
For Each Language In OptionModule.m_LanguageList
If Language.Name = sMsgName Then
OptionModule.m_SelectedLanguage = Language
Exit For
End If
Next
' Inizializzo variabili colori di sfondo scena, griglia
Dim BackTopColor As New Color3d(0, 123, 167)
GetMainPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor)
m_TopSceneBackground = BackTopColor
Dim BackBotColor As New Color3d(BackTopColor)
GetMainPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor)
m_BotSceneBackground = BackBotColor
Dim GridColor As New Color3d(0, 0, 0)
GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, GridColor)
m_GridColor = GridColor
' Inizializzo flag linee ingrossate
m_bThickLine = GetMainPrivateProfileInt(S_SCENE, K_LINEWIDTH, 1) <> 1
' Inizializzo flag visualizzazione smussata delle superfici
m_bSmoothTriMesh = GetMainPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1) <> 0
' imposto colore di default
Dim DefColor As New Color3d(100, 10, 20)
GetMainPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor)
m_DefMaterialColor = DefColor
' imposto colore di evidenziazione
Dim MarkColor As New Color3d(255, 255, 0)
GetMainPrivateProfileColor(S_SCENE, K_MARK, MarkColor)
m_MarkColor = MarkColor
' imposto colore per superfici selezionate
Dim SelSurfColor As New Color3d(255, 255, 192)
GetMainPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor)
m_SelSurfColor = SelSurfColor
' imposto tipo e colore del rettangolo di zoom
Dim ZwColor As New Color3d(0, 0, 0)
GetMainPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, True, ZwColor)
m_RectangleZoomColor = ZwColor
' imposto colore della linea di distanza
Dim DstLnColor As New Color3d(255, 0, 0)
GetMainPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor)
m_LineDistanceColor = DstLnColor
' imposto il tema
m_SelectedThema = GetMainPrivateProfileInt(S_GENERAL, K_THEMA, 0)
' imposto il tema toppanel
m_SelectedThemaTopPanel = GetMainPrivateProfileInt(S_GENERAL, K_TOPPANEL, 0)
m_bShowGridFrame = (GetMainPrivateProfileInt(S_GRID, K_SHOWFRAME, 1) <> 0)
m_bGridState = GetMainPrivateProfileInt(S_GENERAL, K_GRIDSTATE, 1)
' imposto unità di misura per interfaccia utente
m_bMmUnits = (GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
m_MinLnColor = New Color3d(160, 160, 160)
GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, m_MinLnColor)
m_MajLnColor = New Color3d(160, 160, 160)
GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, m_MajLnColor)
m_dSnapStepMm = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10)
m_dSnapStepInch = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 10)
m_nMinLineSStep = GetMainPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1)
m_nMajLineSStep = GetMainPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10)
m_nExtSStep = GetMainPrivateProfileInt(S_GRID, K_EXTSSTEP, 50)
End Sub
#End Region ' Methods
End Module
+162
View File
@@ -0,0 +1,162 @@
<EgtWPFLib5:EgtMainWindow x:Class="OptionWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Title="{Binding Title}"
Icon="/Resources/EgalwareLogo.ico"
WindowStartupLocation="CenterOwner"
Style="{StaticResource OptionWindowV_Window}">
<Grid>
<Grid.Resources>
<EgtStone3D:SelectedComboConverter x:Key="SelectedComboConverter"/>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TabControl Style="{StaticResource OprtionWindow_TC}">
<TabItem Header="{Binding GenericMsg}">
<Grid Style="{StaticResource TopPanel_Grid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<GroupBox Style="{StaticResource OptionWindow_GrBx}">
<GroupBox.Header>
<TextBlock Text="{Binding CurrentLanguageMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</GroupBox.Header>
<UniformGrid Rows="2"
Style="{StaticResource OptionWindow_UniformGrid}">
<ComboBox DisplayMemberPath="Name"
ItemsSource="{Binding LanguageList}"
SelectedItem="{Binding SelectedLanguage, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource OptionWindow_CmBx}"/>
<TextBlock Text="{Binding LanguageAdvertMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</UniformGrid>
</GroupBox>
<GroupBox Grid.Column="1"
Style="{StaticResource OptionWindow_GrBx}">
<GroupBox.Header>
<TextBlock Text="{Binding TemaMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</GroupBox.Header>
<UniformGrid Rows="2"
Style="{StaticResource OptionWindow_UniformGrid}">
<ComboBox DisplayMemberPath="Name"
ItemsSource="{Binding Themes, Mode=OneWay}"
SelectedItem="{Binding SelectedTheme}"
Style="{StaticResource OptionWindow_CmBx}"/>
<TextBlock Text="{Binding TemaAdvertMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</UniformGrid>
</GroupBox>
<GroupBox Grid.Column="2"
Style="{StaticResource OptionWindow_GrBx}">
<GroupBox.Header>
<TextBlock Text="{Binding TemaTopPanelMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</GroupBox.Header>
<UniformGrid Rows="2"
Style="{StaticResource OptionWindow_UniformGrid}">
<ComboBox ItemsSource="{Binding ListTopPanel, Mode=OneWay}"
SelectedItem="{Binding SelectedTopPanel}"
Style="{StaticResource OptionWindow_CmBx}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource SelectedComboConverter}}"
Style="{StaticResource Background_TxBl}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Text="{Binding TemaTopPanelAdvertMsg}"
Style="{StaticResource OptionWindow_TxBl}"/>
</UniformGrid>
</GroupBox>
<UniformGrid Grid.Row="1"
Grid.ColumnSpan="3"
Columns="2"
Style="{StaticResource Background_UniformGrid}">
<TextBlock Text="{Binding TopSceneBackgroundMsg}"
Style="{StaticResource Background_TxBl}"/>
<Button Background="{Binding TopSceneBackground}"
Command="{Binding TopSceneBackground_Command}"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
</UniformGrid>
<UniformGrid Grid.Row="2"
Grid.ColumnSpan="3"
Columns="2"
Style="{StaticResource SceneBackground_UniformGrid}">
<TextBlock Text="{Binding BotSceneBackgroundMsg}"
Style="{StaticResource Background_TxBl}"/>
<Button Background="{Binding BotSceneBackground}"
Command="{Binding BotSceneBackground_Command}"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
</UniformGrid>
<UniformGrid Grid.Row="3"
Grid.ColumnSpan="3"
Columns="2"
Style="{StaticResource SceneBackground_UniformGrid}">
<TextBlock Text="{Binding GridColorMsg}"
Style="{StaticResource Background_TxBl}"/>
<Button Background="{Binding GridColor}"
Command="{Binding GridColor_Command}"
Style="{StaticResource EgtWPFLib5_InputButton}"/>
</UniformGrid>
<Grid Grid.Row="4"
Grid.RowSpan="2"
Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding ThickLineMsg}"
Style="{StaticResource ColorLine_TxBl}"/>
<CheckBox Grid.Column="1"
IsChecked="{Binding ThickLine}"
Style="{StaticResource ColorLine_ChBx}"/>
<TextBlock Grid.Row="1"
Text="{Binding SmoothTriMeshMsg}"
Style="{StaticResource ColorLine_TxBl}"/>
<CheckBox Grid.Row="1"
Grid.Column="1"
IsChecked="{Binding SmoothTriMesh}"
Style="{StaticResource ColorLine_ChBx}"/>
</Grid>
<Grid Grid.Row="6"
Grid.ColumnSpan="3"
Style="{StaticResource Licence_Grid}">
<Button Content="{Binding UpdateLicenceMsg}"
Command="{Binding UpdateLicence_Command}"
Style="{StaticResource Licence_Btn}"/>
</Grid>
</Grid>
</TabItem>
</TabControl>
<Button Grid.Row="1"
Command="{Binding Ok_Command}"
Style="{StaticResource RightPanel_Button}">
<Image Source="\Resources\Common\Ok.png"
Style="{StaticResource Button_Image}"/>
</Button>
</Grid>
</EgtWPFLib5:EgtMainWindow>
+3
View File
@@ -0,0 +1,3 @@
Public Class OptionWindowV
End Class
+530
View File
@@ -0,0 +1,530 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Imports System.IO
Imports System.Drawing
Public Class OptionWindowVM
Inherits VMBase
#Region "FIELD & PROPERTIES"
Private ReadOnly m_ThemesDataService As New ThemesDataServiceVM()
Public ReadOnly Property LanguageList As ObservableCollection(Of Language)
Get
Return OptionModule.m_LanguageList
End Get
End Property
Public Property SelectedLanguage As Language
Get
Return OptionModule.m_SelectedLanguage
End Get
Set(value As Language)
If value IsNot OptionModule.m_SelectedLanguage Then
OptionModule.m_SelectedLanguage = value
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
Dim sMsgDir As String = String.Empty
If GetMainPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then
sMsgDir = Map.refMainWindowVM.MainWindowM.sConfigDir
End If
' Leggo file messaggi
Dim sMsgFilePath As String = sMsgDir & "\" & OptionModule.m_SelectedLanguage.FilePath
If Not EgtLoadMessages(sMsgFilePath) Then
EgtOutLog("Error in EgtLoadMessages")
End If
UpdateAllMessages()
WriteMainPrivateProfileString(S_GENERAL, K_MESSAGES, OptionModule.m_SelectedLanguage.Name)
End If
End Set
End Property
Public ReadOnly Property TopSceneBackground As System.Windows.Media.Brush
Get
Return New SolidColorBrush(System.Windows.Media.Color.FromArgb(CByte(255),
CByte(OptionModule.m_TopSceneBackground.R),
CByte(OptionModule.m_TopSceneBackground.G),
CByte(OptionModule.m_TopSceneBackground.B)))
End Get
End Property
Public ReadOnly Property BotSceneBackground As System.Windows.Media.Brush
Get
Return New SolidColorBrush(System.Windows.Media.Color.FromArgb(CByte(255),
CByte(OptionModule.m_BotSceneBackground.R),
CByte(OptionModule.m_BotSceneBackground.G),
CByte(OptionModule.m_BotSceneBackground.B)))
End Get
End Property
Public ReadOnly Property GridColor As System.Windows.Media.Brush
Get
Return New SolidColorBrush(System.Windows.Media.Color.FromArgb(CByte(255),
CByte(OptionModule.m_GridColor.R),
CByte(OptionModule.m_GridColor.G),
CByte(OptionModule.m_GridColor.B)))
End Get
End Property
Public Property ThickLine As Boolean
Get
Return OptionModule.m_bThickLine
End Get
Set(value As Boolean)
OptionModule.m_bThickLine = value
WriteMainPrivateProfileString(S_SCENE, K_LINEWIDTH, If(value, "2", "1"))
EgtSetLineAttribs(If(value, 2, 1))
End Set
End Property
Public Property SmoothTriMesh As Boolean
Get
Return OptionModule.m_bSmoothTriMesh
End Get
Set(value As Boolean)
OptionModule.m_bSmoothTriMesh = value
WriteMainPrivateProfileString(S_SCENE, K_SHOWTRIAADV, If(value, "1", "0"))
EgtSetShowTriaAdv(value)
End Set
End Property
Private m_Themes As New ObservableCollection(Of ThemesDataServiceM)
Public Property Themes As ObservableCollection(Of ThemesDataServiceM)
Get
Return m_Themes
End Get
Set(value As ObservableCollection(Of ThemesDataServiceM))
If Not m_Themes.Equals(value) Then
m_Themes = value
End If
End Set
End Property
Private m_SelectedTheme As ThemesDataServiceM
Public Property SelectedTheme As ThemesDataServiceM
Get
Return m_SelectedTheme
End Get
Set(value As ThemesDataServiceM)
m_ThemesDataService.SetTheme(value)
m_SelectedTheme = value
' salvo in file ini la scelta del tema corrente
Dim IndexThema As Integer = Themes.IndexOf(m_SelectedTheme)
If IndexThema < 0 Then
IndexThema = 0
End If
WriteMainPrivateProfileString(S_GENERAL, K_THEMA, IndexThema.ToString())
m_SelectedThema = IndexThema
End Set
End Property
Private m_ListTopPanel As New ObservableCollection(Of Integer)({0, 1})
Public Property ListTopPanel As ObservableCollection(Of Integer)
Get
Return m_ListTopPanel
End Get
Set(value As ObservableCollection(Of Integer))
m_ListTopPanel = value
End Set
End Property
Private m_SelectedTopPanel As Integer = 0
Public Property SelectedTopPanel As Integer
Get
Return m_SelectedTopPanel
End Get
Set(value As Integer)
m_SelectedTopPanel = value
Map.refSceneButtonVM.SetSelTopPanel(value)
WriteMainPrivateProfileString(S_GENERAL, K_TOPPANEL, m_SelectedTopPanel.ToString())
m_SelectedThemaTopPanel = m_SelectedTopPanel
End Set
End Property
' Definizione comandi
Private m_cmdTopSceneBackground As ICommand
Private m_cmdBotSceneBackground As ICommand
Private m_cmdGridColor As ICommand
Private m_cmdUpdateLicenceCmd As ICommand
#Region "Messages"
Public ReadOnly Property Title As String
Get
Return EgtMsg(5005) ' Opzioni
End Get
End Property
Public ReadOnly Property CurrentLanguageMsg As String
Get
Return EgtMsg(6501) ' Lingua corrente
End Get
End Property
Public ReadOnly Property LanguageAdvertMsg As String
Get
Return EgtMsg(6502) ' La nuova lingua diventerà corrente dal prossimo avvio del programma.
End Get
End Property
Public ReadOnly Property TopSceneBackgroundMsg As String
Get
Return EgtMsg(6510) ' Colore della vista in alto
End Get
End Property
Public ReadOnly Property BotSceneBackgroundMsg As String
Get
Return EgtMsg(6511) ' Colore della vista in basso
End Get
End Property
Public ReadOnly Property GenericMsg As String
Get
Return EgtMsg(6514) ' Generale
End Get
End Property
Public ReadOnly Property GridColorMsg As String
Get
Return EgtMsg(6517) ' Colore della griglia
End Get
End Property
Public ReadOnly Property SmoothTriMeshMsg As String
Get
Return EgtMsg(6518) ' Superfici smussate
End Get
End Property
Public ReadOnly Property ThickLineMsg As String
Get
Return EgtMsg(6536) ' Linee spesse
End Get
End Property
Public ReadOnly Property UpdateLicenceMsg As String
Get
Return EgtMsg(6553) ' Aggiorna Licenza
End Get
End Property
Public ReadOnly Property TemaAdvertMsg As String
Get
Return EgtMsg(110008) ' Il nuovo tema diventerà corrente quando verrà selezionato.
End Get
End Property
Public ReadOnly Property TemaMsg As String
Get
Return EgtMsg(110009) ' Tema
End Get
End Property
Public ReadOnly Property TemaTopPanelAdvertMsg As String
Get
Return EgtMsg(110032) ' Il nuovo top panel diventerà corrente quando selezionato
End Get
End Property
Public ReadOnly Property TemaTopPanelMsg As String
Get
Return EgtMsg(110031) ' Top Panel
End Get
End Property
#End Region ' Messages
#End Region ' Field & Properties
#Region "CONSTRUCTOR"
Sub New()
LoadThemes()
LoadTopPanelThemes()
Map.SetRefOptionWindowVM(Me)
End Sub
#End Region ' Constructor
#Region "METHODS"
''' <summary>
''' Funzione che permette di selezionare il colore per modificare la scena
''' </summary>
''' <param name="Col">colore di base</param>
''' <param name="NewCol">colore nuovo</param>
''' <returns></returns>
Private Function SelectColor(Col As Color3d, ByRef NewCol As Color3d) As Boolean
' Recupero colori custom
Dim sCustomColors As String = ""
GetMainPrivateProfileString(S_COLORS, K_CUSTOMCOLORS, "", sCustomColors)
Dim CustomColors() As String = sCustomColors.Split(","c)
Dim nCustomColors As New List(Of Integer)
For Each Color In CustomColors
Dim nColor As Integer
If Integer.TryParse(Color, nColor) Then
nCustomColors.Add(nColor)
End If
Next
' Creo dialogo colori
Dim ColorDlg As New EgtColorPickerV(Application.Current.MainWindow, New EgtColorPickerVM()) With {
.CustomColors = nCustomColors.ToArray(),
.Color = Col.ToColor()
}
' Visualizzo dialogo
If ColorDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return False
'Recupero colore scelto
NewCol.FromColor(ColorDlg.Color)
''Salvo eventuali modifiche ai colori custom
sCustomColors = ""
For Each Color In ColorDlg.CustomColors
sCustomColors &= Color.ToString() & ","
Next
sCustomColors = sCustomColors.Trim({" "c, ","c})
WriteMainPrivateProfileString(S_COLORS, K_CUSTOMCOLORS, sCustomColors)
Return True
End Function
''' <summary>
''' Seleziona il tema se presente
''' </summary>
''' <param name="IndexThema"></param>
Public Sub SetThema(IndexThema As Integer)
If m_Themes.Count > 0 Then
m_ThemesDataService.SetTheme(m_Themes(IndexThema))
End If
End Sub
''' <summary>
''' Funzione che carica i temi del top panel
''' </summary>
Private Sub LoadTopPanelThemes()
' Seleziono elemento in ComboBox
m_SelectedTopPanel = m_ListTopPanel(OptionModule.m_SelectedThemaTopPanel)
' Attivo il tema toppanel letto sopra
If Not IsNothing(Map.refSceneButtonVM) Then Map.refSceneButtonVM.SetSelTopPanel(OptionModule.m_SelectedThemaTopPanel)
End Sub
''' <summary>
''' Fuzione che carica i temi del dizionario
''' </summary>
Private Sub LoadThemes()
' Popolo la lista temi
m_Themes.Add(New ThemesDataServiceM() With {
.Name = "Default",
.Path = "Utility/EgtStone3DDictionary.xaml"
})
m_Themes.Add(New ThemesDataServiceM() With {
.Name = "Dark",
.Path = "Utility/EgtStone3DDarkDictionary.xaml"
})
' Seleziono elemento in ComboBox
m_SelectedTheme = m_Themes(OptionModule.m_SelectedThema)
' Attivo il tema letto sopra
SetThema(OptionModule.m_SelectedThema)
End Sub
''' <summary>
''' Funzione che aggiorna i messaggi delle opzioni
''' </summary>
Private Sub UpdateMessageOption()
NotifyPropertyChanged(NameOf(Title))
NotifyPropertyChanged(NameOf(CurrentLanguageMsg))
NotifyPropertyChanged(NameOf(LanguageAdvertMsg))
NotifyPropertyChanged(NameOf(TopSceneBackgroundMsg))
NotifyPropertyChanged(NameOf(BotSceneBackgroundMsg))
NotifyPropertyChanged(NameOf(GenericMsg))
NotifyPropertyChanged(NameOf(GridColorMsg))
NotifyPropertyChanged(NameOf(SmoothTriMeshMsg))
NotifyPropertyChanged(NameOf(ThickLineMsg))
NotifyPropertyChanged(NameOf(UpdateLicenceMsg))
NotifyPropertyChanged(NameOf(TemaAdvertMsg))
NotifyPropertyChanged(NameOf(TemaMsg))
NotifyPropertyChanged(NameOf(TemaTopPanelAdvertMsg))
NotifyPropertyChanged(NameOf(TemaTopPanelMsg))
End Sub
''' <summary>
''' Funzione che aggiorna tutti i messaggi
''' </summary>
Friend Sub UpdateAllMessages()
UpdateMessageOption()
Map.refTopPanelVM.UpdateMessagesTopPanel()
Map.refProjManagerVM.UpdateMessageProjManager()
Map.refSecondaryWindowVM.UpdateTitle()
Map.refViewPanelVM.UpdateMessageViewPanel()
Map.refViewPanelProspectiveVM.UpdateMessageViewProspectivePanel()
Map.refGridPanelVM.UpdateMessageGridPanel()
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "TopSceneBackgroundCmd"
Public ReadOnly Property TopSceneBackground_Command() As ICommand
Get
If m_cmdTopSceneBackground Is Nothing Then
m_cmdTopSceneBackground = New Command(AddressOf TopSceneBackgroundCmd)
End If
Return m_cmdTopSceneBackground
End Get
End Property
''' <summary>
''' Funzione che permette di cambiare sfondo alla parte superiore della scena
''' </summary>
Public Sub TopSceneBackgroundCmd()
' Recupero colore da Ini
Dim BackTopColor As New Color3d(192, 192, 192)
GetMainPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor)
' Eseguo modifica con dialogo
If SelectColor(BackTopColor, BackTopColor) Then
OptionModule.m_TopSceneBackground = BackTopColor
Map.refSceneHostVM.MainScene.SetViewBackground(OptionModule.m_TopSceneBackground, OptionModule.m_BotSceneBackground)
WritePrivateProfileColor(S_SCENE, K_BACKTOP, OptionModule.m_TopSceneBackground)
NotifyPropertyChanged(NameOf(TopSceneBackground))
End If
End Sub
#End Region ' TopSceneBackgroundCmd
#Region "BotSceneBackgroundCmd"
Public ReadOnly Property BotSceneBackground_Command() As ICommand
Get
If m_cmdBotSceneBackground Is Nothing Then
m_cmdBotSceneBackground = New Command(AddressOf BotSceneBackgroundCmd)
End If
Return m_cmdBotSceneBackground
End Get
End Property
''' <summary>
''' Funzione che permette di cambiare sfondo alla parte inferiore della scena
''' </summary>
Public Sub BotSceneBackgroundCmd()
' Recupero colore da Ini
Dim BackBotColor As New Color3d(192, 192, 192)
GetMainPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor)
' Eseguo modifica con dialogo
If SelectColor(BackBotColor, BackBotColor) Then
OptionModule.m_BotSceneBackground = BackBotColor
Map.refSceneHostVM.MainScene.SetViewBackground(OptionModule.m_TopSceneBackground, OptionModule.m_BotSceneBackground)
WritePrivateProfileColor(S_SCENE, K_BACKBOTTOM, OptionModule.m_BotSceneBackground)
NotifyPropertyChanged(NameOf(BotSceneBackground))
End If
End Sub
#End Region ' BotSceneBackgroundCmd
#Region "GridColorCmd"
Public ReadOnly Property GridColor_Command() As ICommand
Get
If m_cmdGridColor Is Nothing Then
m_cmdGridColor = New Command(AddressOf GridColorCmd)
End If
Return m_cmdGridColor
End Get
End Property
''' <summary>
''' Funzione che permette di cambiare sfondo alla griglia della scena
''' </summary>
Public Sub GridColorCmd()
' Recupero colore da Ini
Dim GridColor As New Color3d(192, 192, 192)
GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, GridColor)
' Eseguo modifica con dialogo
If SelectColor(GridColor, GridColor) Then
OptionModule.m_GridColor = GridColor
EgtSetGridColor(GridColor, GridColor)
WritePrivateProfileColor(S_GRID, K_MINLNCOLOR, OptionModule.m_GridColor)
WritePrivateProfileColor(S_GRID, K_MAJLNCOLOR, OptionModule.m_GridColor)
EgtDraw()
NotifyPropertyChanged(NameOf(GridColor))
End If
End Sub
#End Region ' GridColorCmd
#Region "UpdateLicenceCmd"
Public ReadOnly Property UpdateLicence_Command() As ICommand
Get
If m_cmdUpdateLicenceCmd Is Nothing Then
m_cmdUpdateLicenceCmd = New Command(AddressOf UpdateLicenceCmd)
End If
Return m_cmdUpdateLicenceCmd
End Get
End Property
''' <summary>
''' Funzione che permette l'update della licenza
''' </summary>
Public Sub UpdateLicenceCmd()
' Apro dialogo per richiesta file licenza
Dim LicDlg As New EgtManageFileDialogV(Application.Current.MainWindow, New EgtManageFileDialogVM()) With {
.Title = EgtMsg(110026), ' Licenza
.InitialDirectory = Map.refMainWindowVM.MainWindowM.sConfigDir,
.Filter = "Licences (.lic)|*.lic",
.FilterIndex = 1,
.CheckFileExists = True,
.ValidateNames = True
}
If LicDlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
' Recupero il direttorio del file
Dim sDir As String = Path.GetDirectoryName(LicDlg.FileName)
' Se il file non è già nel direttorio di configurazione lo copio
If Not String.Equals(Path.GetFullPath(sDir), Path.GetFullPath(Map.refMainWindowVM.MainWindowM.sConfigDir), StringComparison.OrdinalIgnoreCase) Then
Try
File.Copy(LicDlg.FileName, Path.Combine(Map.refMainWindowVM.MainWindowM.sConfigDir, LicDlg.SafeFileName), True)
Catch ex As Exception
Return
End Try
End If
' Imposto il nuovo file di licenza nell'Ini
WriteMainPrivateProfileString(S_GENERAL, K_LICENCE, LicDlg.SafeFileName)
End If
End Sub
#End Region ' UpdateLicenceCmd
#End Region ' Commands
End Class
Public Class SelectedComboConverter
Implements IValueConverter
''' <summary>
''' Permette la conversione del tema del top panel selezionato in testo
''' </summary>
''' <param name="value"></param>
''' <param name="targetType"></param>
''' <param name="parameter"></param>
''' <param name="culture"></param>
''' <returns></returns>
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
If TypeOf value Is Integer Then
Select Case value
Case 0
Return EgtMsg(110031)
Case 1
Return EgtMsg(110031) & " 1"
Case Else
Return Nothing
End Select
Else
Return Nothing
End If
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
+232
View File
@@ -0,0 +1,232 @@
Imports EgtUILib
Public Class PairVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private ReadOnly m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_Stage As PairStage = PairStage.FirstLine
Private Property Stage As PairStage
Get
Return m_Stage
End Get
Set(value As PairStage)
m_Stage = value
DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
ChangeTextColor()
If m_Stage = PairStage.FacePair Then SetAllVisible()
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg_Stg0 As String
Get
Return EgtMsg(110000) ' Seleziona dal primo Part il lato che vuoi accoppiare
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg1 As String
Get
Return EgtMsg(110020) ' Seleziona dal secondo Part il lato con cui vuoi accoppiare quello appena selezionato
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg2 As String
Get
Return EgtMsg(110021) ' Modifica le impostazioni di accoppiamento; tenendo premuto SHIFT puoi anche selezionare per ogni Part una faccia adiacente ai due lati accoppiati, per farle coincidere
End Get
End Property
Public ReadOnly Property FlipOption1_Msg As String
Get
Return EgtMsg(110001) ' Flip
End Get
End Property
Public ReadOnly Property FlipOption2_Msg As String
Get
Return EgtMsg(110002) ' Flip
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_PAIR.ToUpper()
'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia
Map.refSceneHostVM.m_nTransfNum = 0
' setto le variabili di salvataggio per le operazioni temporanee
Dim bSave As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = True
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
LoadParamList()
ActivateButton()
RemoveAllUC()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(0), ParamType.STR, Visibility.Visible))
Dim PairOptionList As New List(Of ParamCmBx)({New ParamCmBx("Start-Start"), New ParamCmBx("Start-End"), New ParamCmBx("End-Start"),
New ParamCmBx("End-End"), New ParamCmBx("Middle-Middle")})
AddGenericParam(New _ComboBoxParam("PairOption", PairOptionList, 1, Visibility.Collapsed))
AddGenericParam(New _CheckBoxParam("FlipOption1", FlipOption1_Msg, Visibility.Collapsed))
AddGenericParam(New _CheckBoxParam("FlipOption2", FlipOption2_Msg, Visibility.Collapsed))
End Sub
Public Sub AdvanceStage()
Stage += 1
End Sub
Public Function AtStage()
Return Stage
End Function
Public Overrides Sub Conferma()
' salvo la storia delle operazioni svolte durante l'accoppiamento
Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostVM.m_nIdPart)
If IsNothing(PartSolidSel) Then
Annulla()
Return
End If
If PartSolidSel.nIdLineSecond <> GDB_ID.NULL Then
Dim nPartToPair = EgtGetParent(EgtGetParent(PartSolidSel.nIdLineSecond))
Dim PartSolidPair As PartSolidM = GetPartSolid(nPartToPair)
If IsNothing(PartSolidPair) Then
GoTo NoSecondLine
End If
'' devo salvare le operazioni svolte durante l'accoppiamento come parte della storia globale
For nItTime As Integer = -Map.refSceneHostVM.m_nTransfNum To -1 Step 1
'' scorro le ultime trasformazioni temporanee
If EgtLuaSetGlobIntVar("ASS.nTempToSave", nItTime) Then AssLog("ASS.nTempToSave = " & nItTime.ToString)
If EgtLuaCallFunction("ASS.AddEventFromTemp") Then AssLog("ASS.AddEventFromTemp()")
Next
' concludo l'accoppiamento
' aggiorno il vettore dei paired e le info
SolidManagerM.UpdatePairInfo(Map.refSceneHostVM.m_nIdPart)
Map.refSceneHostVM.nTime += 1
'' Aggiorno la vista del TreeView
'UpdateTreeViewPart()
End If
NoSecondLine:
' resetto il contatore per le operazioni temporanee
Map.refSceneHostVM.m_nTransfNum = 0
' gestisco le attivazioni di undo/redo
SolidManagerM.ManageUndoRedo()
' chiudo lo user control
Close()
End Sub
Public Overrides Sub Annulla()
' faccio il reset del pairing
If Map.refSceneHostVM.m_nTransfNum > Map.refSceneHostVM.m_MaxTempTime Then
Map.refSceneHostVM.m_nTransfNum = Map.refSceneHostVM.m_MaxTempTime
End If
For op As Integer = Map.refSceneHostVM.m_nTransfNum To 0 Step -1
If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
Next
'resetto eventuali intersezioni
SolidManagerM.ResetInters()
' chiudo lo user control
Close()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_PAIR)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Pair è stato definito come Button anziché ToggleButton")
End If
If EgtLuaCallFunction("ASS.ResetTempStory") Then AssLog("ASS.ResetTempStory()")
Map.refSceneHostVM.m_nTransfNum = 0
' setto le variabili per il salvataggio della storia normale
Dim bSave As Boolean = True
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
' rimuovo lo UC dalla griglia
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_PairUC)
SolidManagerM.ManageUndoRedo()
End Sub
Private Sub SetAllVisible()
ParamList(1).nVisibility = Visibility.Visible
ParamList(2).nVisibility = Visibility.Visible
ParamList(3).nVisibility = Visibility.Visible
End Sub
Public Sub PairParts()
Dim nId As Integer = Map.refSceneHostVM.m_nIdPart
Dim nOpInd As Integer = DirectCast(ParamList(1), _ComboBoxParam).ParamCmBxList.IndexOf(DirectCast(ParamList(1), _ComboBoxParam).SelParamCmBx)
Dim bFlip1 As Boolean = DirectCast(ParamList(2), _CheckBoxParam).IsChecked
Dim bFlip2 As Boolean = DirectCast(ParamList(3), _CheckBoxParam).IsChecked
Dim nTransf As Integer = 0
PairPart(nId, nOpInd, bFlip1, bFlip2, Map.refSceneHostVM.m_bFlippedParal, Map.refSceneHostVM.m_bFlippedPerp, nTransf)
Map.refSceneHostVM.m_nTransfNum += nTransf
End Sub
Private Sub ActivateButton()
' Disattivo pulsante Rotate
DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton).IsChecked = False
' Attivo pulsante Pair
DirectCast(Map.refSceneButtonVM.GetButton(EGT_PAIR), _ToggleButton).IsChecked = True
' Disattivo pulsante Move
DirectCast(Map.refSceneButtonVM.GetButton(EGT_MOVE), _ToggleButton).IsChecked = False
End Sub
Private Sub RemoveAllUC()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_AngleUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditParametricUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ExtremityUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_LengthUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_MoveUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_RotateUC)
End Sub
#End Region ' Methods
#Region "EVENTS"
Public Overrides Sub OnCheckboxCheckedChanged(sender As Object, checkedState As Boolean)
Dim CheckBox As _CheckBoxParam = DirectCast(sender, _CheckBoxParam)
Select Case CheckBox.Name
Case "FlipOption1"
PairParts()
Case "FlipOption2"
PairParts()
End Select
End Sub
Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
PairParts()
End Sub
#End Region ' Events
End Class
+553
View File
@@ -0,0 +1,553 @@
Imports EgtUILib
Public Class EditPanelVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private Enum ParamEnum
MSG_ISTRUZ = 0
PARAG_PANEL = 1
PANEL_H = 2
PANEL_TH = 3
PANEL_J = 4
PARAG_BOTTOM = 5
BOTTOM_TH = 6
BOTTOM_ALPHA = 7
BOTTOM_DEPTH = 8
BOTTOM_HOLE_TYPE = 9
BOTTOM_HOLE_X = 10
BOTTOM_HOLE_Y = 11
BOTTOM_DIAM = 12
BOTTOM_HOLE_DIMX = 13
BOTTOM_HOLE_DIMY = 14
EDIT_NEIGH = 15
End Enum
Private ReadOnly m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2, Msg_Paragraph1, Msg_Paragraph2})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_Stage As EditPanelStage = EditPanelStage.SelectPart
Private Property Stage As EditPanelStage
Get
Return m_Stage
End Get
Set(value As EditPanelStage)
m_Stage = value
DirectCast(ParamList(ParamEnum.MSG_ISTRUZ), _TextBlockParam).MsgValue = MsgList(m_Stage)
ChangeTextColor()
End Set
End Property
Private m_PartType As PartType = PartType.Unknown
Friend Property PartType As PartType
Get
Return m_PartType
End Get
Set(value As PartType)
m_PartType = value
End Set
End Property
' id del part selezionato per essere modificato
Private m_nIdPart As Integer = GDB_ID.NULL
Public Property nIdPart As Integer
Get
Return m_nIdPart
End Get
Set(value As Integer)
SceneCmd.DeselectAll()
m_nIdPart = value
Stage = EditPanelStage.InsertNewParam
' devo capire che tipo di pezzo sto modificando
' se non ha info di accoppiamento è una base (piano cucina)
' se ha l'info "Sink" allora è un pezzo di una buca
' se ha info di accoppiamento generico è una paretina
PartType = GetPartType()
If ParamList.Count > 0 Then
Select Case PartType
Case PartType.Panel
UpdatePanelInfoFromPart(m_nIdPart)
Case PartType.Sink, PartType.SinkSplitBottom
Dim bIsBottom As Boolean = False
EgtGetInfo(m_nIdPart, "Bottom", bIsBottom)
If bIsBottom Then
Dim nParent As Integer = GDB_ID.NULL
EgtGetInfo(m_nIdPart, "Parent", nParent)
UpdatePanelInfoFromPart(nParent)
Else
UpdatePanelInfoFromPart(m_nIdPart)
End If
End Select
End If
UpdateParameterListShown()
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg_Stg0 As String
Get
Return EgtMsg(110040) ' Seleziona il Part che vuoi modificare
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg1 As String
Get
Return EgtMsg(110041) ' Inserisci i nuovi parametri
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg2 As String
Get
Return EgtMsg(110042) ' Conferma, modifica con altri parametri o annulla
End Get
End Property
Public ReadOnly Property Msg_Paragraph1 As String
Get
Return EgtMsg(110038) ' Frontalino
End Get
End Property
Public ReadOnly Property Msg_Paragraph2 As String
Get
Return EgtMsg(110039) ' Fondo
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = "Modifica Paretina".ToUpper()
LoadParamList()
If Map.refSceneHostVM.m_nIdPart <> GDB_ID.NULL Then
nIdPart = Map.refSceneHostVM.m_nIdPart
Stage = EditPanelStage.InsertNewParam
End If
UpdatePanelInfoFromPart(m_nIdPart)
End Sub
#End Region ' Constructor
#Region "METHODS"
Private Sub UpdatePanelInfoFromPart(nIdPart As Integer)
If nIdPart = GDB_ID.NULL Then Return
Dim dH As Double = 100
EgtGetInfo(nIdPart, "H", dH)
DirectCast(ParamList(ParamEnum.PANEL_H), _TextBoxParam).sValue = dH.ToString()
Dim dTh As Double = 10
EgtGetInfo(nIdPart, "Th", dTh)
DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).sValue = dTh.ToString()
Dim nJunctionType As Integer
EgtGetInfo(nIdPart, "JunctionType", nJunctionType)
DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = nJunctionType - 1
If PartType = PartType.Sink Or PartType = PartType.SinkSplitBottom Then
' recupero un pezzo bottom
Dim bIsBottom As Boolean = False
EgtGetInfo(nIdPart, "Bottom", bIsBottom)
Dim nBottomId As Integer = nIdPart
If Not bIsBottom Then
Dim nWaterfallId As Integer = nIdPart
Dim sPartChildName As String = String.Empty
EgtGetInfo(nWaterfallId, "A3", sPartChildName)
nBottomId = EgtGetFirstNameInGroup(GDB_ID.ROOT, sPartChildName)
End If
Dim dDiam As Double = 0
EgtGetInfo(nBottomId, "HoleDiam", dDiam)
If dDiam < EPS_SMALL Then
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0
Dim dDimX As Double = 0
Dim dDimY As Double = 0
EgtGetInfo(nBottomId, "HoleDimX", dDimX)
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMX), _TextBoxParam).sValue = dDimX.ToString()
EgtGetInfo(nBottomId, "HoleDimY", dDimY)
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMY), _TextBoxParam).sValue = dDimY.ToString()
Else
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1
EgtGetInfo(nBottomId, "HoleDiam", dDiam)
DirectCast(ParamList(ParamEnum.BOTTOM_DIAM), _TextBoxParam).sValue = dDiam.ToString()
End If
Dim dPosX As Double = 0
Dim dPosY As Double = 0
EgtGetInfo(nBottomId, "HolePosX", dPosX)
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).sValue = dPosX.ToString()
EgtGetInfo(nBottomId, "HolePosY", dPosY)
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).sValue = dPosY.ToString()
Dim dDepth As Double = 0
EgtGetInfo(nBottomId, "Depth", dDepth)
DirectCast(ParamList(ParamEnum.BOTTOM_DEPTH), _TextBoxParam).sValue = dDepth.ToString()
End If
End Sub
Private Sub UpdateParameterListShown()
'' dalle info leggo se l'oggetto è una paretina o una buca
If PartType = PartType.TopKitchen Then
'ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Collapsed
'ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed
'ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
'ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
'ParamList(ParamEnum.BOTTOM_ALPHA).nVisibility = Visibility.Visible
'ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible
'ParamList(ParamEnum.EDIT_NEIGH).nVisibility = Visibility.Visible
ElseIf PartType = PartType.SinkSplitBottom Then
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_ALPHA).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible
ParamList(ParamEnum.EDIT_NEIGH).nVisibility = Visibility.Collapsed
ElseIf PartType = PartType.Sink Then
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_ALPHA).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.EDIT_NEIGH).nVisibility = Visibility.Collapsed
ElseIf PartType = PartType.Panel Then
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_ALPHA).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.EDIT_NEIGH).nVisibility = Visibility.Visible
End If
End Sub
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(0), ParamType.STR, Visibility.Visible))
' sezione paretina
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(3), ParamType.STR, Visibility.Collapsed))
Dim dH As Double = 200
AddGenericParam(New _TextBoxParam("Altezza", dH, ParamType.LEN, Visibility.Visible))
Dim dTh As Double = 20
AddGenericParam(New _TextBoxParam("Spessore", dTh, ParamType.LEN, Visibility.Visible))
Dim nJunctionType As Integer = 0
Dim JunctionTypeList As New List(Of ParamCmBx)({New ParamCmBx("Trim Start"), New ParamCmBx("Trim End"), New ParamCmBx("Angle"), New ParamCmBx("Trim Both")})
AddGenericParam(New _ComboBoxParam("Tipo Giunzione", JunctionTypeList, nJunctionType))
' sezione fondello
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(4), ParamType.STR, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Spessore", 10, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Inclinazione", 0.1, ParamType.DOUB, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Profondità", 0.1, ParamType.LEN, Visibility.Collapsed))
Dim HoleType As New List(Of ParamCmBx)({New ParamCmBx("Fessura"), New ParamCmBx("Foro")})
AddGenericParam(New _ComboBoxParam("TipoBuco", HoleType, 0, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Posizione X foro", 50, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Posizione Y foro", 50, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Diametro foro", 30, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Dimensione X foro", 25, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Dimensione Y foro", 25, ParamType.LEN, Visibility.Collapsed))
' checkbox
AddGenericParam(New _CheckBoxParam("ModificaAdiacenti", "Modifica anche altre paretine dello stesso tipo", Visibility.Visible))
End Sub
Public Sub AdvanceStage()
Stage += 1
End Sub
Public Function AtStage()
Return Stage
End Function
Public Overrides Sub Conferma()
' in base al tipo di pezzo che sto modificando chiamo la funzione corrispondente
Select Case PartType
Case PartType.Sink
EditSink()
Case PartType.SinkSplitBottom
EditSinkWithSplitBottom()
Case PartType.Panel
EditPanel(nIdPart)
Case PartType.TopKitchen
'EditTopKitchen()
End Select
' aggiorno la lista dei partSolid
SolidManagerM.CreatePartSolid()
' chiudo lo user control
Close()
End Sub
Public Overrides Sub Annulla()
Map.refSceneHostVM.m_nIdPart = GDB_ID.NULL
SceneCmd.DeselectAll()
' chiudo lo user control
Close()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_EDIT_PANEL)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Edit Panel è stato definito come Button anziché ToggleButton")
End If
' rimuovo lo UC dalla griglia
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
SolidManagerM.ManageUndoRedo()
End Sub
Public Function GetPartType()
' controllo se è un lavandino con fondo unico
Dim bIsSink As Boolean = False
EgtGetInfo(m_nIdPart, "Sink", bIsSink)
If bIsSink Then
Return PartType.Sink
End If
' controllo se è un lavandino con fondo splittato
Dim bIsSinkSplitBottom As Boolean = False
EgtGetInfo(m_nIdPart, "SinkSplitBottom", bIsSinkSplitBottom)
If bIsSinkSplitBottom Then
Return PartType.SinkSplitBottom
End If
' sennò è una paretina o un piano cucina
Dim sPair As String = String.Empty
EgtGetInfo(m_nIdPart, "PairMyRef", sPair)
Dim bIsPanel As Boolean = sPair <> String.Empty
If bIsPanel Then
Return PartType.Panel
End If
' altrimenti è un piano cucina
Return PartType.TopKitchen
End Function
Private Sub SetVariablesAndRecreate(nEdgeId As Integer)
If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nEdgeId) Then AssLog("TOOL.nEdgeId = " & nEdgeId.ToString())
Dim nJunctionType = DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx + 1 ' in Lua l'enum è 1-based
If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString())
Dim dTh As Double = DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString())
Dim dH As Double = DirectCast(ParamList(ParamEnum.PANEL_H), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString())
Dim bPrev As Boolean = True
If EgtLuaSetGlobBoolVar("TOOL.bPrev", bPrev) Then AssLog("TOOL.bPrev = true")
Dim bNext As Boolean = True
If EgtLuaSetGlobBoolVar("TOOL.bNext", bNext) Then AssLog("TOOL.bNext = true")
If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()")
End Sub
Private Sub EditPanel(nId)
' recupero le info salvate nel Part
EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nId.ToString() & ")")
' recupero l'id dell'edge che ha generato la paretina
Dim nParent As Integer = GDB_ID.NULL
EgtGetInfo(nId, "Parent", nParent)
Dim nIn As Integer = 0
EgtGetInfo(nId, "nInLoop", nIn)
Dim sLayName As String = "OutLoop"
Dim nLayId As Integer = GDB_ID.NULL
If nIn = 0 Then
nLayId = EgtGetFirstNameInGroup(nParent, sLayName)
Else
sLayName = "InLoop"
nLayId = EgtGetFirstNameInGroup(nParent, sLayName)
Dim nInLays = 1
While nInLays <> nIn
nLayId = EgtGetNextName(nLayId, sLayName)
nInLays += 1
End While
End If
Dim nEdge As Integer = 0
EgtGetInfo(nId, "ParentEdge", nEdge)
Dim sEdgeName As String = "A" & nEdge.ToString()
Dim nEdgeId As Integer = EgtGetFirstNameInGroup(nLayId, sEdgeName)
' setto i parametri che ha scelto l'utente
SetVariablesAndRecreate(nEdgeId)
' se la checkbox per la modifica delle paretine dello stesso tipo, sullo stesso loop, è checkata allora scorro il loop e continuo a chiamare la ricreazione
If DirectCast(ParamList(ParamEnum.EDIT_NEIGH), _CheckBoxParam).IsChecked Then
' scorro i next e prev modificando anche le paretine adiacenti con le stesse modifiche
' facendo attenzione a non entrare in un loop
Dim sCurrPartName As String = String.Empty
EgtGetName(nId, sCurrPartName)
Dim sNamePrev As String = String.Empty
EgtGetInfo(nId, "Prev", sNamePrev)
Dim nLastPrev As Integer = GDB_ID.NULL
While sNamePrev <> String.Empty And sNamePrev <> sCurrPartName
Dim nPrev As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sNamePrev)
' recupero l'edge del parent e ricreo la paretina
EgtGetInfo(nPrev, "ParentEdge", nEdge)
' recupero le info salvate nel Part
EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nPrev.ToString() & ")")
sEdgeName = "A" & nEdge.ToString()
nEdgeId = EgtGetFirstNameInGroup(nLayId, sEdgeName)
SetVariablesAndRecreate(nEdgeId)
EgtGetInfo(nPrev, "Prev", sNamePrev)
nLastPrev = nPrev
End While
Dim sNameNext As String = String.Empty
EgtGetInfo(nId, "Next", sNameNext)
While sNameNext <> String.Empty
Dim nNext As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sNameNext)
' recupero l'edge del parent e ricreo la paretina
If nNext = nLastPrev Then Exit While
' recupero le info salvate nel Part
EgtLuaExecLine("TOOL.FillInfoTableFromPart(" & nNext.ToString() & ")")
EgtGetInfo(nNext, "ParentEdge", nEdge)
sEdgeName = "A" & nEdge.ToString()
nEdgeId = EgtGetFirstNameInGroup(nLayId, sEdgeName)
SetVariablesAndRecreate(nEdgeId)
EgtGetInfo(nNext, "Next", sNameNext)
End While
End If
End Sub
Private Function GetNeighbours(nId As Integer)
Dim NeighList As New List(Of Integer)
If nId = GDB_ID.NULL Then Return NeighList
Dim nNextId As Integer = nId
While nNextId <> GDB_ID.NULL
NeighList.Add(nNextId)
Dim sNextName As String = String.Empty
EgtGetInfo(nNextId, "Next", sNextName)
nNextId = EgtGetFirstNameInGroup(GDB_ID.ROOT, sNextName)
If nNextId = nId Then Exit While
End While
Return NeighList
End Function
Private Sub EditSink()
End Sub
Private Sub EditSplitBottom(PartList As List(Of Integer))
Dim lEdgeList As New List(Of Integer)
For Each nPart As Integer In PartList
Dim nOutLay As Integer = EgtGetFirstNameInGroup(nPart, "OutLoop")
Dim nEdge As Integer = EgtGetFirstNameInGroup(nOutLay, "A3")
lEdgeList.Add(nEdge)
Next
For i As Integer = 1 To lEdgeList.Count
EgtLuaSetGlobIntVar("TOOL.tbIdEdges." & i.ToString(), lEdgeList(i - 1).ToString())
Next
Dim dTh As Double = DirectCast(ParamList(ParamEnum.BOTTOM_TH), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dTh", dTh)
Dim dDiam As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DIAM), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dDiamBore", dDiam)
Dim dDepth As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DEPTH), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dDepth", dDepth)
Dim dPosX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleX", dPosX)
Dim dPosY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleY", dPosY)
Dim dDimX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMX), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleDimX", dDimX)
Dim dDimY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMY), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleDimY", dDimY)
EgtLuaCallFunction("TOOL.CreateSplitBottom")
End Sub
Private Sub EditSinkWithSplitBottom()
' risalgo ai frontalini
Dim bBottom As Boolean = False
EgtGetInfo(nIdPart, "Bottom", bBottom)
Dim nWaterfallId As Integer = nIdPart
If bBottom Then
Dim sInfoPartDest As String = String.Empty
EgtGetInfo(nIdPart, "PairToRef", sInfoPartDest)
Dim sInfoPartDestSplit As Array = sInfoPartDest.Split(","c)
Dim sPartDest As String = sInfoPartDestSplit(0)
nWaterfallId = EgtGetFirstNameInGroup(GDB_ID.ROOT, sPartDest)
End If
' modifico i frontalini
DirectCast(ParamList(ParamEnum.EDIT_NEIGH), _CheckBoxParam).IsChecked = True
EditPanel(nWaterfallId)
' recupero la lista degli id dei frontalini
Dim WaterfallList As List(Of Integer) = GetNeighbours(nWaterfallId)
' modifico i pezzi dello split bottom
EditSplitBottom(WaterfallList)
End Sub
Public Sub SelectPartOrPartsToEdit()
If PartType = PartType.Sink Or PartType = PartType.SinkSplitBottom Then
Dim bBottom As Boolean = False
EgtGetInfo(nIdPart, "Bottom", bBottom)
Dim BottomList As List(Of Integer)
Dim WaterFallList As List(Of Integer)
If bBottom Then
BottomList = GetNeighbours(nIdPart)
Dim nWaterfallId As Integer = GDB_ID.NULL
EgtGetInfo(nIdPart, "Parent", nWaterfallId)
WaterFallList = GetNeighbours(nWaterfallId)
Else
WaterFallList = GetNeighbours(nIdPart)
Dim sBottomName As String = String.Empty
EgtGetInfo(nIdPart, "A3", sBottomName)
Dim nBottomId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sBottomName)
BottomList = GetNeighbours(nBottomId)
End If
For Each nPartId In BottomList
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
PartSolidSel.SelectSinglePart()
Next
For Each nPartId In WaterFallList
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
PartSolidSel.SelectSinglePart()
Next
Else
Dim PartSolidSel As PartSolidM = GetPartSolid(nIdPart)
PartSolidSel.SelectSinglePart()
End If
EgtDraw()
End Sub
#End Region ' Methods
End Class
+300
View File
@@ -0,0 +1,300 @@
Imports EgtUILib
Imports EgtWPFLib5
Public Class EditParametricVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private Enum ParamEnum As Integer
TOP_MSG = 0
CHK_PNT = 1
CHK_LEN = 2
CHK_DIR = 3
End Enum
Private bReadyForLinks As Boolean = False
Private ReadOnly m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_Stage As EditParametricStage = EditParametricStage.SelectPart
Private Property Stage As EditParametricStage
Get
Return m_Stage
End Get
Set(value As EditParametricStage)
m_Stage = value
DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
ChangeTextColor()
End Set
End Property
' id del part selezionato per essere modificato
Private m_nId1 As Integer = GDB_ID.NULL
Public Property nId1 As Integer
Get
Return m_nId1
End Get
Set(value As Integer)
If m_nId1 <> GDB_ID.NULL Then SceneCmd.DeselectAll()
m_nId1 = value
End Set
End Property
' punto selezionato sulla prima linea
Private m_FirstPoint As New Point3d
Public Property FirstPoint As Point3d
Get
Return m_FirstPoint
End Get
Set(value As Point3d)
m_FirstPoint = value
End Set
End Property
' parametro del punto sulla prima linea
Private m_dUFirst As Double
Public Property dUFirst As Double
Get
Return m_dUFirst
End Get
Set(value As Double)
m_dUFirst = value
End Set
End Property
' id del secondo part, a cui voglio vincolare il primo
Private m_nId2 As Integer = GDB_ID.NULL
Public Property nId2 As Integer
Get
Return m_nId2
End Get
Set(value As Integer)
If m_nId2 <> GDB_ID.NULL Then SceneCmd.DeselectAll()
m_nId2 = value
End Set
End Property
' punto selezionato sulla seconda linea
Private m_SecondPoint As New Point3d
Public Property SecondPoint As Point3d
Get
Return m_SecondPoint
End Get
Set(value As Point3d)
m_SecondPoint = value
End Set
End Property
' parametro del punto sulla seconda linea
Private m_dUSecond As Double
Public Property dUSecond As Double
Get
Return m_dUSecond
End Get
Set(value As Double)
m_dUSecond = value
End Set
End Property
' sottocurva sulla prima curva selezionata
Private m_nSubCrv1 As Integer
Public Property nSubCrv1 As Integer
Get
Return m_nSubCrv1
End Get
Set(value As Integer)
m_nSubCrv1 = value
End Set
End Property
' sottocurva sull'ultima curva selezionata
Private m_nSubCrv2 As Integer
Public Property nSubCrv2 As Integer
Get
Return m_nSubCrv2
End Get
Set(value As Integer)
m_nSubCrv2 = value
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg_Stg0 As String
Get
Return EgtMsg(110040) ' Seleziona l'oggetto di cui vuoi modificare il vincolo
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg1 As String
Get
Return EgtMsg(110041) ' Seleziona l'oggetto a cui vuoi vincolare il precedente
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg2 As String
Get
Return EgtMsg(110042) '
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = "Modifica Contorno Pezzo".ToUpper()
Dim Dir_Vein3D As String = String.Empty
Dim Path_Parametric As String = String.Empty
' carico il file LUA con tutte le funzioni di gestione parametrico
GetMainPrivateProfileString(K_VEIND3D, VEIND3D_DIR, "", Dir_Vein3D)
' Path del lua da utilizzare
GetMainPrivateProfileString(K_VEIND3D, "Parametric2D", "", Path_Parametric)
' avvio il file OperationOnSolid.lua
Dim sLuaPath As String = Dir_Vein3D & Path_Parametric
EgtLuaExecFile(sLuaPath)
LoadParamList()
Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE
EgtSetView(VT.TOP)
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(0), ParamType.STR, Visibility.Visible))
' checkbox
AddGenericParam(New _CheckBoxParam("Vincolo Punto", "Punto Start Vincolato", Visibility.Visible))
AddGenericParam(New _CheckBoxParam("Vincolo Lunghezza", "Lunghezza Vincolata", Visibility.Visible))
AddGenericParam(New _CheckBoxParam("Vincolo Direzione", "Direzione Vincolata", Visibility.Visible))
End Sub
Public Overrides Sub Conferma()
' Eseguo la giunzione di due pezzi
LinksEnt()
' Unisco in una compo
EgtLuaExecLine("PAR.JointLine()")
' chiudo lo user control
Close()
End Sub
Public Overrides Sub Annulla()
' Ripristino il primo stato
UndoLinksEnt()
' chiudo lo user control
Close()
End Sub
Public Overrides Sub ShowPreview()
LinksEnt()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_EDIT_PARAMETRIC)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Edit Panel è stato definito come Button anziché ToggleButton")
End If
' rimuovo lo UC dalla griglia
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditParametricUC)
SolidManagerM.ManageUndoRedo()
' resetto la tabella globale del parametric
EgtLuaResetGlobVar("PAR")
End Sub
Private Sub LinksEnt()
' Unisco le due entità ricevute
If bReadyForLinks Then
EgtLuaExecLine("PAR.LinksLine()")
Else
EgtOutLog("Errore nella definizione dei pezzi da unire")
End If
End Sub
Private Sub UndoLinksEnt()
' Riposiziono prima entità
EgtLuaExecLine("PAR.UndoLinksLine()")
End Sub
Private Sub ResetEnt()
' Ripulisco la tabelle e il disegno
EgtLuaExecLine("PAR.Reset()")
End Sub
Public Sub ShowFirstCurrPoint()
' Info primo punto
EgtLuaSetGlobIntVar("PAR.nId1", m_nId1)
EgtLuaSetGlobPointVar("PAR.Pt1", m_FirstPoint)
EgtLuaSetGlobNumVar("PAR.dU1", m_dUFirst)
EgtLuaSetGlobNumVar("PAR.nSubCrv1", m_nSubCrv1)
' Disegno l'entità selezionata
bReadyForLinks = EgtLuaExecLine("PAR.DrawFirstPoint()")
End Sub
Public Sub ShowSecondCurrPoint()
' Info secondo punto
EgtLuaSetGlobIntVar("PAR.nId2", m_nId2)
EgtLuaSetGlobPointVar("PAR.Pt2", m_SecondPoint)
EgtLuaSetGlobNumVar("PAR.dU2", m_dUSecond)
EgtLuaSetGlobNumVar("PAR.nSubCrv2", m_nSubCrv2)
' Disegno l'entità selezionata
bReadyForLinks = bReadyForLinks And EgtLuaExecLine("PAR.DrawSecondPoint()")
End Sub
Private Sub ConstraintLenght()
' Lunghezza segmento
EgtLuaSetGlobNumVar("PAR.Len", 450.25)
' Fisso la lunghezza del segmento
EgtLuaExecLine("PAR.LinearDimension()")
' Rappresento la quotatura
EgtLuaExecLine("PAR.DrawLinearDimension()")
End Sub
Private Sub ConstraintDirection()
' Lunghezza segmento
EgtLuaSetGlobNumVar("PAR.Ang", 45.5)
' Fisso la lunghezza del segmento
EgtLuaExecLine("PAR.AngularDimension()")
' Rappresento la quotatura
EgtLuaExecLine("PAR.DrawAngularDimension()")
End Sub
#End Region ' Methods
#Region "EVENTS"
Public Overrides Sub OnCheckboxCheckedChanged(sender As Object, checkedState As Boolean)
Dim CheckBox As _CheckBoxParam = DirectCast(sender, _CheckBoxParam)
Select Case CheckBox.Name
Case "Vincolo Punto"
'LinksEnt()
Case "Vincolo Lunghezza"
ConstraintLenght()
Reset()
Case "Vincolo Direzione"
ConstraintDirection()
End Select
End Sub
Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
End Sub
#End Region ' Events
End Class
+480
View File
@@ -0,0 +1,480 @@
Imports EgtUILib.EgtInterface
Public Class NewPanelVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private Enum ParamEnum
MSG_ISTRUZ = 0
TY_PANEL = 1
PARAG_PANEL = 2
PANEL_H = 3
PANEL_TH = 4
PANEL_J = 5
PARAG_BOTTOM = 6
BOTTOM_H = 7
BOTTOM_TH = 8
BOTTOM_DEPTH = 9
BOTTOM_HOLE_X = 10
BOTTOM_HOLE_Y = 11
BOTTOM_HOLE_TYPE = 12
BOTTOM_DIAM = 13
BOTTOM_HOLE_DIMX = 14
BOTTOM_HOLE_DIMY = 15
BOTTOM_ALPHA = 16
End Enum
Private ReadOnly m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_Stage As NewPanelStage = NewPanelStage.InsertParam
Private Property Stage As NewPanelStage
Get
Return m_Stage
End Get
Set(value As NewPanelStage)
m_Stage = value
DirectCast(ParamList(ParamEnum.MSG_ISTRUZ), _TextBlockParam).MsgValue = MsgList(m_Stage)
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg_Stg0 As String
Get
Return EgtMsg(110030) ' Clicca sull'edge di un pezzo per aggiungere una paretina del tipo selezionato
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg1 As String
Get
Return EgtMsg(110038) ' frontalino
End Get
End Property
Public ReadOnly Property TopBar_Msg_Stg2 As String
Get
Return EgtMsg(110039) ' fondo
End Get
End Property
Public ReadOnly Property TopBar_Msg_Bottom As String
Get
Return EgtMsg(110043) ' seleziona le paretine che fanno da contorno al fondo che vuoi creare
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = "Aggiungi Paretina".ToUpper()
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Annulla.Visibility = Visibility.Hidden
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden
LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(0), ParamType.STR, Visibility.Visible))
Dim PanelType As New List(Of ParamCmBx)({New ParamCmBx(EGT_SPLASHTOP), New ParamCmBx(EGT_WATERFALL), New ParamCmBx(EGT_SPLITBOTTOM),
New ParamCmBx(EGT_SINK_SPLITBOTTOM), New ParamCmBx(EGT_SINK), New ParamCmBx(EGT_BOTTOM)})
AddGenericParam(New _ComboBoxParam("TipoParetina", PanelType, 0, Visibility.Visible))
' sezione paretina
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(1), ParamType.STR, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Altezza", 100, ParamType.LEN, Visibility.Visible))
AddGenericParam(New _TextBoxParam("Spessore", 10, ParamType.LEN, Visibility.Visible))
Dim JunctionType As New List(Of ParamCmBx)({New ParamCmBx("Trim Start"), New ParamCmBx("Trim End"), New ParamCmBx("Trim Angled")})
AddGenericParam(New _ComboBoxParam("TipoGiunzione", JunctionType, 0, Visibility.Visible))
' sezione fondello
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(2), ParamType.STR, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Altezza", 100, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Spessore", 10, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Profondità", 1, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Posizione X foro", 50, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Posizione Y foro", 50, ParamType.LEN, Visibility.Collapsed))
Dim HoleType As New List(Of ParamCmBx)({New ParamCmBx("Fessura"), New ParamCmBx("Foro")})
AddGenericParam(New _ComboBoxParam("TipoBuco", HoleType, 0, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Diametro foro", 30, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Dimensione X foro", 25, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Dimensione Y foro", 25, ParamType.LEN, Visibility.Collapsed))
AddGenericParam(New _TextBoxParam("Inclinazione", 2, ParamType.DOUB, Visibility.Collapsed))
End Sub
Public Sub AdvanceStage()
Stage += 1
End Sub
Public Function AtStage()
Return Stage
End Function
Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
' quando viene selezionato lo split bottom devo mostrare le opzioni per il fondello
If DirectCast(sender, _ComboBoxParam).Name = "TipoParetina" Then
Dim sType As String = DirectCast(Selection, ParamCmBx).Name
If sType = EGT_SPLITBOTTOM Then
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible
Map.refSceneHostVM.m_SelType = GDB_TY.SRF_MESH
ElseIf sType = EGT_SINK_SPLITBOTTOM Then
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 0
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible
Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE
ElseIf sType = EGT_SINK Then
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE
ElseIf sType = EGT_SPLASHTOP Or sType = EGT_WATERFALL Then
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Hidden
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Visible
If DirectCast(Selection, ParamCmBx).Name = EGT_SPLASHTOP Then
DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 0
ElseIf DirectCast(Selection, ParamCmBx).Name = EGT_WATERFALL Then
DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2
End If
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
Map.refSceneHostVM.m_SelType = GDB_TY.CRV_LINE
ElseIf sType = EGT_BOTTOM Then
DirectCast(Map.refSceneButtonVM.m_NewPanelUC, SceneUserControlV).Preview.Visibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.MSG_ISTRUZ), _TextBlockParam).MsgValue = TopBar_Msg_Bottom
ParamList(ParamEnum.PARAG_PANEL).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_H).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_TH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PANEL_J).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.PARAG_BOTTOM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_H).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_TH).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DEPTH).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_TYPE).nVisibility = Visibility.Visible
DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_TYPE), _ComboBoxParam).IndexSelParamCmBx = 1
ParamList(ParamEnum.BOTTOM_HOLE_X).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_Y).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
Map.refSceneHostVM.m_SelType = GDB_TY.SRF_MESH
End If
End If
If DirectCast(sender, _ComboBoxParam).Name = "TipoBuco" Then
Dim sType As String = DirectCast(Selection, ParamCmBx).Name
If sType = EGT_SLOT Then
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Visible
ElseIf sType = EGT_BORE Then
ParamList(ParamEnum.BOTTOM_DIAM).nVisibility = Visibility.Visible
ParamList(ParamEnum.BOTTOM_HOLE_DIMX).nVisibility = Visibility.Collapsed
ParamList(ParamEnum.BOTTOM_HOLE_DIMY).nVisibility = Visibility.Collapsed
End If
End If
End Sub
Public Overrides Sub Conferma()
''debug
'DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx = 2
'AddWaterfallAndSplitBottom(105)
''debug
' se sono in modalità fondello allora devo creare il pezzo
Dim sType As String = DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam).SelParamCmBx.Name
If sType = EGT_SPLITBOTTOM Then
AddSplitBottom(Map.refSceneHostVM.m_PanelPartList)
ElseIf sType = EGT_BOTTOM Then
AddBottom(Map.refSceneHostVM.m_PanelPartList)
End If
' resetto la lista dei part selezionati per la creazione di uno splitBottom
Map.refSceneHostVM.m_PanelPartList.Clear()
' resetto il tipo di elementi da evidenziare
Map.refSceneHostVM.m_SelType = GDB_TY.NONE
' chiudo lo user control
Close()
End Sub
Public Overrides Sub ShowPreview()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ADD_PANEL)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Panel è stato definito come Button anziché ToggleButton")
End If
' ricostruisco l'elenco dei part solid
SolidManagerM.CreatePartSolid()
' rimuovo lo UC dalla griglia
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
' gestisco le attivazioni di undo/redo
SolidManagerM.ManageUndoRedo()
End Sub
Public Sub AddPanel(nId As Integer)
Dim ComboBoxParam As _ComboBoxParam = DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam)
If ComboBoxParam.SelParamCmBx.Name = EGT_SPLASHTOP Then
AddSplashTop(nId)
ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_WATERFALL Then
AddWaterfall(nId)
ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_SINK Then
AddWaterfallAndBottom(nId)
ElseIf ComboBoxParam.SelParamCmBx.Name = EGT_SINK_SPLITBOTTOM Then
AddWaterfallAndSplitBottom(nId)
End If
End Sub
Public Function GetPanelType()
Return DirectCast(ParamList(ParamEnum.TY_PANEL), _ComboBoxParam).SelParamCmBx.Name
End Function
Private Sub AddSplashTop(nId As Integer)
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
' setto l'indice del lato e il parent
If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nId) Then AssLog("TOOL.nEdgeId = " & nId.ToString())
If EgtLuaSetGlobIntVar("TOOL.nParent", nPartId) Then AssLog("TOOL.nParent = " & nPartId.ToString())
' setto le variabili per l'alzatina
Dim dAngAlzatina As Double = 90
If EgtLuaSetGlobNumVar("TOOL.dPairAng", dAngAlzatina) Then AssLog("TOOL.dPairAng = " & dAngAlzatina.ToString())
Dim nJunctionType As Integer = DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx + 1
If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString())
Dim bOnLoop As Boolean = False
If EgtLuaSetGlobBoolVar("TOOL.bOnLoop", bOnLoop) Then AssLog("TOOL.bOnLoop = false")
Dim bInsideLoop As Boolean = True
If EgtLuaSetGlobBoolVar("TOOL.bInsideLoop", bInsideLoop) Then AssLog("TOOL.bInsideLoop = true")
' setto le varibili generiche per il pezzo
Dim dTh As Double = DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString())
Dim dH As Double = DirectCast(ParamList(3), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString())
If EgtLuaSetGlobBoolVar("TOOL.bPrev", True) Then AssLog("TOOL.bPrev = true")
If EgtLuaSetGlobBoolVar("TOOL.bNext", True) Then AssLog("TOOL.bNext = true")
' chiamo la funzione per la creazione
If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()")
End Sub
Private Sub AddWaterfall(nId As Integer, Optional sInfoKey As String = "", Optional sInfoValue As String = "")
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
' setto l'indice del lato e il parent
If EgtLuaSetGlobIntVar("TOOL.nEdgeId", nId) Then AssLog("TOOL.nEdgeId = " & nId.ToString())
If EgtLuaSetGlobIntVar("TOOL.nParent", nPartId) Then AssLog("TOOL.nParent = " & nPartId.ToString())
' setto le variabili per il frontalino
Dim dAngFrontalino As Double = -90
If EgtLuaSetGlobNumVar("TOOL.dPairAng", dAngFrontalino) Then AssLog("TOOL.dPairAng = " & dAngFrontalino.ToString())
Dim nJunctionType As Integer = DirectCast(ParamList(ParamEnum.PANEL_J), _ComboBoxParam).IndexSelParamCmBx + 1
If EgtLuaSetGlobIntVar("TOOL.nJunctionType", nJunctionType) Then AssLog("TOOL.nJunctionType = " & nJunctionType.ToString())
Dim bOnLoop As Boolean = True
If EgtLuaSetGlobBoolVar("TOOL.bOnLoop", bOnLoop) Then AssLog("TOOL.bOnLoop = false")
Dim bInsideLoop As Boolean = True
If EgtLuaSetGlobBoolVar("TOOL.bInsideLoop", bInsideLoop) Then AssLog("TOOL.bInsideLoop = true")
' setto le varibili generiche per il pezzo
Dim dTh As Double = DirectCast(ParamList(ParamEnum.PANEL_TH), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dTh", dTh) Then AssLog("TOOL.dTh = " & dTh.ToString())
Dim dH As Double = DirectCast(ParamList(3), _TextBoxParam).GetValue()
If EgtLuaSetGlobNumVar("TOOL.dH", dH) Then AssLog("TOOL.dH = " & dH.ToString())
If EgtLuaSetGlobBoolVar("TOOL.bPrev", True) Then AssLog("TOOL.bPrev = true")
If EgtLuaSetGlobBoolVar("TOOL.bNext", True) Then AssLog("TOOL.bNext = true")
' se presente setto l'info addizionale
If sInfoKey <> String.Empty Then
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey)
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.sInfoValue = " & sInfoValue)
End If
' chiamo la funzione per la creazione
If EgtLuaCallFunction("TOOL.CreateParetinaFull") Then AssLog("TOOL.CreateParetinaFull()")
End Sub
Private Sub AddSplitBottom(PartList As List(Of Integer), Optional sInfoKey As String = "", Optional sInfoValue As String = "")
If PartList.Count = 0 Then
Close()
Return
End If
Dim lEdgeList As New List(Of Integer)
For Each nPart As Integer In PartList
Dim nOutLay As Integer = EgtGetFirstNameInGroup(nPart, "OutLoop")
Dim nEdge As Integer = EgtGetFirstNameInGroup(nOutLay, "A3")
lEdgeList.Add(nEdge)
Next
For i As Integer = 1 To lEdgeList.Count
EgtLuaSetGlobIntVar("TOOL.tbIdEdges." & i.ToString(), lEdgeList(i - 1).ToString())
Next
Dim dTh As Double = DirectCast(ParamList(ParamEnum.BOTTOM_TH), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dTh", dTh)
Dim dDepth As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DEPTH), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dDepth", dDepth)
Dim dPosX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleX", dPosX)
Dim dPosY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleY", dPosY)
Dim dDimX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMX), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleDimX", dDimX)
Dim dDimY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_DIMY), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dHoleDimY", dDimY)
' se presente setto l'info addizionale
If sInfoKey <> String.Empty Then
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey)
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.InfoValue = " & sInfoValue)
End If
EgtLuaCallFunction("TOOL.CreateSplitBottom")
End Sub
Private Sub AddBottom(PartList As List(Of Integer), Optional sInfoKey As String = "", Optional sInfoValue As String = "")
If PartList.Count = 0 Then
Close()
Return
End If
Dim lEdgeList As New List(Of Integer)
For Each nPart As Integer In PartList
Dim nOutLay As Integer = EgtGetFirstNameInGroup(nPart, "OutLoop")
Dim nEdge As Integer = EgtGetFirstNameInGroup(nOutLay, "A3")
lEdgeList.Add(nEdge)
Next
For i As Integer = 1 To lEdgeList.Count
EgtLuaSetGlobIntVar("TOOL.tbIdEdges." & i.ToString(), lEdgeList(i - 1).ToString())
Next
Dim dTh As Double = DirectCast(ParamList(ParamEnum.BOTTOM_TH), _TextBoxParam).GetValue()
EgtLuaSetGlobNumVar("TOOL.dTh", dTh)
Dim dDiam As Double = DirectCast(ParamList(ParamEnum.BOTTOM_DIAM), _TextBoxParam).GetValue()
If dDiam < 1 Then dDiam = 30
EgtLuaSetGlobNumVar("TOOL.dDiamBore", dDiam)
Dim dX As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_X), _TextBoxParam).GetValue()
If dX < dDiam Then dX = dDiam + 10
EgtLuaSetGlobNumVar("TOOL.dHoleX", dX)
Dim dY As Double = DirectCast(ParamList(ParamEnum.BOTTOM_HOLE_Y), _TextBoxParam).GetValue()
If dY < dDiam Then dY = dDiam + 10
EgtLuaSetGlobNumVar("TOOL.dHoleY", dY)
' se presente setto l'info addizionale
If sInfoKey <> String.Empty Then
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoKey", sInfoKey) Then AssLog("TOOL.InfoKey = " & sInfoKey)
If EgtLuaSetGlobStringVar("TOOL.tbInfo.InfoValue", sInfoValue) Then AssLog("TOOL.InfoKey = " & sInfoValue)
End If
EgtLuaCallFunction("TOOL.CreateBottom")
End Sub
Private Sub AddWaterfallAndBottom(nId)
End Sub
Private Sub AddWaterfallAndSplitBottom(nId As Integer)
Dim nInLoopLay As Integer = EgtGetParent(nId)
Dim nEdges As Integer = EgtGetGroupObjs(nInLoopLay)
Dim nEdge As Integer = EgtGetFirstInGroup(nInLoopLay)
While nEdge <> GDB_ID.NULL
AddWaterfall(nEdge, "SinkSplitBottom", "1")
nEdge = EgtGetNext(nEdge)
End While
' recupero le info dei part creati come frontalini dalle info del Parent
Dim nParent As Integer = EgtGetParent(nInLoopLay)
' scopro la posizione ordinale dell'inloop in questione
Dim nIn As Integer = 1
Dim nInLoop As Integer = EgtGetFirstNameInGroup(nParent, "InLoop")
While nInLoop <> nInLoopLay
nIn += 1
nInLoop = EgtGetNextName(nInLoop, "InLoop")
End While
Dim WaterFallList As New List(Of Integer)
For i As Integer = 1 To nEdges
Dim sInfoName As String = "A" & i.ToString() & "_I" & nIn.ToString()
Dim sPartName As String = String.Empty
EgtGetInfo(nParent, sInfoName, sPartName)
Dim PanelList As Array = sPartName.Split(","c)
For Each sChild As String In PanelList
Dim dPairAng As Double = 0
Dim nPartId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, sChild)
EgtGetInfo(nPartId, "PairAng", dPairAng)
If dPairAng < 0 Then
sPartName = sChild
Exit For
End If
Next
WaterFallList.Add(EgtGetFirstNameInGroup(GDB_ID.ROOT, sPartName))
Next
' ora che ho la lista dei frontalini posso creare lo split bottom
AddSplitBottom(WaterFallList, "SinkSplitBottom", "1")
End Sub
#End Region ' Methods
End Class
+3
View File
@@ -0,0 +1,3 @@
Module PanelManagerM
End Module
+26
View File
@@ -0,0 +1,26 @@
<WrapPanel x:Class="ProjManagerButtonV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Orientation="Horizontal">
<Button ToolTip="{Binding NewFile_Msg}"
Command="{Binding NewFileCmd}"
Style="{StaticResource Proj_Btn}">
<Image Source="/Resources/ProjManager/newfile.png"
Style="{StaticResource Proj_Img}"/>
</Button>
<Button ToolTip="{Binding OpenFile_Msg}"
Command="{Binding OpenFileCmd}"
Style="{StaticResource Proj_Btn}">
<Image Source="/Resources/ProjManager/folder.png"
Style="{StaticResource Proj_Img}"/>
</Button>
<Button ToolTip="{Binding Save_Msg}"
Command="{Binding SaveFileCmd}"
Style="{StaticResource Proj_Btn}">
<Image Source="/Resources/ProjManager/save.png"
Style="{StaticResource Proj_Img}"/>
</Button>
</WrapPanel>
+3
View File
@@ -0,0 +1,3 @@
Public Class ProjManagerButtonV
End Class
+20
View File
@@ -0,0 +1,20 @@
<StackPanel x:Class="ProjManagerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
Style="{StaticResource SceneButtonH_StackPanel}">
<EgtStone3D:ProjManagerButtonV DataContext="{StaticResource ProjManagerVM}"/>
<RadioButton Content="{Binding HomeTab_Msg}"
Command="{Binding HomeCmd}"
Style="{StaticResource Home_ToggleButton}"/>
<RadioButton Content="{Binding Parametrico_Msg}"
Command="{Binding ParametricoCmd}"
Style="{StaticResource Parametrico_ToggleButton}"/>
<RadioButton Content="{Binding Office_Msg}"
Command="{Binding OfficeCmd}"
Style="{StaticResource Office_ToggleButton}"/>
</StackPanel>
+3
View File
@@ -0,0 +1,3 @@
Public Class ProjManagerV
End Class
+193
View File
@@ -0,0 +1,193 @@
Imports EgtWPFLib5
Imports EgtUILib
Public Class ProjManagerVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
#Region "Messages"
Public ReadOnly Property HomeTab_Msg
Get
Return EgtMsg(110010).ToUpper() ' Home
End Get
End Property
Public ReadOnly Property Parametrico_Msg
Get
Return EgtMsg(110011).ToUpper() ' Parametrico
End Get
End Property
Public ReadOnly Property NewFile_Msg
Get
Return EgtMsg(110012) ' Nuovo File
End Get
End Property
Public ReadOnly Property OpenFile_Msg
Get
Return EgtMsg(110015) ' Apri
End Get
End Property
Public ReadOnly Property Save_Msg
Get
Return EgtMsg(110013) ' Salva
End Get
End Property
Public ReadOnly Property Office_Msg
Get
Return EgtMsg(110036).ToUpper() ' Office
End Get
End Property
#End Region ' Messages
' Definizione Comandi
Private m_HomeCmd As ICommand
Private m_ParametricoCmd As ICommand
Private m_OfficeCmd As ICommand
Private m_NewFileCmd As ICommand
Private m_OpenFileCmd As ICommand
Private m_SaveFileCmd As ICommand
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
Map.SetRefProjManagerVM(Me)
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Sub Save()
Map.refSceneHostVM.SaveProject()
End Sub
''' <summary>
''' Funzione che aggiorna i messaggi del Manager
''' </summary>
Friend Sub UpdateMessageProjManager()
NotifyPropertyChanged(NameOf(HomeTab_Msg))
NotifyPropertyChanged(NameOf(Parametrico_Msg))
NotifyPropertyChanged(NameOf(NewFile_Msg))
NotifyPropertyChanged(NameOf(OpenFile_Msg))
NotifyPropertyChanged(NameOf(Save_Msg))
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "HomeCmd"
Public ReadOnly Property HomeCmd As ICommand
Get
If IsNothing(m_HomeCmd) Then
m_HomeCmd = New Command(AddressOf Home)
End If
Return m_HomeCmd
End Get
End Property
Private Sub Home()
Map.refTopPanelVM.SetSelTopOption(TopPanelVM.TopOption.OPTIONS)
End Sub
#End Region ' HomeCmd
#Region "ParametricoCmd"
Public ReadOnly Property ParametricoCmd As ICommand
Get
If IsNothing(m_ParametricoCmd) Then
m_ParametricoCmd = New Command(AddressOf Parametrico)
End If
Return m_ParametricoCmd
End Get
End Property
Private Sub Parametrico()
Map.refTopPanelVM.SetSelTopOption(TopPanelVM.TopOption.PARAMETRICO)
End Sub
#End Region ' ParametricoCmd
#Region "OfficeCmd"
Public ReadOnly Property OfficeCmd As ICommand
Get
If IsNothing(m_OfficeCmd) Then
m_OfficeCmd = New Command(AddressOf Office)
End If
Return m_OfficeCmd
End Get
End Property
Private Sub Office()
Map.refTopPanelVM.SetSelTopOption(TopPanelVM.TopOption.OFFICE)
End Sub
#End Region ' OfficeCmd
#Region "NewFileCmd"
Public ReadOnly Property NewFileCmd As ICommand
Get
If IsNothing(m_NewFileCmd) Then
m_NewFileCmd = New Command(AddressOf NewFile)
End If
Return m_NewFileCmd
End Get
End Property
Friend Sub NewFile()
Map.refTopPanelVM.NewProject(True)
SolidManagerM.CreatePartSolid()
End Sub
#End Region ' NewFileCmd
#Region "OpenFileCmd"
Public ReadOnly Property OpenFileCmd As ICommand
Get
If IsNothing(m_OpenFileCmd) Then
m_OpenFileCmd = New Command(AddressOf OpenFile)
End If
Return m_OpenFileCmd
End Get
End Property
Friend Sub OpenFile()
Map.refTopPanelVM.OpenProject("")
End Sub
#End Region ' OpenFileCmd
#Region "SaveFileCmd"
Public ReadOnly Property SaveFileCmd As ICommand
Get
If IsNothing(m_SaveFileCmd) Then
m_SaveFileCmd = New Command(AddressOf SaveFile)
End If
Return m_SaveFileCmd
End Get
End Property
Private Sub SaveFile()
Save()
End Sub
#End Region ' SaveFileCmd
#End Region ' Commands
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

+207
View File
@@ -0,0 +1,207 @@
Imports EgtUILib
Public Class RotateVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
Private m_MsgList As New List(Of String)({TopBar_Msg0, TopBar_Msg1, TopBar_Msg2})
Public ReadOnly Property MsgList As List(Of String)
Get
Return m_MsgList
End Get
End Property
Private m_bAxisSelected As Boolean = False
Public Property bAxisSelected As Boolean
Get
Return m_bAxisSelected
End Get
Set(value As Boolean)
m_bAxisSelected = value
If m_bAxisSelected Then AdvanceStage()
End Set
End Property
Private m_Stage As RotateStage = RotateStage.SelectPart
Private Property Stage As RotateStage
Get
Return m_Stage
End Get
Set(value As RotateStage)
m_Stage = value
DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
If m_Stage = RotateStage.SelectAxis Then ShowAxis()
If m_Stage = RotateStage.InsertAngle Then DirectCast(ParamList(1), _TextBoxParam).IsEnabled = True
ChangeTextColor()
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg0 As String
Get
Return EgtMsg(110024) ' Seleziona il pezzo da ruotare
End Get
End Property
Public ReadOnly Property TopBar_Msg1 As String
Get
Return EgtMsg(110005) ' Seleziona l'asse di rotazione
End Get
End Property
Public ReadOnly Property TopBar_Msg2 As String
Get
Return EgtMsg(110022) ' Inserisci l'angolo di rotazione
End Get
End Property
Public ReadOnly Property Testo_Msg As String
Get
Return EgtMsg(110006) ' Angolo
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Public Sub New()
MyBase.New()
Title = EGT_ROTATE.ToUpper()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia
Map.refSceneHostVM.m_nTransfNum = 0
' setto le variabili di salvataggio per le operazioni temporanee
Dim bSave As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = True
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
LoadParamList()
Stage = If(Map.refSceneHostVM.m_nIdPart = GDB_ID.NULL, RotateStage.SelectPart, RotateStage.SelectAxis)
ActivateButton()
RemoveAllUC()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(Stage), ParamType.STR))
' Angolo
AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, ParamType.DOUB, Visibility.Visible, False))
End Sub
Public Sub AdvanceStage()
Stage += 1
End Sub
Public Function AtStage()
Return Stage
End Function
Private Sub ShowAxis()
Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostVM.m_nIdPart)
If IsNothing(PartSolidSel) Then Return
PartSolidSel.ShowAxis()
End Sub
Public Overrides Sub Conferma()
If Not Map.refSceneHostVM.m_bRotated Then AngText_Changed()
Close()
End Sub
Public Overrides Sub ShowPreview()
AngText_Changed()
End Sub
Public Overrides Sub Annulla()
' faccio il reset del rotate
If Map.refSceneHostVM.m_bRotated Then
SolidManagerM.ResetRotation(True, True)
End If
Close()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ROTATE)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Rotate è stato definito come Button anziché ToggleButton")
End If
' setto le variabili di salvataggio per le operazioni temporanee
Dim bSave As Boolean = True
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
Map.refSceneHostVM.m_bRotated = False
Map.refSceneHostVM.m_dAngRot = 0
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_RotateUC)
SolidManagerM.ManageUndoRedo()
End Sub
Public Sub AngText_Changed()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ROTATE)
If TypeOf (Btn) Is _ToggleButton Then
If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
Else
EgtOutLog("CONFIG ERR: Il pulsante di Rotate è stato definito come Button anziché ToggleButton")
Return
End If
Dim nId As Integer = Map.refSceneHostVM.m_nIdPart
If nId = GDB_ID.NULL Then Return
Dim sAng As String = DirectCast(ParamList(1), _TextBoxParam).sValue
If String.IsNullOrEmpty(sAng) Then Return
If Not IsNumeric(sAng) Then Return
Dim dAng As Double = CDbl(sAng)
If dAng <> 0 Then
If Map.refSceneHostVM.m_dAngRot <> 0 Then
ResetRotation(False, False)
End If
Dim PartSolidIdSel = SolidManagerM.GetPartSolid(nId)
Dim vtDir As Vector3d
Dim ptStart As Point3d
If PartSolidIdSel.nIdLineAxisRotate = GDB_ID.NULL Then Return
EgtStartPoint(PartSolidIdSel.nIdLineAxisRotate, GDB_ID.ROOT, ptStart)
EgtStartVector(PartSolidIdSel.nIdLineAxisRotate, GDB_ID.ROOT, vtDir)
SolidManagerM.Rotate(nId, ptStart, vtDir, dAng, False, True)
Map.refSceneHostVM.m_bRotated = True
Map.refSceneHostVM.m_dAngRot = dAng
End If
EgtDraw()
End Sub
Private Sub ActivateButton()
' Attivo pulsante Rotate
DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton).IsChecked = True
' Disattivo pulsante Pair
DirectCast(Map.refSceneButtonVM.GetButton(EGT_PAIR), _ToggleButton).IsChecked = False
' Disattivo pulsante Move
DirectCast(Map.refSceneButtonVM.GetButton(EGT_MOVE), _ToggleButton).IsChecked = False
End Sub
Private Sub RemoveAllUC()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_AngleUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditParametricUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ExtremityUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_LengthUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_MoveUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_PairUC)
End Sub
#End Region ' Methods
End Class
+13
View File
@@ -0,0 +1,13 @@
<Viewbox x:Class="SVGV"
Name="ViewBoxPark"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<ContentPresenter Content="{Binding LocalMyCanvas.CurrCanvas}"
Visibility="{Binding SVG_Visibility}"/>
<Image Source="{Binding Img}"
Visibility="{Binding Img_Visibility}"/>
</StackPanel>
</Viewbox>
+53
View File
@@ -0,0 +1,53 @@
Public Class SVGV
#Region "FIELDS & PROPERTIES"
Private m_SVGVM As SVGVM
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
AddHandler Me.Loaded, AddressOf SVGV_Loaded
End Sub
#End Region ' Constructor
#Region "EVENTS"
Private Sub SVGV_Loaded()
If System.IO.File.Exists(FileSource) Then
m_SVGVM = New SVGVM(FileSource)
Me.DataContext = m_SVGVM
End If
End Sub
#End Region ' Events
#Region "PROPERTIES"
Public Shared ReadOnly FileSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached(
NameOf(FileSource),
GetType(String),
GetType(SVGV),
New FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.Inherits))
' Declare public property.
Public Property FileSource As String
Get
Return CStr(GetValue(FileSourceProperty))
End Get
Set(value As String)
SetValue(FileSourceProperty, value)
End Set
End Property
#End Region ' Properties
End Class
+440
View File
@@ -0,0 +1,440 @@
Imports System.Globalization
Imports System.Xml
Public Class SVGVM
#Region "FIELDS & PROPERTIES"
Private m_Img As String = String.Empty
Public Property Img As String
Get
Return m_Img
End Get
Set(value As String)
m_Img = value
End Set
End Property
Private m_Svg As String = String.Empty
Public ReadOnly Property Svg As String
Get
Return m_Svg
End Get
End Property
Private m_LocalMyCanvas As MyCanvas
Public ReadOnly Property LocalMyCanvas As MyCanvas
Get
Return m_LocalMyCanvas
End Get
End Property
Private m_SVG_Visibility As Visibility = Visibility.Collapsed
Public Property SVG_Visibility As Visibility
Get
Return m_SVG_Visibility
End Get
Set(value As Visibility)
m_SVG_Visibility = value
End Set
End Property
Private m_Img_Visibility As Visibility = Visibility.Collapsed
Public Property Img_Visibility As Visibility
Get
Return m_Img_Visibility
End Get
Set(value As Visibility)
m_Img_Visibility = value
End Set
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(SVG_File As String)
' Verifico estensione
If System.IO.Path.GetExtension(SVG_File) = ".png" Then
m_Img = SVG_File
m_Svg = ""
m_Img_Visibility = Visibility.Visible
Else
m_Svg = SVG_File
m_Img = ""
m_SVG_Visibility = Visibility.Visible
End If
Dim CanvWidth As Integer = 145
Dim CanvHeight As Integer = CInt(CanvWidth / 1.4)
m_LocalMyCanvas = New MyCanvas(CanvWidth, CanvHeight)
If System.IO.File.Exists(m_Svg) Then
ReadMyXML(m_Svg, m_LocalMyCanvas)
End If
End Sub
#End Region ' Constructor
End Class
#Region "ELEMENTI PER LA GESTIONE SVG"
Public Class MyCanvas
#Region "FIELDS & PROPERTIES"
Private m_CurrCanvas As New Canvas
Public Property CurrCanvas As Canvas
Get
Return m_CurrCanvas
End Get
Set(value As Canvas)
m_CurrCanvas = value
End Set
End Property
Private m_ListPath As New List(Of MyPath)
Public Property ListPath As List(Of MyPath)
Get
Return m_ListPath
End Get
Set(value As List(Of MyPath))
m_ListPath = value
End Set
End Property
Private m_ViewBoxDim As String
Public Property ViewBoxDim As String
Get
Return m_ViewBoxDim
End Get
Set(value As String)
m_ViewBoxDim = value
End Set
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(Width As Integer, Height As Integer)
m_CurrCanvas.Width = Width
m_CurrCanvas.Height = Height
m_CurrCanvas.ClipToBounds = True
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Sub LoadCanvas()
For Each ItemPath As MyPath In m_ListPath
m_CurrCanvas.Children.Add(ItemPath.CurrPath)
Next
End Sub
Public Sub UpdateMyPath(CurrPath As MyPath)
m_CurrCanvas.Children.Remove(CurrPath.CurrPath)
m_CurrCanvas.Children.Add(CurrPath.CurrPath)
End Sub
#End Region ' Methods
End Class
Public Class MyPath
#Region "FIELDS & PROPERTIES"
Private m_CurrPath As New System.Windows.Shapes.Path
Public Property CurrPath As System.Windows.Shapes.Path
Get
Return m_CurrPath
End Get
Set(value As System.Windows.Shapes.Path)
m_CurrPath = value
End Set
End Property
Private m_CanvX As Double
Public ReadOnly Property CanvX As Double
Get
Return m_CanvX
End Get
End Property
Private m_CanvY As Double
Public ReadOnly Property CanvY As Double
Get
Return m_CanvY
End Get
End Property
Private m_DimX As Double
Public ReadOnly Property DimX As Double
Get
Return m_DimX
End Get
End Property
Private m_DimY As Double
Public ReadOnly Property DimY As Double
Get
Return m_DimY
End Get
End Property
Private m_id As String
Public ReadOnly Property id As String
Get
Return m_id
End Get
End Property
Private m_d As String
Public ReadOnly Property d As String
Get
Return m_d
End Get
End Property
Private m_fill As String
Public Property fill As String
Get
Return m_fill
End Get
Set(value As String)
m_fill = value
End Set
End Property
Private m_fill_opacity As Double
Public Property fill_opacity As Double
Get
Return m_fill_opacity
End Get
Set(value As Double)
m_fill_opacity = value
End Set
End Property
Private m_stroke As String
Public Property stroke As String
Get
Return m_stroke
End Get
Set(value As String)
m_stroke = value
End Set
End Property
Private m_stroke_opacity As Double
Public Property stroke_opacity As Double
Get
Return m_stroke_opacity
End Get
Set(value As Double)
m_stroke_opacity = value
End Set
End Property
Private m_stroke_width As Double
Public Property stroke_width As Double
Get
Return m_stroke_width
End Get
Set(value As Double)
m_stroke_width = value
End Set
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(Id As String, D As String, CanvX As Double, CanvY As Double, DimX As Double, DimY As Double, Fill As String, FillOpacity As Double, Stroke As String, StrokeOpacity As Double, StrokeWidthAttribute As Double)
m_id = Id
m_d = D
m_CanvX = CanvX
m_CanvY = CanvY
m_DimX = DimX
m_DimY = DimY
m_fill = Fill
m_fill_opacity = FillOpacity
m_stroke = Stroke
m_stroke_opacity = StrokeOpacity
m_stroke_width = StrokeWidthAttribute
LoadPath()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Sub LoadPath()
' Carico la geometria
m_CurrPath.Data = Geometry.Parse(d)
' Carico il colore di sfondo
SetBrushFromRGBString(m_fill, m_CurrPath.Fill)
' Carico colore linea
SetBrushFromRGBString(m_stroke, m_CurrPath.Stroke)
' Carico spessore linea
If m_stroke_width < 5 Then m_stroke_width = 10
m_CurrPath.StrokeThickness = m_stroke_width
' Applico l'opacità della superificie
m_CurrPath.Opacity = m_fill_opacity
' Calcolo e applico la traslazione e la scalatura
Dim myTransformGroup As New TransformGroup()
Dim ScaleX As Double = m_CanvX / DimX
Dim ScaleY As Double = m_CanvY / DimY
Dim OffX As Double = (m_CanvX - Math.Min(ScaleX, ScaleY) * DimX) / 2
Dim OffY As Double = (m_CanvY - Math.Min(ScaleX, ScaleY) * DimY) / 2
myTransformGroup.Children.Add(New ScaleTransform(Math.Min(ScaleX, ScaleY), Math.Min(ScaleX, ScaleY)))
myTransformGroup.Children.Add(New TranslateTransform(OffX, OffY))
m_CurrPath.RenderTransform = myTransformGroup
End Sub
Private Sub SetBrushFromRGBString(sFill As String, ByRef brFill As Brush)
If String.IsNullOrEmpty(sFill) Then
brFill = Brushes.DarkRed
Return
End If
Dim s1 As String = sFill
If s1.Contains("rgb") Then
s1 = s1.Replace("rgb(", "")
s1 = s1.Replace(")", "")
Dim s2 As String = ""
For Each s As String In s1.Split(",")
s2 &= CInt(s).ToString("x2")
Next
brFill = New BrushConverter().ConvertFrom("#" & s2)
End If
End Sub
#End Region ' Methods
End Class
Public Module XMLReader
#Region "METHODS"
Public Sub ReadMyXML(FilePath As String, Canv As MyCanvas)
'Create the XML Reader
Dim m_xmlr As XmlTextReader = New XmlTextReader(FilePath)
'Disable whitespace so that you don't have to read over whitespaces
m_xmlr.WhitespaceHandling = WhitespaceHandling.None
' Leggo la prima riga: '?xml' tag
m_xmlr.Read()
' Passo a leggere la successiva: 'svg' tag
m_xmlr.Read()
' Leggo gli attributi di questo tag (dimensioni)
Dim ViewBoxDim = m_xmlr.GetAttribute("viewBox")
Canv.ViewBoxDim = ViewBoxDim
' Elaboro i dati per avere la scalatura del disegno
Dim DimViewBox As String() = ViewBoxDim.ToString.Split(" ")
Dim DimX As Integer = Math.Abs(CInt(DimViewBox(2))) + Math.Abs(CInt(DimViewBox(0)))
Dim DimY As Integer = Math.Abs(CInt(DimViewBox(3))) + Math.Abs(CInt(DimViewBox(1)))
' Leggo in loop i tag: 'path'
While Not m_xmlr.EOF
m_xmlr.Read()
If Not m_xmlr.IsStartElement() Then
Continue While
End If
' recupero il valore dell'attributo 'id'
Dim idAttribute = m_xmlr.GetAttribute("id")
' recupero il valore dell'attributo 'd'
Dim dAttribute = m_xmlr.GetAttribute("d")
' recupero il valore dell'attributo 'fill'
Dim fillAttribute = m_xmlr.GetAttribute("fill")
' recupero il valore dell'attributo 'fill-opacity'
Dim fillOpacityAttribute = m_xmlr.GetAttribute("fill-opacity")
' recupero il valore dell'attributo 'stroke'
Dim strokeAttribute = m_xmlr.GetAttribute("stroke")
' recupero il valore dell'attributo 'stroke-opacity'
Dim strokeOpacityAttribute = m_xmlr.GetAttribute("stroke-opacity")
' recupero il valore dell'attributo 'stroke - Width'
Dim strokeWidthAttribute = m_xmlr.GetAttribute("stroke-width")
' carico l'elemento in lista solo se esiste un'immagine
If Not String.IsNullOrEmpty(idAttribute) And Not String.IsNullOrEmpty(dAttribute) Then
Dim fillOpacity As Double = 1 ' CDbl(fillOpacityAttribute)
StringToDouble(fillOpacityAttribute, fillOpacity)
Dim strokeOpacity As Double = 1 ' CDbl(strokeOpacityAttribute)
StringToDouble(strokeOpacityAttribute, strokeOpacity)
Dim strokeWidth As Double = 1
StringToDouble(strokeWidthAttribute, strokeWidth)
Canv.ListPath.Add(New MyPath(idAttribute, dAttribute, Canv.CurrCanvas.Width, Canv.CurrCanvas.Height, DimX, DimY, fillAttribute, fillOpacity, strokeAttribute, strokeOpacity, strokeWidth))
End If
End While
' Libero il file dalla lettura
m_xmlr.Close()
' popolo la canvas con le Ptah che ho caricato
Canv.LoadCanvas()
End Sub
Public Sub WriteMyXML(FilePath As String, Canv As MyCanvas)
Dim _namespaceDefault As String = "http://www.w3.org/2000/svg"
Dim doc As New Xml.XmlDocument
Dim elm As System.Xml.XmlNode
Dim elmSub As System.Xml.XmlNode
Dim elmMain As Xml.XmlNode
doc = New Xml.XmlDocument
elmMain = doc.CreateElement("svg")
elmSub = elmMain.Attributes.Append(doc.CreateAttribute("viewBox"))
elmSub.Value = Canv.ViewBoxDim
elmSub = elmMain.Attributes.Append(doc.CreateAttribute("xmlns"))
elmSub.Value = _namespaceDefault
For Each itemPath As MyPath In Canv.ListPath
elm = elmMain.AppendChild(doc.CreateElement("path"))
elmSub = elm.Attributes.Append(doc.CreateAttribute("id"))
elmSub.Value = itemPath.id
elmSub = elm.Attributes.Append(doc.CreateAttribute("d"))
elmSub.Value = itemPath.d
If Not String.IsNullOrEmpty(itemPath.fill) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("fill"))
elmSub.Value = itemPath.fill
End If
If Not String.IsNullOrEmpty(itemPath.fill_opacity) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("fill-opacity"))
elmSub.Value = itemPath.fill_opacity.ToString(CultureInfo.InvariantCulture)
End If
If Not String.IsNullOrEmpty(itemPath.stroke) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke"))
elmSub.Value = itemPath.stroke
End If
If Not String.IsNullOrEmpty(itemPath.stroke_opacity) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke-opacity"))
elmSub.Value = itemPath.stroke_opacity.ToString(CultureInfo.InvariantCulture)
End If
If Not String.IsNullOrEmpty(itemPath.stroke_width) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke-width"))
elmSub.Value = itemPath.stroke_width.ToString(CultureInfo.InvariantCulture)
End If
Next
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "UTF-8", ""))
doc.AppendChild(elmMain)
doc.Save(FilePath)
End Sub
#End Region ' Methods
End Module
#End Region ' Elementi per la gestione SVG
+184
View File
@@ -0,0 +1,184 @@
<DockPanel x:Class="SceneButtonV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtStone3D="clr-namespace:EgtStone3D"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5">
<Grid DockPanel.Dock="Top">
<TabControl SelectedIndex="{Binding SelTopPanel}"
Style="{StaticResource TopPanel_TabControl}">
<TabItem Header="TABITEM"
Style="{StaticResource SceneButton_TabItem}"/>
</TabControl>
</Grid>
<!--TOP-->
<ItemsControl ItemsSource="{Binding TopListBtn}"
Visibility="Collapsed"
Style="{StaticResource TopList_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Style="{StaticResource SceneButtonH_StackPanel}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type EgtStone3D:_Button}">
<Button ToolTip="{Binding Name}"
IsEnabled="{Binding IsEnabled}"
Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ToggleButton}">
<ToggleButton ToolTip="{Binding Name}"
Command="{Binding CmdBtn}"
IsChecked="{Binding IsChecked}"
Style="{StaticResource SceneToggleButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</ToggleButton>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
<!--BOTTOM-->
<ItemsControl ItemsSource="{Binding BottomListBtn}"
Style="{StaticResource BottomList_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Style="{StaticResource SceneButtonH_StackPanel}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type EgtStone3D:_Button}">
<Button ToolTip="{Binding Name}"
IsEnabled="{Binding IsEnabled}"
Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ToggleButton}">
<ToggleButton Command="{Binding CmdBtn}"
IsChecked="{Binding IsChecked}"
Style="{StaticResource SceneToggleButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</ToggleButton>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
<!--BOTTOM CENTER-->
<ItemsControl ItemsSource="{Binding BottomCenterListBtn}"
Style="{StaticResource BottomCenterList_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Style="{StaticResource SceneButtonH_StackPanel}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type EgtStone3D:_Button}">
<Button Content="{Binding Name}"
Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ToggleButton}">
<ToggleButton Command="{Binding CmdBtn}"
IsChecked="{Binding IsChecked}"
Style="{StaticResource SceneToggleButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</ToggleButton>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ButtonComboBox}">
<Button Content="{Binding Name}"
Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
<!--RIGHT-->
<ItemsControl ItemsSource="{Binding RightListBtn}"
Style="{StaticResource RightList_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Style="{StaticResource SceneButtonV_StackPanel}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type EgtStone3D:_Button}">
<Button Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ToggleButton}">
<ToggleButton Command="{Binding CmdBtn}"
IsChecked="{Binding IsChecked}"
Style="{StaticResource SceneToggleButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</ToggleButton>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
<!--LEFT colonna 1-->
<ItemsControl ItemsSource="{Binding LeftListBtn}"
Visibility="Collapsed"
Style="{StaticResource LeftList_ItemsControl}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Style="{StaticResource WrapLeftList_WrapPanel}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type EgtStone3D:_Button}">
<Button ToolTip="{Binding Name}"
IsEnabled="{Binding IsEnabled}"
Command="{Binding CmdBtn}"
Style="{StaticResource SceneButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</Button>
</DataTemplate>
<DataTemplate DataType="{x:Type EgtStone3D:_ToggleButton}">
<ToggleButton Command="{Binding CmdBtn}"
IsChecked="{Binding IsChecked}"
Style="{StaticResource SceneToggleButton}">
<EgtStone3D:SVGV FileSource="{Binding Img, UpdateSourceTrigger=PropertyChanged}"/>
</ToggleButton>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
<Grid Name="MainGrid"
Style="{StaticResource MainGrid}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Popup Name="MenuSelType"
Style="{StaticResource MenuSelType_PopUp}">
<!--<ListBox ItemsSource="{Binding SelTypeList}"
SelectedItem="{Binding SelType}"/>-->
<!--<TextBlock Text="Scemo chi legge" Background="Red"></TextBlock>-->
<EgtStone3D:SelOptionV/>
</Popup>
</Grid>
</DockPanel>

Some files were not shown because too many files have changed in this diff Show More