Browse Source

Load library manually in linux: libfbclient.so.2 instead of libfbclient.so that never exists
modified: TurboBird.lpi
modified: TurboBird.lpr
modified: TurboBird.res
modified: main.lfm
modified: main.lrs
modified: main.pas
modified: querywindow.pas

motaz 11 years ago
parent
commit
3a93020c16
7 changed files with 50 additions and 31 deletions
  1. 2 2
      TurboBird.lpi
  2. 15 5
      TurboBird.lpr
  3. BIN
      TurboBird.res
  4. 9 9
      main.lfm
  5. 11 11
      main.lrs
  6. 2 2
      main.pas
  7. 11 2
      querywindow.pas

+ 2 - 2
TurboBird.lpi

@@ -18,8 +18,8 @@
       <AutoIncrementBuild Value="True"/>
       <AutoIncrementBuild Value="True"/>
       <MajorVersionNr Value="1"/>
       <MajorVersionNr Value="1"/>
       <MinorVersionNr Value="1"/>
       <MinorVersionNr Value="1"/>
-      <RevisionNr Value="9"/>
-      <BuildNr Value="1100"/>
+      <RevisionNr Value="92"/>
+      <BuildNr Value="1101"/>
       <StringTable ProductVersion="0.9"/>
       <StringTable ProductVersion="0.9"/>
     </VersionInfo>
     </VersionInfo>
     <BuildModes Count="2">
     <BuildModes Count="2">

+ 15 - 5
TurboBird.lpr

@@ -1,8 +1,8 @@
 {***************************************************************************}
 {***************************************************************************}
 {  TurboBird: FireBird database administration and management tool          }
 {  TurboBird: FireBird database administration and management tool          }
