1 / 43

Linux RAD/GUI Development

Linux RAD/GUI Development . Kylix Rapid Application Development (RAD), GUI Development for Linux from Borland. by Leland Brode ELB Software elbrode2@attbi.com. Linux GUI Development . Presentation Outline Background on GUI Development Overview of Kylix Demo GUI Tools

jafari
Download Presentation

Linux RAD/GUI Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux RAD/GUI Development • Kylix • Rapid Application Development (RAD), GUI Development for Linux from Borland by Leland Brode ELB Software elbrode2@attbi.com

  2. Linux GUI Development • Presentation Outline • Backgroundon GUI Development • Overview of Kylix • Demo GUI Tools • Demo Delphi • Demo Kylix by Leland Brode ELB Software elbrode2@attbi.com

  3. Linux GUI Development • Kylix • RAD/GUI tool for Linux • Port of Delphi for Windows • Runs on Linux • Builds, compiles native Linux applications • Cross platform – Windows/Linux

  4. GUI Dev Background • Windows 3.0 – 1990 • Generates Messages • Basic, COBOL, C • All Text • Visual Basic – 1991 • First GUI Dev Tool • Event Handlers – code that runs before or after an Event • Draw window instead of code it • Most widely used language “Visual Basic 6 Bible” - Smith Whistler, & Marquis

  5. GUI Dev Background • Other GUI Dev Tools • PowerBuilder • Visual Age • Digitalk, ParcPlace Smalltalk • Forte ( now at Sun) • Visual C++ • Borland C++ • Borland Delphi • Borland C++Builder • -------------------------- • Visual Café - Java • JBuilder - Java

  6. Linux Developement • GNU Linux Toolkit • GCC • Compiles C, C++, Objective C, Fortran • Handles Front-ends for Pascal, Modula-3, Ada • Distributed with Linux • Perl, Shell scripting

  7. Linux Developement • Qt Class Library • C++ • Cross Platform • Qt/Windows • Qt/X11 (Linux, Solaris, HPUX, AIX, etc) • Qt/Mac • GPL – Free for non-commercial apps • Qt was used to build KDE • from Trolltech in Norway • www.trolltech.com

  8. Linux Development • Qt Class Libray • Qwidgetbase class • Event Handlers • mousePressEvent (QMouseEvent &); • mouseMove Event (… • mousePressEvent (… • enterEvent (… • Class QMouseEvent : public Qevent { • public: • int x(); • int y(); • int button(); • int state(); “Linux Programming Unleashed” – Kurt Wall - SAMS

  9. Linux Development • Open Source IDE’s • KDevelop – www.kdevelop.org • KDE Studio – www.thekompany.com/projects/kdestudio • Code Crusader – www.newplanetsoftware.com • VDK Builder – vdkbuilder.sourceforge.net • Source-Navigator – sources.redhat.com/sourcenav “C/C++ Users Journal”, March 2001 – www.cuj.com

  10. Delphi Background • Borland’s Delphi = • Pascal, plus • Borland’s implementation of OO in Pascal, plus • GUI IDE, plus • Visual Component Library (VCL) - encapsulates Windows controls

  11. Delphi • Pascal • Pascal dev by Niklas Wirth (Swiss, 1970) • Versions: U of C San Diego, Borland • Borland’s Turbo Pascal 1.0 - ? • Turbo Pascal 3.0 for DOS - 1985 • Object Extensions to Pascal 5.5 - ? • Turbo Pascal for Windows - 1991 • Delphi - OO Pascal – 1995 • polymorphism, inheritance, encapsulation http://www.engin.umd.umich.edu/CIS/course.des/cis400/index.html http://www.emsps.com/oldtools/borpasv.htm

  12. Delphi • GUI Integrated Development Environment • Based on Visual Basic model

  13. Delphi • IDE • project manager • keeps track of all source files for a project • code editor • code completion • GUI form designer • integrated debugger • watch variables • change variables • breakpoints • step through code

  14. Kylix • Port of Delphi to Linux • OO Pascal • Delphi IDE • native Linux compiler • Class Library - CLX • Object wrappers for Qt widgets • Borland chose Qt over GTK+ • Delphi’s VCL re-engineered to CLX

  15. Kylix • Class Libraries • CLX is to Kylix • VCL is to Delphi, C++Builder • MFC is to Visual C++ • Qt is to KDE • GTK is to GNOME • CLX runs on Linux and Windows

  16. Delphi • VCL Class Library • Object wrappers for Windows Controls TObject | TControl __ | | TForm TButton

  17. Kylix • CLX Class Library • Object wrappers for Qt Widgets TObject | TControl __ | | TForm Tbutton • CLX also in Delphi 6, and C++Bldr for cross platform

  18. Kylix • Pascal Language • Source File = Unit • Units -> compile, link -> executable • code - .pas file • form - .dfm file ( each form has a .pas file )

  19. Kylix • Pascal Language • Data types • Integer – 2147483648 to 2147483647 • Cardinal 0 to 4,294,967,785 • Byte 0 to 255 • Double floating point • Currency • Arrays – • MyArray : array[0..10] of Integer; // fixed • MyArray : array of Integer; // dynamic • SetLength(MyArray, length); // allocates memory for dynamic array • MyArray[length-1] := 1,024 // assignment

  20. Kylix • Pascal Language • String – dynamic • Concat, Copy, Delete, Insert, Length, Pos, SetLength • Pointers • Exceptions • Try-except (same as try-catch in java, c++) • File IO • function – returns value • procedure – no return value

  21. Kylix • Pascal Language - function function Factorial(Number : Cardinal): Int64; var N : Cardinal; begin Result := 1; for N := 2 to Number do Result := Result * N; end;

  22. Kylix • Pascal Language – class definition type TAccount = class private fNumber : Cardinal; fBalance : Currency; public procedure WithDraw(Amount : Currency); end; TSavingsAccount = class (TAccount) private fReturnCheck : Boolean end; TCertificateof Deposit = class(TSavingsAccount) private fTerm : Cardinal; end;

  23. Kylix • Pascal Language– use classes var CD1, CD2 : TAccount; begin CD1 := TCertificateofDeposit.Create; CD2 := TCertificateofDeposit.Create; … CD1.WithDraw(100.00); … … CD1.Free; CD2.Free; end;

  24. Kylix • Pascal Language – Records and Arrays type PersonType = record LastName : String[10]; FirstName : String[10]; EmployeeNumber : Integer; end; { Persontype } MyArrayType = array [1..5] of PersonType; var PersonArray : MyArrayType; begin PersonArray[1].FirstName := ‘Donald’; PersonArray[1].LastName := ‘Duck’; …

  25. Kylix • Pascal Language – Components and Arrays var ButtonArray : array of TButton; i, Num : integer; begin Num :=0; for i := 0 to Self.ComponentCount –1 do // ‘Self’ same as ‘this’ in C++ if Self.Components[i] is TButton then begin Inc(Num); SetLength(ButtonArray, Num); ButtonArray[Num-1] := TButton(Components[i]); end; end;

  26. Kylix • Pascal Language – Comparison Pascal… var i : Integer; begin i := 1; C++… int i; i = 1; Perl… my $i; $i = 1;

  27. Kylix • Pascal Language – Comparison

  28. Kylix • Pascal Language – Comparison Pascal… while i < 100 do Inc(i); C++… while (i < 100) i++; Perl… while ($i < 100) { $i++;}

  29. Kylix • Pascal Language – Comparison Pascal… for i := 0 to 100 do begin if i = 50 then Break; end; C++… for( i = 0; i <= 100; i++) if( i == 50) break; Perl… for( $i = 0; $ i <= 100; $i++) { if( $i == 50) last; }

  30. Kylix • Qt • access to all Qt Widget public Events and Properties • Libc • access to all ‘libc’ functions

  31. Kylix • GUI Applications • Database Applications • Console Applications • Web Server Applications

  32. Kylix • Linux Multiprocessing apps • separate memory, communicate via file system • Linux Multithreading apps • same memory, share resources • TThread base class

  33. Kylix • GUI Applications - (CLX TForm class) • Form1.Canvas.Brush.Color := clRed; • or := RGB(255, 0, 0); • Form1.Canvas.Rectangle(10, 10, 100, 100); • Form1.Canvas.Pen.color := clBlack; • Form1.Canvas.Pen.Width := 2; • Form1.Canvas.MoveTo(0, 20); // draw line • Form1.Canvas.LineTo(60, 20); // draw line • Form1.Canvas.Font.Name := ‘Arial’; • Form1.Canvas.Font.Size := 24; • Form1.Canvas.TextOut(30,1, ‘Hello World’); // write text

  34. Kylix • Database Applications • db : TClientDataSet • db.FileName := ‘/xxx/nnn/yyy’; • db.Open; • db.Locate(‘EmpNum’, ‘124433’, []); • mystring := db.FieldValues[‘LastName’];

  35. Kylix • Database Applications • db : TSQLDataSet • db.CommandText := ‘select * from ….’; • db.Open;

  36. Kylix • Database Applications • data aware controls • automatically fill in data value from database • automatically update data value to database • controls can be ‘Active’ while building form

  37. Kylix • Web Applications - raw CGI or - TWebApplication | TCGIApplication

  38. Kylix • Kylix Versions • Kylix 1, 2, 3 (I am using 2) • Kylix 1, 2 – Delphi (Pascal) • Kylix 3 – add C++ Builder (C++) • Kylix Enterprise - Web, Middleware objects, Database objects • Kylix Professional - Database objects • Kylix Open Edition – Build open source apps licensed under GNU General Public License

  39. Kylix • Technical Requirements – Kylix 2 • Pentium 400 Mhz ( I am using 366 Mhz) • 128MB RAM ( I am using 192MB) • 175MB disk space • Red Hat 6.2 or higher (I am using 7.2, Kernel 2.4.7) • SuSE 7.0 or higher

  40. Kylix • Kylix Download • http://www.borland.com/products/downloads/download_kylix.html# • Kylix 3 currently available • Kylix 2 ??

  41. Kylix • FreeCLX Project • Open Source CLX Class Library • available at SourceForge.net • includes BaseCLX, VisualCLX, and DataCLX classes (brings full functionality to Kylix Open Edition ?) • lack of detailed information on FreeCLX

  42. Kylix • Bibliography • “Visual Basic Bible”, Smith, Whistler, & Marquis • “Delphi in a Nutshell”, Ray Lischer, O’Reilly • “Linux Programming Unleashed”, Kurt Wall, SAMS • “Object Pascal Language Guide”, Borland Delphi 3 Documentation • “Teach Yourself Delphi in 21 Days”, Osier, Grobman, & Batson, SAMS • “Kylix: The Professional Developer’s Guide and Reference”, Jon Shemitz, Apress • “Mastering Kylix 2”, Cantu & Barbini, SYBEX • “Borland Kylix Developer’s Guide”, Calvert, Calvert, Kaster, & Swart, SAMS • “In the Trenches”, by Dale Fuller, LINUX Magazine, January 2002 • Product Review of Kylix 2, LINUX Magazine, May 2002 • “Kylix vs. gcc Development” http://community.borland.com/article/0,1410,28555,00.html • “Technical Overview of the Kylix Compiler” http://community.borland.com/article/0,1410,28561,00.html • “Apache Development with Kylix” http://community.borland.com/article/0,1410,28556,00.html • Kylix and Qt, excerpts form Kylix newsgroup http://community.borland.com/article/0,1410,21850,00.html • Kylix newsgroup – “borland.public.kylix,non-technical”

  43. Kylix • product demo…

More Related