@@ -32,6 +32,7 @@ TCodeFrm = class(TForm)
3232 actCopyAsHtml: TAction;
3333 actEditUndo: TAction;
3434 actEditRedo: TAction;
35+ actImportTxt: TAction;
3536 actSaveAsTXT: TAction;
3637 actReadOnly: TAction;
3738 actSyntaxBat: TAction;
@@ -44,6 +45,7 @@ TCodeFrm = class(TForm)
4445 actSyntaxJava: TAction;
4546 CodeDB: TBufDataset;
4647 DataSource1: TDataSource;
48+ mitImport: TMenuItem;
4749 mitExportHtml: TMenuItem;
4850 mitExportTXT: TMenuItem;
4951 mitExport: TMenuItem;
@@ -66,6 +68,7 @@ TCodeFrm = class(TForm)
6668 dlgPrinterSetup: TPrinterSetupDialog;
6769 dlgPrint: TPrintDialog;
6870 dlgSave: TSaveDialog;
71+ dlgOpen: TOpenDialog;
6972 Splitter: TSplitter;
7073 MainMenu: TMainMenu;
7174 mitFile: TMenuItem;
@@ -183,6 +186,7 @@ TCodeFrm = class(TForm)
183186 procedure actCopyAsHtmlExecute (Sender: TObject);
184187 procedure actEditRedoExecute (Sender: TObject);
185188 procedure actEditUndoExecute (Sender: TObject);
189+ procedure actImportTxtExecute (Sender: TObject);
186190 procedure actReadOnlyExecute (Sender: TObject);
187191 procedure actSaveAsHtmlExecute (Sender: TObject);
188192 procedure actSaveAsTXTExecute (Sender: TObject);
@@ -246,9 +250,10 @@ TCodeFrm = class(TForm)
246250 procedure SetupSyntaxHighlightingControl ;
247251 public
248252 function AddFolder (Node: TTreeNode; const Desc: string): TTreeNode;
249- function AddCode (const Desc: string): TTreeNode;
253+ function AddCode (const Desc: string; Import : boolean = false ): TTreeNode;
250254 property Modified: Boolean read FModified write SetModified;
251255 property DatabasePath: string read FDatabasePath write FDatabasePath;
256+
252257 end ;
253258
254259
@@ -421,23 +426,64 @@ procedure TCodeFrm.SetModified(New: Boolean);
421426 StatusBar.Panels[1 ].Text := ' ' ; // No need to localize.
422427end ;
423428
424- function TCodeFrm.AddCode (const Desc: string): TTreeNode;
429+ function TCodeFrm.AddCode (const Desc: string; Import : boolean ): TTreeNode;
425430var
426431 Node: TTreeNode;
432+ T : TStringList;
427433begin
428434 Result := nil ;
429435 if tvTopics.Selected = nil then Exit;
436+
430437 with CodeDB do
431438 begin
432439 Insert;
433440 FieldByName(' Parent' ).AsInteger := PtrInt(tvTopics.Selected.Data); // Do not localize.
434441 FieldByName(' Topic' ).AsString := Desc; // Do not localize.
435442 FieldByName(' Type' ).AsString := ' C' ; // Do not localize.
443+
444+ if import then
445+ begin
446+ T:=TStringList.Create;
447+ T.LoadFromFile(dlgOpen.FileName);
448+ FieldByName(' Code' ).AsString :=T.Text;
449+ T.Free;
450+
451+ case ExtractFileExt(dlgOpen.FileName) of
452+ ' .pas' : FieldByName(' Language' ).AsString := ' PASCAL' ; // Do not localize.
453+ ' .pp' : FieldByName(' Language' ).AsString := ' PASCAL' ; // Do not localize.
454+ ' .c' : FieldByName(' Language' ).AsString := ' CPP' ; // Do not localize.
455+ ' .cpp' : FieldByName(' Language' ).AsString := ' CPP' ; // Do not localize.
456+ ' .h' : FieldByName(' Language' ).AsString := ' CPP' ; // Do not localize.
457+ ' .htm' : FieldByName(' Language' ).AsString := ' HTML' ; // Do not localize.
458+ ' .html' : FieldByName(' Language' ).AsString := ' HTML' ; // Do not localize.
459+ ' .sql' : FieldByName(' Language' ).AsString := ' SQL' ; // Do not localize.
460+ ' .java' : FieldByName(' Language' ).AsString := ' JAVA' ; // Do not localize.
461+ ' .js' : FieldByName(' Language' ).AsString := ' JAVASCRIPT' ; // Do not localize.
462+ ' .pl' : FieldByName(' Language' ).AsString := ' PERL' ; // Do not localize.
463+ ' .pm' : FieldByName(' Language' ).AsString := ' PERL' ; // Do not localize.
464+ ' .t' : FieldByName(' Language' ).AsString := ' PERL' ; // Do not localize.
465+ ' .php' : FieldByName(' Language' ).AsString := ' PHP' ; // Do not localize.
466+ ' .py' : FieldByName(' Language' ).AsString := ' PYTHON' ; // Do not localize.
467+ ' .py3' : FieldByName(' Language' ).AsString := ' PYTHON' ; // Do not localize.
468+ ' .sh' : FieldByName(' Language' ).AsString := ' UNIXSHELL' ; // Do not localize.
469+ ' .bash' : FieldByName(' Language' ).AsString := ' UNIXSHELL' ; // Do not localize.
470+ ' .bat' : FieldByName(' Language' ).AsString := ' MSDOSBAT' ; // Do not localize.
471+
472+ else
473+ FieldByName(' Language' ).AsString := ' NONE' ; // Do not localize.
474+ end ;
475+
476+ end
477+ else
478+ begin
436479 if mitPascal.Checked then
437480 FieldByName(' Language' ).AsString := ' PASCAL' // Do not localize.
438481 else
439482 FieldByName(' Language' ).AsString := ' NONE' ; // Do not localize.
483+ end ;
484+
440485 Post;
486+
441487 end ;
442488 Node := tvTopics.Items.AddChildObject(tvTopics.Selected, Desc,
443489 Pointer(PtrInt(CodeDB.FieldByName(' Key' ).AsInteger))); // Do not localize.
@@ -517,6 +563,21 @@ procedure TCodeFrm.actEditUndoExecute(Sender: TObject);
517563 FCodeText.Undo;
518564end ;
519565
566+ procedure TCodeFrm.actImportTxtExecute (Sender: TObject);
567+ var
568+ Node: TTreeNode;
569+ begin
570+ Screen.Cursor := crHourglass;
571+ if dlgOpen.Execute then
572+ try
573+ Node := AddCode(ExtractFileName(dlgOpen.FileName), true);
574+ if Node <> nil then
575+ tvTopics.Selected := Node;
576+ finally
577+ Screen.Cursor := crDefault;
578+ end ;
579+ end ;
580+
520581procedure TCodeFrm.actReadOnlyExecute (Sender: TObject);
521582begin
522583 FCodeText.ReadOnly:=mitReadOnly.Checked;
@@ -578,6 +639,7 @@ procedure TCodeFrm.mActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
578639 begin
579640 actMakeRoot.Enabled := False;
580641 actNewSnippet.Enabled := False;
642+
581643 end
582644 else
583645 begin
@@ -587,6 +649,8 @@ procedure TCodeFrm.mActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
587649 end ;
588650 actPrint.Enabled:=SnippetIsSelected;
589651
652+ actImportTxt.Enabled:= not SnippetIsSelected;
653+
590654 actSaveAsHtml.Enabled:=SnippetIsSelected;
591655 actSaveAsTXT.Enabled:=SnippetIsSelected;
592656 mitExport.Enabled:=SnippetIsSelected;
@@ -724,8 +788,8 @@ procedure TCodeFrm.tvTopicsChange(Sender: TObject; Node: TTreeNode);
724788 FCodeText.HighLighter := SynPas;
725789 end ;
726790 end ;
727- FCodeText.Text:=CodeDB.FieldByName(' Code' ).AsString;
728- finally
791+ FCodeText.Text:=CodeDB.FieldByName(' Code' ).AsString ;
792+ finally
729793 FCodeText.Lines.EndUpdate;
730794 end ;
731795 end ;
@@ -1092,6 +1156,8 @@ procedure TCodeFrm.LoadSettings;
10921156
10931157 actSaveAsHtml.Caption:= rs_actSaveAsHtml;
10941158 actSaveAsTXT.Caption := rs_actSaveAsTXT;
1159+ actImportTxt.Caption:=rs_actImportTxt;
1160+
10951161
10961162 mitFile.Caption := rs_mitFile;
10971163 mitFileNew.Caption:=rs_mitFileNew;
0 commit comments