~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to ide/newdialog.pas

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
{  $Id: newdialog.pas 26578 2010-07-10 17:04:38Z maxim $  }
2
1
{
3
2
 /***************************************************************************
4
3
                            newdialog.pas
41
40
 
42
41
uses
43
42
  Buttons, SysUtils, Classes, LCLProc, ComCtrls, Controls, Dialogs,
44
 
  Forms, StdCtrls, ExtCtrls, FileProcs,
 
43
  Forms, StdCtrls, ExtCtrls, FileProcs, ButtonPanel,
45
44
  IDEWindowIntf, IDEImagesIntf, NewItemIntf, PackageIntf, ProjectIntf,
46
 
  LazIDEIntf,
47
 
  LazarusIDEStrConsts, IDEContextHelpEdit, Project, MainIntf, ButtonPanel;
 
45
  LazIDEIntf, IDEHelpIntf,
 
46
  InputHistory, LazarusIDEStrConsts, Project, MainIntf;
48
47
 
49
48
type
50
49
  { TNewLazIDEItemCategory }
137
136
    procedure FillItemsTree;
138
137
    procedure SetupComponents;
139
138
    procedure UpdateDescription;
 
139
    function FindItem(const aName: string): TTreeNode;
140
140
  public
141
141
    constructor Create(TheOwner: TComponent); override;
142
142
    destructor Destroy; override;
190
190
    exit;
191
191
  end;
192
192
  FNewItem := TNewIDEItemTemplate(ANode.Data);
193
 
  
 
193
 
 
194
  InputHistories.NewFileType:=FNewItem.Name;
 
195
  //debugln(['TNewOtherDialog.OKButtonClick InputHistories.NewFileType=',InputHistories.NewFileType]);
 
196
 
194
197
  // if the selected item is an inherited one
195
198
  if FNewItem is TNewItemProjectFile then
196
199
  begin
197
200
    //
 
201
    InputHistories.NewProjectType:=FNewItem.Name;
 
202
 
198
203
    NewFile:=TNewItemProjectFile(FNewItem);
199
204
    if (NewFile.Descriptor is TFileDescInheritedItem) then
200
205
    begin
201
 
      AInheritedNode := nil;
202
206
      // If we are inheriting from a form
203
207
      if (NewFile.Descriptor is TFileDescInheritedComponent) then begin
204
208
        InhCompItem:=TFileDescInheritedComponent(NewFile.Descriptor);
205
209
        AInheritedNode := InheritableComponentsListView.Selected;
206
 
        // load the ancestor component
207
 
        AnUnitInfo:=TUnitInfo(AInheritedNode.Data);
208
 
        if LazarusIDE.DoOpenComponent(AnUnitInfo.Filename,
209
 
          [ofOnlyIfExists,ofQuiet,ofLoadHiddenResource,ofUseCache],[],
210
 
          AncestorComponent)<>mrOk then
211
 
        begin
212
 
          MessageDlg(lisErrorOpeningComponent,
213
 
            lisUnableToOpenAncestorComponent, mtError, [mbCancel], 0);
214
 
          exit;
 
210
        if Assigned(AInheritedNode) then begin
 
211
          // load the ancestor component
 
212
          AnUnitInfo:=TUnitInfo(AInheritedNode.Data);
 
213
          if LazarusIDE.DoOpenComponent(AnUnitInfo.Filename,
 
214
            [ofOnlyIfExists,ofQuiet,ofLoadHiddenResource,ofUseCache],[],
 
215
            AncestorComponent)<>mrOk then
 
216
          begin
 
217
            MessageDlg(lisErrorOpeningComponent,
 
218
              lisUnableToOpenAncestorComponent, mtError, [mbCancel], 0);
 
219
            exit;
 
220
          end;
 
221
          // Set the resource class of the file descriptor
 
222
          InhCompItem.ResourceClass := TPersistentClass(AncestorComponent.ClassType);
 
223
          InhCompItem.InheritedUnit := AnUnitInfo;
 
224
          InhCompItem.DeclareClassVariable := not AncestorComponent.ClassType.InheritsFrom(TFrame);
 
225
          //DebugLn(['TNewOtherDialog.OKButtonClick ',InhCompItem.InheritedUnit.Filename,' ',dbgsname(InhCompItem.ResourceClass)]);
215
226
        end;
216
 
        // Set the resource class of the file descriptor
217
 
        InhCompItem.ResourceClass := TPersistentClass(AncestorComponent.ClassType);
218
 
        InhCompItem.InheritedUnit := AnUnitInfo;
219
 
        InhCompItem.DeclareClassVariable := not AncestorComponent.ClassType.InheritsFrom(TFrame);
220
 
        //DebugLn(['TNewOtherDialog.OKButtonClick ',InhCompItem.InheritedUnit.Filename,' ',dbgsname(InhCompItem.ResourceClass)]);
221
227
      end
222
228
      else
223
229
      begin
318
324
 
319
325
procedure TNewOtherDialog.HelpButtonClick(Sender: TObject);
320
326
begin
321
 
  ShowContextHelpForIDE(Self);
 
327
  LazarusHelp.ShowHelpForIDEControl(Self);
322
328
end;
323
329
 
324
330
procedure TNewOtherDialog.SetupComponents;
330
336
  DescriptionGroupBox.Caption := lisCodeHelpDescrTag;
331
337
  DescriptionLabel.Caption := '';
332
338
 
333
 
  ButtonPanel.OKButton.Caption := lisOk;
 
339
  ButtonPanel.OKButton.Caption := lisMenuOk;
334
340
  ButtonPanel.HelpButton.Caption := lisMenuHelp;
335
 
  ButtonPanel.CancelButton.Caption := dlgCancel;
 
341
  ButtonPanel.CancelButton.Caption := lisCancel;
336
342
end;
337
343
 
338
344
procedure TNewOtherDialog.UpdateDescription;
369
375
  DescriptionLabel.Caption := Desc;
370
376
end;
371
377
 
 
378
function TNewOtherDialog.FindItem(const aName: string): TTreeNode;
 
379
begin
 
380
  if aName='' then exit(nil);
 
381
  Result:=ItemsTreeView.Items.GetFirstNode;
 
382
  while Result<>nil do begin
 
383
    if (Result.Data<>nil)
 
384
    and (TObject(Result.Data) is TNewIDEItemTemplate)
 
385
    and (CompareText(TNewIDEItemTemplate(Result.Data).Name,aName)=0) then
 
386
      exit;
 
387
    Result:=Result.GetNext;
 
388
  end;
 
389
end;
 
390
 
372
391
constructor TNewOtherDialog.Create(TheOwner: TComponent);
 
392
var
 
393
  Node: TTreeNode;
373
394
begin
374
395
  inherited Create(TheOwner);
375
396
  Caption := lisMenuNewOther;
378
399
  FillProjectInheritableItemsList;
379
400
  InheritableComponentsListView.Visible := false;
380
401
  IDEDialogLayoutList.ApplyLayout(Self, 570, 400);
 
402
 
 
403
  Node:=FindItem(InputHistories.NewFileType);
 
404
  if Node=nil then
 
405
    Node:=FindItem(InputHistories.NewProjectType);
 
406
  if Node<>nil then
 
407
    ItemsTreeView.Selected:=Node;
381
408
end;
382
409
 
383
410
destructor TNewOtherDialog.Destroy;
549
576
 
550
577
function TNewLazIDEItemCategoryProject.LocalizedName: string;
551
578
begin
552
 
  Result := dlgEnvProject;
 
579
  Result := dlgProject;
553
580
end;
554
581
 
555
582
function TNewLazIDEItemCategoryProject.Description: string;