Leaderboard


Popular Content

Showing content with the highest reputation since 01/29/20 in all areas

  1. 1 point
    pawmal

    ZWCAD2020 SP2

    Oczywiście przekażemy sugestie, natomiast jeśli potrzeba korzystać z odnośnika również z linią łączącą, to wystarczy użyć Wtekst i pominąć wpisywanie zatwierdzając ok.
  2. 1 point
    perlon

    [C#] Niezgodność wersji PL i EN

    Jeszcze uwaga dotycząca procesu kompilacji. Ponieważ projekt CADKit jest niezależny od CADKitBasic i CADKitElevationMarks choć jest główną biblioteką która ma wczytywać pozostałe nie może być projektem głównym. Tzn może być ale jego kompilacja nie spowoduje kompilacji dwóch pozostały bibliotek. Więc ich nie będzie i przy starcie nie zostaną załadowane. Żeby to obejść dopisałem w post-buildzie pozostałych projektów : copy $(TargetPath) $(SolutionDir)\CADKit\bin\$(ConfigurationName) co każdorazowo po kompilacji projektu skopiuje dll'kę do katalogu CADKit/bin/$(ConfigurationName). No ale F5 wywołuje kompilację głównego projektu i tylko jego zależności. Tak więc wymagany jest F6 (Build solution) a potem F5 (Start debugging). Obejściem problemu może być uczynienie głównym projektem testów jednostkowych. Jest to projekt do którego są podpięte jako zależności wszystkie pozostałe projekty i jego kompilacja wywoła kompilację wszystkich pozostałych a więc skopiowanie gotowych dll do katalogu CADKit/bin/$(ConfigurationName). Pozostaje tylko odpalić F5 ustawić Start external program. (Chyba to powinienem opisać w Readme na GITHubie ). Tak na marginesie testy jednostkowe też leżą i kwiczą. Jak widać projekt ma jeszcze mnóstwo mankamentów, niedoróbek i wymaga licznych refaktoryzacji. Jeżeli dojrzeje być może znajdzie swoje miejsce w dziale" Nakładki na ZWCAD i ZWCAD+". Dlatego wszelka pomoc jest bardzo mile widziana z zastrzeżeniem że zawsze to będzie Open Source.
  3. 1 point
    Znalazłem sposób na monitorowanie zmiany interfejsu więc się dzielę moim rozwiązaniem dla potomności co pozwoli zamknąć ten wątek: 1. Trzeba zasubskrybować się do handlera ApplicationServices.SystemVariableChangedEventHandler 2. W obsłudze zdarzenia trzeba sprawdzić, zmiana której zmiennej systemowej wywołała to zdarzenie. Jeżeli zdarzenie wywołała zmienna COLORSCHEME należy odczytać z rejestru systemowego wartość COLORSCHEME klucza Software\ZWSOFT\ZWCAD\2020\en-US\Profiles\Default\Config (dla wersji EN, dla PL trzeba odczytać z gałęzi pl-PL) Dzięki Adam Klaczek. Twoja podpowiedź była bardzo pomocna. podpięcie do handlera i metoda podpinana do handlera Application.SystemVariableChanged += OnSystemVariableChanged private void OnSystemVariableChanged(object _sender, SystemVariableChangedEventArgs _arg) { if (_arg.Name == "COLORSCHEME") { // tu pobieram z kontenera dependece injection instancję serwisu obsługującego schemat kolorów interfejsu ZwCAD'a // i odpalam własne zdarzenie rozgłaszające, że została dokonana zmiana kolorów using(var scope = DI.Container.BeginLifetimeScope()) { var service = DI.Container.Resolve<IInterfaceSchemeService>(); ChangeInterfaceScheme?.Invoke(_sender, new ChangeInterfaceSchemeEventArgs(service)); } } } w której odpalam już własne zdarzenie ChangeInterfaceScheme (skoro nie dokopałem się do takiego zdarzenia dostarczanego przez ZwSOFT to sobie zrobiłem własne 😁 ) public event EventHandler<ChangeInterfaceSchemeEventArgs> ChangeInterfaceScheme; public class ChangeInterfaceSchemeEventArgs : EventArgs { public IInterfaceSchemeService Service { private set; get; } public ChangeInterfaceSchemeEventArgs(IInterfaceSchemeService _service) { Service = _service; } } W mojej konkretnej implementacji do zdarzenia mogą być podpinane metody przyjmujące w argumencie serwis IInterfaceSchemeService który zajmuje się dostarczaniem kolorów do kontrolek interfejsu użytkownika. Jest to instancja mojej własnej klasy którą pozyskuję z kontenera zależności Autofac. Handler ChangeInterfaceScheme jest właściwością mojej klasy statycznej AppSettings która jest dostępna w całej aplikacji i trzyma róże globalne ustawienia. Klasyczny singleton. Dlatego do tego handlera mogę podpiąć w dowolnym miejscu aplikacji dowolną obsługę zdarzenia zmiany interfejsu uzyskując dostęp do serwisu podającego na tacy jakie kolory mają mieć aktualnie kontrolki. Wystarczy zmienić właściwości kontrolek WindowsForms, HTML, WPF czy czego tam się nie używa. Jeszcze tylko specyfikacja IInterfaceSchemeService public interface IInterfaceSchemeService { InterfaceScheme GetScheme(); Color GetBackColor(); Color GetForeColor(); } Na koniec należy dodać, że mój serwis InterfaceSchemeService posiada statyczną właściwość ColorScheme którą mogę odczytać w dowolnym miejscu aplikacji w szczególności przy starcie aplikacji i dzięki temu moja nakładka od razu może startować ze zgodnymi kolorami. Pełna implementacja z zastosowaniem jest dostępna w moim szarpowaniu opisanym w tym wątku gdzie znajduje się link do GITHub'a z kompletnymi źródłami.
This leaderboard is set to Warsaw/GMT+01:00