Enhance proposal popup:

* make it slightly wider and higher by default so items are better visible
* again introduce a first column displaying the type of object it represents (table, view, function, keyword ...)
* mask database, table and column identifiers in InsertList
This commit is contained in:
Ansgar Becker
2009-03-26 23:03:13 +00:00
parent 21114256a7
commit b7cd93a079
2 changed files with 20 additions and 22 deletions

View File

@ -6526,7 +6526,8 @@ object MainForm: TMainForm
end end
object SynCompletionProposal1: TSynCompletionProposal object SynCompletionProposal1: TSynCompletionProposal
Options = [scoLimitToMatchedText, scoUseInsertList, scoUsePrettyText, scoUseBuiltInTimer, scoEndCharCompletion, scoCompleteWithTab, scoCompleteWithEnter] Options = [scoLimitToMatchedText, scoUseInsertList, scoUsePrettyText, scoUseBuiltInTimer, scoEndCharCompletion, scoCompleteWithTab, scoCompleteWithEnter]
Width = 262 NbLinesInWindow = 12
Width = 350
EndOfTokenChr = '()[]. ='#9 EndOfTokenChr = '()[]. ='#9
TriggerChars = '.' TriggerChars = '.'
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
@ -6541,12 +6542,11 @@ object MainForm: TMainForm
TitleFont.Style = [fsBold] TitleFont.Style = [fsBold]
Columns = < Columns = <
item item
BiggestWord = 'databasemore' BiggestWord = 'databasemoremore'
BiggestWordW = 'databasemore' BiggestWordW = 'databasemoremore'
end end
item item
BiggestWord = 'IHAVENOCLUEWHICHLENGTH' BiggestWord = 'IHAVENOCLUEWHICHLENGTH'
DefaultFontStyle = [fsBold]
BiggestWordW = 'IHAVENOCLUEWHICHLENGTH' BiggestWordW = 'IHAVENOCLUEWHICHLENGTH'
end> end>
ItemHeight = 18 ItemHeight = 18

View File

@ -4854,12 +4854,15 @@ var
PrevShortToken, PrevShortToken,
PrevLongToken : WideString; PrevLongToken : WideString;
const const
ItemPattern: WideString = '\image{%d}\hspace{5}%s'; ItemPattern: WideString = '\image{%d}\hspace{5}\color{clSilver}%s\column{}\color{clWindowText}%s';
procedure addTable( Fields: TFields ); procedure addTable( Fields: TFields );
var ObjName: WideString; Icon: Integer; var ObjName, ObjType: WideString; Icon: Integer;
begin begin
ObjName := Fields[0].AsWideString; ObjName := Fields[0].AsWideString;
ObjType := '';
if Fields.FindField(DBO_TYPE) <> nil then
ObjType := LowerCase(Fields.FieldByName(DBO_TYPE).AsString);
case GetDBObjectType(Fields) of case GetDBObjectType(Fields) of
NODETYPE_TABLE: Icon := ICONINDEX_TABLE; NODETYPE_TABLE: Icon := ICONINDEX_TABLE;
NODETYPE_CRASHED_TABLE: Icon := ICONINDEX_CRASHED_TABLE; NODETYPE_CRASHED_TABLE: Icon := ICONINDEX_CRASHED_TABLE;
@ -4868,8 +4871,8 @@ const
NODETYPE_VIEW: Icon := ICONINDEX_VIEW; NODETYPE_VIEW: Icon := ICONINDEX_VIEW;
else Icon := -1; else Icon := -1;
end; end;
SynCompletionProposal1.InsertList.Add( ObjName ); SynCompletionProposal1.InsertList.Add( Mask(ObjName) );
SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [Icon, ObjName]) ); SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [Icon, ObjType, ObjName]) );
end; end;
procedure addColumns( tablename: WideString ); procedure addColumns( tablename: WideString );
@ -4892,8 +4895,8 @@ const
if ds = nil then exit; if ds = nil then exit;
for i:=0 to ds.RecordCount-1 do for i:=0 to ds.RecordCount-1 do
begin begin
SynCompletionProposal1.InsertList.Add( ds.FieldByName( 'Field' ).AsWideString ); SynCompletionProposal1.InsertList.Add( Mask(ds.FieldByName( 'Field' ).AsWideString) );
SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_FIELD, ds.FieldByName('Field').AsWideString + ' \color{clSilver}' + ds.FieldByName('Type').AsString]) ); SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_FIELD, GetFirstWord(ds.FieldByName('Type').AsString), ds.FieldByName('Field').AsWideString]) );
ds.Next; ds.Next;
end; end;
ds.Close; ds.Close;
@ -4984,15 +4987,12 @@ begin
end; end;
end; end;
if (SynCompletionProposal1.ItemList.count = 0) and (Length(CurrentInput)>0) then if (SynCompletionProposal1.ItemList.count = 0) and (Length(CurrentInput)>0) then begin
begin
// Add databases // Add databases
for i := 0 to Databases.Count - 1 do begin for i := 0 to Databases.Count - 1 do begin
SynCompletionProposal1.InsertList.Add(Databases[i]); SynCompletionProposal1.InsertList.Add(Mask(Databases[i]));
SynCompletionProposal1.ItemList.Add(Databases[i]); SynCompletionProposal1.ItemList.Add(WideFormat(ItemPattern, [ICONINDEX_DB, 'database', Databases[i]]));
end; end;
for i:=0 to SynCompletionProposal1.ItemList.count-1 do
SynCompletionProposal1.ItemList[i] := WideFormat(ItemPattern, [ICONINDEX_DB, SynCompletionProposal1.ItemList[i]]);
if ActiveDatabase <> '' then begin if ActiveDatabase <> '' then begin
// Display tables from current db // Display tables from current db
@ -5006,20 +5006,18 @@ begin
end; end;
// Add functions // Add functions
for i := 0 to Length(MySQLFunctions) - 1 do for i := 0 to Length(MySQLFunctions) - 1 do begin
begin
// Don't display unsupported functions here // Don't display unsupported functions here
if MySqlFunctions[i].Version > mysql_version then if MySqlFunctions[i].Version > mysql_version then
continue; continue;
SynCompletionProposal1.InsertList.Add( MySQLFunctions[i].Name + MySQLFunctions[i].Declaration ); SynCompletionProposal1.InsertList.Add( MySQLFunctions[i].Name + MySQLFunctions[i].Declaration );
SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_FUNCTION, MySQLFunctions[i].Name + '\color{clSilver}' + MySQLFunctions[i].Declaration] ) ); SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_FUNCTION, 'function', MySQLFunctions[i].Name + '\color{clSilver}' + MySQLFunctions[i].Declaration] ) );
end; end;
// Add keywords // Add keywords
for i := 0 to MYSQL_KEYWORDS.Count - 1 do for i := 0 to MYSQL_KEYWORDS.Count - 1 do begin
begin
SynCompletionProposal1.InsertList.Add( MYSQL_KEYWORDS[i] ); SynCompletionProposal1.InsertList.Add( MYSQL_KEYWORDS[i] );
SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_KEYWORD, MYSQL_KEYWORDS[i]] ) ); SynCompletionProposal1.ItemList.Add( WideFormat(ItemPattern, [ICONINDEX_KEYWORD, 'keyword', MYSQL_KEYWORDS[i]] ) );
end; end;
end; end;