diff options
Diffstat (limited to 'UGnome.pas')
| -rw-r--r-- | UGnome.pas | 494 |
1 files changed, 175 insertions, 319 deletions
@@ -21,27 +21,11 @@ unit UGnome; interface -uses glib2, lazglib2, lazgobject2, gdk2, gdk2pixbuf, gtk2, Classes, ULibc, +uses lazglib2, lazgobject2, lazgdk3, lazgdkpixbuf2, lazgtk3, Classes, ULibc, GTKForms, GTKControls, GTKStdCtrls, GTKExtCtrls, GTKClasses, GTKDialogs, GTKUtils, GTKConsts, uVFSprototypes; -type TGnomeColorButton = class(TGTKButton) - private - FUseGnomeUI: boolean; - FColor: TGDKColor; - FColorChanged: TNotifyEvent; - function GetColor: TGDKColor; - procedure SetColor(Value: TGDKColor); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure SetDefaultColor; - procedure UnsetDefaultColor; - property Color: GTKClasses.TGDKColor read GetColor write SetColor; - published - property OnColorChanged: TNotifyEvent read FColorChanged write FColorChanged; - end; - +type TGnomeIconEntry = class(TGTKVBox) private FIconChanged: TNotifyEvent; @@ -81,10 +65,8 @@ type TGnomeColorButton = class(TGTKButton) TEphyNotebook = class(TGTKNotebook) private FShowCloseButtons: boolean; - FShowTooltips: boolean; FAllowDragDrop: boolean; FAllowDragOutside: boolean; - FTooltips: PGtkTooltips; FOnNotebookReordered: TEphyNotebookReorderedEvent; FOnTabClose: TEphyNotebookTabCloseEvent; FOnTabDoubleClick: TEphyNotebookTabDoubleClickEvent; @@ -103,7 +85,6 @@ type TGnomeColorButton = class(TGTKButton) FBusy: boolean; procedure SetShowCloseButtons(Value: boolean); - procedure SetShowTooltips(Value: boolean); procedure SetAllowDragDrop(Value: boolean); procedure SetAllowDragOutside(Value: boolean); @@ -129,7 +110,6 @@ type TGnomeColorButton = class(TGTKButton) published property PageIndex: integer read GetPageIndex write SetPageIndex; property ShowCloseButtons: boolean read FShowCloseButtons write SetShowCloseButtons default False; - property ShowTooltips: boolean read FShowTooltips write SetShowTooltips default False; property AllowDragDrop: boolean read FAllowDragDrop write SetAllowDragDrop default False; property AllowDragOutside: boolean read FAllowDragOutside write SetAllowDragOutside default False; property OnNotebookReordered: TEphyNotebookReorderedEvent read FOnNotebookReordered write FOnNotebookReordered; @@ -176,15 +156,7 @@ type PGnomeColorPicker = PGtkWidget; const AFTER_ALL_TABS = -1; NOT_IN_APP_WINDOWS = -2; -var libGtk2Handle, libGnome2Handle, libGnomeUI2Handle: Pointer; - gnome_about_new: function (const name, version, copyright, comments: Pchar; const authors, documenters: PPchar; - const translator_credits: Pchar; logo_pixbuf: PGdkPixbuf): PGtkWidget; cdecl; - gnome_program_init: function (const app_id, app_version: PChar; const module_info: Pointer; argc: integer; argv: PPChar): Pointer; varargs; cdecl; - libgnome_module_info_get: function: Pointer; cdecl; - libgnomeui_module_info_get: function: Pointer; cdecl; - gnome_color_picker_new: function: PGnomeColorPicker; cdecl; - gnome_color_picker_get_i16: procedure (cp: PGnomeColorPicker; R, G, B, A: Pword); cdecl; - gnome_color_picker_set_i16: procedure (cp: PGnomeColorPicker; R, G, B, A: word); cdecl; +var gnome_icon_entry_new: function (const history_id, browse_dialog_title: Pchar): PGtkWidget; cdecl; gnome_icon_entry_set_pixmap_subdir: procedure (ientry: PGnomeIconEntry; const subdir: Pgchar); cdecl; gnome_icon_entry_get_filename: function (ientry: PGnomeIconEntry): Pgchar; cdecl; @@ -195,17 +167,6 @@ var libGtk2Handle, libGnome2Handle, libGnomeUI2Handle: Pointer; -procedure gtk_event_box_set_visible_window(event_box: PGtkEventBox; visible_window: gboolean); cdecl; external gtklib; -function gtk_icon_size_lookup_for_settings(settings: PGtkSettings; size: TGtkIconSize; width, height: Pgint): gboolean; cdecl; external gtklib; -procedure gtk_window_set_icon_name(window: PGtkWindow; const name: Pgchar); cdecl; external gtklib; -function gtk_notebook_insert_page(notebook:PGtkNotebook; child:PGtkWidget;tab_label:PGtkWidget; position:gint):gint; cdecl; external gtklib; -function gtk_message_dialog_new_with_markup(parent:PGtkWindow; flags:TGtkDialogFlags; - _type:TGtkMessageType; buttons:TGtkButtonsType; - message_format:Pgchar):PGtkWidget; varargs; cdecl; external gtklib; - - - - procedure LoadGnomeLibs; implementation @@ -217,99 +178,6 @@ uses SysUtils, DateUtils, UCoreUtils, ULocale, UFileAssoc; (********************************************************************************************************************************) (********************************************************************************************************************************) (********************************************************************************************************************************) -procedure TGnomeColorButton_OnClick(button: PGtkButton; user_data: Pgpointer); cdecl; -var Dialog: TGTKColorSelectionDialog; - i: integer; -begin - if Assigned(user_data) then - with TGnomeColorButton(user_data) do begin - Dialog := TGTKColorSelectionDialog.CreateWithTitle(Parent, LANGSelectFileTypeColor); - try - Dialog.ShowPalette := True; - Dialog.Color := Color; - if Byte(Dialog.Run) = 251 then begin - for i := 0 to 4 do SetBackgroundColor(i, GDKColorToPGdkColor(Dialog.Color)); - FColor := Dialog.Color; - if Assigned(FColorChanged) then FColorChanged(TGnomeColorButton(user_data)); - end; - finally - Dialog.Free; - end; - end; -end; - -procedure TGnomeColorButton_color_set(colorpicker: PGnomeColorPicker; arg1, arg2, arg3, arg4: Word; user_data: Pointer); cdecl; -begin - if Assigned(user_data) and Assigned(TGnomeColorButton(user_data).FColorChanged) then - with TGnomeColorButton(user_data) do begin - FColorChanged(TGnomeColorButton(user_data)); - FColor := Color; - end; -end; - -constructor TGnomeColorButton.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FUseGnomeUI := Assigned(gnome_color_picker_new) and Assigned(gnome_color_picker_get_i16) and Assigned(gnome_color_picker_set_i16); - if FUseGnomeUI then begin - FWidget := gnome_color_picker_new(); - g_signal_connect_data(PGObject(FWidget), 'color-set', TGCallback(@TGnomeColorButton_color_set), Self, nil, G_CONNECT_DEFAULT); - end else begin - FWidget := gtk_button_new_with_label(''); // This should be here due to height-related troubles - g_signal_connect_data(PGObject(FWidget), 'clicked', TGCallback(@TGnomeColorButton_OnClick), Self, nil, G_CONNECT_DEFAULT); - BorderStyle := bsHalf; - end; - Show; - FColorChanged := nil; -end; - -destructor TGnomeColorButton.Destroy; -begin - inherited Destroy; -end; - -function TGnomeColorButton.GetColor: TGDKColor; -var R, G, B, A: word; -begin - if FUseGnomeUI then begin - if Enabled then begin - gnome_color_picker_get_i16(FWidget, @R, @G, @B, @A); - Result := PGdkColorToGDKColor(AllocateColor(nil, R, G, B)); - end else Result := FColor; - end else Result := FColor; -end; - -procedure TGnomeColorButton.SetColor(Value: TGDKColor); -var i: integer; -begin - FColor := Value; - if FUseGnomeUI then gnome_color_picker_set_i16(FWidget, Value.red, Value.green, Value.blue, 0) - else for i := 0 to 4 do SetBackgroundColor(i, GDKColorToPGdkColor(Value)); -end; - -procedure TGnomeColorButton.SetDefaultColor; -var i: integer; -begin - if not Enabled then Exit; - gtk_widget_set_sensitive(PGtkWidget(FWidget), False); - if FUseGnomeUI then begin - FColor := GetColor; - gnome_color_picker_set_i16(FWidget, 0, 0, 0, 0) -// SetColor(PGdkColorToGDKColor(AllocateColor(FWidget, 0, 0, 0){GetDefaultBackgroundColor(1)})); - end else for i := 0 to 4 do SetBackgroundColor(i, GetDefaultBackgroundColor(i)); -end; - -procedure TGnomeColorButton.UnsetDefaultColor; -var i: integer; -begin - if Enabled then Exit; - gtk_widget_set_sensitive(PGtkWidget(FWidget), True); - if FUseGnomeUI then SetColor(FColor) else - for i := 0 to 4 do SetBackgroundColor(i, GDKColorToPGdkColor(FColor)); -end; - -(********************************************************************************************************************************) -(********************************************************************************************************************************) procedure TGnomeIconEntry_changed(iconentry: PGnomeIconEntry; user_data: gpointer); cdecl; begin if Assigned(user_data) and Assigned(TGnomeIconEntry(user_data).FIconChanged) then @@ -380,11 +248,8 @@ function label_ebox_button_pressed(widget: PGtkWidget; event: PGdkEventButton; d constructor TEphyNotebook.Create(AOwner: TComponent); begin inherited Create(AOwner); - FTooltips := gtk_tooltips_new; - gtk_tooltips_disable(FTooltips); cursor := nil; FShowCloseButtons := False; - FShowTooltips := False; FAllowDragDrop := False; FAllowDragOutside := False; FOnNotebookReordered := nil; @@ -399,7 +264,7 @@ begin g_signal_connect_data(PGObject(FWidget), 'button-press-event', TGCallback(@button_press_cb), Self, nil, G_CONNECT_DEFAULT); g_signal_connect_data(PGObject(FWidget), 'button-release-event', TGCallback(@button_release_cb), Self, nil, G_CONNECT_DEFAULT); g_signal_connect_data(PGObject(FWidget), 'scroll-event', TGCallback(@scroll_event_callback), Self, nil, G_CONNECT_DEFAULT); - gtk_widget_add_events(FWidget, GDK_BUTTON1_MOTION_MASK); + gtk_widget_add_events(FWidget, guint(GDK_BUTTON1_MOTION_MASK)); Show; end; @@ -416,14 +281,6 @@ begin // Apply settings here end; - -procedure TEphyNotebook.SetShowTooltips(Value: boolean); -begin - FShowTooltips := Value; - if Value then gtk_tooltips_enable(FTooltips) - else gtk_tooltips_disable(FTooltips); -end; - procedure TEphyNotebook.SetAllowDragDrop(Value: boolean); begin FAllowDragDrop := Value; @@ -449,7 +306,9 @@ begin char_width := pango_font_metrics_get_approximate_digit_width(metrics); pango_font_metrics_unref(metrics); } - gtk_icon_size_lookup_for_settings(gtk_widget_get_settings(hbox), GTK_ICON_SIZE_MENU, @w, @h); + w := 16; + h := 16; +// gtk_icon_size_lookup_for_settings(gtk_widget_get_settings(hbox), GTK_ICON_SIZE_MENU, @w, @h); // gtk_widget_set_size_request(hbox, TAB_WIDTH_N_CHARS * PANGO_PIXELS(char_width) + 2 * w, -1); @@ -466,14 +325,14 @@ begin tab := g_object_get_data(PGObject(widget), 'child'); ntb := TEphyNotebook(data); - position := gtk_notebook_page_num(GTK_NOTEBOOK(ntb.FWidget), GTK_WIDGET(tab)); + position := gtk_notebook_page_num(PGtkNotebook(ntb.FWidget), PGtkWidget(tab)); // DebugMsg(['@******* close_button_clicked_cb: Position = ', position, ', data = 0x', IntToHex(Integer(data), 8), ', widget = 0x', IntToHex(Integer(widget), 8)]); CanClose := True; if @ntb.FOnTabClose <> nil then ntb.FOnTabClose(ntb, position, CanClose); - if CanClose then gtk_notebook_remove_page(GTK_NOTEBOOK(ntb.FWidget), position); + if CanClose then gtk_notebook_remove_page(PGtkNotebook(ntb.FWidget), position); end; function TEphyNotebook.AppendPage(Child: TGTKControl; Caption: string): integer; @@ -483,52 +342,54 @@ end; function TEphyNotebook.InsertPage(Position: integer; Child: TGTKControl; Caption: string): integer; var hbox, label_hbox, label_ebox, _label, close_button, image, icon: PGtkWidget; - rcstyle: PGtkRcStyle; +// rcstyle: PGtkRcStyle; begin // set hbox spacing and label padding (see below) so that there's an equal amount of space around the label - hbox := gtk_hbox_new(FALSE, 0); + hbox := gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); label_ebox := gtk_event_box_new(); - gtk_event_box_set_visible_window(GTK_EVENT_BOX (label_ebox), FALSE); - gtk_box_pack_start(GTK_BOX (hbox), label_ebox, TRUE, TRUE, 0); + gtk_event_box_set_visible_window(PGtkEventBox (label_ebox), FALSE); + gtk_box_pack_start(PGtkBox (hbox), label_ebox, TRUE, TRUE, 0); g_signal_connect_data(PGObject(label_ebox), 'button-press-event', TGCallback(@label_ebox_button_pressed), Self, nil, G_CONNECT_DEFAULT); g_object_set_data(PGObject(label_ebox), 'child', Child.FWidget); - label_hbox := gtk_hbox_new (FALSE, 0); - gtk_container_add(GTK_CONTAINER (label_ebox), label_hbox); + label_hbox := gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_container_add(PGtkContainer (label_ebox), label_hbox); // setup close button close_button := gtk_button_new (); - gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE); + gtk_button_set_relief (PGtkButton (close_button), GTK_RELIEF_NONE); // don't allow focus on the close button g_object_set(PGObject(close_button), 'can-focus', [gboolean(FALSE), nil]); - gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE); + gtk_button_set_relief (PGtkButton (close_button), GTK_RELIEF_NONE); - rcstyle := gtk_rc_style_new (); + // TODO +{ rcstyle := gtk_rc_style_new (); rcstyle^.xthickness := Ord(rcstyle^.ythickness = 0); gtk_widget_modify_style (close_button, rcstyle); gtk_rc_style_unref (rcstyle); +} + image := gtk_image_new_from_icon_name('gtk-close', GTK_ICON_SIZE_MENU); + gtk_container_add(PGtkContainer(close_button), image); + gtk_box_pack_start(PGtkBox(hbox), close_button, FALSE, FALSE, 0); - image := gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); - gtk_container_add (GTK_CONTAINER (close_button), image); - gtk_box_pack_start (GTK_BOX (hbox), close_button, FALSE, FALSE, 0); - - gtk_tooltips_set_tip(FTooltips, close_button, PChar(LANGEphyNotebookCloseTab), nil); + gtk_widget_set_tooltip_text(close_button, PChar(LANGEphyNotebookCloseTab)); g_object_set_data(PGObject(close_button), 'tab', hbox); g_object_set_data(PGObject(close_button), 'child', Child.FWidget); g_signal_connect_data(PGObject(close_button), 'clicked', TGCallback(@close_button_clicked_cb), Self, nil, G_CONNECT_DEFAULT); // setup site icon, empty by default icon := gtk_image_new (); - gtk_box_pack_start (GTK_BOX (label_hbox), icon, FALSE, FALSE, 0); + gtk_box_pack_start (PGtkBox (label_hbox), icon, FALSE, FALSE, 0); // setup label _label := gtk_label_new(PChar(Caption)); -// gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); -// gtk_label_set_single_line_mode (GTK_LABEL (label), TRUE); - gtk_misc_set_alignment (GTK_MISC(_label), 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC(_label), 2, 0); - gtk_box_pack_start (GTK_BOX(label_hbox), _label, TRUE, TRUE, 0); +// gtk_label_set_ellipsize (PGtkLabel (label), PANGO_ELLIPSIZE_END); +// gtk_label_set_single_line_mode (PGtkLabel (label), TRUE); + gtk_label_set_yalign(PGtkLabel(_label), 0.5); + gtk_widget_set_margin_start(_label, 2); + gtk_widget_set_margin_end(_label, 2); + gtk_box_pack_start (PGtkBox(label_hbox), _label, TRUE, TRUE, 0); // Set minimal size g_signal_connect_data(PGObject(hbox), 'style-set', TGCallback(@tab_label_style_set_cb), nil, nil, G_CONNECT_DEFAULT); @@ -545,7 +406,6 @@ begin g_object_set_data(PGObject(hbox), 'label-ebox', label_ebox); g_object_set_data(PGObject(hbox), 'icon', icon); g_object_set_data(PGObject(hbox), 'close-button', close_button); - g_object_set_data(PGObject(hbox), 'tooltips', FTooltips); Result := gtk_notebook_insert_page(PGtkNotebook(FWidget), Child.FWidget, hbox, Position); end; @@ -560,7 +420,7 @@ var wid, lab: PGtkWidget; begin wid := gtk_notebook_get_tab_label(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo)); lab := g_object_get_data (PGObject(wid), 'label'); - Result := String(gtk_label_get_text(GTK_LABEL(lab))); + Result := String(gtk_label_get_text(PGtkLabel(lab))); end; procedure TEphyNotebook.SetTabCaption(PageNo: integer; Caption: string); @@ -568,7 +428,7 @@ var wid, lab: PGtkWidget; begin wid := gtk_notebook_get_tab_label(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo)); lab := g_object_get_data (PGObject(wid), 'label'); - gtk_label_set_text(GTK_LABEL(lab), PChar(Caption)); + gtk_label_set_text(PGtkLabel(lab), PChar(Caption)); end; procedure TEphyNotebook.SetTabTooltip(PageNo: integer; ATooltip: string); @@ -576,7 +436,7 @@ var wid, lab: PGtkWidget; begin wid := gtk_notebook_get_tab_label(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo)); lab := g_object_get_data (PGObject(wid), 'label-ebox'); - gtk_tooltips_set_tip(FTooltips, lab, PChar(ATooltip), nil); + gtk_widget_set_tooltip_text(lab, PChar(ATooltip)); end; function TEphyNotebook.GetPageIndex: integer; @@ -588,7 +448,7 @@ procedure TEphyNotebook.SetPageIndex(Value: integer); begin DebugMsg(['SetPageIndex(Value = ', Value, ')']); if (GetPageIndex <> Value) and (Value >= 0) then begin - gtk_notebook_set_page(PGtkNotebook(FWidget), Value); + gtk_notebook_set_current_page(PGtkNotebook(FWidget), Value); if Assigned(FOnTabSwitchedEvent) then FOnTabSwitchedEvent(Self, Value, True); end; end; @@ -599,11 +459,12 @@ var tab_pos: TGtkPositionType; page_num: integer; page, tab: PGtkWidget; max_x, max_y, x_root, y_root: integer; + allocation: TGtkAllocation; begin page_num := 0; tab_pos := gtk_notebook_get_tab_pos(PGtkNotebook(FWidget)); - if PGtkNotebook(FWidget)^.first_tab = nil then begin + if gtk_notebook_get_n_pages(PGtkNotebook(FWidget)) < 1 then begin DebugMsg(['@***************** first_tab = nil']); Result := AFTER_ALL_TABS; // DebugMsg(['@******* find_tab_num_at_pos(abs_x = ', abs_x, ', abs_y = ', abs_y, ', Result = ', Result, ')']); @@ -627,15 +488,16 @@ begin Exit; end; - if (not GTK_WIDGET_MAPPED(GTK_WIDGET(tab))) then begin + if (not gtk_widget_get_mapped(PGtkWidget(tab))) then begin Inc(page_num); Continue; end; - gdk_window_get_origin(GDK_WINDOW(tab^.window), @x_root, @y_root); + gdk_window_get_origin(PGdkWindow(tab^.window), @x_root, @y_root); - max_x := x_root + tab^.allocation.x + tab^.allocation.width; - max_y := y_root + tab^.allocation.y + tab^.allocation.height; + gtk_widget_get_allocation(tab, @allocation); + max_x := x_root + allocation.x + allocation.width; + max_y := y_root + allocation.y + allocation.height; if (((tab_pos = GTK_POS_TOP) or (tab_pos = GTK_POS_BOTTOM)) and (abs_x <= max_x)) or ((tab_pos = GTK_POS_LEFT) or (tab_pos = GTK_POS_RIGHT)) and (abs_y <= max_y) then @@ -706,7 +568,7 @@ terminal_notebook_move_tab (TerminalNotebook *src, if (dest == NULL || src == dest) { gtk_notebook_reorder_child - (GTK_NOTEBOOK (src), GTK_WIDGET (screen), dest_position); + (PGtkNotebook (src), PGtkWidget (screen), dest_position); if (src->priv->drag_in_progress == FALSE) { @@ -725,7 +587,7 @@ terminal_notebook_move_tab (TerminalNotebook *src, /* Set new window for screen so TerminalScreen widget realize function * works. */ - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (dest)); + toplevel = gtk_widget_get_toplevel (PGtkWidget (dest)); g_assert (GTK_WIDGET_TOPLEVEL (toplevel)); g_assert (TERMINAL_IS_WINDOW (toplevel)); @@ -744,11 +606,11 @@ begin DebugMsg(['@######## drag_stop']); toplevel := gtk_widget_get_toplevel(FWidget); - if not GTK_WIDGET_TOPLEVEL(toplevel) then begin + if not Assigned(toplevel) then begin DebugMsg(['@######## drag_stop: GTK_WIDGET_TOPLEVEL(toplevel) = False']); Exit; end; -{ child := gtk_bin_get_child(GTK_BIN(toplevel)); +{ child := gtk_bin_get_child(GtkBin(toplevel)); if child = nil then begin DebugMsg(['@######## drag_stop: child = nil']); Exit; @@ -777,13 +639,13 @@ begin end; // ungrab the pointer if it's grabbed - // FIXME multihead - if gdk_pointer_is_grabbed() then gdk_pointer_ungrab(time); + // TODO +// if gdk_pointer_is_grabbed() then gdk_pointer_ungrab(time); gtk_grab_remove(toplevel); if drag_in_progress then begin if FBusy then Exit; - drag_stop_idx := gtk_notebook_get_current_page(GTK_NOTEBOOK(FWidget)); + drag_stop_idx := gtk_notebook_get_current_page(PGtkNotebook(FWidget)); DebugMsg(['@######## drag_stop: final move: ', drag_start_idx, ' --> ', drag_stop_idx]); // The two indexes are equal when moving tab to another notebook @@ -865,11 +727,11 @@ begin ntb := TEphyNotebook(data); if ntb.drag_in_progress then begin -// cur_page_num := gtk_notebook_get_current_page(GTK_NOTEBOOK(ntb.FWidget)); -// cur_page := gtk_notebook_get_nth_page(GTK_NOTEBOOK(ntb.FWidget), cur_page_num); +// cur_page_num := gtk_notebook_get_current_page(PGtkNotebook(ntb.FWidget)); +// cur_page := gtk_notebook_get_nth_page(PGtkNotebook(ntb.FWidget), cur_page_num); (* if (!is_in_notebook_window (notebook, event->x_root, event->y_root) - && gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)) > 1) + && gtk_notebook_get_n_pages (PGtkNotebook (notebook)) > 1) { /* Tab was detached */ g_signal_emit (G_OBJECT (notebook), @@ -887,8 +749,8 @@ var toplevel, child: PGtkWidget; begin DebugMsg(['@######## drag_start']); Result := False; - // FIXME multihead - if drag_in_progress or gdk_pointer_is_grabbed() then Exit; + // TODO + if drag_in_progress { or gdk_pointer_is_grabbed()} then Exit; if not FAllowDragDrop then Exit; if FBusy then Exit; @@ -899,13 +761,13 @@ begin if cursor = nil then cursor := gdk_cursor_new(GDK_FLEUR); toplevel := gtk_widget_get_toplevel(FWidget); - if not GTK_WIDGET_TOPLEVEL(toplevel) then begin + if not Assigned(toplevel) then begin DebugMsg(['@######## drag_start: GTK_WIDGET_TOPLEVEL(toplevel) = False']); Result := False; Exit; end; - child := gtk_bin_get_child(GTK_BIN(toplevel)); + child := gtk_bin_get_child(PGtkBin(toplevel)); if child = nil then begin DebugMsg(['@######## drag_start: child = nil']); Result := False; @@ -916,7 +778,7 @@ begin gtk_grab_add(toplevel); // FIXME multi-head - if gdk_pointer_grab(toplevel^.window, False, GDK_BUTTON1_MOTION_MASK or GDK_BUTTON_RELEASE_MASK, nil, + if gdk_pointer_grab(toplevel^.window, False, [GDK_BUTTON1_MOTION_MASK, GDK_BUTTON_RELEASE_MASK], nil, cursor, time) <> GDK_GRAB_SUCCESS then begin DebugMsg(['@######## drag_start: gdk_pointer_grab <> GDK_GRAB_SUCCESS']); @@ -933,7 +795,7 @@ begin toplevel_button_release_handler_id := g_signal_connect_data(PGObject(toplevel), 'button-release-event', TGCallback(@toplevel_button_release_cb), Self, nil, G_CONNECT_DEFAULT); grab_notify_handler_id := g_signal_connect_data(PGObject(FWidget), 'grab-notify', TGCallback(@grab_notify_cb), Self, nil, G_CONNECT_DEFAULT); - drag_start_idx := gtk_notebook_get_current_page(GTK_NOTEBOOK(FWidget)); + drag_start_idx := gtk_notebook_get_current_page(PGtkNotebook(FWidget)); Result := True; end else begin DebugMsg(['@######## drag_start: some handlers are non-null']); @@ -946,11 +808,11 @@ procedure TEphyNotebook.move_tab(dest_position: integer); var cur_page_num: integer; cur_tab: PGtkWidget; begin - cur_page_num := gtk_notebook_get_current_page(GTK_NOTEBOOK(FWidget)); + cur_page_num := gtk_notebook_get_current_page(PGtkNotebook(FWidget)); // DebugMsg(['@######## move_tab(dest_position = ', dest_position, ', cur_page_num = ', cur_page_num]); if (dest_position <> cur_page_num) and (dest_position >= 0) then begin - cur_tab := gtk_notebook_get_nth_page(GTK_NOTEBOOK(FWidget), cur_page_num); - gtk_notebook_reorder_child(GTK_NOTEBOOK(FWidget), cur_tab, dest_position); + cur_tab := gtk_notebook_get_nth_page(PGtkNotebook(FWidget), cur_page_num); + gtk_notebook_reorder_child(PGtkNotebook(FWidget), cur_tab, dest_position); { terminal_notebook_move_tab (TERMINAL_NOTEBOOK (notebook), NULL, TERMINAL_SCREEN (cur_tab), @@ -966,7 +828,7 @@ begin Result := False; if (not ntb.drag_in_progress) and (ntb.x_start >= 0) and (ntb.y_start >= 0) and - gtk_drag_check_threshold(GTK_WIDGET(notebook), ntb.x_start, ntb.y_start, + gtk_drag_check_threshold(PGtkWidget(notebook), ntb.x_start, ntb.y_start, Trunc(event^.x_root), Trunc(event^.y_root)) then Result := ntb.drag_start(event^.time); end; @@ -993,7 +855,7 @@ begin Exit; end; - cur_page := gtk_notebook_get_current_page(GTK_NOTEBOOK(FWidget)); + cur_page := gtk_notebook_get_current_page(PGtkNotebook(FWidget)); // stop drag in origin window // ungrab the pointer if it's grabbed @@ -1006,8 +868,8 @@ begin (* g_assert (TERMINAL_IS_NOTEBOOK (dest)); g_assert (dest != src); - cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (src)); - screen = gtk_notebook_get_nth_page (GTK_NOTEBOOK (src), cur_page); + cur_page = gtk_notebook_get_current_page (PGtkNotebook (src)); + screen = gtk_notebook_get_nth_page (PGtkNotebook (src), cur_page); /* stop drag in origin window */ /* ungrab the pointer if it's grabbed */ @@ -1016,7 +878,7 @@ begin { gdk_pointer_ungrab (event->time); } - gtk_grab_remove (GTK_WIDGET (src)); + gtk_grab_remove (PGtkWidget (src)); terminal_notebook_move_tab (src, dest, TERMINAL_SCREEN (screen), dest_position); @@ -1068,11 +930,11 @@ begin Result := False; ntb := TEphyNotebook(data); tab := g_object_get_data(PGObject(widget), 'child'); - position := gtk_notebook_page_num(GTK_NOTEBOOK(ntb.FWidget), GTK_WIDGET(tab)); + position := gtk_notebook_page_num(PGtkNotebook(ntb.FWidget), PGtkWidget(tab)); // DebugMsg(['@******* label_ebox_button_pressed, button = ', event^.button, ', Position = ', position, ', data = 0x', IntToHex(Integer(data), 8), ', widget = 0x', IntToHex(Integer(widget), 8)]); - if (((event^.button = 2) and (event^._type = GDK_BUTTON_PRESS)) or // Middle-click - ((event^.button = 1) and (event^._type = GDK_2BUTTON_PRESS))) and // Double-click + if (((event^.button = 2) and (event^.type_ = GDK_BUTTON_PRESS)) or // Middle-click + ((event^.button = 1) and (event^.type_ = GDK_2BUTTON_PRESS))) and // Double-click Assigned(ntb.FOnTabDoubleClick) then begin ntb.FOnTabDoubleClick(ntb, position); @@ -1100,7 +962,7 @@ begin Exit; end; - if ((event^.button = 1) or (event^.button = 3)) and (event^._type = GDK_BUTTON_PRESS) and (tab_clicked >= 0) then + if ((event^.button = 1) or (event^.button = 3)) and (event^.type_ = GDK_BUTTON_PRESS) and (tab_clicked >= 0) then begin if event^.button = 1 then begin ntb.x_start := Trunc(event^.x_root); @@ -1112,7 +974,7 @@ begin if tab_clicked >= 0 then begin if tab_clicked <> gtk_notebook_get_current_page(PGtkNotebook(ntb.FWidget)) then begin ntb.FBusy := True; - gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), tab_clicked); + gtk_notebook_set_current_page(PGtkNotebook(notebook), tab_clicked); if Assigned(ntb.FOnTabSwitchedEvent) then ntb.FOnTabSwitchedEvent(ntb, tab_clicked, True); Application.ProcessMessages; ntb.FBusy := False; @@ -1124,13 +986,13 @@ begin Result := event^.button <> 3; end else Result := True; // consume the event if not clicked any tab { else - if (GDK_BUTTON_PRESS = event^._type) and (event^.button = 3) then begin + if (GDK_BUTTON_PRESS = event^.type_) and (event^.button = 3) then begin if tab_clicked = -1 then begin // consume event, so that we don't pop up the context menu when the mouse if not over a screen label Result := True; end else // switch to the page the mouse is over, but don't consume the event - if (tab_clicked >= 0) then gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), tab_clicked); + if (tab_clicked >= 0) then gtk_notebook_set_current_page(PGtkNotebook(notebook), tab_clicked); end; } end; @@ -1144,12 +1006,13 @@ begin ntb := TEphyNotebook(user_data); if ntb.FBusy then Exit; - child := gtk_notebook_get_nth_page(GTK_NOTEBOOK(ntb.FWidget), gtk_notebook_get_current_page(PGtkNotebook(ntb.FWidget))); + child := gtk_notebook_get_nth_page(PGtkNotebook(ntb.FWidget), gtk_notebook_get_current_page(PGtkNotebook(ntb.FWidget))); if (child <> nil) then begin // DebugMsg(['scroll_event_callback: x = ', event^.x, ', y = ', event^.y]); px := 0; py := 0; - gtk_widget_get_pointer(child, @px, @py); + // TODO +// gtk_widget_get_pointer(child, @px, @py); // DebugMsg(['scroll_event_callback: px = ', px, ', py = ', py]); if (px >= 0) and (py >= 0) then Exit; end; @@ -1175,8 +1038,8 @@ end; function Gnome_MessageBox_key_press_event(widget: PGtkWidget; event: PGdkEventKey; user_data : gpointer): gboolean; cdecl; begin Result := False; - if event^.keyval = GDK_ESCAPE then begin - gtk_dialog_response(PGtkDialog(widget), integer(user_data)); + if event^.keyval = GDK_KEY_Escape then begin + gtk_dialog_response(PGtkDialog(widget), TGtkResponseType(guint(user_data))); // Beep; Result := True; end; @@ -1196,19 +1059,19 @@ begin Result := Escape; Exit; end; - Dialog := gtk_message_dialog_new(ParentWindow, GTK_DIALOG_MODAL or GTK_DIALOG_DESTROY_WITH_PARENT, TMessageStyleID[Integer(Style)], - GTK_BUTTONS_NONE, '%s', PChar(Text)); + Dialog := gtk_message_dialog_new(ParentWindow, [GTK_DIALOG_MODAL, GTK_DIALOG_DESTROY_WITH_PARENT], TMessageStyleID[Integer(Style)], + GTK_BUTTONS_NONE, '%s', [PChar(Text)]); CheckBox := PGtkCheckButton(gtk_check_button_new_with_mnemonic(PChar(DontShowAgainText))); gtk_widget_show(PGtkWidget(CheckBox)); - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(Dialog)^.vbox), PGtkWidget(CheckBox), False, False, 12); + gtk_box_pack_end(PGtkBox(gtk_dialog_get_content_area(PGtkDialog(Dialog))), PGtkWidget(CheckBox), False, False, 12); for i := 1 to NumMessageButtons do if TMessageButton(i - 1) in Buttons then begin - w := gtk_dialog_add_button(PGtkDialog(Dialog), MessageButtonID[i], i); + w := gtk_dialog_add_button(PGtkDialog(Dialog), MessageButtonID[i], TGtkResponseType(i)); if TMessageButton(i - 1) = Default then gtk_widget_grab_focus(w); end; if Escape <> mbNone then g_signal_connect_data(PGObject(Dialog), 'key-press-event', TGCallback(@Gnome_MessageBox_key_press_event), Pointer(Ord(Escape) + 1{MessageButtonID[Ord(Escape)]}), nil, G_CONNECT_DEFAULT); - if Default <> mbNone then gtk_dialog_set_default_response(PGtkDialog(Dialog), Ord(Default)); + if Default <> mbNone then gtk_dialog_set_default_response(PGtkDialog(Dialog), TGtkResponseType(Default)); Result := TMessageButton(gtk_dialog_run(PGtkDialog(Dialog)) - 1); DontShowAgainChecked := gtk_toggle_button_get_active(PGtkToggleButton(CheckBox)); gtk_widget_destroy(Dialog); @@ -1239,13 +1102,13 @@ begin end; if (primary <> nil) and (secondary <> nil) - then dialog := gtk_message_dialog_new_with_markup (PGtkWindow(DialogParent), 0, + then dialog := gtk_message_dialog_new_with_markup (PGtkWindow(DialogParent), [], GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, '<span size="large" weight="ultrabold">%s</span>'#10'%s', - primary, secondary) - else dialog := gtk_message_dialog_new (PGtkWindow(DialogParent), 0, + [primary, secondary]) + else dialog := gtk_message_dialog_new (PGtkWindow(DialogParent), [], GTK_MESSAGE_QUESTION, - GTK_BUTTONS_NONE, '%s', AMessage); + GTK_BUTTONS_NONE, '%s', [AMessage]); if primary <> nil then g_free (primary); // gtk_window_set_title (PGtkWindow(dialog), 'VFS Question'); @@ -1256,7 +1119,7 @@ begin do Inc(len); for count := len - 1 downto 0 do - gtk_dialog_add_button (PGtkDialog(dialog), TOpenPCharArray(choices)[count], count); + gtk_dialog_add_button(PGtkDialog(dialog), TOpenPCharArray(choices)[count], TGtkResponseType(count)); res := gtk_dialog_run (PGtkDialog(Dialog)); if choice <> nil then choice^ := res; @@ -1292,9 +1155,9 @@ end; procedure pw_dialog_verify_input(editable: PGtkEditable; priv: PVFSAskPasswordCallbackPriv); cdecl; begin - gtk_dialog_set_response_sensitive (GTK_DIALOG (priv^.dialog), - GTK_RESPONSE_OK, - pw_dialog_input_is_valid(priv)); + gtk_dialog_set_response_sensitive(PGtkDialog(priv^.dialog), + GTK_RESPONSE_OK, + pw_dialog_input_is_valid(priv)); end; procedure pw_dialog_anonymous_toggled(widget: PGtkWidget; priv: PVFSAskPasswordCallbackPriv); cdecl; @@ -1304,7 +1167,7 @@ begin if anonymous then is_valid := True else is_valid := pw_dialog_input_is_valid(priv); gtk_widget_set_sensitive (priv^.entry_container, not anonymous); - gtk_dialog_set_response_sensitive(GTK_DIALOG (priv^.dialog), GTK_RESPONSE_OK, is_valid); + gtk_dialog_set_response_sensitive(PGtkDialog (priv^.dialog), GTK_RESPONSE_OK, is_valid); end; procedure pw_dialog_cycle_focus(widget: PGtkWidget; priv: PVFSAskPasswordCallbackPriv); cdecl; @@ -1318,7 +1181,7 @@ begin then next_widget := PGtkWidget(priv^.password_entry); if next_widget <> nil then gtk_widget_grab_focus(next_widget) else if pw_dialog_input_is_valid(priv) - then gtk_window_activate_default(GTK_WINDOW(priv^.dialog)); + then gtk_window_activate_default(PGtkWindow(priv^.dialog)); end; procedure unmask_checkbox_toggled(togglebutton: PGtkToggleButton; priv: PVFSAskPasswordCallbackPriv); cdecl; @@ -1341,27 +1204,28 @@ function HandleVFSAskPasswordCallback(DialogParent: PGtkWidget; anonymous: Pgboolean; domain: PPChar; password_save: PVFSPasswordSave): gboolean; - +// TODO +{ function table_add_entry(table: PGtkWidget; row: integer; const label_text: PChar; const value: PChar; user_data: PVFSAskPasswordCallbackPriv): PGtkEntry; var entry: PGtkEntry; alabel: PGtkWidget; begin alabel := gtk_label_new_with_mnemonic (label_text); - gtk_misc_set_alignment (GTK_MISC (alabel), 0.0, 0.5); + gtk_label_set_yalign(PGtkLabel(alabel), 0.5); entry := PGtkEntry(gtk_entry_new ()); if value <> nil then gtk_entry_set_text (PGtkEntry(entry), value); - gtk_table_attach (GTK_TABLE (table), alabel, 0, 1, row, row + 1, GTK_FILL, GTK_EXPAND or GTK_FILL, 0, 0); + gtk_table_attach (GTK_TABLE (table), alabel, 0, 1, row, row + 1, GTK_FILL, [GTK_EXPAND, GTK_FILL], 0, 0); gtk_table_attach_defaults (GTK_TABLE (table), PGtkWidget(entry), 1, 2, row, row + 1); gtk_label_set_mnemonic_widget (PGtkLabel(alabel), PGtkWidget(entry)); g_signal_connect_data(PGObject(entry), 'changed', TGCallback (@pw_dialog_verify_input), user_data, nil, G_CONNECT_DEFAULT); g_signal_connect_data(PGObject(entry), 'activate', TGCallback (@pw_dialog_cycle_focus), user_data, nil, G_CONNECT_DEFAULT); Result := entry; end; - +} var widget: PGtkWidget; window: PGtkWindow; hbox, main_vbox, vbox, icon: PGtkWidget; - table: PGtkWidget; + grid: PGtkWidget; message_label: PGtkWidget; can_anonymous: boolean; Rows: integer; @@ -1385,11 +1249,10 @@ begin gtk_window_set_title (window, ''); // Set the dialog up with HIG properties - gtk_dialog_set_has_separator (priv.dialog, False); - gtk_container_set_border_width (GTK_CONTAINER (priv.dialog), 5); - gtk_box_set_spacing (GTK_BOX (priv.dialog^.vbox), 2); // 2 * 5 + 2 = 12 - gtk_container_set_border_width (GTK_CONTAINER (priv.dialog^.action_area), 5); - gtk_box_set_spacing (GTK_BOX (priv.dialog^.action_area), 6); + gtk_container_set_border_width (PGtkContainer (priv.dialog), 5); +// gtk_box_set_spacing (PGtkBox (priv.dialog^.vbox), 2); // 2 * 5 + 2 = 12 + gtk_container_set_border_width(PGtkContainer(gtk_dialog_get_action_area(PGtkDialog(priv.dialog))), 5); + gtk_box_set_spacing(PGtkBox(gtk_dialog_get_action_area(PGtkDialog(priv.dialog))), 6); gtk_window_set_resizable (window, False); // gtk_window_set_icon_name (window, 'gtk-dialog-authentication'); @@ -1399,47 +1262,45 @@ begin else s := PChar(LANGConnMgr_ConnectButton); gtk_dialog_add_buttons (priv.dialog, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_CANCEL, [GTK_RESPONSE_CANCEL, s, GTK_RESPONSE_OK, - nil); + nil]); gtk_dialog_set_default_response (priv.dialog, GTK_RESPONSE_OK); // Build contents - hbox := gtk_hbox_new (FALSE, 12); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); - gtk_box_pack_start (GTK_BOX (priv.dialog^.vbox), hbox, TRUE, TRUE, 0); + hbox := gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_set_border_width (PGtkContainer (hbox), 5); + gtk_box_pack_start(PGtkBox(gtk_dialog_get_content_area(priv.dialog)), hbox, TRUE, TRUE, 0); - if gtk_style_lookup_icon_set(gtk_widget_get_style(PGtkWidget(priv.dialog)), 'gtk-dialog-authentication') <> nil - then icon := gtk_image_new_from_stock('gtk-dialog-authentication', GTK_ICON_SIZE_DIALOG) - else icon := gtk_image_new_from_pixbuf(StockLock48.FPixbuf); + icon := gtk_image_new_from_icon_name('gtk-dialog-authentication', GTK_ICON_SIZE_DIALOG); - gtk_misc_set_alignment (GTK_MISC (icon), 0.5, 0.0); - gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0); + gtk_widget_set_halign(icon, GTK_ALIGN_CENTER); + gtk_box_pack_start (PGtkBox (hbox), icon, FALSE, FALSE, 0); - main_vbox := gtk_vbox_new (FALSE, 18); - gtk_box_pack_start (GTK_BOX (hbox), main_vbox, TRUE, TRUE, 0); + main_vbox := gtk_box_new(GTK_ORIENTATION_VERTICAL, 18); + gtk_box_pack_start (PGtkBox (hbox), main_vbox, TRUE, TRUE, 0); message_label := gtk_label_new (AMessage); - gtk_misc_set_alignment (GTK_MISC (message_label), 0.0, 0.5); - gtk_label_set_line_wrap (GTK_LABEL (message_label), TRUE); - gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET (message_label), FALSE, FALSE, 0); + gtk_label_set_yalign(PGtkLabel(message_label), 0.5); + gtk_label_set_line_wrap (PGtkLabel (message_label), TRUE); + gtk_box_pack_start (PGtkBox (main_vbox), PGtkWidget (message_label), FALSE, FALSE, 0); - vbox := gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0); + vbox := gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (PGtkBox (main_vbox), vbox, FALSE, FALSE, 0); can_anonymous := (flags and VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED) = VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED; if can_anonymous then begin - anon_box := gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (vbox), anon_box, FALSE, FALSE, 0); + anon_box := gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (PGtkBox (vbox), anon_box, FALSE, FALSE, 0); priv.choice_anon := gtk_radio_button_new_with_mnemonic(nil, PChar(LANGGtkMountOperation_ConnectAnonymously)); - gtk_box_pack_start(GTK_BOX (anon_box), priv.choice_anon, FALSE, FALSE, 0); + gtk_box_pack_start(PGtkBox (anon_box), priv.choice_anon, FALSE, FALSE, 0); g_signal_connect_data(PGObject(priv.choice_anon), 'toggled', TGCallback (@pw_dialog_anonymous_toggled), @priv, nil, G_CONNECT_DEFAULT); - group := LAZGLIB2.PGSList(gtk_radio_button_get_group(GTK_RADIO_BUTTON(priv.choice_anon))); - priv.choice_user := gtk_radio_button_new_with_mnemonic(GLIB2.PGSList(group), PChar(LANGGtkMountOperation_ConnectAsUser)); - gtk_box_pack_start(GTK_BOX(anon_box), priv.choice_user, FALSE, FALSE, 0); + group := PGSList(gtk_radio_button_get_group(PGtkRadioButton(priv.choice_anon))); + priv.choice_user := gtk_radio_button_new_with_mnemonic(group, PChar(LANGGtkMountOperation_ConnectAsUser)); + gtk_box_pack_start(PGtkBox(anon_box), priv.choice_user, FALSE, FALSE, 0); g_signal_connect_data(PGObject(priv.choice_user), 'toggled', TGCallback (@pw_dialog_anonymous_toggled), @priv, nil, G_CONNECT_DEFAULT); end; @@ -1449,15 +1310,18 @@ begin if (flags and VFS_ASK_PASSWORD_NEED_DOMAIN) = VFS_ASK_PASSWORD_NEED_DOMAIN then Inc(rows); // The table that holds the entries + + // TODO +{ priv.entry_container := gtk_alignment_new (0.0, 0.0, 1.0, 1.0); if can_anonymous then g_object_set(PGObject(priv.entry_container), 'left-padding', [12, nil]); - gtk_box_pack_start(GTK_BOX(vbox), priv.entry_container, FALSE, FALSE, 0); + gtk_box_pack_start(PGtkBox(vbox), priv.entry_container, FALSE, FALSE, 0); table := gtk_table_new (rows, 2, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 12); gtk_table_set_row_spacings (GTK_TABLE (table), 6); - gtk_container_add (GTK_CONTAINER (priv.entry_container), table); + gtk_container_add (PGtkContainer (priv.entry_container), table); Rows := 0; if (flags and VFS_ASK_PASSWORD_NEED_USERNAME) = VFS_ASK_PASSWORD_NEED_USERNAME then begin @@ -1473,39 +1337,39 @@ begin if (default_password <> nil) and (strlen(default_password) > 0) then gtk_entry_set_text(priv.password_entry, default_password); // Inc(Rows); - gtk_entry_set_visibility (GTK_ENTRY (priv.password_entry), FALSE); + gtk_entry_set_visibility (PGtkEntry (priv.password_entry), FALSE); end; if (flags and VFS_ASK_PASSWORD_ARCHIVE_MODE) = VFS_ASK_PASSWORD_ARCHIVE_MODE then begin unmask_checkbox := gtk_check_button_new_with_mnemonic (PChar(LANGFSetPassword_ShowPasswordCheckButton)); g_object_set(PGObject(unmask_checkbox), 'can-focus', [0, nil]); - gtk_box_pack_start (GTK_BOX (vbox), unmask_checkbox, FALSE, FALSE, 0); + gtk_box_pack_start (PGtkBox (vbox), unmask_checkbox, FALSE, FALSE, 0); g_signal_connect_data(PGObject(unmask_checkbox), 'toggled', TGCallback (@unmask_checkbox_toggled), @priv, nil, G_CONNECT_DEFAULT); end; if ((flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = VFS_ASK_PASSWORD_SAVING_SUPPORTED) or ((flags and VFS_ASK_PASSWORD_SAVE_INTERNAL) = VFS_ASK_PASSWORD_SAVE_INTERNAL) then begin - remember_box := gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (vbox), remember_box, FALSE, FALSE, 0); + remember_box := gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (PGtkBox (vbox), remember_box, FALSE, FALSE, 0); if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = 0 then s := PChar(LANGGtkMountOperation_DoNotSavePassword) else s := PChar(LANGGtkMountOperation_ForgetPasswordImmediately); radio_forget := gtk_radio_button_new_with_mnemonic (nil, s); - gtk_box_pack_start (GTK_BOX (remember_box), radio_forget, FALSE, FALSE, 0); + gtk_box_pack_start (PGtkBox (remember_box), radio_forget, FALSE, FALSE, 0); - group := LAZGLIB2.PGSList(gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_forget))); + group := PGSList(gtk_radio_button_get_group(PGtkRadioButton(radio_forget))); // gnome-keyring only if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = VFS_ASK_PASSWORD_SAVING_SUPPORTED then begin - radio_session := gtk_radio_button_new_with_mnemonic(GLIB2.PGSList(group), PChar(LANGGtkMountOperation_RememberPasswordUntilYouLogout)); - gtk_box_pack_start (GTK_BOX (remember_box), radio_session, FALSE, FALSE, 0); - group := LAZGLIB2.PGSList(gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_session))); + radio_session := gtk_radio_button_new_with_mnemonic(group, PChar(LANGGtkMountOperation_RememberPasswordUntilYouLogout)); + gtk_box_pack_start (PGtkBox (remember_box), radio_session, FALSE, FALSE, 0); + group := gtk_radio_button_get_group(PGtkRadioButton(radio_session)); end; if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = 0 then s := PChar(LANGGtkMountOperation_SavePasswordInConnectionManager) else s := PChar(LANGGtkMountOperation_RememberForever); - radio_remember := gtk_radio_button_new_with_mnemonic(GLIB2.PGSList(group), s); - gtk_box_pack_start (GTK_BOX (remember_box), radio_remember, FALSE, FALSE, 0); + radio_remember := gtk_radio_button_new_with_mnemonic(group, s); + gtk_box_pack_start (PGtkBox (remember_box), radio_remember, FALSE, FALSE, 0); // Select to save password when internal saving is supported if (flags and VFS_ASK_PASSWORD_SAVE_INTERNAL) = VFS_ASK_PASSWORD_SAVE_INTERNAL @@ -1513,13 +1377,13 @@ begin end; // The anonymous option will be active by default, ensure the toggled signal is emitted for it. - if can_anonymous then gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (priv.choice_anon)) else + if can_anonymous then gtk_toggle_button_toggled (PGtkToggleButton(priv.choice_anon)) else if not pw_dialog_input_is_valid(@priv) then gtk_dialog_set_response_sensitive(priv.dialog, GTK_RESPONSE_OK, False); - gtk_widget_show_all (GTK_WIDGET (priv.dialog)); + gtk_widget_show_all (PGtkWidget (priv.dialog)); gtk_window_set_transient_for (window, PGtkWindow(DialogParent)); - Result := gtk_dialog_run(PGtkDialog(priv.dialog)) = GTK_RESPONSE_OK; + Result := gint(gtk_dialog_run(PGtkDialog(priv.dialog))) = gint(GTK_RESPONSE_OK); if Result then begin if (priv.username_entry <> nil) and (username <> nil) then username^ := g_strdup(gtk_entry_get_text(priv.username_entry)); if (priv.domain_entry <> nil) and (domain <> nil) then domain^ := g_strdup(gtk_entry_get_text(priv.domain_entry)); @@ -1531,7 +1395,7 @@ begin if gtk_toggle_button_get_active(PGtkToggleButton(radio_remember)) then password_save^ := VFS_PASSWORD_SAVE_PERMANENTLY; end; end; - +} gtk_widget_destroy (PGtkWidget(priv.dialog)); end; @@ -1547,48 +1411,47 @@ begin if not Assigned(List) or (List.Count = 0) then Exit; dialog := gtk_dialog_new; if DialogParent <> nil then gtk_window_set_transient_for(PGtkWindow(dialog), PGtkWindow(DialogParent)); - gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); - gtk_box_set_spacing(GTK_BOX(PGtkDialog(dialog)^.vbox), 14); - gtk_window_set_resizable(GTK_WINDOW (dialog), False); - gtk_dialog_set_has_separator(PGtkDialog(dialog), False); - gtk_window_set_title(GTK_WINDOW(dialog), ''); - gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), True); + gtk_container_set_border_width(PGtkContainer(dialog), 5); + gtk_box_set_spacing(PGtkBox(gtk_dialog_get_content_area(PGtkDialog(dialog))), 14); + gtk_window_set_resizable(PGtkWindow (dialog), False); + gtk_window_set_title(PGtkWindow(dialog), ''); + gtk_window_set_skip_taskbar_hint(PGtkWindow(dialog), True); primary_label := gtk_label_new(nil); gtk_label_set_markup(PGtkLabel(primary_label), PChar(Format('<span size="large" weight="ultrabold">%s</span>', ['Inaccessible folders and files']))); secondary_label := gtk_label_new('Some files are not accessible and will be skipped. Press Cancel to abort the operation or Continue to ignore this warning.'); details_label := gtk_label_new(nil); gtk_label_set_label(PGtkLabel(details_label), PChar(List.Text)); - image := gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG); - gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0); - gtk_label_set_line_wrap(GTK_LABEL(primary_label), True); - gtk_label_set_selectable(GTK_LABEL(primary_label), True); - gtk_misc_set_alignment(GTK_MISC(primary_label), 0.0, 0.5); - gtk_label_set_line_wrap(GTK_LABEL(secondary_label), True); - gtk_label_set_selectable(GTK_LABEL(secondary_label), True); - gtk_misc_set_alignment(GTK_MISC(secondary_label), 0.0, 0.5); - gtk_label_set_line_wrap(GTK_LABEL(details_label), False); - gtk_label_set_selectable(GTK_LABEL(details_label), True); - gtk_misc_set_alignment(GTK_MISC(details_label), 0.0, 0.0); + image := gtk_image_new_from_icon_name('gtk-dialog-warning', GTK_ICON_SIZE_DIALOG); + gtk_widget_set_halign(image, GTK_ALIGN_CENTER); + gtk_label_set_line_wrap(PGtkLabel(primary_label), True); + gtk_label_set_selectable(PGtkLabel(primary_label), True); + gtk_label_set_yalign(PGtkLabel(primary_label), 0.5); + gtk_label_set_line_wrap(PGtkLabel(secondary_label), True); + gtk_label_set_selectable(PGtkLabel(secondary_label), True); + gtk_label_set_yalign(PGtkLabel(secondary_label), 0.5); + gtk_label_set_line_wrap(PGtkLabel(details_label), False); + gtk_label_set_selectable(PGtkLabel(details_label), True); scrolled_window := gtk_scrolled_window_new(nil, nil); gtk_scrolled_window_set_policy(PGtkScrolledWindow(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport(PGtkScrolledWindow(scrolled_window), details_label); - hbox := gtk_hbox_new (False, 12); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); - gtk_box_pack_start(GTK_BOX(hbox), image, False, False, 0); - vbox := gtk_vbox_new(False, 12); - gtk_box_pack_start(GTK_BOX(hbox), vbox, False, False, 0); - gtk_box_pack_start(GTK_BOX(vbox), primary_label, False, False, 0); - gtk_box_pack_start(GTK_BOX(vbox), secondary_label, False, False, 0); + hbox := gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_set_border_width(PGtkContainer(hbox), 5); + gtk_box_pack_start(PGtkBox(hbox), image, False, False, 0); + vbox := gtk_box_new(GTK_ORIENTATION_VERTICAL, 12); + gtk_box_pack_start(PGtkBox(hbox), vbox, False, False, 0); + gtk_box_pack_start(PGtkBox(vbox), primary_label, False, False, 0); + gtk_box_pack_start(PGtkBox(vbox), secondary_label, False, False, 0); expander := gtk_expander_new_with_mnemonic('Show more _details'); - gtk_expander_set_spacing(GTK_EXPANDER(expander), 6); - gtk_container_add(GTK_CONTAINER(expander), scrolled_window); - gtk_box_pack_start(GTK_BOX(vbox), expander, False, False, 0); - gtk_box_pack_start(GTK_BOX(PGtkDialog(dialog)^.vbox), hbox, False, False, 0); - - gtk_dialog_add_button(PGtkDialog(dialog), GTK_STOCK_CANCEL, 0); - gtk_dialog_add_button(PGtkDialog(dialog), 'C_ontinue', 1); - gtk_dialog_set_default_response(PGtkDialog(dialog), 1); + // TODO +// gtk_expander_set_spacing(PGtkExpander(expander), 6); + gtk_container_add(PGtkContainer(expander), scrolled_window); + gtk_box_pack_start(PGtkBox(vbox), expander, False, False, 0); + gtk_box_pack_start(PGtkBox(gtk_dialog_get_content_area(PGtkDialog(dialog))), hbox, False, False, 0); + + gtk_dialog_add_button(PGtkDialog(dialog), GTK_STOCK_CANCEL, TGtkResponseType(0)); + gtk_dialog_add_button(PGtkDialog(dialog), 'C_ontinue', TGtkResponseType(1)); + gtk_dialog_set_default_response(PGtkDialog(dialog), TGtkResponseType(1)); gtk_widget_show_all(dialog); Result := gtk_dialog_run(PGtkDialog(dialog)); @@ -1607,13 +1470,6 @@ end; procedure LoadGnomeLibs; begin // Set default values - gnome_about_new := nil; - gnome_program_init := nil; - libgnome_module_info_get := nil; - libgnomeui_module_info_get := nil; - gnome_color_picker_new := nil; - gnome_color_picker_get_i16 := nil; - gnome_color_picker_set_i16 := nil; gnome_icon_entry_new := nil; gnome_icon_entry_set_pixmap_subdir := nil; gnome_icon_entry_get_filename := nil; |
