diff --git a/README.md b/README.md
index 52243f6..c658d2b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
-# qr-code-generator
-QR code Generator
+# QR-code generator (Bar generator)
-QR - BARCODE GENERATOR
+QR-code generator (Bar generator) by Dariusz Rorat ([dariuszrorat](http://sourceforge.net/users/dariuszrorat)).
-Imported from https://sourceforge.net/projects/bargenerator/
+Imported from [sourceforge](https://sourceforge.net/projects/bargenerator/)
+
+This light and easy tool is excellent to quickly transmit text data from a PC to a Smartphone without usage of any wireless or wired link.
\ No newline at end of file
diff --git a/bar_generator.ico b/bar_generator.ico
new file mode 100644
index 0000000..c455b97
Binary files /dev/null and b/bar_generator.ico differ
diff --git a/bar_generator.lpi b/bar_generator.lpi
new file mode 100644
index 0000000..88bebd3
--- /dev/null
+++ b/bar_generator.lpi
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bar_generator.lpr b/bar_generator.lpr
new file mode 100644
index 0000000..b1f6d5d
--- /dev/null
+++ b/bar_generator.lpr
@@ -0,0 +1,45 @@
+{
+ ***************************************************************************
+ * *
+ * This source is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This code is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * General Public License for more details. *
+ * *
+ * A copy of the GNU General Public License is available on the World *
+ * Wide Web at . You can also *
+ * obtain it by writing to the Free Software Foundation, *
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * *
+ ***************************************************************************
+
+ Author: Dariusz Rorat
+
+}
+
+program bar_generator;
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}{$IFDEF UseCThreads}
+ cthreads,
+ {$ENDIF}{$ENDIF}
+ Interfaces, // this includes the LCL widgetset
+ Forms, srcmain
+ { you can add units after this };
+
+{$R *.res}
+
+begin
+ Application.Title := 'Bar generator' ;
+ Application.Initialize;
+ Application.CreateForm(TfrmMain, frmMain);
+ Application.Run;
+end.
+
diff --git a/bar_generator.res b/bar_generator.res
new file mode 100644
index 0000000..6cdbf7e
Binary files /dev/null and b/bar_generator.res differ
diff --git a/languages/lclstrconsts.pl.po b/languages/lclstrconsts.pl.po
new file mode 100644
index 0000000..65c2f20
--- /dev/null
+++ b/languages/lclstrconsts.pl.po
@@ -0,0 +1,1226 @@
+msgid ""
+msgstr ""
+"Last-Translator: AlbercikCD\n"
+"PO-Revision-Date: 2007-01-14 00:01+0100\n"
+"Project-Id-Version: lclstrconsts\n"
+"Language-Team: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"POT-Creation-Date: \n"
+"MIME-Version: 1.0\n"
+"X-Poedit-Language: Polish\n"
+"X-Poedit-Country: POLAND\n"
+
+#: lclstrconsts.hhshelpbrowsernotexecutable
+msgid "Browser %s%s%s not executable."
+msgstr ""
+
+#: lclstrconsts.hhshelpbrowsernotfound
+msgid "Browser %s%s%s not found."
+msgstr ""
+
+#: lclstrconsts.hhshelperrorwhileexecuting
+msgid "Error while executing %s%s%s:%s%s"
+msgstr ""
+
+#: lclstrconsts.hhshelpnohtmlbrowserfound
+msgid "Unable to find a HTML browser."
+msgstr ""
+
+#: lclstrconsts.hhshelpnohtmlbrowserfoundpleasedefineoneinhelpconfigurehe
+msgid "No HTML Browser found.%sPlease define one in Environment -> Options -> Help -> Help Options"
+msgstr ""
+
+#: lclstrconsts.hhshelpthehelpdatabasewasunabletofindfile
+msgid "The help database %s%s%s was unable to find file %s%s%s."
+msgstr ""
+
+#: lclstrconsts.hhshelpthemacrosinbrowserparamswillbereplacedbytheurl
+msgid "The macro %s in BrowserParams will be replaced by the URL."
+msgstr ""
+
+#: lclstrconsts.ifsalt
+msgid "Alt"
+msgstr ""
+
+#: lclstrconsts.ifsctrl
+msgid "Ctrl"
+msgstr ""
+
+#: lclstrconsts.ifsvk_accept
+msgid "Accept"
+msgstr ""
+
+#: lclstrconsts.ifsvk_apps
+msgid "application key"
+msgstr ""
+
+#: lclstrconsts.ifsvk_back
+msgid "Backspace"
+msgstr ""
+
+#: lclstrconsts.ifsvk_cancel
+msgctxt "lclstrconsts.ifsvk_cancel"
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: lclstrconsts.ifsvk_capital
+msgid "Capital"
+msgstr ""
+
+#: lclstrconsts.ifsvk_clear
+msgid "Clear"
+msgstr ""
+
+#: lclstrconsts.ifsvk_control
+msgid "Control"
+msgstr ""
+
+#: lclstrconsts.ifsvk_convert
+msgid "Convert"
+msgstr "Konwertuj"
+
+#: lclstrconsts.ifsvk_delete
+msgctxt "lclstrconsts.ifsvk_delete"
+msgid "Delete"
+msgstr ""
+
+#: lclstrconsts.ifsvk_down
+msgid "Down"
+msgstr ""
+
+#: lclstrconsts.ifsvk_end
+msgid "End"
+msgstr ""
+
+#: lclstrconsts.ifsvk_escape
+msgid "Escape"
+msgstr ""
+
+#: lclstrconsts.ifsvk_execute
+msgid "Execute"
+msgstr ""
+
+#: lclstrconsts.ifsvk_final
+msgid "Final"
+msgstr ""
+
+#: lclstrconsts.ifsvk_hanja
+msgid "Hanja"
+msgstr ""
+
+#: lclstrconsts.ifsvk_help
+msgid "Help"
+msgstr "Pomoc"
+
+#: lclstrconsts.ifsvk_home
+msgid "Home"
+msgstr ""
+
+#: lclstrconsts.ifsvk_insert
+msgctxt "lclstrconsts.ifsvk_insert"
+msgid "Insert"
+msgstr ""
+
+#: lclstrconsts.ifsvk_junja
+msgid "Junja"
+msgstr ""
+
+#: lclstrconsts.ifsvk_kana
+msgid "Kana"
+msgstr ""
+
+#: lclstrconsts.ifsvk_lbutton
+msgid "Mouse Button Left"
+msgstr "Lewy przycisk myszy"
+
+#: lclstrconsts.ifsvk_left
+msgid "Left"
+msgstr ""
+
+#: lclstrconsts.ifsvk_lwin
+msgid "left windows key"
+msgstr ""
+
+#: lclstrconsts.ifsvk_mbutton
+msgid "Mouse Button Middle"
+msgstr "Środkowy przycisk myszy"
+
+#: lclstrconsts.ifsvk_menu
+msgctxt "lclstrconsts.ifsvk_menu"
+msgid "Menu"
+msgstr ""
+
+#: lclstrconsts.ifsvk_modechange
+msgid "Mode Change"
+msgstr ""
+
+#: lclstrconsts.ifsvk_next
+msgctxt "lclstrconsts.ifsvk_next"
+msgid "Next"
+msgstr ""
+
+#: lclstrconsts.ifsvk_nonconvert
+msgid "Nonconvert"
+msgstr ""
+
+#: lclstrconsts.ifsvk_numlock
+msgid "Numlock"
+msgstr ""
+
+#: lclstrconsts.ifsvk_numpad
+msgid "Numpad %d"
+msgstr ""
+
+#: lclstrconsts.ifsvk_pause
+msgid "Pause key"
+msgstr ""
+
+#: lclstrconsts.ifsvk_print
+msgid "Print"
+msgstr ""
+
+#: lclstrconsts.ifsvk_prior
+msgctxt "lclstrconsts.ifsvk_prior"
+msgid "Prior"
+msgstr ""
+
+#: lclstrconsts.ifsvk_rbutton
+msgid "Mouse Button Right"
+msgstr "Prawy przycisk myszy"
+
+#: lclstrconsts.ifsvk_return
+msgid "Return"
+msgstr ""
+
+#: lclstrconsts.ifsvk_right
+msgid "Right"
+msgstr ""
+
+#: lclstrconsts.ifsvk_rwin
+msgid "right windows key"
+msgstr ""
+
+#: lclstrconsts.ifsvk_scroll
+msgid "Scroll"
+msgstr ""
+
+#: lclstrconsts.ifsvk_select
+msgid "Select"
+msgstr ""
+
+#: lclstrconsts.ifsvk_shift
+msgid "Shift"
+msgstr ""
+
+#: lclstrconsts.ifsvk_snapshot
+msgid "Snapshot"
+msgstr ""
+
+#: lclstrconsts.ifsvk_space
+msgid "Space key"
+msgstr ""
+
+#: lclstrconsts.ifsvk_tab
+msgid "Tab"
+msgstr ""
+
+#: lclstrconsts.ifsvk_unknown
+msgid "Unknown"
+msgstr ""
+
+#: lclstrconsts.ifsvk_up
+msgid "Up"
+msgstr ""
+
+#: lclstrconsts.lislclresourcesnotfound
+msgctxt "lclstrconsts.lislclresourcesnotfound"
+msgid "Resource %s not found"
+msgstr "Nie znaleziono zasobu: %s"
+
+#: lclstrconsts.rs3ddkshadowcolorcaption
+msgid "3D Dark Shadow"
+msgstr ""
+
+#: lclstrconsts.rs3dlightcolorcaption
+msgid "3D Light"
+msgstr ""
+
+#: lclstrconsts.rsacontrolcannothaveitselfasparent
+msgid "A control can't have itself as parent"
+msgstr "Kontrolka nie może być sama swoim rodzicem"
+
+#: lclstrconsts.rsactivebordercolorcaption
+msgid "Active Border"
+msgstr ""
+
+#: lclstrconsts.rsactivecaptioncolorcaption
+msgid "Active Caption"
+msgstr ""
+
+#: lclstrconsts.rsallfiles
+msgid "All files (%s)|%s|%s"
+msgstr "Wszystkie pliki (%s)|%s|%s"
+
+#: lclstrconsts.rsappworkspacecolorcaption
+msgid "Application Workspace"
+msgstr ""
+
+#: lclstrconsts.rsaquacolorcaption
+msgid "Aqua"
+msgstr ""
+
+#: lclstrconsts.rsbackgroundcolorcaption
+msgid "Desktop"
+msgstr ""
+
+#: lclstrconsts.rsbackward
+msgid "Backward"
+msgstr ""
+
+#: lclstrconsts.rsbitmaps
+msgid "Bitmaps"
+msgstr ""
+
+#: lclstrconsts.rsblackcolorcaption
+msgid "Black"
+msgstr ""
+
+#: lclstrconsts.rsblank
+msgid "Blank"
+msgstr "Pusty"
+
+#: lclstrconsts.rsbluecolorcaption
+msgid "Blue"
+msgstr ""
+
+#: lclstrconsts.rsbtnfacecolorcaption
+msgid "Button Face"
+msgstr ""
+
+#: lclstrconsts.rsbtnhighlightcolorcaption
+msgid "Button Highlight"
+msgstr ""
+
+#: lclstrconsts.rsbtnshadowcolorcaption
+msgid "Button Shadow"
+msgstr ""
+
+#: lclstrconsts.rsbtntextcolorcaption
+msgid "Button Text"
+msgstr ""
+
+#: lclstrconsts.rscalculator
+msgid "Calculator"
+msgstr "Kalkulator"
+
+#: lclstrconsts.rscancelrecordhint
+msgctxt "lclstrconsts.rscancelrecordhint"
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: lclstrconsts.rscannotfocus
+msgid "Can not focus"
+msgstr "Nie można ustawić ogniska."
+
+#: lclstrconsts.rscanvasdoesnotallowdrawing
+msgid "Canvas does not allow drawing"
+msgstr "Canvas nie pozwala na rysowanie"
+
+#: lclstrconsts.rscaptiontextcolorcaption
+msgid "Caption Text"
+msgstr ""
+
+#: lclstrconsts.rscasesensitive
+msgid "Case sensitive"
+msgstr ""
+
+#: lclstrconsts.rscreamcolorcaption
+msgid "Cream"
+msgstr ""
+
+#: lclstrconsts.rscreatinggdbcatchableerror
+msgid "Creating gdb catchable error:"
+msgstr "Błąd przy tworzeniu \"gdb catchable\":"
+
+#: lclstrconsts.rscursor
+msgid "Cursor"
+msgstr ""
+
+#: lclstrconsts.rscustomcolorcaption
+msgid "Custom ..."
+msgstr ""
+
+#: lclstrconsts.rsdefaultcolorcaption
+msgid "Default"
+msgstr ""
+
+#: lclstrconsts.rsdefaultfileinfovalue
+msgid "permissions user group size date time"
+msgstr "uprawnienia użytkownik grupa rozmiar data czas"
+
+#: lclstrconsts.rsdeleterecord
+msgid "Delete record?"
+msgstr ""
+
+#: lclstrconsts.rsdeleterecordhint
+msgctxt "lclstrconsts.rsdeleterecordhint"
+msgid "Delete"
+msgstr ""
+
+#: lclstrconsts.rsdirection
+msgid "Direction"
+msgstr ""
+
+#: lclstrconsts.rsdirectory
+msgid "&Directory"
+msgstr ""
+
+#: lclstrconsts.rsdocking
+msgid "Docking"
+msgstr ""
+
+#: lclstrconsts.rsduplicateiconformat
+msgid "Duplicate icon format."
+msgstr ""
+
+#: lclstrconsts.rseditrecordhint
+msgid "Edit"
+msgstr ""
+
+#: lclstrconsts.rsentirescope
+msgid "Search entire file"
+msgstr ""
+
+#: lclstrconsts.rserror
+msgctxt "lclstrconsts.rserror"
+msgid "Error"
+msgstr "Błąd"
+
+#: lclstrconsts.rserrorcreatingdevicecontext
+msgid "Error creating device context for %s.%s"
+msgstr "Błąd przy tworzeniu \"device context\" dla %s.%s"
+
+#: lclstrconsts.rserrorinlcl
+msgid "ERROR in LCL: "
+msgstr "BŁĄD w LCL: "
+
+#: lclstrconsts.rserroroccurredinataddressframe
+msgid "Error occurred in %s at %sAddress %s%s Frame %s"
+msgstr "Błąd w %s przy %sAdres %s%s Ramka %s"
+
+#: lclstrconsts.rserrorreadingproperty
+msgid "Error reading %s%s%s: %s"
+msgstr "Błąd odczytu %s%s%s: %s"
+
+#: lclstrconsts.rserrorwhilesavingbitmap
+msgid "Error while saving bitmap."
+msgstr ""
+
+#: lclstrconsts.rsexception
+msgid "Exception"
+msgstr "Wyjątek"
+
+#: lclstrconsts.rsfddirectorymustexist
+msgid "Directory must exist"
+msgstr "Katalog musi istnieć"
+
+#: lclstrconsts.rsfddirectorynotexist
+msgid "The directory \"%s\" does not exist."
+msgstr "Katalog \"%s\" nie istnieje."
+
+#: lclstrconsts.rsfdfilealreadyexists
+msgid "The file \"%s\" already exists. Overwrite ?"
+msgstr "Plik \"%s\" już istnieje. Nadpisać ?"
+
+#: lclstrconsts.rsfdfilemustexist
+msgid "File must exist"
+msgstr "Plik musi istnieć"
+
+#: lclstrconsts.rsfdfilenotexist
+msgid "The file \"%s\" does not exist."
+msgstr "Plik \"%s\" nie istnieje."
+
+#: lclstrconsts.rsfdfilereadonly
+msgid "The file \"%s\" is not writable."
+msgstr "Plik \"%s\" nie jest zapisywalny."
+
+#: lclstrconsts.rsfdfilereadonlytitle
+msgid "File is not writable"
+msgstr "Plik nie jest zapisywalny"
+
+#: lclstrconsts.rsfdfilesaveas
+msgid "Save file as"
+msgstr "Zapisz plik jako"
+
+#: lclstrconsts.rsfdopenfile
+msgid "Open existing file"
+msgstr "Otwórz istniejący plik"
+
+#: lclstrconsts.rsfdoverwritefile
+msgid "Overwrite file ?"
+msgstr "Chcesz nadpisać plik?"
+
+#: lclstrconsts.rsfdpathmustexist
+msgid "Path must exist"
+msgstr "Ścieżka musi istnieć"
+
+#: lclstrconsts.rsfdpathnoexist
+msgid "The path \"%s\" does not exist."
+msgstr "Ścieżka \"%s\" nie istnieje."
+
+#: lclstrconsts.rsfdselectdirectory
+msgid "Select Directory"
+msgstr "Wybierz katalog"
+
+#: lclstrconsts.rsfileinfofilenotfound
+msgid "(file not found: \"%s\")"
+msgstr "(nie znaleziono pliku: \"%s\")"
+
+#: lclstrconsts.rsfileinformation
+msgid "File information"
+msgstr "Informacja o pliku"
+
+#: lclstrconsts.rsfind
+msgid "Find"
+msgstr ""
+
+#: lclstrconsts.rsfindmore
+msgid "Find more"
+msgstr ""
+
+#: lclstrconsts.rsfirstrecordhint
+msgid "First"
+msgstr ""
+
+#: lclstrconsts.rsfixedcolstoobig
+msgid "FixedCols can't be >= ColCount"
+msgstr "FixedCols nie może być >= ColCount"
+
+#: lclstrconsts.rsfixedrowstoobig
+msgid "FixedRows can't be >= RowCount"
+msgstr "FixedRows nie może być >= RowCount"
+
+#: lclstrconsts.rsformcolorcaption
+msgid "Form"
+msgstr ""
+
+#: lclstrconsts.rsformstreamingerror
+msgid "Form streaming \"%s\" error: %s"
+msgstr "Błąd przy zapisie formularza do strumienia \"%s\": %s"
+
+#: lclstrconsts.rsforward
+msgid "Forward"
+msgstr ""
+
+#: lclstrconsts.rsfuchsiacolorcaption
+msgid "Fuchsia"
+msgstr ""
+
+#: lclstrconsts.rsgdkoptiondebug
+msgid "--gdk-debug flags Turn on specific GDK trace/debug messages."
+msgstr "--gdk-debug flags Włącz specificzne dla GDK komunikaty śledzenia/odpluskwiania."
+
+#: lclstrconsts.rsgdkoptionnodebug
+msgid "--gdk-no-debug flags Turn off specific GDK trace/debug messages."
+msgstr "--gdk-no-debug flags Wyłącz specificzne dla GDK komunikaty śledzenia/odpluskwiania."
+
+#: lclstrconsts.rsgoptionfatalwarnings
+msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application."
+msgstr "--g-fatal-warnings Ostrzerzenia i błędy Gtk+/GDK zatrzymają aplikację."
+
+#: lclstrconsts.rsgradientactivecaptioncolorcaption
+msgid "Gradient Active Caption"
+msgstr ""
+
+#: lclstrconsts.rsgradientinactivecaptioncolorcaption
+msgid "Gradient Inactive Caption"
+msgstr ""
+
+#: lclstrconsts.rsgraycolorcaption
+msgid "Gray"
+msgstr ""
+
+#: lclstrconsts.rsgraytextcolorcaption
+msgid "Gray Text"
+msgstr ""
+
+#: lclstrconsts.rsgreencolorcaption
+msgid "Green"
+msgstr ""
+
+#: lclstrconsts.rsgridfiledoesnotexists
+msgid "Grid file doesn't exists"
+msgstr "Plik siatki nie istnieje"
+
+#: lclstrconsts.rsgridindexoutofrange
+msgid "Grid index out of range."
+msgstr ""
+
+#: lclstrconsts.rsgroupindexcannotbelessthanprevious
+msgid "GroupIndex cannot be less than a previous menu item's GroupIndex"
+msgstr "GroupIndex nie może być mniejszy niż poprzedniego elementu menu"
+
+#: lclstrconsts.rsgtkfilter
+msgid "Filter:"
+msgstr "Filtr:"
+
+#: lclstrconsts.rsgtkhistory
+msgid "History:"
+msgstr "Historia:"
+
+#: lclstrconsts.rsgtkoptionclass
+msgid "--class classname Following Xt conventions, the class of a program is the program name with the initial character capitalized. For example, the classname for gimp is \"Gimp\". If --class is specified, the class of the program will be set to \"classname\"."
+msgstr "--class classname Zgodnie z konwencją Xt klasę programu tworzy jego nazwa z pierwszą wielką literą. Np. nazwą klasy dla programu gimp jest \"Gimp\". Jeśli --class jest podane, klasa programu będzie ustawiona na \"classname\"."
+
+#: lclstrconsts.rsgtkoptiondebug
+msgid "--gtk-debug flags Turn on specific Gtk+ trace/debug messages."
+msgstr "--gtk-debug flags Włącz specyficzne dla Gtk+ komunikaty śledzenia/odpluskwiania."
+
+#: lclstrconsts.rsgtkoptiondisplay
+msgid "--display h:s:d Connect to the specified X server, where \"h\" is the hostname, \"s\" is the server number (usually 0), and \"d\" is the display number (typically omitted). If --display is not specified, the DISPLAY environment variable is used."
+msgstr "--display h:s:d Połącz z podany mserwerem X; \"h\" jest nazwą hosta, \"s\" jest numerem serwera (zwykle 0), a \"d\" jest numerem ekranu (zwyle pomijanym). Jeśli --display nie jet podane, użyję zmienna środowiaka DISPLAY."
+
+#: lclstrconsts.rsgtkoptionmodule
+msgid "--gtk-module module Load the specified module at startup."
+msgstr "--gtk-module module Ładuje podany moduł przy starcie."
+
+#: lclstrconsts.rsgtkoptionname
+msgid "--name programe Set program name to \"progname\". If not specified, program name will be set to ParamStrUTF8(0)."
+msgstr ""
+
+#: lclstrconsts.rsgtkoptionnodebug
+msgid "--gtk-no-debug flags Turn off specific Gtk+ trace/debug messages."
+msgstr "--gtk-no-debug flags Wyłącz specyficzne dla Gtk+ komunikaty śledzenia/odpluskwiania."
+
+#: lclstrconsts.rsgtkoptionnotransient
+msgid "--lcl-no-transient Do not set transient order for modal forms"
+msgstr "--lcl-no-transient Nie ustawiaj nietrwałej kolejności dla modalnych formularzy"
+
+#: lclstrconsts.rsgtkoptionnoxshm
+msgid "--no-xshm Disable use of the X Shared Memory Extension."
+msgstr "--no-xshm Wyłącz używanie X Shared Memory Extension."
+
+#: lclstrconsts.rsgtkoptionsync
+msgid "--sync Call XSynchronize (display, True) after the Xserver connection has been established. This makes debugging X protocol errors easier, because X request buffering will be disabled and X errors will be received immediatey after the protocol request that generated the error has been processed by the X server."
+msgstr "--sync Wywołaj XSynchronize (display, True) Po połączeniu z serwerem X. To ułatwia odpluskwianie protokołu X, ponieważ buforowanie żądań X będzie wyłączonei błędy X będą odbierane natychmiast po przetworzeniu przez serwer X żądania, które spowodowało błąd."
+
+#: lclstrconsts.rshelpalreadyregistered
+msgid "%s: Already registered"
+msgstr ""
+
+#: lclstrconsts.rshelpcontextnotfound
+msgid "Help Context not found"
+msgstr ""
+
+#: lclstrconsts.rshelpdatabasenotfound
+msgid "Help Database not found"
+msgstr ""
+
+#: lclstrconsts.rshelperror
+msgid "Help Error"
+msgstr ""
+
+#: lclstrconsts.rshelphelpcontextnotfound
+msgid "Help context %s not found."
+msgstr ""
+
+#: lclstrconsts.rshelphelpcontextnotfoundindatabase
+msgid "Help context %s not found in Database %s%s%s."
+msgstr ""
+
+#: lclstrconsts.rshelphelpdatabasedidnotfoundaviewerforahelppageoftype
+msgid "Help Database %s%s%s did not found a viewer for a help page of type %s"
+msgstr ""
+
+#: lclstrconsts.rshelphelpdatabasenotfound
+msgid "Help Database %s%s%s not found"
+msgstr ""
+
+#: lclstrconsts.rshelphelpkeywordnotfound
+msgid "Help keyword %s%s%s not found."
+msgstr ""
+
+#: lclstrconsts.rshelphelpkeywordnotfoundindatabase
+msgid "Help keyword %s%s%s not found in Database %s%s%s."
+msgstr ""
+
+#: lclstrconsts.rshelphelpnodehasnohelpdatabase
+msgid "Help node %s%s%s has no Help Database"
+msgstr ""
+
+#: lclstrconsts.rshelpnohelpfoundforsource
+msgid "No help found for line %d, column %d of %s."
+msgstr ""
+
+#: lclstrconsts.rshelpnohelpnodesavailable
+msgid "No help nodes available"
+msgstr ""
+
+#: lclstrconsts.rshelpnotfound
+msgid "Help not found"
+msgstr "Nie znaleziono pomocy"
+
+#: lclstrconsts.rshelpnotregistered
+msgid "%s: Not registered"
+msgstr ""
+
+#: lclstrconsts.rshelpselectorerror
+msgid "Help Selector Error"
+msgstr ""
+
+#: lclstrconsts.rshelpthereisnoviewerforhelptype
+msgid "There is no viewer for help type %s%s%s"
+msgstr ""
+
+#: lclstrconsts.rshelpviewererror
+msgid "Help Viewer Error"
+msgstr ""
+
+#: lclstrconsts.rshelpviewernotfound
+msgid "Help Viewer not found"
+msgstr ""
+
+#: lclstrconsts.rshighlightcolorcaption
+msgid "Highlight"
+msgstr ""
+
+#: lclstrconsts.rshighlighttextcolorcaption
+msgid "Highlight Text"
+msgstr ""
+
+#: lclstrconsts.rshotlightcolorcaption
+msgid "Hot Light"
+msgstr ""
+
+#: lclstrconsts.rsicns
+msgid "OSX Icon Resource"
+msgstr ""
+
+#: lclstrconsts.rsicon
+msgid "Icon"
+msgstr ""
+
+#: lclstrconsts.rsiconimageempty
+msgid "Icon image cannot be empty"
+msgstr ""
+
+#: lclstrconsts.rsiconimageformat
+msgid "Icon image must have the same format"
+msgstr ""
+
+#: lclstrconsts.rsiconimageformatchange
+msgid "Cannot change format of icon image"
+msgstr ""
+
+#: lclstrconsts.rsiconimagesize
+msgid "Icon image must have the same size"
+msgstr ""
+
+#: lclstrconsts.rsiconimagesizechange
+msgid "Cannot change size of icon image"
+msgstr ""
+
+#: lclstrconsts.rsiconnocurrent
+msgid "Icon has no current image"
+msgstr ""
+
+#: lclstrconsts.rsinactivebordercolorcaption
+msgid "Inactive Border"
+msgstr ""
+
+#: lclstrconsts.rsinactivecaptioncolorcaption
+msgctxt "lclstrconsts.rsinactivecaptioncolorcaption"
+msgid "Inactive Caption"
+msgstr ""
+
+#: lclstrconsts.rsinactivecaptiontext
+msgctxt "lclstrconsts.rsinactivecaptiontext"
+msgid "Inactive Caption"
+msgstr ""
+
+#: lclstrconsts.rsindexoutofbounds
+msgid "%s Index %d out of bounds 0 .. %d"
+msgstr "%s Indeks %d przekracza zakres 0 .. %d"
+
+#: lclstrconsts.rsindexoutofrange
+msgid "Index Out of range Cell[Col=%d Row=%d]"
+msgstr "Indeks poza zakresem Cell[Col=%d Row=%d]"
+
+#: lclstrconsts.rsinfobkcolorcaption
+msgid "Info Background"
+msgstr ""
+
+#: lclstrconsts.rsinfotextcolorcaption
+msgid "Info Text"
+msgstr ""
+
+#: lclstrconsts.rsinsertrecordhint
+msgctxt "lclstrconsts.rsinsertrecordhint"
+msgid "Insert"
+msgstr ""
+
+#: lclstrconsts.rsinvaliddate
+msgid "Invalid Date : %s"
+msgstr ""
+
+#: lclstrconsts.rsinvaliddaterangehint
+msgid "Invalid Date: %s. Must be between %s and %s"
+msgstr ""
+
+#: lclstrconsts.rsinvalidformobjectstream
+msgid "invalid Form object stream"
+msgstr "błędny strumień obiektu formularza"
+
+#: lclstrconsts.rsinvalidpropertyvalue
+msgid "Invalid property value"
+msgstr "Błędna wartość właściwości"
+
+#: lclstrconsts.rsinvalidstreamformat
+msgid "Invalid stream format"
+msgstr "Błędny format strumienia"
+
+#: lclstrconsts.rsisalreadyassociatedwith
+msgid "%s is already associated with %s"
+msgstr "%s jest już skojarzony z %s"
+
+#: lclstrconsts.rsjpeg
+msgid "Joint Picture Expert Group"
+msgstr ""
+
+#: lclstrconsts.rslastrecordhint
+msgid "Last"
+msgstr ""
+
+#: lclstrconsts.rslimecolorcaption
+msgid "Lime"
+msgstr ""
+
+#: lclstrconsts.rslistindexexceedsbounds
+msgid "List index exceeds bounds (%d)"
+msgstr "Indeks listy poza zakresem (%d)"
+
+#: lclstrconsts.rslistmustbeempty
+msgid "List must be empty"
+msgstr "Lista musi być pusta"
+
+#: lclstrconsts.rsmarooncolorcaption
+msgid "Maroon"
+msgstr ""
+
+#: lclstrconsts.rsmbabort
+msgid "Abort"
+msgstr "Porzuć"
+
+#: lclstrconsts.rsmball
+msgid "&All"
+msgstr "&Wszystkie"
+
+#: lclstrconsts.rsmbcancel
+msgctxt "lclstrconsts.rsmbcancel"
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: lclstrconsts.rsmbclose
+msgid "&Close"
+msgstr "Z&amknij"
+
+#: lclstrconsts.rsmbhelp
+msgid "&Help"
+msgstr "P&omoc"
+
+#: lclstrconsts.rsmbignore
+msgid "&Ignore"
+msgstr "&Zignoruj"
+
+#: lclstrconsts.rsmbno
+msgid "&No"
+msgstr "&Nie"
+
+#: lclstrconsts.rsmbnotoall
+msgid "No to all"
+msgstr "Nie na wszystkie"
+
+#: lclstrconsts.rsmbok
+msgid "&OK"
+msgstr "&OK"
+
+#: lclstrconsts.rsmbopen
+msgid "&Open"
+msgstr ""
+
+#: lclstrconsts.rsmbretry
+msgid "&Retry"
+msgstr "&Ponów próbę"
+
+#: lclstrconsts.rsmbsave
+msgid "&Save"
+msgstr ""
+
+#: lclstrconsts.rsmbunlock
+msgid "&Unlock"
+msgstr ""
+
+#: lclstrconsts.rsmbyes
+msgid "&Yes"
+msgstr "&Tak"
+
+#: lclstrconsts.rsmbyestoall
+msgid "Yes to &All"
+msgstr "Tak na &wszystkie"
+
+#: lclstrconsts.rsmedgraycolorcaption
+msgid "Medium Gray"
+msgstr ""
+
+#: lclstrconsts.rsmenubarcolorcaption
+msgid "Menu Bar"
+msgstr ""
+
+#: lclstrconsts.rsmenucolorcaption
+msgctxt "lclstrconsts.rsmenucolorcaption"
+msgid "Menu"
+msgstr ""
+
+#: lclstrconsts.rsmenuhighlightcolorcaption
+msgid "Menu Highlight"
+msgstr ""
+
+#: lclstrconsts.rsmenutextcolorcaption
+msgid "Menu Text"
+msgstr ""
+
+#: lclstrconsts.rsmodified
+msgid " modified "
+msgstr " zmodyfikowany"
+
+#: lclstrconsts.rsmoneygreencolorcaption
+msgid "Money Green"
+msgstr ""
+
+#: lclstrconsts.rsmtauthentication
+msgid "Authentication"
+msgstr ""
+
+#: lclstrconsts.rsmtconfirmation
+msgid "Confirmation"
+msgstr "Potwierdzenie"
+
+#: lclstrconsts.rsmtcustom
+msgid "Custom"
+msgstr "Inny"
+
+#: lclstrconsts.rsmterror
+msgctxt "lclstrconsts.rsmterror"
+msgid "Error"
+msgstr "Błąd"
+
+#: lclstrconsts.rsmtinformation
+msgid "Information"
+msgstr "Informacja"
+
+#: lclstrconsts.rsmtwarning
+msgid "Warning"
+msgstr "Ostrzeżenie"
+
+#: lclstrconsts.rsnavycolorcaption
+msgid "Navy"
+msgstr ""
+
+#: lclstrconsts.rsnextrecordhint
+msgctxt "lclstrconsts.rsnextrecordhint"
+msgid "Next"
+msgstr ""
+
+#: lclstrconsts.rsnonecolorcaption
+msgid "None"
+msgstr ""
+
+#: lclstrconsts.rsnotavalidgridfile
+msgid "Not a valid grid file"
+msgstr "Nieprawidłowy plik siatki"
+
+#: lclstrconsts.rsnowidgetset
+msgid "No widgetset object. Please check if the unit \"interfaces\" was added to the programs uses clause."
+msgstr ""
+
+#: lclstrconsts.rsolivecolorcaption
+msgid "Olive"
+msgstr ""
+
+#: lclstrconsts.rspickdate
+msgid "Select a date"
+msgstr "Wybierz datę"
+
+#: lclstrconsts.rspixmap
+msgid "Pixmap"
+msgstr ""
+
+#: lclstrconsts.rsportablebitmap
+msgid "Portable BitMap"
+msgstr ""
+
+#: lclstrconsts.rsportablegraymap
+msgid "Portable GrayMap"
+msgstr ""
+
+#: lclstrconsts.rsportablenetworkgraphic
+msgid "Portable Network Graphic"
+msgstr ""
+
+#: lclstrconsts.rsportablepixmap
+msgid "Portable PixMap"
+msgstr ""
+
+#: lclstrconsts.rspostrecordhint
+msgid "Post"
+msgstr ""
+
+#: lclstrconsts.rspressoktoignoreandriskdatacorruptionpresscanceltok
+msgid "%s%sPress OK to ignore and risk data corruption.%sPress Cancel to kill the program."
+msgstr ""
+
+#: lclstrconsts.rspriorrecordhint
+msgctxt "lclstrconsts.rspriorrecordhint"
+msgid "Prior"
+msgstr ""
+
+#: lclstrconsts.rspropertydoesnotexist
+msgid "Property %s does not exist"
+msgstr "Właściwość %s nie istnieje"
+
+#: lclstrconsts.rspurplecolorcaption
+msgid "Purple"
+msgstr ""
+
+#: lclstrconsts.rsrasterimageendupdate
+msgid "Endupdate while no update in progress"
+msgstr ""
+
+#: lclstrconsts.rsrasterimagesaveinupdate
+msgid "Cannot save image while update in progress"
+msgstr ""
+
+#: lclstrconsts.rsrasterimageupdateall
+msgid "Cannot begin update all when canvas only update in progress"
+msgstr ""
+
+#: lclstrconsts.rsredcolorcaption
+msgid "Red"
+msgstr ""
+
+#: lclstrconsts.rsrefreshrecordshint
+msgid "Refresh"
+msgstr "Odśwież"
+
+#: lclstrconsts.rsreplace
+msgid "Replace"
+msgstr "Zamień"
+
+#: lclstrconsts.rsreplaceall
+msgid "Replace all"
+msgstr "Zamień wszystko"
+
+#: lclstrconsts.rsresourcenotfound
+msgctxt "lclstrconsts.rsresourcenotfound"
+msgid "Resource %s not found"
+msgstr "Nie znaleziono zasobu: %s"
+
+#: lclstrconsts.rsscrollbarcolorcaption
+msgid "ScrollBar"
+msgstr ""
+
+#: lclstrconsts.rsscrollbaroutofrange
+msgid "ScrollBar property out of range"
+msgstr "Właściwość ScrollBar'u poza zakresem"
+
+#: lclstrconsts.rsselectcolortitle
+msgid "Select color"
+msgstr "Wybierz kolor"
+
+#: lclstrconsts.rsselectfonttitle
+msgid "Select a font"
+msgstr "Wybierz czcionkę"
+
+#: lclstrconsts.rssilvercolorcaption
+msgid "Silver"
+msgstr ""
+
+#: lclstrconsts.rssize
+msgid " size "
+msgstr " rozmiar "
+
+#: lclstrconsts.rsskybluecolorcaption
+msgid "Sky Blue"
+msgstr ""
+
+#: lclstrconsts.rstealcolorcaption
+msgid "Teal"
+msgstr ""
+
+#: lclstrconsts.rstext
+msgid "Text"
+msgstr ""
+
+#: lclstrconsts.rsunabletoloaddefaultfont
+msgid "Unable to load default font"
+msgstr "Nie można załadować domyślnej czcionki"
+
+#: lclstrconsts.rsunknownerrorpleasereportthisbug
+msgid "Unknown Error, please report this bug"
+msgstr ""
+
+#: lclstrconsts.rsunknownpictureextension
+msgid "Unknown picture extension"
+msgstr "Nieznane rozszerzenie pliku obrazka"
+
+#: lclstrconsts.rsunsupportedbitmapformat
+msgid "Unsupported bitmap format."
+msgstr "Nieobsługiwany format bitmapy."
+
+#: lclstrconsts.rsunsupportedclipboardformat
+msgid "Unsupported clipboard format: %s"
+msgstr "Nieobsługiwany format schowka: %s"
+
+#: lclstrconsts.rswarningunreleaseddcsdump
+msgid " WARNING: There are %d unreleased DCs, a detailed dump follows:"
+msgstr " UWAGA: Pozostały %d niezwolnione DC, szczegółowy zrzut poniżej:"
+
+#: lclstrconsts.rswarningunreleasedgdiobjectsdump
+msgid " WARNING: There are %d unreleased GDIObjects, a detailed dump follows:"
+msgstr " UWAGA: Pozostało %d niezwolnionych GDIObject, szczegółowy zrzut poniżej:"
+
+#: lclstrconsts.rswarningunreleasedmessagesinqueue
+msgid " WARNING: There are %d messages left in the queue! I'll free them"
+msgstr " UWAGA: Pozostało %d komunikatów w kolejce! Zostaną usunięte."
+
+#: lclstrconsts.rswarningunreleasedtimerinfos
+msgid " WARNING: There are %d TimerInfo structures left, I'll free them"
+msgstr " UWAGA: Pozostało %d struktur TimerInfo zostaną usunięte"
+
+#: lclstrconsts.rswarningunremovedpaintmessages
+msgid " WARNING: There are %s unremoved LM_PAINT/LM_GtkPAINT message links left."
+msgstr " UWAGA: Pozostały %s nieusunięte dowiązania do LM_PAINT/LM_GtkPAINT."
+
+#: lclstrconsts.rswhitecolorcaption
+msgid "White"
+msgstr ""
+
+#: lclstrconsts.rswholewordsonly
+msgid "Whole words only"
+msgstr ""
+
+#: lclstrconsts.rswin32error
+msgid "Error:"
+msgstr "Błąd:"
+
+#: lclstrconsts.rswin32warning
+msgid "Warning:"
+msgstr "Ostrzeżenie:"
+
+#: lclstrconsts.rswindowcolorcaption
+msgid "Window"
+msgstr ""
+
+#: lclstrconsts.rswindowframecolorcaption
+msgid "Window Frame"
+msgstr ""
+
+#: lclstrconsts.rswindowtextcolorcaption
+msgid "Window Text"
+msgstr ""
+
+#: lclstrconsts.rsyellowcolorcaption
+msgid "Yellow"
+msgstr ""
+
+#: lclstrconsts.scannotfocus
+msgid "Cannot focus a disabled or invisible window"
+msgstr "Nie można ustawić ogniska na wyłączone lub niewidzialne okno"
+
+#: lclstrconsts.sduplicatemenus
+msgid "Duplicate menus"
+msgstr "Zdublowane menu"
+
+#: lclstrconsts.sinvalidactioncreation
+msgid "Invalid action creation"
+msgstr "Błędne tworzenie akcji"
+
+#: lclstrconsts.sinvalidactionenumeration
+msgid "Invalid action enumeration"
+msgstr "Błędna enumeracja akcji"
+
+#: lclstrconsts.sinvalidactionregistration
+msgid "Invalid action registration"
+msgstr "Błędna rejestracja akcji"
+
+#: lclstrconsts.sinvalidactionunregistration
+msgid "Invalid action unregistration"
+msgstr "Błędne wyrejestrowanie akcji"
+
+#: lclstrconsts.sinvalidcharset
+msgid "The char set in mask \"%s\" is not valid!"
+msgstr ""
+
+#: lclstrconsts.sinvalidimagesize
+msgid "Invalid image size"
+msgstr "Błędny rozmiar obrazka"
+
+#: lclstrconsts.sinvalidindex
+msgid "Invalid ImageList Index"
+msgstr "Błędny indeks ImageList"
+
+#: lclstrconsts.smenuindexerror
+msgid "Menu index out of range"
+msgstr "Indeks menu poza zakresem"
+
+#: lclstrconsts.smenuitemisnil
+msgid "MenuItem is nil"
+msgstr "Element menu ma wartość nil"
+
+#: lclstrconsts.smenunotfound
+msgid "Sub-menu is not in menu"
+msgstr "Podmenu nie jest w menu"
+
+#: lclstrconsts.snomdiform
+msgid "No MDI form present."
+msgstr ""
+
+#: lclstrconsts.snotimers
+msgid "No timers available"
+msgstr "Brak dostępnych timerów"
+
+#: lclstrconsts.sparexpected
+msgid "Wrong token type: %s expected"
+msgstr ""
+
+#: lclstrconsts.sparinvalidfloat
+msgid "Invalid floating point number: %s"
+msgstr ""
+
+#: lclstrconsts.sparinvalidinteger
+msgid "Invalid integer number: %s"
+msgstr ""
+
+#: lclstrconsts.sparlocinfo
+msgid " (at %d,%d, stream offset %.8x)"
+msgstr ""
+
+#: lclstrconsts.sparunterminatedbinvalue
+msgid "Unterminated byte value"
+msgstr ""
+
+#: lclstrconsts.sparunterminatedstring
+msgid "Unterminated string"
+msgstr ""
+
+#: lclstrconsts.sparwrongtokensymbol
+msgid "Wrong token symbol: %s expected but %s found"
+msgstr ""
+
+#: lclstrconsts.sparwrongtokentype
+msgid "Wrong token type: %s expected but %s found"
+msgstr ""
+
diff --git a/languages/messages.pl.po b/languages/messages.pl.po
new file mode 100644
index 0000000..5a180ce
--- /dev/null
+++ b/languages/messages.pl.po
@@ -0,0 +1,43 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Dariusz Rorat \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: programconsts:strcaption
+msgid "Bar code generator"
+msgstr "Generator kodów paskowych"
+
+#: programconsts:strcodetype
+msgid "Code type"
+msgstr "Typ kodu"
+
+#: programconsts:strecclevel
+msgid "ECC Level"
+msgstr "Poziom ECC"
+
+#: programconsts:strloadfromtext
+msgid "Load text"
+msgstr "Załaduj tekst"
+
+#: programconsts:strquit
+msgid "Quit"
+msgstr "Wyjdź"
+
+#: programconsts:strfilter
+msgid "Text files (*.txt)|*.txt|All files (*.*)|*.*"
+msgstr "Pliki tekstowe (*.txt)|*.txt|Wszystkie pliki (*.*)|*.*"
+
+#: programconsts:stropendialogtitle
+msgid "Open existing file"
+msgstr "Otwórz istniejący plik"
+
+#: programconsts:strconverterror
+msgid "Could not to convert text"
+msgstr "Nie można dokonać konwersji"
+
diff --git a/programconsts.pas b/programconsts.pas
new file mode 100644
index 0000000..1bd631c
--- /dev/null
+++ b/programconsts.pas
@@ -0,0 +1,42 @@
+{
+ ***************************************************************************
+ * *
+ * This source is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This code is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * General Public License for more details. *
+ * *
+ * A copy of the GNU General Public License is available on the World *
+ * Wide Web at . You can also *
+ * obtain it by writing to the Free Software Foundation, *
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * *
+ ***************************************************************************
+
+ Author: Dariusz Rorat
+
+}
+
+unit ProgramConsts;
+{$mode objfpc}{$H+}
+interface
+
+resourcestring
+
+ strCaption = 'Bar code generator';
+ strCodeType = 'Code type';
+ strEccLevel = 'ECC Level';
+ strLoadFromText = 'Load text';
+ strQuit = 'Quit';
+ strFilter = 'Text files (*.txt)|*.txt|All files (*.*)|*.*';
+ strOpenDialogTitle = 'Open existing file';
+ strConvertError = 'Could not to convert text';
+
+implementation
+
+end.
diff --git a/srcmain.lfm b/srcmain.lfm
new file mode 100644
index 0000000..1b8a8c5
--- /dev/null
+++ b/srcmain.lfm
@@ -0,0 +1,168 @@
+object frmMain: TfrmMain
+ Left = 250
+ Height = 376
+ Top = 183
+ Width = 640
+ BorderIcons = [biSystemMenu, biMinimize]
+ BorderStyle = bsSingle
+ Caption = 'Bar code generator'
+ ClientHeight = 376
+ ClientWidth = 640
+ OnCreate = FormCreate
+ Position = poMainFormCenter
+ LCLVersion = '0.9.29'
+ object Shape1: TShape
+ Left = 8
+ Height = 360
+ Top = 8
+ Width = 296
+ Brush.Color = clBtnFace
+ end
+ object Shape2: TShape
+ Left = 312
+ Height = 320
+ Top = 8
+ Width = 320
+ end
+ object InMemo: TMemo
+ Left = 16
+ Height = 274
+ Top = 16
+ Width = 280
+ OnChange = InMemoChange
+ ScrollBars = ssAutoBoth
+ TabOrder = 0
+ end
+ object Label1: TLabel
+ Left = 24
+ Height = 14
+ Top = 304
+ Width = 25
+ Caption = 'Type'
+ ParentColor = False
+ end
+ object cboCodeType: TComboBox
+ Left = 120
+ Height = 21
+ Top = 304
+ Width = 152
+ AutoComplete = True
+ AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
+ ItemHeight = 13
+ ItemIndex = 0
+ Items.Strings = (
+ 'QR'
+ 'Aztec'
+ 'Data Matrix'
+ )
+ OnEditingDone = cboCodeTypeEditingDone
+ TabOrder = 1
+ Text = 'QR'
+ end
+ object Label2: TLabel
+ Left = 24
+ Height = 14
+ Top = 328
+ Width = 49
+ Caption = 'ECC Level'
+ ParentColor = False
+ end
+ object cboECCLevel: TComboBox
+ Left = 120
+ Height = 21
+ Top = 328
+ Width = 100
+ ItemHeight = 13
+ ItemIndex = 0
+ Items.Strings = (
+ 'auto'
+ 'L (7%)'
+ 'M (15%)'
+ 'Q (25%)'
+ 'H (30%)'
+ )
+ OnEditingDone = cboECCLevelEditingDone
+ TabOrder = 2
+ Text = 'auto'
+ end
+ object btnLoadText: TBitBtn
+ Left = 312
+ Height = 30
+ Top = 336
+ Width = 104
+ Caption = 'Load text'
+ Glyph.Data = {
+ 46050000424D4605000000000000360000002800000012000000120000000100
+ 2000000000001005000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000232323FF4A4A4AFF494A4AFF4B4C4CFF4C4C4CFF4B4C
+ 4CFF4A4B4BFF484949FF464646FF434343FF404141FF333434FF1E1F1FFF0000
+ 0000000000000000000000000000000000001B334EFFBDBDBDFFA5A6A6FFA8AA
+ AAFFABADADFFACAEAEFFAAABABFFA6A7A7FFA0A1A1FF999A9AFF929494FF8B8D
+ 8DFF484949FF00000000000000000000000000000000000000001B334EFF5053
+ 56FFCECECEFFBCBEBEFFC2C4C4FFC5C6C6FFC2C3C3FFBEBFBFFFB5B6B6FFADAE
+ AEFFA4A5A5FF9D9E9EFF6E6F6FFF121212FF0000000000000000000000000000
+ 00001B334EFF183049FFCDCDCDFFC9CACAFFD4D5D5FFD4D5D5FFD0D2D2FFCBCC
+ CCFFC1C2C2FFB8B9B9FFAEAFAFFFA1A2A2FF949595FF484949FF000000000000
+ 000000000000000000001B334EFF447DB7FF4E5153FFDADADAFFDADBDBFFE0E1
+ E1FFDCDDDDFFD5D6D6FFCACBCBFFC0C1C1FFB5B6B6FFA8A9A9FF9FA0A0FF6768
+ 68FF212222FF0000000000000000000000001B334EFF82C2FEFF19314AFFDBDB
+ DBFFDEDFDFFFE7E8E8FFE4E6E6FFDEDFDFFFD1D2D2FFC6C7C7FFB9BABAFFACAD
+ ADFF9FA0A0FF939494FF484949FF0000000000000000000000001B334EFF82C2
+ FEFF4E86C4FF4C4F52FFF5F5F5FFF5F5F5FFECECECFFE4E4E4FFDCDCDCFFD4D4
+ D4FFCBCBCBFFC4C4C4FFBCBCBCFFB5B5B5FFB3B3B3FF303030FF000000000000
+ 00001B334EFF8AC8FEFF82C2FEFF1B334EFF4D5053FF4D5053FF4F5255FF575A
+ 5CFF4E5154FF4E5154FF505356FF505356FF4E5154FF000000FF000000FF0000
+ 00FF00000000000000001B334EFF9AD3FEFF87C5FDFF82C2FEFF62ACF8FF62AC
+ F8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF000000FF0000
+ 0000000000000000000000000000000000001B334EFF66A5E5FF9AD3FEFF85C5
+ FEFF66A5E5FF1B334EFF1B334EFF1B334EFF1B334EFF1B334EFF1B334EFF1B33
+ 4EFF000000000000000000000000000000000000000000000000000000001B33
+ 4EFF1B334EFF1B334EFF1B334EFF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000FF000000FF000000FF000000FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000FF000000FF0000
+ 00FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000FF0000000000000000000000000000000000000000000000FF0000
+ 00FF000000FF000000FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000FF000000FF00000000000000FF0000
+ 00FF000000FF000000FF00000000000000FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000FF0000
+ 00FF000000FF000000FF00000000000000000000000000000000000000000000
+ 00000000000000000000
+ }
+ OnClick = btnLoadTextClick
+ TabOrder = 3
+ end
+ object btnQuit: TBitBtn
+ Left = 557
+ Height = 30
+ Top = 336
+ Width = 75
+ Caption = 'Quit'
+ Kind = bkClose
+ OnClick = btnQuitClick
+ TabOrder = 4
+ end
+ object OpenDialog: TOpenDialog
+ Title = 'Open existing file'
+ DefaultExt = '.txt'
+ Filter = 'Text files (*.txt)|*.txt|All files (*.*)|*.*'
+ Options = [ofExtensionDifferent, ofFileMustExist, ofEnableSizing, ofViewDetail]
+ left = 336
+ top = 264
+ end
+ object SavePictureDialog: TSavePictureDialog
+ Title = 'Save picture as'
+ DefaultExt = '.bmp'
+ Filter = 'Windows Bitmap (*.bmp)|*.bmp'
+ Options = [ofExtensionDifferent, ofEnableSizing, ofViewDetail]
+ left = 417
+ top = 264
+ end
+end
diff --git a/srcmain.pas b/srcmain.pas
new file mode 100644
index 0000000..d78667e
--- /dev/null
+++ b/srcmain.pas
@@ -0,0 +1,214 @@
+{
+ ***************************************************************************
+ * *
+ * This source is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This code is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * General Public License for more details. *
+ * *
+ * A copy of the GNU General Public License is available on the World *
+ * Wide Web at . You can also *
+ * obtain it by writing to the Free Software Foundation, *
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * *
+ ***************************************************************************
+
+ Author: Dariusz Rorat
+
+}
+
+unit srcmain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ Menus, ExtCtrls, StdCtrls, ExtDlgs, Buttons, ubarcodes;
+
+type
+
+ { TfrmMain }
+
+ TfrmMain = class(TForm)
+ btnQuit: TBitBtn;
+ btnLoadText: TBitBtn;
+ cboCodeType: TComboBox;
+ cboECCLevel: TComboBox;
+ Label1: TLabel;
+ InMemo: TMemo;
+ Label2: TLabel;
+ OpenDialog: TOpenDialog;
+ SavePictureDialog: TSavePictureDialog;
+ Shape1: TShape;
+ Shape2: TShape;
+ procedure btnLoadTextClick(Sender: TObject);
+ procedure btnQuitClick(Sender: TObject);
+ procedure cboCodeTypeEditingDone(Sender: TObject);
+ procedure cboECCLevelEditingDone(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure InMemoChange(Sender: TObject);
+ private
+ QR: TBarcodeQR;
+ Aztec: TBarcodeAztec;
+ DataMatrix: TBarCodeDataMatrix;
+ CurrentGenerator: TLazBarcodeCustomText;
+
+ procedure SetupGenerator;
+ public
+ { public declarations }
+ end;
+
+var
+ frmMain: TfrmMain;
+
+implementation
+
+uses
+ programconsts, gettext, translations;
+
+{$R *.lfm}
+
+{ TfrmMain }
+
+procedure TfrmMain.SetupGenerator;
+var
+ intIndex: Integer;
+ intEccLevel: Integer;
+begin
+ try
+ intIndex := cboCodeType.ItemIndex;
+ intEccLevel := cboEccLevel.ItemIndex;
+ if intEccLevel < 0 then
+ intEccLevel := 0;
+ case intIndex of
+ 0:
+ begin
+ CurrentGenerator := QR;
+ QR.Visible := true;
+ Aztec.Visible := false;
+ Datamatrix.Visible := false;
+ Label2.Visible := true;
+ cboEcclevel.Visible := true;
+ QR.ECCLevel := TBarcodeQR_ECCLevel(intEccLevel);
+ QR.Text := InMemo.Text;
+ end;
+ 1:
+ begin
+ CurrentGenerator := Aztec;
+ QR.Visible := false;
+ Aztec.Visible := true;
+ Datamatrix.Visible := false;
+ Label2.Visible := false;
+ cboEcclevel.Visible := false;
+ Aztec.Text := InMemo.Text;
+ end;
+ 2:
+ begin
+ CurrentGenerator := DataMatrix;
+ QR.Visible := false;
+ Aztec.Visible := false;
+ Datamatrix.Visible := true;
+ Label2.Visible := false;
+ cboEcclevel.Visible := false;
+ Datamatrix.Text := InMemo.Text;
+ end;
+ else
+ begin
+ QR.Visible := false;
+ Aztec.Visible := false;
+ Label2.Visible := false;
+ cboEcclevel.Visible := false;
+ Datamatrix.Visible := false;
+ end;
+ end;
+
+ except
+ MessageDlg(strConvertError, mtError, [mbOK], 0);
+ end;
+end;
+
+procedure TfrmMain.FormCreate(Sender: TObject);
+var
+ PODirectory, Lang, FallbackLang: string;
+begin
+ PODirectory := '.\languages\';
+ GetLanguageIDs(Lang, FallbackLang); // in unit gettext
+ TranslateUnitResourceStrings('LCLStrConsts',
+ PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
+ TranslateUnitResourceStrings('ProgramConsts',
+ PODirectory + 'messages.%s.po', Lang, FallbackLang);
+
+ Caption := strCaption;
+ Label1.Caption := strCodeType;
+ Label2.Caption := strEccLevel;
+ btnLoadText.Caption := strLoadFromText;
+ btnQuit.Caption := strQuit;
+ OpenDialog.Filter := strFilter;
+ OpenDialog.Title := strOpenDialogTitle;
+
+ QR := TBarcodeQR.Create(Self);
+ QR.Parent := frmMain;
+ QR.Left := Shape2.Left + 8;
+ QR.Top := Shape2.Top + 8;
+ QR.Width := Shape2.Width - 16;
+ QR.Height := Shape2.Height - 16;
+ QR.Visible := true;
+
+ Aztec := TBarcodeAztec.Create(Self);
+ Aztec.Parent := frmMain;
+ Aztec.Left := Shape2.Left + 8;
+ Aztec.Top := Shape2.Top + 8;
+ Aztec.Width := Shape2.Width - 16;
+ Aztec.Height := Shape2.Height - 16;
+ Aztec.Visible := false;
+
+ DataMatrix := TBarcodeDataMatrix.Create(Self);
+ DataMatrix.Parent := frmMain;
+ DataMatrix.Left := Shape2.Left + 8;
+ DataMatrix.Top := Shape2.Top + 8;
+ DataMatrix.Width := Shape2.Width - 16;
+ DataMatrix.Height := Shape2.Height - 16;
+ DataMatrix.Visible := false;
+end;
+
+procedure TfrmMain.btnQuitClick(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TfrmMain.cboCodeTypeEditingDone(Sender: TObject);
+begin
+ SetupGenerator;
+end;
+
+procedure TfrmMain.cboECCLevelEditingDone(Sender: TObject);
+begin
+ SetupGenerator;
+end;
+
+procedure TfrmMain.btnLoadTextClick(Sender: TObject);
+begin
+ if OpenDialog.Execute then
+ begin
+ with TStringList.Create do
+ begin
+ LoadFromFile(UTF8ToSys(OpenDialog.FileName));
+ InMemo.Text := SysToUTF8(Text);
+ Free;
+ end;
+ end;
+end;
+
+procedure TfrmMain.InMemoChange(Sender: TObject);
+begin
+ SetupGenerator;
+end;
+
+end.