fixed result on searching proc in interface

git-svn-id: trunk@4325 -
This commit is contained in:
mattias 2003-06-26 17:00:00 +00:00
parent 7dd5932806
commit 05b82e5d51
5 changed files with 314 additions and 271 deletions

View File

@ -27,13 +27,13 @@
ToDo:
- ignore errors behind cursor (implemented, not tested)
- high level expression comparison
- find declaration in dead code
- high type expression evaluation
(i.e. at the moment: integer+integer=longint
wanted: integer+integer=integer)
- caching for procs
- variants
- 'class of'
- find declaration in dead code
- multi pass find declaration
- Get and Set property access parameter lists
- make @Proc context sensitive (started, but not complete)
@ -69,6 +69,7 @@ interface
{ $DEFINE ShowBaseTypeCache}
{ $DEFINE ShowCacheDependencies}
{ $DEFINE ShowCollect}
{ $DEFINE ShowProcSearch}
{$IFDEF CTDEBUG}{$DEFINE DebugPrefix}{$ENDIF}
{$IFDEF ShowTriedIdentifiers}{$DEFINE DebugPrefix}{$ENDIF}
@ -1733,7 +1734,7 @@ var
' File="',ExtractFilename(MainFilename)+'"',
' Flags=[',FindDeclarationFlagsAsString(Params.Flags),']',
' NewResult=',NewResult,
' CallOnIdentifierFound=',CallOnIdentifierFound
' CallOnIdentifierFound=',CallOnIdentifierFound,
);
end;
{$ENDIF}
@ -1750,7 +1751,7 @@ var
);
}
IdentFoundResult:=Params.NewCodeTool.DoOnIdentifierFound(Params,
Params.NewNode);
Params.NewNode);
Result:=IdentFoundResult<>ifrProceedSearch;
if IdentFoundResult<>ifrAbortSearch then exit;
end else begin
@ -1767,6 +1768,10 @@ var
Params.SetResult(Params.FoundProc^.Context.Tool,
Params.FoundProc^.Context.Node);
FindIdentifierInContext:=true;
{$IFDEF ShowProcSearch}
writeln('[TFindDeclarationTool.FindIdentifierInContext] PROC Search ended with only one proc:');
Params.WriteDebugReport;
{$ENDIF}
exit;
end;
if not (fdfExceptionOnNotFound in Params.Flags) then exit;
@ -1968,10 +1973,13 @@ var
or (ContextNode.HasAsParent(StartContextNode))) then
begin
// search next in parent
ContextNode:=ContextNode.Parent;
{$IFDEF ShowTriedParentContexts}
writeln('[TFindDeclarationTool.FindIdentifierInContext] Searching in Parent ContextNode=',ContextNode.DescAsString);
writeln('[TFindDeclarationTool.FindIdentifierInContext] Searching in Parent ',
' old ContextNode=',ContextNode.DescAsString,
' new ContextNode=',ContextNode.Parent.DescAsString
);
{$ENDIF}
ContextNode:=ContextNode.Parent;
case ContextNode.Desc of
ctnTypeSection, ctnVarSection, ctnConstSection, ctnResStrSection,
@ -3267,8 +3275,7 @@ begin
FInterfaceIdentifierCache.Add(OldInput.Identifier,Params.NewNode,
Params.NewCleanPos);
end else begin
// do not save proc identifiers or collect results
Result:=false;
// do not save proc identifiers or collection results
end;
end else begin
// identifier does not exist in this interface
@ -4760,9 +4767,15 @@ begin
// The search must go on, and the most compatible proc is returned.
if not Params.IdentifierTool.IsPCharInSrc(Params.Identifier) then begin
// Params.Identifier is not in the source of this tool
// Params.Identifier is not in the source of the start tool
// => impossible to check param list, because the context is unknown
// -> identifier found
{$IFDEF ShowProcSearch}
writeln('[TFindDeclarationTool.CheckSrcIdentifier]',
' Indent=',GetIdentifier(Params.Identifier),
' NO SOURCE to check params'
);
{$ENDIF}
Result:=ifrSuccess;
exit;
end;
@ -4771,6 +4784,12 @@ begin
if (Params.FoundProc=nil) then begin
// this is the first proc found
// -> save it and proceed the search to find all overloadeded procs
{$IFDEF ShowFoundIdentifier}
writeln('[TFindDeclarationTool.CheckSrcIdentifier]',
' Indent=',GetIdentifier(Params.Identifier),
' FIRST PROC'
);
{$ENDIF}
Params.SetFirstFoundProc(FoundContext);
exit;
end;

