2012-03-28 29 views
12

Tôi đang viết một plugin để tích hợp Delphi IDE Theme Editor với Rad Studio IDE (phiên bản hiện tại của công cụ này chạy dưới dạng ứng dụng bên ngoài) cho đến nay mọi thứ đều hoạt động tốt (xem hình bên dưới), ngoại trừ thực tế tôi có thể ' t tìm ra cách làm mới cú pháp màu sắc nổi bật được chọn trong Delphi IDELàm thế nào hướng dẫn làm mới IDE Delphi cú pháp sửa đổi làm nổi bật màu sắc bằng cách sử dụng OTA (API công cụ mở)?

enter image description here

Hãy để tôi giải thích, trong các tùy chọn tiêu chuẩn để thay đổi màu sắc nổi bật cú pháp (Editor Options-> Color), bạn có thể tùy chỉnh bất kỳ yếu tố và gán màu nền trước và nền mới, sau đó nếu bạn nhấn . ĐƯỢC . nút IDE áp dụng các thay đổi và cửa sổ trình soạn thảo IDE được cập nhật với các cài đặt mới.

Hiện tại tôi có thể sửa đổi và lưu trữ các giá trị mới, nhưng tôi không thể hướng dẫn IDE Delphi áp dụng cấu hình mới, các thay đổi chỉ hiển thị nếu IDE được khởi động lại.

Tôi đã tìm kiếm đơn vị ToolsAPI và tôi tìm thấy các giao diện IOTAEditOptions, IOTAHighlighterIOTAHighlightServices nhưng dường như không có tùy chọn làm mới (tải lại) cài đặt đã sửa đổi.

Ngoài ra tôi đã thử unmangle (sử dụng tdump) và gọi các chức năng của tập tin coreide1XX.bpl trực tiếp, nhưng điều này đã không làm việc quá.

00420B94 17411 1F39 Editcolorpage::TEditorColor:: 
00422188 17400 1F3A __fastcall Editcolorpage::TEditorColor::ColorClick(System::TObject *) 
0042174C 17407 1F3B __fastcall Editcolorpage::TEditorColor::ColorSpeedSettingClick(System::TObject *) 
004224BC 17396 1F3C __fastcall Editcolorpage::TEditorColor::DefaultClick(System::TObject *) 
00422414 17397 1F3D __fastcall Editcolorpage::TEditorColor::EditorColorBroadcast(System::TObject *, Winapi::Messages::TMessage&) 
00421584 17409 1F3E __fastcall Editcolorpage::TEditorColor::EditorColorCreate(System::TObject *) 
00421730 17408 1F3F __fastcall Editcolorpage::TEditorColor::EditorColorDestroy(System::TObject *) 
004217B0 17406 1F40 __fastcall Editcolorpage::TEditorColor::ElementListClick(System::TObject *) 
004222E8 17399 1F41 __fastcall Editcolorpage::TEditorColor::FontClick(System::TObject *) 
004225DC 17395 1F42 __fastcall Editcolorpage::TEditorColor::HelpClick(System::TObject *) 
00421AE8 17404 1F43 __fastcall Editcolorpage::TEditorColor::InitLineFlags(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>) 
004219B8 17405 1F44 __fastcall Editcolorpage::TEditorColor::InitSamplePane() 
00421BC8 17403 1F45 __fastcall Editcolorpage::TEditorColor::InitSyntaxEditView(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>) 
0042262C 17393 1F46 __fastcall Editcolorpage::TEditorColor::LoadHighlightPreviews() 
004225F4 17394 1F47 __fastcall Editcolorpage::TEditorColor::MarkDirty() 
004220E4 17401 1F48 __fastcall Editcolorpage::TEditorColor::SampleClick(System::TObject *) 
00422080 17402 1F49 __fastcall Editcolorpage::TEditorColor::SetColorSpeedSetting(Vedopts::TColorSpeedSetting) 
0042238C 17398 1F4A __fastcall Editcolorpage::TEditorColor::UpdateSamplePane() 
00422814 17392 1F4B __fastcall Editcolorpage::TEditorColor::tbsetPreviewsChange(System::TObject *, int, bool&) 
004AA8D4 17390 1F4C __fastcall Editcolorpage::initialization() 
00423C38 17413 1F4D __fastcall Editdisplaypage::Finalization() 

