„$ CURRENT_DATE (rrrr-MM-dd)” okazało się bardzo przydatne i zawarłem je w wielu moich szablonach kompozytorskich. Czy dostępnych jest więcej tych poleceń? Czy chcesz automatycznie wyświetlać nazwę mojego projektu, nazwę określonej warstwy itp.?
SAnderka
Odpowiedzi:
8
Obecnie jest to niespełnione żądanie funkcji (patrz funkcja nr 1385 ).
Istnieją jednak lepsze rozwiązania niż próba zaimplementowania wszystkich typów tokenów, których mogą potrzebować użytkownicy lub których mogą żądać (może to być lista rozwijana coraz częściej).
Obecnie istnieją co najmniej dwa sposoby wdrożenia bardziej niezawodnego rozwiązania:
A) Tekst etykiety jest opcjonalnie generowany za pomocą edytora wyrażeń QGIS
Jest to obecnie metoda stosowana w zaawansowanym silniku etykietowania ...
Ponieważ etykiety kompozytora nie są względne w stosunku do źródła danych warstwy mapy, sekcję Fields and Valuesnależy zastąpić i zapełnić bardziej odpowiednimi tokenami Print Composer, np. Nazwą projektu, tytułem, projekcją, użytkownikiem itd. (Funkcje daty są już w systemie głównym kompilacje oddziałów). Na szczęście programiści pracowali nad tym, aby względnie „łatwo” dodawać nowe sekcje wyrażeń, choć nadal wymagałoby to trochę pracy. Potrzebne będą również dodatkowe prace, aby pomieścić nowe tokeny.
B) Tekst etykiety (lub tokeny) jest opcjonalnie wynikiem fragmentów kodu w języku Python
Chociaż nie jest tak przyjazny dla użytkownika jak rozwiązanie Expression Editor, ponieważ wymaga znajomości języka Python, wdrożenie takiej funkcji wymagałoby tylko jednego wysiłku programistycznego. Następnie każdy aspekt tekstowy projektu QGIS, w tym jego różne elementy Composer , dostępne za pośrednictwem PyQGIS API (tj. Python Console), może być dostępny, sformatowany i przesłany do tekstu.
Fragmenty Pythona mogą być zawinięte w poszczególne tokeny i osadzone w bieżącym tekście pola edycji tekstu lub mogą być zawarte w oddzielnym polu edycji tekstu w interfejsie GUI, aktywowanym przez pole wyboru. Ze względów bezpieczeństwa kod prawdopodobnie nie uruchomi się automatycznie podczas uruchamiania Composer (choć może być to opcja zawsze dozwolona).
Oddzielne podejście do pola edycji tekstu umożliwiłoby sprawdzanie poprawności kodu Python i kluczowanie specyficznych nazw funkcji Python, na przykład następujący fragment kodu:
zastąpiłoby dowolną liczbę tokenów tekstowych o nazwie $pytoken_userlub $pytoken_title.
Oba powyższe rozwiązania są znacznie bardziej rozszerzalne niż implementacja pojedynczych tokenów w kodzie źródłowym QGIS. Mogą być też inne lub lepsze rozwiązania.
Odpowiedzi:
Obecnie jest to niespełnione żądanie funkcji (patrz funkcja nr 1385 ).
Możesz dodać swoje pomysły na nowe „tokeny” (lub „pola”, ponieważ są one identyczne w żądaniu). Pamiętaj, aby podać zalecane opcje formatowania, jak na zajęciach Qt dla typu danych , jak zostały wykonane przy użyciu składni
$CURRENT_DATE(yyyy-MM-dd)
, która jest rozwiązane za pomocąQDate::currentDate().toString( formatText )
i formatowanie QDate klasa String .Istnieją jednak lepsze rozwiązania niż próba zaimplementowania wszystkich typów tokenów, których mogą potrzebować użytkownicy lub których mogą żądać (może to być lista rozwijana coraz częściej).
Obecnie istnieją co najmniej dwa sposoby wdrożenia bardziej niezawodnego rozwiązania:
A) Tekst etykiety jest opcjonalnie generowany za pomocą edytora wyrażeń QGIS
Jest to obecnie metoda stosowana w zaawansowanym silniku etykietowania ...
Ponieważ etykiety kompozytora nie są względne w stosunku do źródła danych warstwy mapy, sekcję
Fields and Values
należy zastąpić i zapełnić bardziej odpowiednimi tokenami Print Composer, np. Nazwą projektu, tytułem, projekcją, użytkownikiem itd. (Funkcje daty są już w systemie głównym kompilacje oddziałów). Na szczęście programiści pracowali nad tym, aby względnie „łatwo” dodawać nowe sekcje wyrażeń, choć nadal wymagałoby to trochę pracy. Potrzebne będą również dodatkowe prace, aby pomieścić nowe tokeny.B) Tekst etykiety (lub tokeny) jest opcjonalnie wynikiem fragmentów kodu w języku Python
Chociaż nie jest tak przyjazny dla użytkownika jak rozwiązanie Expression Editor, ponieważ wymaga znajomości języka Python, wdrożenie takiej funkcji wymagałoby tylko jednego wysiłku programistycznego. Następnie każdy aspekt tekstowy projektu QGIS, w tym jego różne elementy Composer , dostępne za pośrednictwem PyQGIS API (tj. Python Console), może być dostępny, sformatowany i przesłany do tekstu.
Fragmenty Pythona mogą być zawinięte w poszczególne tokeny i osadzone w bieżącym tekście pola edycji tekstu lub mogą być zawarte w oddzielnym polu edycji tekstu w interfejsie GUI, aktywowanym przez pole wyboru. Ze względów bezpieczeństwa kod prawdopodobnie nie uruchomi się automatycznie podczas uruchamiania Composer (choć może być to opcja zawsze dozwolona).
Oddzielne podejście do pola edycji tekstu umożliwiłoby sprawdzanie poprawności kodu Python i kluczowanie specyficznych nazw funkcji Python, na przykład następujący fragment kodu:
zastąpiłoby dowolną liczbę tokenów tekstowych o nazwie
$pytoken_user
lub$pytoken_title
.Oba powyższe rozwiązania są znacznie bardziej rozszerzalne niż implementacja pojedynczych tokenów w kodzie źródłowym QGIS. Mogą być też inne lub lepsze rozwiązania.
Dr Hugentobler niedawno przerobił Print Composer w głównej gałęzi QGIS, więc teraz jest idealny czas, aby poprosić o takie funkcje etykietowania dla następnej wersji QGIS . Dodam żądanie funkcji dla tych dwóch ASAP.
źródło