Changeset 97 for trunk/Forms


Ignore:
Timestamp:
Aug 22, 2016, 1:16:56 PM (8 years ago)
Author:
chronos
Message:
  • Added: Add support for acronym category selection in import source format.
  • Modified: Optimalized export speed.
  • Fixed: Export to MediaWiki tables was not correctly generated for multi line strings.
  • Fixed: Add back links from categories to import sources.
  • Added: Multi select support in category list.
Location:
trunk/Forms
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormAcronyms.pas

    r96 r97  
    131131      Meaning.Description := TempEntry.Description;
    132132      Meaning.Categories.AssignFromStrings(TempEntry.Categories);
     133
     134      // Update reverse references
    133135      for I := 0 to Meaning.Categories.Count - 1 do
    134         TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.Add(Meaning);
     136        if TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.IndexOf(Meaning) = -1 then
     137          TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.Add(Meaning);
     138
    135139      UpdateAcronymsList;
    136140      UpdateInterface;
     
    173177          Meaning.Description := TempEntry.Description;
    174178          Meaning.Categories.AssignFromStrings(TempEntry.Categories);
     179
     180          // Update reverse references
    175181          for I := 0 to Meaning.Categories.Count - 1 do
    176             TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.Add(Meaning);
     182            if TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.IndexOf(Meaning) = -1 then
     183              TAcronymCategory(Meaning.Categories.Items[I]).AcronymMeanings.Add(Meaning);
     184
    177185          UpdateAcronymsList;
    178186          UpdateInterface;
  • trunk/Forms/UFormCategories.lfm

    r85 r97  
    2626        Width = 440
    2727      end>
     28    MultiSelect = True
    2829    OwnerData = True
    2930    PopupMenu = PopupMenuCategory
     
    8586      OnExecute = AModifyExecute
    8687      ShortCut = 13
     88    end
     89    object ASelectAll: TAction
     90      Caption = 'Select all'
     91      OnExecute = ASelectAllExecute
     92      ShortCut = 16449
    8793    end
    8894  end
     
    208214      }
    209215    end
     216    object MenuItem4: TMenuItem
     217      Action = ASelectAll
     218    end
    210219  end
    211220end
  • trunk/Forms/UFormCategories.lrt

    r51 r97  
    66TFORMCATEGORIES.AREMOVE.CAPTION=Remove
    77TFORMCATEGORIES.AMODIFY.CAPTION=Modify
     8TFORMCATEGORIES.ASELECTALL.CAPTION=Select all
  • trunk/Forms/UFormCategories.pas

    r96 r97  
    1515  TFormCategories = class(TForm)
    1616    AAdd: TAction;
     17    ASelectAll: TAction;
    1718    ARemove: TAction;
    1819    AModify: TAction;
     
    2223    MenuItem2: TMenuItem;
    2324    MenuItem3: TMenuItem;
     25    MenuItem4: TMenuItem;
    2426    PopupMenuCategory: TPopupMenu;
    2527    ToolBar1: TToolBar;
     
    3032    procedure AModifyExecute(Sender: TObject);
    3133    procedure ARemoveExecute(Sender: TObject);
     34    procedure ASelectAllExecute(Sender: TObject);
    3235    procedure FormCreate(Sender: TObject);
    3336    procedure FormShow(Sender: TObject);
     
    114117end;
    115118
     119procedure TFormCategories.ASelectAllExecute(Sender: TObject);
     120var
     121  I: Integer;
     122begin
     123  for I := 0 to ListViewCategories.Items.Count - 1 do
     124    ListViewCategories.Items[I].Selected := True;
     125end;
     126
    116127procedure TFormCategories.FormCreate(Sender: TObject);
    117128var
  • trunk/Forms/UFormExport.pas

    r96 r97  
    66
    77uses
    8   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
     8  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
     9  UJobProgressView;
    910
    1011type
     
    2223    procedure FormCreate(Sender: TObject);
    2324  private
    24     procedure ExportCSV;
    25     procedure ExportMediaWiki;
    26     procedure ExportMediaWikiTable;
     25    ItemCount: Integer;
     26    procedure JobExportCSV(Job: TJob);
     27    procedure JobExportMediaWiki(Job: TJob);
     28    procedure JobExportMediaWikiTable(Job: TJob);
    2729  public
    2830    { public declarations }
     
    4042
    4143resourcestring
    42   SExpotedAcronyms = 'Exported %d acronyms';
     44  SExportedAcronyms = 'Exported %d acronyms';
     45  SExporting = 'Exporting';
    4346
    4447{ TFormExport }
     
    5962end;
    6063
    61 procedure TFormExport.ExportCSV;
     64procedure TFormExport.JobExportCSV(Job: TJob);
    6265var
    6366  I: Integer;
    6467  J: Integer;
    65   ItemCount: Integer;
     68  Content: string;
    6669begin
    67   Memo1.Lines.Clear;
    68   Memo1.Lines.BeginUpdate;
     70  Job.Progress.Max := Core.AcronymDb.Acronyms.Count;
    6971  ItemCount := 0;
    70   for I := 0 to Core.AcronymDb.Acronyms.Count - 1 do
    71   with TAcronym(Core.AcronymDb.Acronyms[I]) do
    72     for J := 0 to Meanings.Count - 1 do
    73     with TAcronymMeaning(Meanings[J]) do begin
    74       Memo1.Lines.Add('"' + Acronym.Name + '","' + Name + '","' + Description + '","' + Categories.GetString + '"');
    75       Inc(ItemCount);
    76     end;
    77   Memo1.Lines.EndUpdate;
    78   ShowMessage(Format(SExpotedAcronyms, [ItemCount]));
    79 end;
    80 
    81 procedure TFormExport.ExportMediaWiki;
    82 var
    83   I: Integer;
    84   J: Integer;
    85   ItemCount: Integer;
    86 begin
    87   Memo1.Lines.Clear;
    88   Memo1.Lines.BeginUpdate;
    89   ItemCount := 0;
    90   for I := 0 to Core.AcronymDb.Acronyms.Count - 1 do
    91   with TAcronym(Core.AcronymDb.Acronyms[I]) do begin
    92     Memo1.Lines.Add('; ' + Name);
    93     for J := 0 to Meanings.Count - 1 do
    94     with TAcronymMeaning(Meanings[J]) do begin
    95       Memo1.Lines.Add(': ' + Name);
    96       Inc(ItemCount);
    97     end;
    98   end;
    99   Memo1.Lines.EndUpdate;
    100   ShowMessage(Format(SExpotedAcronyms, [ItemCount]));
    101 end;
    102 
    103 procedure TFormExport.ExportMediaWikiTable;
    104 var
    105   I: Integer;
    106   J: Integer;
    107   ItemCount: Integer;
    108 begin
    109   Memo1.Lines.Clear;
    110   Memo1.Lines.BeginUpdate;
    111   ItemCount := 0;
    112   Memo1.Lines.Add('{| class="wikitable sortable"');
    113   Memo1.Lines.Add('! Name !! Meaning !! Description !! Categories');
     72  Content := '';
    11473  for I := 0 to Core.AcronymDb.Acronyms.Count - 1 do
    11574  with TAcronym(Core.AcronymDb.Acronyms[I]) do begin
    11675    for J := 0 to Meanings.Count - 1 do
    11776    with TAcronymMeaning(Meanings[J]) do begin
    118       Memo1.Lines.Add('|-');
    119       Memo1.Lines.Add('| ' + Acronym.Name + ' || ' + Name + ' || ' + Description + ' || ' + Categories.GetString);
     77      Content := Content + '"' + Acronym.Name + '","' + Name + '","' + Description + '","' + Categories.GetString + '"' + LineEnding;
    12078      Inc(ItemCount);
    12179    end;
     80    Job.Progress.Increment;
     81    if Job.Terminate then Break;
    12282  end;
    123   Memo1.Lines.Add('|}');
    124   Memo1.Lines.EndUpdate;
    125   ShowMessage(Format(SExpotedAcronyms, [ItemCount]));
     83  Memo1.Lines.Text := Content;
     84end;
     85
     86procedure TFormExport.JobExportMediaWiki(Job: TJob);
     87var
     88  I: Integer;
     89  J: Integer;
     90  Content: string;
     91begin
     92  Job.Progress.Max := Core.AcronymDb.Acronyms.Count;
     93  ItemCount := 0;
     94  Content := '';
     95  for I := 0 to Core.AcronymDb.Acronyms.Count - 1 do
     96  with TAcronym(Core.AcronymDb.Acronyms[I]) do begin
     97    Content := Content + '; ' + Name + LineEnding;
     98    for J := 0 to Meanings.Count - 1 do
     99    with TAcronymMeaning(Meanings[J]) do begin
     100      Content := Content + ': ' + Name + LineEnding;
     101      Inc(ItemCount);
     102    end;
     103    Job.Progress.Increment;
     104    if Job.Terminate then Break;
     105  end;
     106  Memo1.Lines.Text := Content;
     107end;
     108
     109procedure TFormExport.JobExportMediaWikiTable(Job: TJob);
     110var
     111  I: Integer;
     112  J: Integer;
     113  Line: string;
     114  Content: string;
     115begin
     116  Job.Progress.Max := Core.AcronymDb.Acronyms.Count;
     117  ItemCount := 0;
     118  Content := '{| class="wikitable sortable"' + LineEnding +
     119    '! Name !! Meaning !! Description !! Categories' + LineEnding;
     120  for I := 0 to Core.AcronymDb.Acronyms.Count - 1 do
     121  with TAcronym(Core.AcronymDb.Acronyms[I]) do begin
     122    for J := 0 to Meanings.Count - 1 do
     123    with TAcronymMeaning(Meanings[J]) do begin
     124      Content := Content + '|-' + LineEnding +
     125        '| ' + Acronym.Name + LineEnding + '| ' + Name + LineEnding +
     126        '| ' + Description + LineEnding + '| ' + Categories.GetString + LineEnding;
     127      Inc(ItemCount);
     128    end;
     129    Job.Progress.Increment;
     130    if Job.Terminate then Break;
     131  end;
     132  Content := Content + '|}' + LineEnding;
     133  Memo1.Lines.Text := Content;
    126134end;
    127135
    128136procedure TFormExport.ButtonProcessClick(Sender: TObject);
    129137begin
    130   if ComboBoxDataFormat.ItemIndex = 0 then ExportCSV;
    131   if ComboBoxDataFormat.ItemIndex = 1 then ExportMediaWiki;
    132   if ComboBoxDataFormat.ItemIndex = 2 then ExportMediaWikiTable;
     138  if ComboBoxDataFormat.ItemIndex = 0 then
     139    Core.JobProgressView1.AddJob(SExporting, JobExportCSV);
     140  if ComboBoxDataFormat.ItemIndex = 1 then
     141    Core.JobProgressView1.AddJob(SExporting, JobExportMediaWiki);
     142  if ComboBoxDataFormat.ItemIndex = 2 then
     143    Core.JobProgressView1.AddJob(SExporting, JobExportMediaWikiTable);
     144  Core.JobProgressView1.Start;
     145  ShowMessage(Format(SExportedAcronyms, [ItemCount]));
    133146end;
    134147
  • trunk/Forms/UFormImportSources.pas

    r96 r97  
    184184var
    185185  NewImportSource: TImportSource;
     186  I: Integer;
    186187begin
    187188  NewImportSource := TImportSource.Create;
     
    194195      if not Assigned(ImportSources.SearchByName(NewImportSource.Name)) then begin;
    195196        ImportSources.Add(NewImportSource);
     197
     198        // Update reverse references
     199        for I := 0 to NewImportSource.Categories.Count - 1 do
     200          if TAcronymCategory(NewImportSource.Categories.Items[I]).ImportSources.IndexOf(NewImportSource) = -1 then
     201            TAcronymCategory(NewImportSource.Categories.Items[I]).ImportSources.Add(NewImportSource);
     202
    196203        NewImportSource := nil;
    197204        Core.AcronymDb.Modified := True;
     
    228235var
    229236  NewImportSource: TImportSource;
     237  I: Integer;
    230238begin
    231239  if Assigned(ListView1.Selected) then begin
     
    241249            TImportSource(ListView1.Selected.Data).Assign(NewImportSource);
    242250            Core.AcronymDb.Modified := True;
    243             UpdateList;
    244251          end else ShowMessage(Format(SImportSourceAlreadyExists, [NewImportSource.Name]));
    245252        end else begin
    246253          TImportSource(ListView1.Selected.Data).Assign(NewImportSource);
    247254          Core.AcronymDb.Modified := True;
    248           UpdateList;
    249255        end;
     256
     257        // Update reverse references
     258        TImportSource(ListView1.Selected.Data).Categories.UpdateLinkImportSources(TImportSource(ListView1.Selected.Data));
     259
     260        UpdateList;
    250261      end;
    251262      if Assigned(NewImportSource) then NewImportSource.Free;
  • trunk/Forms/UFormMain.lfm

    r96 r97  
    685685      0000
    686686    }
     687    Hint = 'Acronym Decoder'
    687688    Visible = True
    688689    OnClick = TrayIcon1Click
     
    19891990    }
    19901991  end
    1991   object JobProgressView1: TJobProgressView
    1992     OwnerDraw = False
    1993     ShowDelay = 0
    1994     AutoClose = False
    1995     left = 264
    1996     top = 296
    1997   end
    19981992  object PopupMenuOpenRecent: TPopupMenu
    19991993    left = 672
  • trunk/Forms/UFormMain.pas

    r96 r97  
    3535    CheckBoxExactMath: TCheckBox;
    3636    ImageList1: TImageList;
    37     JobProgressView1: TJobProgressView;
    3837    LastOpenedList1: TLastOpenedList;
    3938    ListViewAcronyms: TListView;
     
    104103    procedure AShowImportSourcesExecute(Sender: TObject);
    105104    procedure CheckBoxExactMathChange(Sender: TObject);
    106     procedure CoolTranslator1Translate(Sender: TObject);
    107105    procedure EditSearchChange(Sender: TObject);
    108106    procedure FormHide(Sender: TObject);
     
    298296  ImportTotalItemCount := 0;
    299297  Core.AcronymDb.AddedCount := 0;
    300   JobProgressView1.AddJob(SProcessImportSources, ProcessImportsJob);
    301   JobProgressView1.Start;
     298  Core.JobProgressView1.AddJob(SProcessImportSources, ProcessImportsJob);
     299  Core.JobProgressView1.Start;
    302300  ShowMessage(Format(SAddedCount, [ImportTotalItemCount, Core.AcronymDb.AddedCount]));
    303301  UpdateAcronymsList;
     
    403401begin
    404402  UpdateAcronymsList;
    405 end;
    406 
    407 procedure TFormMain.CoolTranslator1Translate(Sender: TObject);
    408 begin
    409   UAcronym.Translate;
    410403end;
    411404
Note: See TracChangeset for help on using the changeset viewer.