How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?

Hãy cho tôi biết nếu bạn cần thêm thông tin hoặc nếu câu hỏi là không rõ ràng.

+0

Đó là một cảnh quay dài, nhưng có thể gọi là 'IOTAEditView.Paint' cho mọi trình soạn thảo mô-đun đang hoạt động? – NGLN

+0

Tôi không nghĩ rằng nó sẽ làm việc @NGLN, bởi vì như tôi hiểu nó IDE chỉ tải các thiết lập màu sắc trên initalization. Tôi cũng không tin rằng có bất kỳ giao diện nào trong OTAPI cho phép bạn khởi tạo lại các thuộc tính đó. – LaKraven

+0

Hiệu chỉnh: Các cài đặt này xuất hiện để được khởi động lại khi bạn đóng hộp thoại Tùy chọn môi trường. Cheat có thể chỉ để plugin của bạn hiển thị hộp thoại Environment Options và hướng dẫn người dùng đóng nó bằng tay. Không thanh lịch khủng khiếp, nhưng nên có hiệu quả. – LaKraven

Trả lời

2

Một chút hack cần có hiệu ứng mong muốn sẽ khiến plugin của bạn hiển thị hộp thoại Tùy chọn môi trường và yêu cầu nhà điều hành đóng thủ công. Điều này làm cho IDE khởi động lại cấu hình của nó dựa trên các cài đặt đã gửi.

Để làm điều này, có được một tay cầm lên một dự án (IOTAProject đối tượng) và gọi ...

AProject.ProjectOptions.EditOptions;

đâu AProject được định nghĩa là AProject: IOTAProject.

Tôi biết đây không phải là giải pháp thanh lịch nhất, nhưng nếu nó có hiệu quả mong muốn, ít nhất nó hơi thực tế.

+0

Simon, gợi ý tốt, nhưng nếu IDE không phát hiện những thay đổi trong điều khiển "gốc" của cài đặt màu không làm mới IDE. (Hãy nhớ rằng tôi đang sử dụng các điều khiển của riêng mình để thiết lập các màu tô sáng Syntax) – RRUZ

+0

@Simon, ProjectOptions.EditOptions mở một TDelphiProjectOptionsDialog, nhưng hộp thoại Tùy chọn Môi trường là một TDefaultEnvironmentDialog ... Tôi không nghĩ đó là cùng một con thú. –

+0

Tùy thuộc vào cách bạn đang lưu cài đặt. Nếu chúng ở trong registry nơi IDE lưu cài đặt của riêng nó, thì các thay đổi NÊN có hiệu lực (đó là trải nghiệm của tôi), – LaKraven

2

Tôi muốn nói đặt cược tốt nhất của bạn sẽ được snoop quanh coreide*[email protected]@[email protected] hoặc coreide*[email protected]@[email protected]

Những được gọi khi nút Ok được nhấp vào. Tôi không giỏi đọc lắp ráp nhưng từ giao diện của nó, các tùy chọn môi trường được nạp từ sổ đăng ký trong quá trình khởi tạo IDE và bất kỳ thay đổi nào được thực hiện được viết lại khi cần nhưng IDE phụ thuộc vào thể hiện bộ nhớ của TEnvironmentOptions. đại diện cho tất cả các tùy chọn môi trường.

coreide*[email protected]@[email protected] dường như là nơi mà các màu sắc được lấy ra từ các tùy chọn môi trường để chỉnh sửa bởi TEditorColor

Nó không bất hạnh của các lớp này được tiếp xúc với OTA hoặc NTA.

+1

Cảm ơn, tôi đã tìm thấy một số phương pháp này trong những tháng qua. Tôi đã hy vọng không sử dụng hack cấp thấp. nhưng nó có vẻ là lựa chọn duy nhất. – RRUZ

Các vấn đề liên quan