-{  Developed by: Motaz Abdel Azeem http://code.sd/                          }
+{  Started by  : Motaz Abdel Azeem http://code.sd/                          }
 {  Start development :  5.Dec.2009                                          }
 {  Start development :  5.Dec.2009                                          }
-{  Last updated      : 12.Apr.2014                                          }
+{  Last updated      :  9.Apr.2014                                          }
 {  License           : GPL for GUI, LGPL for Units                          }
 {  License           : GPL for GUI, LGPL for Units                          }
 {***************************************************************************}
 {***************************************************************************}
 
 
@@ -23,17 +23,17 @@ uses
   UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
   UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
   PermissionManage, SQLHistory, CopyTable, dynlibs, ibase60dyn, dbInfo,
   PermissionManage, SQLHistory, CopyTable, dynlibs, ibase60dyn, dbInfo,
   sysutils, Comparison, Update, topologicalsort, UnitFirebirdServices, 
   sysutils, Comparison, Update, topologicalsort, UnitFirebirdServices, 
-trunksqlscript, turbocommon;
+  trunksqlscript, turbocommon, sqldblib;
 
 
 const
 const
   Major = 1;
   Major = 1;
   Minor = 1;
   Minor = 1;
-  Release = 91;
+  Release = 92;
 
 
   VersionDate = '2010 - June 2014';
   VersionDate = '2010 - June 2014';
 {$IFDEF Unix}
 {$IFDEF Unix}
 {$DEFINE extdecl:=cdecl}
 {$DEFINE extdecl:=cdecl}
-    fbclib = 'libfbclient.' + sharedsuffix;
+    fbclib = 'libfbclient.' + sharedsuffix + '.2';
 {$ENDIF}
 {$ENDIF}
 {$IFDEF Windows}
 {$IFDEF Windows}
   {$DEFINE extdecl:=stdcall}
   {$DEFINE extdecl:=stdcall}
@@ -48,8 +48,18 @@ var
   SAbout: TfmAbout;
   SAbout: TfmAbout;
   ErrorMessage: string;
   ErrorMessage: string;
   IBaseLibraryHandle : TLibHandle;
   IBaseLibraryHandle : TLibHandle;
+  SLib: TSQLDBLibraryLoader;
 begin
 begin
   Application.Initialize;
   Application.Initialize;
+
+  // Load library using SQLDBLibraryLoader in Linux
+  {$IFDEF UNIX}
+  SLib:= TSQLDBLibraryLoader.Create(nil);
+  SLib.ConnectionType:= 'Firebird';
+  SLib.LibraryName:= 'libfbclient.so.2';
+  SLib.Enabled:= True;
+  {$ENDIF}
+
   {$IFDEF DEBUG}
   {$IFDEF DEBUG}
   // Requires the build mode to set -dDEBUG in Project Options/Other and
   // Requires the build mode to set -dDEBUG in Project Options/Other and
   // defining -gh/heaptrace on
   // defining -gh/heaptrace on

BIN
TurboBird.res


+ 9 - 9
main.lfm

@@ -5,7 +5,7 @@ object fmMain: TfmMain
   Width = 1024
   Width = 1024
   ActiveControl = tvMain
   ActiveControl = tvMain
   Caption = 'TurboBird Admin for FireBird'
   Caption = 'TurboBird Admin for FireBird'
-  ClientHeight = 621
+  ClientHeight = 617
   ClientWidth = 1024
   ClientWidth = 1024
   Color = clWhite
   Color = clWhite
   Font.Name = 'Sans'
   Font.Name = 'Sans'
@@ -15,10 +15,10 @@ object fmMain: TfmMain
   OnCreate = FormCreate
   OnCreate = FormCreate
   OnDestroy = FormDestroy
   OnDestroy = FormDestroy
   Position = poScreenCenter
   Position = poScreenCenter
-  LCLVersion = '1.2.2.0'
+  LCLVersion = '1.2.4.0'
   object tvMain: TTreeView
   object tvMain: TTreeView
     Left = 0
     Left = 0
-    Height = 601
+    Height = 596
     Top = 0
     Top = 0
     Width = 360
     Width = 360
     Align = alLeft
     Align = alLeft
@@ -38,14 +38,14 @@ object fmMain: TfmMain
   end
   end
   object Splitter1: TSplitter
   object Splitter1: TSplitter
     Left = 360
     Left = 360
-    Height = 601
+    Height = 596
     Top = 0
     Top = 0
     Width = 14
     Width = 14
     Beveled = True
     Beveled = True
   end
   end
   object PageControl1: TPageControl
   object PageControl1: TPageControl
     Left = 377
     Left = 377
-    Height = 594
+    Height = 589
     Top = 3
     Top = 3
     Width = 644
     Width = 644
     ActivePage = TabSheet1
     ActivePage = TabSheet1
@@ -65,8 +65,8 @@ object fmMain: TfmMain
     object TabSheet1: TTabSheet
     object TabSheet1: TTabSheet
       BorderWidth = 1
       BorderWidth = 1
       Caption = 'Main'
       Caption = 'Main'
-      ClientHeight = 563
-      ClientWidth = 636
+      ClientHeight = 559
+      ClientWidth = 640
       Font.Color = clNavy
       Font.Color = clNavy
       Font.Name = 'Arial'
       Font.Name = 'Arial'
       ParentFont = False
       ParentFont = False
@@ -506,8 +506,8 @@ object fmMain: TfmMain
   end
   end
   object StatusBar1: TStatusBar
   object StatusBar1: TStatusBar
     Left = 0
     Left = 0
-    Height = 20
-    Top = 601
+    Height = 21
+    Top = 596
     Width = 1024
     Width = 1024
     Panels = <    
     Panels = <    
       item
       item

+ 11 - 11
main.lrs

@@ -3,11 +3,11 @@
 LazarusResources.Add('TfmMain','FORMDATA',[
 LazarusResources.Add('TfmMain','FORMDATA',[
   'TPF0'#7'TfmMain'#6'fmMain'#4'Left'#3#244#0#6'Height'#3#128#2#3'Top'#3#139#0#5
   'TPF0'#7'TfmMain'#6'fmMain'#4'Left'#3#244#0#6'Height'#3#128#2#3'Top'#3#139#0#5
   +'Width'#3#0#4#13'ActiveControl'#7#6'tvMain'#7'Caption'#6#28'TurboBird Admin '
   +'Width'#3#0#4#13'ActiveControl'#7#6'tvMain'#7'Caption'#6#28'TurboBird Admin '
-  +'for FireBird'#12'ClientHeight'#3'm'#2#11'ClientWidth'#3#0#4#5'Color'#7#7'cl'
+  +'for FireBird'#12'ClientHeight'#3'i'#2#11'ClientWidth'#3#0#4#5'Color'#7#7'cl'
   +'White'#9'Font.Name'#6#4'Sans'#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'Fo'
   +'White'#9'Font.Name'#6#4'Sans'#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'Fo'
   +'rmActivate'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDest'
   +'rmActivate'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDest'
   +'roy'#7#11'FormDestroy'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7
   +'roy'#7#11'FormDestroy'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7
-  +'1.2.2.0'#0#9'TTreeView'#6'tvMain'#4'Left'#2#0#6'Height'#3'Y'#2#3'Top'#2#0#5
+  +'1.2.4.0'#0#9'TTreeView'#6'tvMain'#4'Left'#2#0#6'Height'#3'T'#2#3'Top'#2#0#5
   +'Width'#3'h'#1#5'Align'#7#6'alLeft'#15'BackgroundColor'#7#7'clWhite'#5'Color'
   +'Width'#3'h'#1#5'Align'#7#6'alLeft'#15'BackgroundColor'#7#7'clWhite'#5'Color'
   +#7#7'clCream'#15'ExpandSignColor'#7#8'clMaroon'#13'HideSelection'#8#6'Images'
   +#7#7'clCream'#15'ExpandSignColor'#7#8'clMaroon'#13'HideSelection'#8#6'Images'
   +#7#10'ImageList1'#6'Indent'#2#25#8'ReadOnly'#9#16'RightClickSelect'#9#9'Show'
   +#7#10'ImageList1'#6'Indent'#2#25#8'ReadOnly'#9#16'RightClickSelect'#9#9'Show'
@@ -15,20 +15,20 @@ LazarusResources.Add('TfmMain','FORMDATA',[
   +#7#14'tvMainExpanded'#7'Options'#11#17'tvoAutoItemHeight'#21'tvoKeepCollapse'
   +#7#14'tvMainExpanded'#7'Options'#11#17'tvoAutoItemHeight'#21'tvoKeepCollapse'
   +'dNodes'#11'tvoReadOnly'#19'tvoRightClickSelect'#14'tvoShowButtons'#11'tvoSh'
   +'dNodes'#11'tvoReadOnly'#19'tvoRightClickSelect'#14'tvoShowButtons'#11'tvoSh'
   +'owRoot'#11'tvoToolTips'#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3'h'#1#6'He'
   +'owRoot'#11'tvoToolTips'#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3'h'#1#6'He'
-  +'ight'#3'Y'#2#3'Top'#2#0#5'Width'#2#14#7'Beveled'#9#0#0#12'TPageControl'#12
-  +'PageControl1'#4'Left'#3'y'#1#6'Height'#3'R'#2#3'Top'#2#3#5'Width'#3#132#2#10
+  +'ight'#3'T'#2#3'Top'#2#0#5'Width'#2#14#7'Beveled'#9#0#0#12'TPageControl'#12
+  +'PageControl1'#4'Left'#3'y'#1#6'Height'#3'M'#2#3'Top'#2#3#5'Width'#3#132#2#10
   +'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#18'BorderSpacing.Left'#2#1
   +'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#18'BorderSpacing.Left'#2#1
   +#17'BorderSpacing.Top'#2#1#19'BorderSpacing.Right'#2#1#20'BorderSpacing.Bott'
   +#17'BorderSpacing.Top'#2#1#19'BorderSpacing.Right'#2#1#20'BorderSpacing.Bott'
   +'om'#2#2#20'BorderSpacing.Around'#2#2#25'BorderSpacing.InnerBorder'#2#1#9'Fo'
   +'om'#2#2#20'BorderSpacing.Around'#2#2#25'BorderSpacing.InnerBorder'#2#1#9'Fo'
   +'nt.Name'#6#4'Sans'#10'ParentFont'#8#8'TabIndex'#2#0#8'TabOrder'#2#2#17'OnCl'
   +'nt.Name'#6#4'Sans'#10'ParentFont'#8#8'TabIndex'#2#0#8'TabOrder'#2#2#17'OnCl'
   +'oseTabClicked'#7#27'PageControl1CloseTabClicked'#7'Options'#11#20'nboHidePa'
   +'oseTabClicked'#7#27'PageControl1CloseTabClicked'#7'Options'#11#20'nboHidePa'
   +'geListPopup'#0#0#9'TTabSheet'#9'TabSheet1'#11'BorderWidth'#2#1#7'Caption'#6
   +'geListPopup'#0#0#9'TTabSheet'#9'TabSheet1'#11'BorderWidth'#2#1#7'Caption'#6
-  +#4'Main'#12'ClientHeight'#3'3'#2#11'ClientWidth'#3'|'#2#10'Font.Color'#7#6'c'
-  +'lNavy'#9'Font.Name'#6#5'Arial'#10'ParentFont'#8#0#7'TBitBtn'#11'bbRestoreDB'
-  +#4'Left'#2#3#6'Height'#2']'#3'Top'#3#216#0#5'Width'#3#208#0#7'Caption'#6#16
-  +'Restore Database'#5'Color'#7#7'clCream'#9'Font.Name'#6#4'Sans'#10'Glyph.Dat'
-  +'a'#10':'#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '
-  +#0#0#0#1#0' '#0#0#0#0#0#0#16#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+  +#4'Main'#12'ClientHeight'#3'/'#2#11'ClientWidth'#3#128#2#10'Font.Color'#7#6
+  +'clNavy'#9'Font.Name'#6#5'Arial'#10'ParentFont'#8#0#7'TBitBtn'#11'bbRestoreD'
+  +'B'#4'Left'#2#3#6'Height'#2']'#3'Top'#3#216#0#5'Width'#3#208#0#7'Caption'#6
+  +#16'Restore Database'#5'Color'#7#7'clCream'#9'Font.Name'#6#4'Sans'#10'Glyph.'
+  +'Data'#10':'#16#0#0'6'#16#0#0'BM6'#16#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0
+  +' '#0#0#0#1#0' '#0#0#0#0#0#0#16#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
   +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
   +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
   +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#1'UUU'#3'@``'
   +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#1'UUU'#3'@``'
   +#8'NNN'#13'UUU'#18'QQQ'#22'YYY'#23'MYY'#20'UUU'#15'MfM'#10'fff'#5#128#128#128
   +#8'NNN'#13'UUU'#18'QQQ'#22'YYY'#23'MYY'#20'UUU'#15'MfM'#10'fff'#5#128#128#128
@@ -593,7 +593,7 @@ LazarusResources.Add('TfmMain','FORMDATA',[
   +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
   +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
   +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
   +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
   +#255#255#0#7'OnClick'#7#15'mnCreateDBClick'#10'ParentFont'#8#8'TabOrder'#2#2
   +#255#255#0#7'OnClick'#7#15'mnCreateDBClick'#10'ParentFont'#8#8'TabOrder'#2#2
-  +#0#0#0#0#10'TStatusBar'#10'StatusBar1'#4'Left'#2#0#6'Height'#2#20#3'Top'#3'Y'
+  +#0#0#0#0#10'TStatusBar'#10'StatusBar1'#4'Left'#2#0#6'Height'#2#21#3'Top'#3'T'
   +#2#5'Width'#3#0#4#6'Panels'#14#1#5'Width'#3#250#0#0#1#5'Width'#3#200#0#0#0#11
   +#2#5'Width'#3#0#4#6'Panels'#14#1#5'Width'#3#250#0#0#1#5'Width'#3#200#0#0#0#11
   +'SimplePanel'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#2'?'#3'top'#2'q'#0#9'T'
   +'SimplePanel'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#2'?'#3'top'#2'q'#0#9'T'
   +'MenuItem'#9'MenuItem1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#10'mnCreateDB'#7
   +'MenuItem'#9'MenuItem1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#10'mnCreateDB'#7

+ 2 - 2
main.pas

@@ -5,8 +5,8 @@ unit main;
 interface
 interface
 
 
 uses
 uses
-  Classes, SysUtils, IBConnection, sqldb, memds, FileUtil, LResources, Forms,
-  Controls, Graphics, Dialogs, Menus, ComCtrls, Reg, QueryWindow, Grids,
+  Classes, SysUtils, IBConnection, sqldb, sqldblib, memds, FileUtil, LResources,
+  Forms, Controls, Graphics, Dialogs, Menus, ComCtrls, Reg, QueryWindow, Grids,
   ExtCtrls, Buttons, StdCtrls, TableManage, dbugintf, turbocommon;
   ExtCtrls, Buttons, StdCtrls, TableManage, dbugintf, turbocommon;
 
 
 {$i turbocommon.inc}
 {$i turbocommon.inc}

+ 11 - 2
querywindow.pas

@@ -503,8 +503,11 @@ procedure TfmQueryWindow.RemovePreviousResultTabs;
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
-  for i:= 0 to OutputTabsList.Count - 1 do
+  for i:= OutputTabsList.Count - 1 downto 0 do
+  begin
     OutputTabsList.Objects[i].Free;
     OutputTabsList.Objects[i].Free;
+    OutputTabsList.Delete(i);
+  end;
 end;
 end;
 
 
 procedure TfmQueryWindow.GetLogEvent(Sender: TSQLConnection;
 procedure TfmQueryWindow.GetLogEvent(Sender: TSQLConnection;
@@ -906,7 +909,12 @@ procedure TfmQueryWindow.Init(dbIndex: Integer);
 begin
 begin
   FDBIndex:= dbIndex;
   FDBIndex:= dbIndex;
   FRegRec:= fmMain.RegisteredDatabases[dbIndex].RegRec;
   FRegRec:= fmMain.RegisteredDatabases[dbIndex].RegRec;
-  OutputTabsList:= TStringList.Create;
+
+  // Remove old tabs in case of opening the same QueryWindow
+  if Assigned(OutputTabsList) then
+    RemovePreviousResultTabs
+  else
+    OutputTabsList:= TStringList.Create;
 
 
   // Set instances of FIBConnection and SQLTransaction for the current Query Window
   // Set instances of FIBConnection and SQLTransaction for the current Query Window
   SetTransactionIsolation(FSQLTrans.Params);
   SetTransactionIsolation(FSQLTrans.Params);
@@ -1650,6 +1658,7 @@ end;
 
 
 procedure TfmQueryWindow.FormCreate(Sender: TObject);
 procedure TfmQueryWindow.FormCreate(Sender: TObject);
 begin
 begin
+  OutputTabsList:= nil;
   {$IFNDEF DEBUG}
   {$IFNDEF DEBUG}
   // Do not log to debug server if built as release instead of debug
   // Do not log to debug server if built as release instead of debug
   SetDebuggingEnabled(false);
   SetDebuggingEnabled(false);