Có cách nào để thêm nhãn người dùng hiện tại của người dùng vào nhà soạn nhạc in không?


11

Có cách nào để thêm nhãn người dùng hiện tại vào trình soạn thảo in trong QGIS.

Tôi nghĩ rằng có thể có một cái gì đó tương tự như định dạng $ CURRENT_DATE có sẵn.

Điều này sẽ được trong một môi trường cửa sổ.


1
"$ CURRENT_DATE (yyyy-MM-dd)" hóa ra rất hữu ích và tôi đã đưa nó vào nhiều mẫu soạn thảo của mình. Có nhiều lệnh này có sẵn không? Muốn tự động hiển thị tên dự án của tôi hoặc tên lớp nhất định, v.v.?
SAnderka

Câu trả lời:


8

Hiện tại, đây là một yêu cầu tính năng chưa được thực hiện (xem Tính năng # 1385 ).

Bạn có thể thêm ý tưởng của mình cho các 'mã thông báo' mới (hoặc 'trường' khi chúng được đặt theo yêu cầu). Hãy nhớ bao gồm các tùy chọn định dạng được đề xuất theo các lớp Qt cho loại dữ liệu , giống như đã được thực hiện với cú pháp của $CURRENT_DATE(yyyy-MM-dd), được giải quyết bằng cách sử dụng QDate::currentDate().toString( formatText )định dạng chuỗi lớp của lớp .


Tuy nhiên, có nhiều giải pháp tốt hơn là cố gắng triển khai tất cả các loại mã thông báo mà người dùng có thể cần hoặc yêu cầu (có thể là danh sách mở rộng).

Hiện tại có ít nhất hai phương tiện để thực hiện một giải pháp mạnh mẽ hơn:

A) Văn bản nhãn được tạo tùy ý bằng Trình chỉnh sửa biểu thức QGIS

Đây hiện là phương pháp được sử dụng trong công cụ ghi nhãn nâng cao ...

nhập mô tả hình ảnh ở đây

Do các nhãn của Trình soạn thảo không liên quan đến nguồn dữ liệu của lớp bản đồ, nên phần Fields and Valuescần phải được thay thế và điền bằng các mã thông báo Trình soạn thảo in thích hợp hơn, ví dụ như tên dự án, tiêu đề, phép chiếu, người dùng, v.v. (các hàm ngày đã có trong tổng thể xây dựng chi nhánh). May mắn thay, đã có các nhà phát triển làm việc để làm cho nó tương đối 'dễ dàng' để thêm các phần biểu thức mới, mặc dù nó vẫn sẽ mất một số công việc. Công việc bổ sung cũng sẽ cần thiết để chứa các mã thông báo mới.

B) Tùy chọn nhãn văn bản (hoặc mã thông báo) là kết quả của (các) đoạn mã Python

Mặc dù không thân thiện với người dùng như giải pháp Expression Editor, vì nó đòi hỏi sự hiểu biết về Python, việc triển khai một tính năng như vậy có thể chỉ cần một nỗ lực phát triển duy nhất. Sau đó, mọi khía cạnh văn bản của dự án QGIS, bao gồm các mục Trình soạn thảo khác nhau , có sẵn thông qua API PyQGIS (tức là Bảng điều khiển Python), có thể được truy cập, định dạng và xuất thành văn bản.

Đoạn mã Python có thể được bọc trong các mã thông báo riêng lẻ và được nhúng trong văn bản hiện tại của hộp chỉnh sửa văn bản hoặc được chứa trong hộp chỉnh sửa văn bản riêng trong GUI, được kích hoạt bằng hộp kiểm. Vì lý do bảo mật, mã có thể sẽ không tự động chạy khi khởi chạy Trình soạn thảo (mặc dù có thể là một tùy chọn cho phép luôn luôn).

Cách tiếp cận hộp chỉnh sửa văn bản riêng biệt sẽ cho phép xác thực mã Python và khóa các hàm Python có tên cụ thể, ví dụ đoạn mã sau:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

def pytoken_title():
    return QgsProject.instance().title()

sẽ thay thế bất kỳ số lượng mã thông báo trong văn bản có tên $pytoken_userhoặc $pytoken_title.


Cả hai giải pháp trên đều có khả năng mở rộng đáng kể so với việc triển khai các mã thông báo riêng lẻ trong mã nguồn của QGIS. Có thể có giải pháp khác hoặc tốt hơn, là tốt.

Tiến sĩ Hugentobler gần đây đã làm việc lại Nhà soạn nhạc In trong nhánh chính của QGIS, vì vậy bây giờ là thời điểm lý tưởng để yêu cầu các tính năng ghi nhãn như vậy cho phiên bản tiếp theo của QGIS . Tôi sẽ thêm một yêu cầu tính năng cho hai ASAP này.



Có phải một trong những giải pháp này đã biến nó thành phiên bản phát hành của QGIS? Hay điều này vẫn còn trong quá trình phát triển? Cảm ơn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.