gtk2ext.pp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit gtk2ext;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. {$mode objfpc}{$H+}
  5. interface
  6. {$IFDEF FPC_DOTTEDUNITS}
  7. uses
  8. Api.Glib2, Api.Gdk2, Api.Gtk2.Gdk2pixbuf, Api.Gtk2.Gtk2;
  9. {$ELSE FPC_DOTTEDUNITS}
  10. uses
  11. glib2, gdk2, gdk2pixbuf, gtk2;
  12. {$ENDIF FPC_DOTTEDUNITS}
  13. const
  14. { This is equired when people don't have -dev/-devel packages on linux.
  15. I'm not sure how Darwin is handled tho }
  16. {$ifdef windows}
  17. GtkLibNames: array[1..1] of ansistring = (gtklib);
  18. {$else}
  19. {$ifdef darwin} // Mac/Darwin
  20. GtkLibNames: array[1..1] of ansistring = (gtklib); // TODO: I don't know this one!
  21. {$else} // BSD, Solaris, Linux
  22. GtkLibNames: array[1..2] of ansistring = (gtklib, gtklib + '.0');
  23. {$endif}
  24. {$endif}
  25. {$i gtkstatusiconh.inc}
  26. {$i gtkscalebuttonh.inc}
  27. {$i gtkvolumebuttonh.inc}
  28. {$i gtktextmarkh.inc}
  29. {$i gtktextiterh.inc}
  30. implementation
  31. {$IFDEF FPC_DOTTEDUNITS}
  32. uses
  33. System.SysUtils, System.DynLibs;
  34. {$ELSE FPC_DOTTEDUNITS}
  35. uses
  36. SysUtils, dynlibs;
  37. {$ENDIF FPC_DOTTEDUNITS}
  38. var
  39. gtkhandle : tlibhandle;
  40. {$i gtkstatusicon.inc}
  41. {$i gtkscalebutton.inc}
  42. {$i gtkvolumebutton.inc}
  43. {$i gtktextmark.inc}
  44. {$i gtktextiter.inc}
  45. var
  46. libIter: Integer;
  47. initialization
  48. for libIter := High(GtkLibNames) downto Low(GtkLibNames) do begin
  49. gtkhandle := LoadLibrary(GtkLibNames[libIter]);
  50. if gtkhandle <> 0 then begin
  51. Loadgtkstatusicon;
  52. Loadgtkscalebutton;
  53. Loadgtkvolumebutton;
  54. Loadgtktextmark;
  55. Loadgtkiter;
  56. // add all specific component load functions here
  57. Break;
  58. end;
  59. end;
  60. finalization
  61. Freegtkstatusicon;
  62. Freegtkscalebutton;
  63. Freegtkvolumebutton;
  64. Freegtktextmark;
  65. Freegtkiter;
  66. // add all specific component free functions here
  67. if gtkhandle <> 0 then
  68. FreeLibrary(gtkhandle);
  69. end.