View File

@ -377,7 +377,7 @@ end;
Params: none
Returns: The (popup)menu containing this item.
Description of the function for the class.
------------------------------------------------------------------------------}
function TMenuItem.GetParentMenu: TMenu;
var
@ -385,7 +385,7 @@ var
begin
Item := Self;
while Item.Parent <> nil do Item := Item.Parent;
Result := Item.FMenu
Result := Item.FMenu;
end;
{------------------------------------------------------------------------------
@ -955,6 +955,9 @@ end;
{ =============================================================================
$Log$
Revision 1.36 2003/06/26 17:00:00 mattias
fixed result on searching proc in interface
Revision 1.35 2003/06/24 15:57:55 mattias
applied win32 menu patch from Micha Nelissen
@ -1088,6 +1091,9 @@ end;
$Log$
Revision 1.36 2003/06/26 17:00:00 mattias
fixed result on searching proc in interface
Revision 1.35 2003/06/24 15:57:55 mattias
applied win32 menu patch from Micha Nelissen

View File

@ -20,6 +20,7 @@ constructor TToggleBox.Create(TheOwner : TComponent);
begin
inherited Create(TheOwner);
fCompStyle := csToggleBox;
SetInitialBounds(0,0,90,25);
end;
{------------------------------------------------------------------------------}

View File

@ -6137,287 +6137,299 @@ begin
Widget:= PGtkWidget(Handle);
case TControl(Sender).fCompStyle of
csComboBox:
begin
case TCustomComboBox(Sender).Style of
csDropDownList :
begin
gtk_combo_set_value_in_list(PgtkCombo(Handle),-1, 0);
gtk_combo_set_use_arrows_always(PgtkCombo(Handle),-1);
gtk_combo_set_case_sensitive(PGtkCombo(Handle),0);
end;
else
begin
gtk_combo_set_value_in_list(PgtkCombo(Handle),0,0);
gtk_combo_set_use_arrows_always(PgtkCombo(Handle),0);
end;
end;
if TCustomComboBox(Sender).ArrowKeysTraverseList = True then
begin
gtk_combo_set_use_arrows(PgtkCombo(Handle),-1);
end else
begin
gtk_combo_set_use_arrows(PgtkCombo(Handle),0);
end;
csComboBox:
begin
case TCustomComboBox(Sender).Style of
csDropDownList :
begin
gtk_combo_set_value_in_list(PgtkCombo(Handle),-1, 0);
gtk_combo_set_use_arrows_always(PgtkCombo(Handle),-1);
gtk_combo_set_case_sensitive(PGtkCombo(Handle),0);
end;
else
begin
gtk_combo_set_value_in_list(PgtkCombo(Handle),0,0);
gtk_combo_set_use_arrows_always(PgtkCombo(Handle),0);
end;
end;
csEdit :
with TCustomEdit(Sender) do
begin
// XXX TODO: GTK 1.x does not support EchoMode emNone.
// This will have to be coded around, but not a priority
gtk_entry_set_editable(PgtkEntry(Handle), not (TCustomEdit(Sender).ReadOnly));
gtk_entry_set_max_length(PgtkEntry(Handle), TCustomEdit(Sender).MaxLength);
gtk_entry_set_visibility(PGtkEntry(Handle),
(TCustomEdit(Sender).EchoMode = emNormal)
and (TCustomEdit(Sender).PassWordChar=#0));
end;
csProgressBar :
with TProgressBar(Sender) do
begin
Widget := PGtkWidget( gtk_adjustment_new (0, Min, Max, 0, 0, 0));
gtk_progress_set_adjustment (GTK_PROGRESS (handle), PGtkAdjustment (Widget));
gtk_progress_set_value (GTK_PROGRESS (handle), Position);
if Smooth
then gtk_progress_bar_set_bar_style (GTK_PROGRESS_BAR (handle), GTK_PROGRESS_CONTINUOUS)
else gtk_progress_bar_set_bar_style (GTK_PROGRESS_BAR (handle), GTK_PROGRESS_DISCRETE);
case Orientation of
pbVertical : gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR (handle), GTK_PROGRESS_BOTTOM_TO_TOP);
pbRightToLeft : gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR (handle), GTK_PROGRESS_RIGHT_TO_LEFT);
pbTopDown : gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR (handle), GTK_PROGRESS_TOP_TO_BOTTOM);
else { pbHorizontal is default }
gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR (handle), GTK_PROGRESS_LEFT_TO_RIGHT);
end;
if BarShowText then
begin
gtk_progress_set_format_string (GTK_PROGRESS (handle), '%v from [%l-%u] (=%p%%)');
gtk_progress_set_show_text (GTK_PROGRESS (handle), 1);
end
else
gtk_progress_set_show_text (GTK_PROGRESS (handle), 0);
end;
csScrollBar:
with (TScrollBar (Sender)) do
begin
//set properties for the range
Widget := PGtkWidget (gtk_range_get_adjustment (GTK_RANGE (handle)));
PGtkAdjustment(Widget)^.lower := Min;
PGtkAdjustment(Widget)^.Upper := Max;
PGtkAdjustment(Widget)^.Value := Position;
PGtkAdjustment(Widget)^.step_increment := SmallChange;
PGtkAdjustment(Widget)^.page_increment := LargeChange;
end;
csTrackbar :
with (TTrackBar (Sender)) do
begin
Widget := PGtkWidget (gtk_range_get_adjustment (GTK_RANGE (handle)));
PGtkAdjustment(Widget)^.lower := Min;
PGtkAdjustment(Widget)^.Upper := Max;
PGtkAdjustment(Widget)^.Value := Position;
PGtkAdjustment(Widget)^.step_increment := LineSize;
PGtkAdjustment(Widget)^.page_increment := PageSize;
{ now do some of the more sophisticated features }
{ Hint: For some unknown reason we have to disable the draw_value first,
otherwise it's set always to true }
gtk_scale_set_draw_value (PGTKSCALE (handle), false);
if ShowScale then
begin
gtk_scale_set_draw_value (PGTKSCALE (handle), ShowScale);
case ScalePos of
trLeft : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_LEFT);
trRight : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_RIGHT);
trTop : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_TOP);
trBottom: gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_BOTTOM);
end;
end;
//Not here (Delphi compatibility): gtk_signal_emit_by_name (GTK_Object (Widget), 'value_changed');
end;
csLabel :
with TLabel(Sender) do
begin
gtk_label_set_justify(PGtkLabel(Handle), cLabelAlign[Alignment]);
gtk_misc_set_alignment(PGtkMisc(Handle), cLabelAlignX[Alignment],
cLabelAlignY[Layout]);
gtk_label_set_line_wrap(PGtkLabel(Handle), WordWrap);
end;
csListView :
if TCustomComboBox(Sender).ArrowKeysTraverseList = True then
begin
// set up columns..
gtk_combo_set_use_arrows(PgtkCombo(Handle),-1);
end else
begin
gtk_combo_set_use_arrows(PgtkCombo(Handle),0);
end;
end;
Widget:= GetWidgetInfo(Pointer(Handle), True)^.ImplementationWidget;
gtk_clist_freeze(PgtkCList(Widget));
for I := 0 to TListview(sender).Columns.Count-1 do
csEdit :
with TCustomEdit(Sender) do
begin
// XXX TODO: GTK 1.x does not support EchoMode emNone.
// This will have to be coded around, but not a priority
gtk_entry_set_editable(PgtkEntry(Handle), not (TCustomEdit(Sender).ReadOnly));
gtk_entry_set_max_length(PgtkEntry(Handle), TCustomEdit(Sender).MaxLength);
gtk_entry_set_visibility(PGtkEntry(Handle),
(TCustomEdit(Sender).EchoMode = emNormal)
and (TCustomEdit(Sender).PassWordChar=#0));
end;
csProgressBar :
with TProgressBar(Sender) do
begin
if Smooth
then gtk_progress_bar_set_bar_style (GTK_PROGRESS_BAR (handle),
GTK_PROGRESS_CONTINUOUS)
else gtk_progress_bar_set_bar_style (GTK_PROGRESS_BAR (handle),
GTK_PROGRESS_DISCRETE);
case Orientation of
pbVertical : gtk_progress_bar_set_orientation(
GTK_PROGRESS_BAR (handle),
GTK_PROGRESS_BOTTOM_TO_TOP);
pbRightToLeft: gtk_progress_bar_set_orientation(
GTK_PROGRESS_BAR (handle),
GTK_PROGRESS_RIGHT_TO_LEFT);
pbTopDown : gtk_progress_bar_set_orientation(
GTK_PROGRESS_BAR (handle),
GTK_PROGRESS_TOP_TO_BOTTOM);
else { pbHorizontal is default }
gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR (Handle),
GTK_PROGRESS_LEFT_TO_RIGHT);
end;
if BarShowText then
begin
gtk_progress_set_format_string (GTK_PROGRESS (Handle),
'%v from [%l-%u] (=%p%%)');
gtk_progress_set_show_text (GTK_PROGRESS (Handle), 1);
end
else
gtk_progress_set_show_text (GTK_PROGRESS (Handle), 0);
Widget := PGtkWidget( gtk_adjustment_new (0, Min, Max, 0, 0, 0));
gtk_progress_set_adjustment (GTK_PROGRESS (Handle), PGtkAdjustment (Widget));
writeln('SetProperties A ',Position);
gtk_progress_set_value (GTK_PROGRESS (Handle), Position);
end;
csScrollBar:
with (TScrollBar (Sender)) do
begin
//set properties for the range
Widget := PGtkWidget (gtk_range_get_adjustment (GTK_RANGE (handle)));
PGtkAdjustment(Widget)^.lower := Min;
PGtkAdjustment(Widget)^.Upper := Max;
PGtkAdjustment(Widget)^.Value := Position;
PGtkAdjustment(Widget)^.step_increment := SmallChange;
PGtkAdjustment(Widget)^.page_increment := LargeChange;
end;
csTrackbar :
with (TTrackBar (Sender)) do
begin
Widget := PGtkWidget (gtk_range_get_adjustment (GTK_RANGE (handle)));
PGtkAdjustment(Widget)^.lower := Min;
PGtkAdjustment(Widget)^.Upper := Max;
PGtkAdjustment(Widget)^.Value := Position;
PGtkAdjustment(Widget)^.step_increment := LineSize;
PGtkAdjustment(Widget)^.page_increment := PageSize;
{ now do some of the more sophisticated features }
{ Hint: For some unknown reason we have to disable the draw_value first,
otherwise it's set always to true }
gtk_scale_set_draw_value (PGTKSCALE (handle), false);
if ShowScale then
begin
gtk_clist_set_column_title(Pgtkclist(Widget),I,
PChar(TListview(sender).Columns[i].Caption));
// set column alignment
gtk_clist_set_column_justification(PgtkCList(Widget),I,
aGTKJUSTIFICATION[TListview(sender).Columns[i].Alignment]);
// set auto sizing
gtk_clist_set_column_auto_resize(PgtkCList(Widget),I,
TListview(sender).Columns[i].AutoSize);
// set width
gtk_clist_set_column_width(PgtkCList(Widget),I,
TListview(sender).Columns[i].Width);
// set Visible
gtk_clist_set_column_visibility(PgtkCList(Widget),I,
TListview(sender).Columns[i].Visible);
// set MinWidth
if TListview(sender).Columns[i].MinWidth>0 then
gtk_clist_set_column_min_width(PGtkCList(Widget), I,
TListview(sender).Columns[i].MinWidth);
// set MaxWidth
if (TListview(sender).Columns[i].MaxWidth>=
TListview(sender).Columns[i].MinWidth)
and (TListview(sender).Columns[i].MaxWidth>0) then
gtk_clist_set_column_max_width(PGtkCList(Widget), I,
TListview(sender).Columns[i].MaxWidth);
gtk_scale_set_draw_value (PGTKSCALE (handle), ShowScale);
case ScalePos of
trLeft : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_LEFT);
trRight : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_RIGHT);
trTop : gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_TOP);
trBottom: gtk_scale_set_value_pos (PGTKSCALE (handle), GTK_POS_BOTTOM);
end;
end;
//Not here (Delphi compatibility): gtk_signal_emit_by_name (GTK_Object (Widget), 'value_changed');
end;
//sorting
if (TListview(sender).ViewStyle = vsReport)
then gtk_clist_column_titles_show(PgtkCList(Widget))
else gtk_clist_column_titles_Hide(PgtkCList(Widget));
csLabel :
with TLabel(Sender) do
begin
gtk_label_set_justify(PGtkLabel(Handle), cLabelAlign[Alignment]);
gtk_misc_set_alignment(PGtkMisc(Handle), cLabelAlignX[Alignment],
cLabelAlignY[Layout]);
gtk_label_set_line_wrap(PGtkLabel(Handle), WordWrap);
end;
csListView :
begin
// set up columns..
gtk_clist_set_sort_column(PgtkCList(Widget),
TListview(sender).SortColumn);
//multiselect
gtk_clist_set_selection_mode(PgtkCList(Widget),
aGTkSelectionMode[TListview(sender).MultiSelect]);
Widget:= GetWidgetInfo(Pointer(Handle), True)^.ImplementationWidget;
gtk_clist_freeze(PgtkCList(Widget));
for I := 0 to TListview(sender).Columns.Count-1 do
begin
gtk_clist_set_column_title(Pgtkclist(Widget),I,
PChar(TListview(sender).Columns[i].Caption));
// set column alignment
gtk_clist_set_column_justification(PgtkCList(Widget),I,
aGTKJUSTIFICATION[TListview(sender).Columns[i].Alignment]);
// set auto sizing
gtk_clist_set_column_auto_resize(PgtkCList(Widget),I,
TListview(sender).Columns[i].AutoSize);
// set width
gtk_clist_set_column_width(PgtkCList(Widget),I,
TListview(sender).Columns[i].Width);
// set Visible
gtk_clist_set_column_visibility(PgtkCList(Widget),I,
TListview(sender).Columns[i].Visible);
// set MinWidth
if TListview(sender).Columns[i].MinWidth>0 then
gtk_clist_set_column_min_width(PGtkCList(Widget), I,
TListview(sender).Columns[i].MinWidth);
// set MaxWidth
if (TListview(sender).Columns[i].MaxWidth>=
TListview(sender).Columns[i].MinWidth)
and (TListview(sender).Columns[i].MaxWidth>0) then
gtk_clist_set_column_max_width(PGtkCList(Widget), I,
TListview(sender).Columns[i].MaxWidth);
end;
//sorting
if (TListview(sender).ViewStyle = vsReport)
then gtk_clist_column_titles_show(PgtkCList(Widget))
else gtk_clist_column_titles_Hide(PgtkCList(Widget));
gtk_clist_set_sort_column(PgtkCList(Widget),
TListview(sender).SortColumn);
//multiselect
gtk_clist_set_selection_mode(PgtkCList(Widget),
aGTkSelectionMode[TListview(sender).MultiSelect]);
//TODO:This doesn't work right now
// gtk_clist_set_auto_sort(PgtkCList(handle),TListview(sender).Sorted);
//
//do items...
//
for I := 0 to TListview(sender).Items.Count-1 do
begin
pRowText:=PChar(TListItem(TListview(sender).Items[i]).Caption);
gtk_clist_set_text(Pgtkclist(Widget),I,0,pRowText);
//do image if one is assigned....
// TODO: Largeimage support
if (TListview(sender).SmallImages <> nil)
and (TListItem(TListview(sender).Items[i]).ImageIndex > -1)
then begin
Writeln('Checking images');
if (TListItem(TListview(sender).Items[i]).ImageIndex
< TListview(sender).SmallImages.Count)
then begin
//draw image
//Writeln('drawing image');
//Writeln('TListItem(TListview(sender).Items[i]).ImageIndex is ',TListItem(TListview(sender).Items[i]).ImageIndex);
BitImage := TBitmap.Create;
TListview(sender).SmallImages.GetBitmap(
TListItem(TListview(sender).Items[i]).ImageIndex,BitImage);
gtk_clist_set_pixmap(Pgtkclist(Widget),I,0,
pgdkPixmap(PgdiObject(BitImage.handle)^.GDIBitmapObject),
nil);
{$IfNDef Win32}
gtk_clist_set_pixtext(Pgtkclist(Widget),I,0,pRowText,3,
pgdkPixmap(PgdiObject(BitImage.handle)^.GDIBitmapObject),
nil);
{$EndIF}
// bitimage.Free;
end;
end;
if (TListview(sender).ViewStyle = vsReport)
then begin //columns showing
for X := 1 to TListview(sender).Columns.Count-1 do
begin
if ( X <= TListItem(TListview(sender).Items[i]).SubItems.Count)
then begin
pRowText:=PChar(TListItem(
TListview(sender).Items[i]).SubItems.Strings[X-1]);
gtk_clist_set_text(Pgtkclist(Widget),I,X,pRowText);
end;
end; //for loop
end;
end;
gtk_clist_thaw(PgtkCList(Widget));
end;
csMemo:
//
//do items...
//
for I := 0 to TListview(sender).Items.Count-1 do
begin
ImplWidget:= GetWidgetInfo(Widget, true)^.ImplementationWidget;
gtk_text_set_editable (PGtkText(ImplWidget), not (Sender as TCustomMemo).ReadOnly);
{$IfNDef Win32}
if TCustomMemo(Sender).WordWrap then
gtk_text_set_line_wrap(PGtkText(ImplWidget), 1)
else
gtk_text_set_line_wrap(PGtkText(ImplWidget), 0);
{$EndIf}
gtk_text_set_word_wrap(PGtkText(ImplWidget), 1);
pRowText:=PChar(TListItem(TListview(sender).Items[i]).Caption);
gtk_clist_set_text(Pgtkclist(Widget),I,0,pRowText);
case (Sender as TCustomMemo).Scrollbars of
ssHorizontal: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
ssVertical: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
ssBoth: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
ssAutoHorizontal: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
ssAutoVertical: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
ssAutoBoth: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
else
gtk_scrolled_window_set_policy(PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
//do image if one is assigned....
// TODO: Largeimage support
if (TListview(sender).SmallImages <> nil)
and (TListItem(TListview(sender).Items[i]).ImageIndex > -1)
then begin
Writeln('Checking images');
if (TListItem(TListview(sender).Items[i]).ImageIndex
< TListview(sender).SmallImages.Count)
then begin
//draw image
//Writeln('drawing image');
//Writeln('TListItem(TListview(sender).Items[i]).ImageIndex is ',TListItem(TListview(sender).Items[i]).ImageIndex);
BitImage := TBitmap.Create;
TListview(sender).SmallImages.GetBitmap(
TListItem(TListview(sender).Items[i]).ImageIndex,BitImage);
gtk_clist_set_pixmap(Pgtkclist(Widget),I,0,
pgdkPixmap(PgdiObject(BitImage.handle)^.GDIBitmapObject),
nil);
{$IfNDef Win32}
gtk_clist_set_pixtext(Pgtkclist(Widget),I,0,pRowText,3,
pgdkPixmap(PgdiObject(BitImage.handle)^.GDIBitmapObject),
nil);
{$EndIF}
// bitimage.Free;
end;
end;
if (TListview(sender).ViewStyle = vsReport)
then begin //columns showing
for X := 1 to TListview(sender).Columns.Count-1 do
begin
if ( X <= TListItem(TListview(sender).Items[i]).SubItems.Count)
then begin
pRowText:=PChar(TListItem(
TListview(sender).Items[i]).SubItems.Strings[X-1]);
gtk_clist_set_text(Pgtkclist(Widget),I,X,pRowText);
end;
end; //for loop
end;
end;
gtk_clist_thaw(PgtkCList(Widget));
end;
csMemo:
begin
ImplWidget:= GetWidgetInfo(Widget, true)^.ImplementationWidget;
gtk_text_set_editable (PGtkText(ImplWidget), not (Sender as TCustomMemo).ReadOnly);
{$IfNDef Win32}
if TCustomMemo(Sender).WordWrap then
gtk_text_set_line_wrap(PGtkText(ImplWidget), 1)
else
gtk_text_set_line_wrap(PGtkText(ImplWidget), 0);
{$EndIf}
gtk_text_set_word_wrap(PGtkText(ImplWidget), 1);
case (Sender as TCustomMemo).Scrollbars of
ssHorizontal: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
ssVertical: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
ssBoth: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
ssAutoHorizontal: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
ssAutoVertical: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
ssAutoBoth: gtk_scrolled_window_set_policy(
PGtkScrolledWindow(Widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
else
gtk_scrolled_window_set_policy(PGtkScrolledWindow(Widget),
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
end;
if (TCustomMemo(Sender).MaxLength >= 0) then begin
i:= gtk_text_get_length(PGtkText(ImplWidget));
if i > TCustomMemo(Sender).MaxLength then begin
gtk_editable_delete_text(PGtkEditable(ImplWidget), TCustomMemo(Sender).MaxLength, i);
gtk_editable_delete_text(PGtkEditable(ImplWidget), TCustomMemo(Sender).MaxLength, i);
end;
end;
end;
csSpinEdit:
Begin
AnAdjustment:=gtk_spin_button_get_adjustment(PgtkSpinButton(Handle));
if (AnAdjustment^.lower<>TSpinEdit(Sender).MinValue)
or (AnAdjustment^.upper<>TSpinEdit(Sender).MaxValue) then
begin
AnAdjustment^.lower:=TSpinEdit(Sender).MinValue;
AnAdjustment^.upper:=TSpinEdit(Sender).MaxValue;
gtk_adjustment_changed(AnAdjustment);
end;
csSpinEdit:
Begin
AnAdjustment:=gtk_spin_button_get_adjustment(PgtkSpinButton(Handle));
if (AnAdjustment^.lower<>TSpinEdit(Sender).MinValue)
or (AnAdjustment^.upper<>TSpinEdit(Sender).MaxValue) then
begin
AnAdjustment^.lower:=TSpinEdit(Sender).MinValue;
AnAdjustment^.upper:=TSpinEdit(Sender).MaxValue;
gtk_adjustment_changed(AnAdjustment);
end;
gtk_spin_button_set_digits(PgtkSpinButton(Handle),
TSpinEdit(Sender).Decimal_Places);
gtk_spin_button_set_value(PgtkSpinButton(Handle),
TSpinEdit(Sender).Value);
PgtkSpinButton(Handle)^.climb_rate:=TSpinEdit(Sender).Climb_Rate;
End;
gtk_spin_button_set_digits(PgtkSpinButton(Handle),
TSpinEdit(Sender).Decimal_Places);
gtk_spin_button_set_value(PgtkSpinButton(Handle),
TSpinEdit(Sender).Value);
PgtkSpinButton(Handle)^.climb_rate:=TSpinEdit(Sender).Climb_Rate;
End;
else
Assert (true, Format ('WARNING:[TgtkObject.SetProperties] failed for %s', [Sender.ClassName]));
end;
else
Assert (true, Format ('WARNING:[TgtkObject.SetProperties] failed for %s', [Sender.ClassName]));
end;
end;
{------------------------------------------------------------------------------
@ -7463,6 +7475,9 @@ end;
{ =============================================================================
$Log$
Revision 1.382 2003/06/26 17:00:00 mattias
fixed result on searching proc in interface
Revision 1.381 2002/08/19 15:15:24 mattias
implemented TPairSplitter

View File

@ -213,7 +213,6 @@ type
end;
{ TMenu }
TFindItemKind = (fkCommand, fkHandle, fkShortCut);
@ -383,6 +382,9 @@ end.
{
$Log$
Revision 1.49 2003/06/26 17:00:00 mattias
fixed result on searching proc in interface
Revision 1.48 2003/06/24 15:57:55 mattias
applied win32 menu patch from Micha Nelissen