123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- unit LuaEditMessages;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, JvComponent, JvDockControlForm, VirtualTrees, ImgList;
- type
- PLuaEditMsgLine = ^TPLuaEditMsgLine;
- TPLuaEditMsgLine = record
- FileName: String;
- MsgText: String;
- LineNumber: Integer;
- MsgType: Integer;
- end;
- TfrmLuaEditMessages = class(TForm)
- JvDockClient1: TJvDockClient;
- vstLuaEditMessages: TVirtualStringTree;
- imlMessages: TImageList;
- procedure vstLuaEditMessagesGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
- procedure vstLuaEditMessagesGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
- procedure vstLuaEditMessagesGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
- procedure vstLuaEditMessagesDblClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- function Put(MsgText: String; MsgType: Integer; FileName: String = ''; LineNumber: Integer = -1): PVirtualNode;
- function PutChild(Parent: PVirtualNode; MsgText: String; MsgType: Integer; FileName: String = ''; LineNumber: Integer = -1): PVirtualNode;
- end;
- var
- frmLuaEditMessages: TfrmLuaEditMessages;
- implementation
- uses Main, Misc;
- {$R *.dfm}
- function TfrmLuaEditMessages.Put(MsgText: String; MsgType: Integer; FileName: String = ''; LineNumber: Integer = -1): PVirtualNode;
- var
- pData: PLuaEditMsgLine;
- pNode: PVirtualNode;
- begin
- pNode := vstLuaEditMessages.AddChild(vstLuaEditMessages.RootNode);
- pData := vstLuaEditMessages.GetNodeData(pNode);
- pData.FileName := FileName;
- pData.MsgText := MsgText;
- pData.MsgType := MsgType;
- pData.LineNumber := LineNumber;
- // Popup luaedit messages window if it's an error message
- if MsgType = LUAEDIT_ERROR_MSG then
- Self.Show;
- vstLuaEditMessages.FullExpand();
- Result := pNode;
- end;
- function TfrmLuaEditMessages.PutChild(Parent: PVirtualNode; MsgText: String; MsgType: Integer; FileName: String = ''; LineNumber: Integer = -1): PVirtualNode;
- var
- pData: PLuaEditMsgLine;
- pNode: PVirtualNode;
- begin
- pNode := vstLuaEditMessages.AddChild(Parent);
- pData := vstLuaEditMessages.GetNodeData(pNode);
- pData.FileName := FileName;
- pData.MsgText := MsgText;
- pData.MsgType := MsgType;
- pData.LineNumber := LineNumber;
- // Popup luaedit messages window if it's an error message
- if MsgType = LUAEDIT_ERROR_MSG then
- Self.Show;
- vstLuaEditMessages.FullExpand();
- Result := pNode;
- end;
- procedure TfrmLuaEditMessages.vstLuaEditMessagesGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
- var
- pData: PLuaEditMsgLine;
- begin
- case Column of
- 0:
- begin
- pData := vstLuaEditMessages.GetNodeData(Node);
- case pData.MsgType of
- LUAEDIT_HINT_MSG: CellText := '[HINT]';
- LUAEDIT_WARNING_MSG: CellText := '[WARNING]';
- LUAEDIT_ERROR_MSG: CellText := '[ERROR]';
- else
- CellText := '';
- end;
- end;
- 1:
- begin
- pData := vstLuaEditMessages.GetNodeData(Node);
- CellText := TrimLeft(pData.MsgText);
- if pData.MsgType = LUAEDIT_ERROR_MSG then
- CellText := UpperCase(CellText[1]) + Copy(CellText, 2, Length(CellText) - 1);
- end;
- end;
- end;
- procedure TfrmLuaEditMessages.vstLuaEditMessagesGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
- var
- pData: PLuaEditMsgLine;
- begin
- case Column of
- 0:
- begin
- pData := vstLuaEditMessages.GetNodeData(Node);
- ImageIndex := pData.MsgType - 1;
- end;
- end;
- end;
- procedure TfrmLuaEditMessages.vstLuaEditMessagesGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
- begin
- NodeDataSize := SizeOf(TPLuaEditMsgLine);
- end;
- procedure TfrmLuaEditMessages.vstLuaEditMessagesDblClick(Sender: TObject);
- var
- pNode: PVirtualNode;
- pData: PLuaEditMsgLine;
- begin
- if vstLuaEditMessages.SelectedCount = 1 then
- begin
- pNode := vstLuaEditMessages.GetFirstSelected();
- if Assigned(pNode) then
- begin
- pData := vstLuaEditMessages.GetNodeData(pNode);
- if pData.MsgType = LUAEDIT_ERROR_MSG then
- frmLuaEditMain.PopUpUnitToScreen(pData.FileName, pData.LineNumber, False, HIGHLIGHT_ERROR);
- end;
- end;
- end;
- end.
|