/* AminetSearcher Version 1.0   created by Emperor */

#define CATCOMP_NUMBERS
#define CATCOMP_STRINGS
#define ALL_REACTION_CLASSES
#define ALL_REACTION_MACROS
#define INTUITIONLIBRARY "intuition.library"
#define LOCALELIBRARY "locale.library"
#define GADTOOLSLIBRARY "gadtools.library"
#define ASLLIBRARY "asl.library"
#define DOSLIBRARY "dos.library"
#define RESOURCELIBRARY "resource.library"
#define WINDOWCLASSLIB "window.class"
#define REQUESTERCLASSLIB "requester.class"
#define LABELIMAGELIB "images/label.image"
#define BUTTONGADGETLIB "gadgets/button.gadget"
#define CHECKBOXGADGETLIB "gadgets/checkbox.gadget"
#define CHOOSERGADGETLIB "gadgets/chooser.gadget"
#define FUELGAUGEGADGETLIB "gadgets/fuelgauge.gadget"
#define GETFILEGADGETLIB "gadgets/getfile.gadget"
#define LAYOUTGADGETLIB "gadgets/layout.gadget"
#define LISTBROWSERGADGETLIB "gadgets/listbrowser.gadget"
#define SPACEGADGETLIB "gadgets/space.gadget"
#define STRINGGADGETLIB "gadgets/string.gadget"
#define LOCALE_REQUEST_INITIALIZATIONERROR_TITLE GetCatalogStr(Catalog, 0, "Program error")
#define LOCALE_REQUEST_INITIALIZATIONERROR_GADGET GetCatalogStr(Catalog, 1, "Okay")
#define LOCALE_REQUEST_INITIALIZATIONERROR_BODYTITLE GetCatalogStr(Catalog, 2, "Error during initialization:\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT1 GetCatalogStr(Catalog, 3, "Can't open Amiga-library\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT2 GetCatalogStr(Catalog, 4, "Can't lock your public-screen.\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT3 GetCatalogStr(Catalog, 5, "Can't get visualinfo of your public-screen.\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT4 GetCatalogStr(Catalog, 6, "Can't create menu.\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT5 GetCatalogStr(Catalog, 7, "Can't create message-port.\n")
#define LOCALE_REQUEST_INITIALIZATIONERROR_SOLUTION1 GetCatalogStr(Catalog, 8, "\nProbably you don't have a correct\ninstalled AmigaOS 3.5 system !")
#define LOCALE_REQUEST_INITIALIZATIONERROR_SOLUTION2 GetCatalogStr(Catalog, 9, "\nMaybe there isn't enough memory !")
#define LOCALE_WINDOW_TITLE1 GetCatalogStr(Catalog, 10, "AminetSearcher Version 1.0")
#define LOCALE_SCREEN_TITLE1 GetCatalogStr(Catalog, 11, "AminetSearcher Version 1.0   created by Emperor")
#define LOCALE_ICONIFIED_TITLE1 GetCatalogStr(Catalog, 12, "Iconified Program")
#define LOCALE_PATTERN1 GetCatalogStr(Catalog, 13, "Pattern #1")
#define LOCALE_PATTERN2 GetCatalogStr(Catalog, 14, "Pattern #2")
#define LOCALE_PATTERN3 GetCatalogStr(Catalog, 15, "Pattern #3")
#define LOCALE_PATTERN4 GetCatalogStr(Catalog, 16, "Pattern #4")
#define LOCALE_PATTERN5 GetCatalogStr(Catalog, 17, "Pattern #5")
#define LOCALE_ALLCDS GetCatalogStr(Catalog, 18, "all CDs")
#define LOCALE_ONECD GetCatalogStr(Catalog, 19, "one CD")
#define LOCALE_REQUEST_INFO_TITLE GetCatalogStr(Catalog, 20, "Program information")
#define LOCALE_REQUEST_INFO_BODY GetCatalogStr(Catalog, 21, " AminetSearcher was written by Matthias Gietzelt \n AminetSearcher was created with Emperor ")
#define LOCALE_REQUEST_INFO_GADGET GetCatalogStr(Catalog, 22, "Okay")
#define LOCALE_REQUEST_QUIT_TITLE GetCatalogStr(Catalog, 23, "Program request")
#define LOCALE_REQUEST_QUIT_BODY GetCatalogStr(Catalog, 24, " Do you really want to quit this program ? ")
#define LOCALE_REQUEST_QUIT_GADGET GetCatalogStr(Catalog, 25, "Okay|No")
#define LOCALE_REQUEST_ERROR1_TITLE GetCatalogStr(Catalog, 26, "Program error")
#define LOCALE_REQUEST_ERROR1_BODY GetCatalogStr(Catalog, 27, " An error has been occured: Can't get Aminet-Index ! ")
#define LOCALE_REQUEST_ERROR1_GADGET GetCatalogStr(Catalog, 28, "Okay")
#define LOCALE_PROJECT GetCatalogStr(Catalog, 29, "Project")
#define LOCALE_MENU_PREFS GetCatalogStr(Catalog, 30, "Prefs")
#define LOCALE_MENU_INFO GetCatalogStr(Catalog, 31, "Info")
#define LOCALE_MENU_QUIT GetCatalogStr(Catalog, 32, "Quit")
#define LOCALE_MENU_EXTRA GetCatalogStr(Catalog, 33, "Extra")
#define LOCALE_MENU_SELECTALL GetCatalogStr(Catalog, 34, "Select all")
#define LOCALE_SELECTNONE GetCatalogStr(Catalog, 35, "Select none")
#define LOCALE_SCAN_IN_LHA GetCatalogStr(Catalog, 36, "scan in LhA")
#define LOCALE_SEARCH GetCatalogStr(Catalog, 37, "Search")
#define LOCALE_BREAK GetCatalogStr(Catalog, 38, "Break")
#define LOCALE_ASL_FILEREQ_TITLE11 GetCatalogStr(Catalog, 39, "Pick an index-file")
#define LOCALE_REQUEST_TITLE1 GetCatalogStr(Catalog, 40, "AminetSearcher request")
#define LOCALE_REQUEST_BODY1 GetCatalogStr(Catalog, 41, " Do you want to do ? ")
#define LOCALE_REQUEST_GAD1 GetCatalogStr(Catalog, 42, "Show Readme|Extract|Break")
#define LOCALE_REQUEST_ERROR2_BODY GetCatalogStr(Catalog, 43, " You must set a search-pattern ! ")
#define String1 Gadget1[4]
#define String2 Gadget1[6]
#define String3 Gadget1[8]
#define String4 Gadget1[10]
#define String5 Gadget1[12]
#define Checkbox1 Gadget1[16]
#define Checkbox2 Gadget1[17]
#define Checkbox3 Gadget1[18]
#define Checkbox4 Gadget1[19]
#define Checkbox5 Gadget1[20]
#define Checkbox6 Gadget1[22]
#define Checkbox7 Gadget1[23]
#define Checkbox8 Gadget1[24]
#define Checkbox9 Gadget1[25]
#define Checkbox10 Gadget1[26]
#define Checkbox11 Gadget1[28]
#define Checkbox12 Gadget1[29]
#define Checkbox13 Gadget1[30]
#define Checkbox14 Gadget1[31]
#define Checkbox15 Gadget1[32]
#define Checkbox16 Gadget1[34]
#define Space1 Gadget1[35]
#define Chooser1 Gadget1[36]
#define Button1 Gadget1[37]
#define Button2 Gadget1[38]
#define Listbrowser1 Gadget1[39]
#define Fuelgauge1 Gadget1[40]
#define Fuelgauge2 Gadget1[41]
#define String6 Gadget1[42]
#define Menu_Project 65504
#define Menu_Info 63488
#define Menu_Quit 63552
#define Menu_Extra 65505
#define Menu_Select_All 63489
#define Menu_Select_None 63521

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <clib/alib_protos.h>
#include <clib/asl_protos.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/intuition_protos.h>
#include <clib/locale_protos.h>
#include <clib/resource_protos.h>
#include <clib/utility_protos.h>
#include <clib/chooser_protos.h>
#include <clib/texteditor_protos.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <intuition/icclass.h>
#include <intuition/imageclass.h>
#include <libraries/asl.h>
#include <libraries/dos.h>
#include <libraries/gadtools.h>
#include <libraries/locale.h>
#include <graphics/gfxbase.h>
#include <reaction/reaction.h>
#include <workbench/startup.h>
#include <wbstartup.h>

/* Requester-Prototypes */

void Errorrequest(void);
void Nopatternrequest(void);
void Inforequest(void);
LONG Quitrequest(void);
LONG Extractrequest(void);
STRPTR Filerequest(void);

/* Header-Prototypes */

void Window1_CloseWindow_Event(void);
void Menu_Info_MenuPick_Event(void);
void Menu_Quit_MenuPick_Event(void);
void Menu_Select_All_MenuPick_Event(void);
void Menu_Select_None_MenuPick_Event(void);
void Scan_in_LhA_Event(void);
void All_or_one_CD_Event(void);
void Search_Button_Event(void);
void Listbrowser_Event(void);
void Checkbox_Handle(BOOL);
void Checkbox_Handle_onoff(BOOL);

/* Lowlevel-Prototypes */

BOOL stringcompare(char *, char *);
char *makelower(char *, const char *);
char *stringcopy(char *, const char *);
char *stringcopywithoutspace(char *, const char *);
void make_entry(void);
void AllocChooserNodes(struct List *);
void AllocListbrowserNodes(struct List *);
void RefreshSetGadgetAttrs(struct Gadget *, struct Window *, struct Requester *, Tag tag1, ... );
void RefreshSetGadgetAttrsA(struct Gadget *, struct Window *, struct Requester *, struct TagItem *);

/* initialisieren der globalen Steuerungs-Variablen */

char founded_files_list_col1_raw[1024][31];
char founded_files_list_col2_raw[1024][31];
char founded_files_list_col3_raw[1024][31];
char founded_files_list_col4_raw[1024][31];
char founded_files_list_col5_raw[1024][31];
char indexdir[101] = "CD0:Lists/Aminet_Dir.doc";
char pattern[5][31];
char patternlower[5][31];
char puffer[101];
char puffer2[201];
char executepuffer[300][101];
char convert[101];
BOOL in_lha;
BOOL all_or_one_cd;
BOOL single;
BOOL terminated;
LONG winbuff;
WORD entryzahl;
WORD filezahl;
UBYTE topborder, leftborder, rightborder, bottomborder;
ULONG WindowSignals1;
ULONG Seconds, Micros;

/* initialisieren der System-Strukturen */

Object *WindowObject1;
void *vinfo = NULL;
struct Catalog *Catalog = NULL;
struct EasyStruct InitErrorRequest;
struct Gadget *Gadget1[30];
struct IntuiMessage *IntuiMessage = NULL;
struct Library *IntuitionBase = NULL;
struct Library *LocaleBase = NULL;
struct Library *GadToolsBase = NULL;
struct Library *ASLBase = NULL;
struct Library *DOSLibBase = NULL;
struct Library *ResourceBase = NULL;
struct Library *RequesterBase = NULL;
struct Library *WindowBase = NULL;
struct Library *ButtonBase = NULL;
struct Library *CheckBoxBase = NULL;
struct Library *ChooserBase = NULL;
struct Library *FuelGaugeBase = NULL;
struct Library *GetFileBase = NULL;
struct Library *LabelBase = NULL;
struct Library *LayoutBase = NULL;
struct Library *ListBrowserBase = NULL;
struct Library *SpaceBase = NULL;
struct Library *StringBase = NULL;
struct List Chooserarray;
struct List founded_files_list;
struct Menu *Menu = NULL;
struct MsgPort *AppPort = NULL;
struct Screen *Screen = NULL;
struct Window *Window1 = NULL;

struct ColumnInfo ListbrowserColumnInfo[] =
{
    { 100, "String", 0 },
    { 100, "File", 0 },
    { 100, "Dir", 0 },
    { 100, "Length", 0 },
    { 100, "Short", 0 },
    { -1, (STRPTR)~0, -1 }
};

struct NewMenu NewMenu[] =
{
    { NM_TITLE, 0, 0, 0, 0, 0 },
    { NM_ITEM, 0, "I", 0, 0, 0 },
    { NM_ITEM, NM_BARLABEL, 0, 0, 0, 0 },
    { NM_ITEM, 0, "Q", 0, 0, 0 },
    { NM_TITLE, 0, 0, 0, 0, 0 },
    { NM_ITEM, 0, "A", 0, 0, 0 },
    { NM_ITEM, 0, "N", 0, 0, 0 },
    { NM_END, 0, 0, 0, 0, 0 }
};

struct TextAttr xen8 =
{
    "xen.font", 8, 0, FPF_DISKFONT
};

#include <AminetSearcher_lowlevel.h>
#include <AminetSearcher.h>

void main(void)
{
  char OccuredError[50], ExceptionString[100];
  BYTE Exception = 0;
  BYTE ExceptionStringLength;
  ULONG Input, Code;

  if(IntuitionBase = OpenLibrary(INTUITIONLIBRARY, 39L))
  {
    if(LocaleBase = OpenLibrary(LOCALELIBRARY, 39L))
    {
      Catalog = OpenCatalogA(NULL, "AminetSearcher.catalog", NULL);
      if(GadToolsBase = OpenLibrary(GADTOOLSLIBRARY, 39L))
      {
        if(DOSLibBase = OpenLibrary(DOSLIBRARY, 39L))
        {
          if(ASLBase = OpenLibrary(ASLLIBRARY, 39L))
          {
            if(ResourceBase = OpenLibrary(RESOURCELIBRARY, 44L))
            {
              if(LayoutBase = OpenLibrary(LAYOUTGADGETLIB, 44L))
              {
                if(WindowBase = OpenLibrary(WINDOWCLASSLIB, 44L))
                {
                  if(RequesterBase = OpenLibrary(REQUESTERCLASSLIB, 42L))
                  {
                    if(LabelBase = OpenLibrary(LABELIMAGELIB, 44L))
                    {
                      if(ButtonBase = OpenLibrary(BUTTONGADGETLIB, 44L))
                      {
                        if(CheckBoxBase = OpenLibrary(CHECKBOXGADGETLIB, 44L))
                        {
                          if(ChooserBase = OpenLibrary(CHOOSERGADGETLIB, 44L))
                          {
                            if(FuelGaugeBase = OpenLibrary(FUELGAUGEGADGETLIB, 44L))
                            {
                              if(GetFileBase = OpenLibrary(GETFILEGADGETLIB, 44L))
                              {
                                if(ListBrowserBase = OpenLibrary(LISTBROWSERGADGETLIB, 44L))
                                {
                                  if(SpaceBase = OpenLibrary(SPACEGADGETLIB, 44L))
                                  {
                                    if(StringBase = OpenLibrary(STRINGGADGETLIB, 44L))
                                    {
                                      if(Screen = LockPubScreen(NULL))
                                      {
                                        if(vinfo = GetVisualInfo(Screen, TAG_DONE))
                                        {
                                          NewMenu[0].nm_Label = LOCALE_PROJECT;
                                          NewMenu[1].nm_Label = LOCALE_MENU_INFO;
                                          NewMenu[2].nm_Label = NM_BARLABEL;
                                          NewMenu[3].nm_Label = LOCALE_MENU_QUIT;
                                          NewMenu[4].nm_Label = LOCALE_MENU_EXTRA;
                                          NewMenu[5].nm_Label = LOCALE_MENU_SELECTALL;
                                          NewMenu[6].nm_Label = LOCALE_SELECTNONE;
                                          if(Menu = CreateMenus(NewMenu, GTMN_FullMenu, TRUE, TAG_DONE))
                                          {
                                            LayoutMenus(Menu, vinfo, GTMN_FrontPen, 0, TAG_DONE);
                                            strcpy(founded_files_list_col1_raw[0], " ");
                                            AllocChooserNodes(&Chooserarray);
                                            AllocListbrowserNodes(&founded_files_list);
                                            if(AppPort = CreateMsgPort())
                                            {
                                              WindowObject1 = WindowObject,
                                                              WA_Width, 500,
                                                              WA_Height, 400,
                                                              WA_SizeGadget, TRUE,
                                                              WA_DragBar, TRUE,
                                                              WA_DepthGadget, TRUE,
                                                              WA_CloseGadget, TRUE,
                                                              WA_Activate, TRUE,
                                                              WA_AutoAdjust, TRUE,
                                                              WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_CHANGEWINDOW | IDCMP_GADGETUP | IDCMP_MENUPICK | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE,                                                                                        WA_MinWidth, -1,
                                                              WA_MinHeight, -1,
                                                              WA_MaxWidth, -1,
                                                              WA_MaxHeight, -1,
                                                              WA_Title, LOCALE_WINDOW_TITLE1,
                                                              WA_ScreenTitle, LOCALE_SCREEN_TITLE1,
                                                              WA_PubScreen, Screen,
                                                              WINDOW_IconifyGadget, FALSE,
                                                              WINDOW_IconTitle, LOCALE_ICONIFIED_TITLE1,
                                                              WINDOW_Position, WPOS_CENTERMOUSE,
                                                              WINDOW_AppPort, AppPort,
                                                              WINDOW_ParentGroup, Gadget1[0] = VGroupObject,
                                                                                  LAYOUT_SpaceOuter, TRUE,
                                                                                  LAYOUT_DeferLayout, TRUE,
                                                                                  LAYOUT_AddChild, HLayoutObject,
                                                                                                   LAYOUT_AddChild, VLayoutObject,
                                                                                                                    LAYOUT_AddChild, Gadget1[1] = StringObject,
                                                                                                                                     STRINGA_MaxChars, 30,
                                                                                                                                     STRINGA_MinVisible, 10,
                                                                                                                                     GA_ID, 1,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_TabCycle, TRUE,
                                                                                                                    End,
                                                                                                                    CHILD_Label, LabelObject,
                                                                                                                                 LABEL_Text, LOCALE_PATTERN1,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[2] = StringObject,
                                                                                                                                     STRINGA_MaxChars, 30,
                                                                                                                                     STRINGA_MinVisible, 10,
                                                                                                                                     GA_ID, 2,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_TabCycle, TRUE,
                                                                                                                    End,
                                                                                                                    CHILD_Label, LabelObject,
                                                                                                                                 LABEL_Text, LOCALE_PATTERN2,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[3] = StringObject,
                                                                                                                                     STRINGA_MaxChars, 30,
                                                                                                                                     STRINGA_MinVisible, 10,
                                                                                                                                     GA_ID, 3,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_TabCycle, TRUE,
                                                                                                                    End,
                                                                                                                    CHILD_Label, LabelObject,
                                                                                                                                 LABEL_Text, LOCALE_PATTERN3,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[4] = StringObject,
                                                                                                                                     STRINGA_MaxChars, 30,
                                                                                                                                     STRINGA_MinVisible, 10,
                                                                                                                                     GA_ID, 4,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_TabCycle, TRUE,
                                                                                                                    End,
                                                                                                                    CHILD_Label, LabelObject,
                                                                                                                                 LABEL_Text, LOCALE_PATTERN4,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[5] = StringObject,
                                                                                                                                     STRINGA_MaxChars, 30,
                                                                                                                                     STRINGA_MinVisible, 10,
                                                                                                                                     GA_ID, 5,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_TabCycle, TRUE,
                                                                                                                    End,
                                                                                                                    CHILD_Label, LabelObject,
                                                                                                                                 LABEL_Text, LOCALE_PATTERN5,
                                                                                                                    End,
                                                                                                   End,
                                                                                                   LAYOUT_AddChild, HLayoutObject,
                                                                                                                    LAYOUT_AddChild, VLayoutObject,
                                                                                                                                     LAYOUT_AddChild, Gadget1[6] = CheckBoxObject,
                                                                                                                                                      GA_Text, "biz",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 6,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[7] = CheckBoxObject,
                                                                                                                                                      GA_Text, "comm",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 7,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[8] = CheckBoxObject,
                                                                                                                                                      GA_Text, "demo",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 8,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[9] = CheckBoxObject,
                                                                                                                                                      GA_Text, "dev",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 9,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[10] = CheckBoxObject,
                                                                                                                                                      GA_Text, "disk",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 10,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, VLayoutObject,
                                                                                                                                     LAYOUT_AddChild, Gadget1[11] = CheckBoxObject,
                                                                                                                                                      GA_Text, "docs",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 11,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[12] = CheckBoxObject,
                                                                                                                                                      GA_Text, "game",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 12,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[13] = CheckBoxObject,
                                                                                                                                                      GA_Text, "gfx",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 13,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[14] = CheckBoxObject,
                                                                                                                                                      GA_Text, "hard",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 14,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[15] = CheckBoxObject,
                                                                                                                                                      GA_Text, "misc",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 15,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, VLayoutObject,
                                                                                                                                     LAYOUT_AddChild, Gadget1[16] = CheckBoxObject,
                                                                                                                                                      GA_Text, "mods",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 16,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[17] = CheckBoxObject,
                                                                                                                                                      GA_Text, "mus",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 17,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[18] = CheckBoxObject,
                                                                                                                                                      GA_Text, "pix",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 18,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[19] = CheckBoxObject,
                                                                                                                                                      GA_Text, "text",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 19,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                                     LAYOUT_AddChild, Gadget1[20] = CheckBoxObject,
                                                                                                                                                      GA_Text, "util",
                                                                                                                                                      CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                                      GA_ID, 20,
                                                                                                                                                      GA_RelVerify, TRUE,
                                                                                                                                                      GA_GadgetHelp, TRUE,
                                                                                                                                                      GA_Disabled, TRUE,
                                                                                                                                     End,
                                                                                                                    End,
                                                                                                   End,
                                                                                                   LAYOUT_AddChild, VLayoutObject,
                                                                                                                    LAYOUT_AddChild, Gadget1[21] = CheckBoxObject,
                                                                                                                                     GA_Text, LOCALE_SCAN_IN_LHA,
                                                                                                                                     CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                     GA_ID, 21,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[29] = CheckBoxObject,
                                                                                                                                     GA_Text, "Single CDs",
                                                                                                                                     CHECKBOX_TextPlace, PLACETEXT_LEFT,
                                                                                                                                     GA_ID, 29,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_Disabled, TRUE,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, SpaceObject,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[22] = ChooserObject,
                                                                                                                                     CHOOSER_AutoFit, TRUE,
                                                                                                                                     CHOOSER_PopUp, TRUE,
                                                                                                                                     CHOOSER_Selected, 0,
                                                                                                                                     CHOOSER_Labels, (ULONG) &Chooserarray,
                                                                                                                                     GA_ID, 22,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[23] = ButtonObject,
                                                                                                                                     GA_Text, LOCALE_SEARCH,
                                                                                                                                     GA_ID, 23,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                    End,
                                                                                                                    LAYOUT_AddChild, Gadget1[24] = ButtonObject,
                                                                                                                                     GA_Text, LOCALE_BREAK,
                                                                                                                                     GA_ID, 24,
                                                                                                                                     GA_RelVerify, TRUE,
                                                                                                                                     GA_GadgetHelp, TRUE,
                                                                                                                                     GA_Disabled, TRUE,
                                                                                                                    End,
                                                                                                   End,
                                                                                  End,
                                                                                  CHILD_MaxHeight, 120,
                                                                                  LAYOUT_AddChild, Gadget1[25] = ListBrowserObject,
                                                                                                   LISTBROWSER_AutoFit, TRUE,
                                                                                                   LISTBROWSER_ColumnTitles, TRUE,
                                                                                                   LISTBROWSER_ShowSelected, TRUE,
                                                                                                   LISTBROWSER_VerticalProp, TRUE,
                                                                                                   LISTBROWSER_HorizontalProp, TRUE,
                                                                                                   LISTBROWSER_VertSeparators, TRUE,
                                                                                                   LISTBROWSER_Separators, TRUE,
                                                                                                   LISTBROWSER_Labels, (ULONG) &founded_files_list,
                                                                                                   LISTBROWSER_ColumnInfo, (ULONG) &ListbrowserColumnInfo,
                                                                                                   GA_ID, 25,
                                                                                                   GA_RelVerify, TRUE,
                                                                                                   GA_GadgetHelp, TRUE,
                                                                                                   GA_TextAttr, (ULONG) &xen8,
                                                                                  End,
                                                                                  LAYOUT_AddChild, Gadget1[26] = FuelGaugeObject,
                                                                                                   FUELGAUGE_Ticks, 9,
                                                                                                   FUELGAUGE_TickSize, 5,
                                                                                                   FUELGAUGE_ShortTicks, 8,
                                                                                                   FUELGAUGE_Percent, TRUE,
                                                                                                   GA_ID, 26,
                                                                                                   GA_RelVerify, TRUE,
                                                                                                   GA_GadgetHelp, TRUE,
                                                                                  End,
                                                                                  CHILD_MaxHeight, 35,
                                                                                  LAYOUT_AddChild, Gadget1[27] = FuelGaugeObject,
                                                                                                   FUELGAUGE_Ticks, 9,
                                                                                                   FUELGAUGE_TickSize, 5,
                                                                                                   FUELGAUGE_ShortTicks, 8,
                                                                                                   FUELGAUGE_Percent, TRUE,
                                                                                                   GA_ID, 27,
                                                                                                   GA_RelVerify, TRUE,
                                                                                                   GA_GadgetHelp, TRUE,
                                                                                  End,
                                                                                  CHILD_MaxHeight, 35,
                                                                                  LAYOUT_AddChild, Gadget1[28] = StringObject,
                                                                                                   STRINGA_TextVal, "Status: ok",
                                                                                                   STRINGA_MaxChars, 100,
                                                                                                   GA_ReadOnly, TRUE,
                                                                                  End,
                                                                                  CHILD_MaxHeight, 20,
                                                              EndGroup,
                                              EndWindow;
                                              Window1 = RA_OpenWindow(WindowObject1);
                                              GetAttr(WINDOW_SigMask, WindowObject1, &WindowSignals1);
                                              SetMenuStrip(Window1, Menu);
                                              while(!terminated)
                                              {
                                                Wait(WindowSignals1);
                                                while((Input = RA_HandleInput(WindowObject1, &Code)) != WMHI_LASTMSG)
                                                {
                                                  switch(Input & WMHI_CLASSMASK)
                                                  {
                                                    case WMHI_GADGETUP:
                                                      GetAttr(STRINGA_TextVal, Gadget1[1], (ULONG *) &winbuff);
                                                      strcpy(pattern[0], (char *) winbuff);
                                                      makelower(patternlower[0], (char *) winbuff);
                                                      GetAttr(STRINGA_TextVal, Gadget1[2], (ULONG *) &winbuff);
                                                      strcpy(pattern[1], (char *) winbuff);
                                                      makelower(patternlower[1], (char *) winbuff);
                                                      GetAttr(STRINGA_TextVal, Gadget1[3], (ULONG *) &winbuff);
                                                      strcpy(pattern[2], (char *) winbuff);
                                                      makelower(patternlower[2], (char *) winbuff);
                                                      GetAttr(STRINGA_TextVal, Gadget1[4], (ULONG *) &winbuff);
                                                      strcpy(pattern[3], (char *) winbuff);
                                                      makelower(patternlower[3], (char *) winbuff);
                                                      GetAttr(STRINGA_TextVal, Gadget1[5], (ULONG *) &winbuff);
                                                      strcpy(pattern[4], (char *) winbuff);
                                                      makelower(patternlower[4], (char *) winbuff);
                                                      switch(Input & WMHI_GADGETMASK)
                                                      {
                                                        case 21: Scan_in_LhA_Event(); break;
                                                        case 22: All_or_one_CD_Event(); break;
                                                        case 23: Search_Button_Event(); break;
                                                        case 25: Listbrowser_Event(); break;
                                                        case 29: GetAttr(GA_Selected, Gadget1[29], (ULONG *) &winbuff); single = winbuff; break;
                                                      }
                                                      break;
                                                    case WMHI_GADGETHELP:
                                                      switch(Input & WMHI_GADGETMASK)
                                                      {
                                                      }
                                                      break;
                                                    case WMHI_MENUPICK:
                                                      switch(Input & WMHI_MENUMASK)
                                                      {
                                                        case Menu_Info: Menu_Info_MenuPick_Event(); break;
                                                        case Menu_Quit: Menu_Quit_MenuPick_Event(); break;
                                                        case Menu_Select_All:  Menu_Select_All_MenuPick_Event();  break;
                                                        case Menu_Select_None: Menu_Select_None_MenuPick_Event(); break;
                                                      }
                                                      break;
                                                    case WMHI_CLOSEWINDOW:
                                                      Window1_CloseWindow_Event();
                                                      break;
                                                  }
                                                }
                                              }
                                              ClearMenuStrip(Window1);
                                              DoMethod(WindowObject1, WM_CLOSE, NULL);
                                              DisposeObject(WindowObject1);
                                              DeleteMsgPort(AppPort);
                                            }
                                            else Exception = 5;
                                            FreeMenus(Menu);
                                          }
                                          else Exception = 4;
                                          FreeVisualInfo(vinfo);
                                        }
                                        else Exception = 3;
                                        UnlockPubScreen(NULL, Screen);
                                      }
                                      else Exception = 2;
                                      CloseLibrary(StringBase);
                                    }
                                    else
                                    {
                                      Exception = 1;
                                      strcpy(OccuredError, STRINGGADGETLIB);
                                    }
                                    CloseLibrary(SpaceBase);
                                  }
                                  else
                                  {
                                    Exception = 1;
                                    strcpy(OccuredError, SPACEGADGETLIB);
                                  }
                                  CloseLibrary(ListBrowserBase);
                                }
                                else
                                {
                                  Exception = 1;
                                  strcpy(OccuredError, LISTBROWSERGADGETLIB);
                                }
                                CloseLibrary(GetFileBase);
                              }
                              else
                              {
                                Exception = 1;
                                strcpy(OccuredError, GETFILEGADGETLIB);
                              }
                              CloseLibrary(FuelGaugeBase);
                            }
                            else
                            {
                              Exception = 1;
                              strcpy(OccuredError, FUELGAUGEGADGETLIB);
                            }
                            CloseLibrary(ChooserBase);
                          }
                          else
                          {
                            Exception = 1;
                            strcpy(OccuredError, CHOOSERGADGETLIB);
                          }
                          CloseLibrary(CheckBoxBase);
                        }
                        else
                        {
                          Exception = 1;
                          strcpy(OccuredError, CHECKBOXGADGETLIB);
                        }
                        CloseLibrary(ButtonBase);
                      }
                      else
                      {
                        Exception = 1;
                        strcpy(OccuredError, BUTTONGADGETLIB);
                      }
                      CloseLibrary(LabelBase);
                    }
                    else
                    {
                      Exception = 1;
                      strcpy(OccuredError, LABELIMAGELIB);
                    }
                    CloseLibrary(RequesterBase);
                  }
                  else
                  {
                    Exception = 1;
                    strcpy(OccuredError, REQUESTERCLASSLIB);
                  }
                  CloseLibrary(WindowBase);
                }
                else
                {
                  Exception = 1;
                  strcpy(OccuredError, WINDOWCLASSLIB);
                }
                CloseLibrary(LayoutBase);
              }
              else
              {
                Exception = 1;
                strcpy(OccuredError, LAYOUTGADGETLIB);
              }
              CloseLibrary(ResourceBase);
            }
            else
            {
              Exception = 1;
              strcpy(OccuredError, RESOURCELIBRARY);
            }
            CloseLibrary(ASLBase);
          }
          else
          {
            Exception = 1;
            strcpy(OccuredError, ASLLIBRARY);
          }
          CloseLibrary(DOSLibBase);
        }
        else
        {
          Exception = 1;
          strcpy(OccuredError, DOSLIBRARY);
        }
        CloseLibrary(GadToolsBase);
      }
      else
      {
        Exception = 1;
        strcpy(OccuredError, GADTOOLSLIBRARY);
      }
      if(Catalog) CloseCatalog(Catalog);
      CloseLibrary(LocaleBase);
    }
    else
    {
      Exception = 1;
      strcpy(OccuredError, LOCALELIBRARY);
    }
    CloseLibrary(IntuitionBase);
  }
  if(Exception)
  {
    strcpy(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_BODYTITLE);
    if(Exception == 2) strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT2);
    if(Exception == 3) strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT3);
    if(Exception == 4) strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT4);
    if(Exception == 5) strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT5);
    if(Exception == 1)
    {
      strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_ERRRTEXT1);
      ExceptionStringLength = 0; while(ExceptionString[ExceptionStringLength] != NULL) ExceptionStringLength++;
      ExceptionString[ExceptionStringLength] = (char) 34;
      ExceptionString[ExceptionStringLength + 1] = NULL;
      strcat(ExceptionString, OccuredError);
      ExceptionStringLength = 0; while(ExceptionString[ExceptionStringLength] != NULL) ExceptionStringLength++;
      ExceptionString[ExceptionStringLength] = (char) 34;
      ExceptionString[ExceptionStringLength + 1] = NULL;
      strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_SOLUTION1);
    }
    else strcat(ExceptionString, LOCALE_REQUEST_INITIALIZATIONERROR_SOLUTION2);
    InitErrorRequest.es_StructSize = sizeof(struct EasyStruct);
    InitErrorRequest.es_Flags = 0L;
    InitErrorRequest.es_Title = (UBYTE *) LOCALE_REQUEST_INITIALIZATIONERROR_TITLE;
    InitErrorRequest.es_TextFormat = (UBYTE *) ExceptionString;
    InitErrorRequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_INITIALIZATIONERROR_GADGET;
    EasyRequest(Window1, &InitErrorRequest, NULL, NULL);
  }
  exit(0);
}

void wbmain(struct WBStartup *ArgMsg)
{
  main();
}

void Errorrequest(void)
{
    struct EasyStruct Errorrequest;

    Errorrequest.es_StructSize = sizeof(struct EasyStruct);
    Errorrequest.es_Flags = 0L;
    Errorrequest.es_Title = (UBYTE *) LOCALE_REQUEST_ERROR1_TITLE;
    Errorrequest.es_TextFormat = (UBYTE *) LOCALE_REQUEST_ERROR1_BODY;
    Errorrequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_ERROR1_GADGET;
    EasyRequest(Window1, &Errorrequest, NULL, NULL);
}

void Nopatternrequest(void)
{
    struct EasyStruct Nopatternrequest;

    Nopatternrequest.es_StructSize = sizeof(struct EasyStruct);
    Nopatternrequest.es_Flags = 0L;
    Nopatternrequest.es_Title = (UBYTE *) LOCALE_REQUEST_ERROR1_TITLE;
    Nopatternrequest.es_TextFormat = (UBYTE *) LOCALE_REQUEST_ERROR2_BODY;
    Nopatternrequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_ERROR1_GADGET;
    EasyRequest(Window1, &Nopatternrequest, NULL, NULL);
}

void Inforequest(void)
{
    struct EasyStruct Inforequest;

    Inforequest.es_StructSize = sizeof(struct EasyStruct);
    Inforequest.es_Flags = 0L;
    Inforequest.es_Title = (UBYTE *) LOCALE_REQUEST_INFO_TITLE;
    Inforequest.es_TextFormat = (UBYTE *) LOCALE_REQUEST_INFO_BODY;
    Inforequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_INFO_GADGET;
    EasyRequest(Window1, &Inforequest, NULL, NULL);
}

LONG Quitrequest(void)
{
    struct EasyStruct Quitrequest;

    Quitrequest.es_StructSize = sizeof(struct EasyStruct);
    Quitrequest.es_Flags = 0L;
    Quitrequest.es_Title = (UBYTE *) LOCALE_REQUEST_QUIT_TITLE;
    Quitrequest.es_TextFormat = (UBYTE *) LOCALE_REQUEST_QUIT_BODY;
    Quitrequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_QUIT_GADGET;
    return(EasyRequest(Window1, &Quitrequest, NULL, NULL));
}

LONG Extractrequest(void)
{
    struct EasyStruct Extractrequest;

    Extractrequest.es_StructSize = sizeof(struct EasyStruct);
    Extractrequest.es_Flags = 0L;
    Extractrequest.es_Title = (UBYTE *) LOCALE_REQUEST_TITLE1;
    Extractrequest.es_TextFormat = (UBYTE *) LOCALE_REQUEST_BODY1;
    Extractrequest.es_GadgetFormat = (UBYTE *) LOCALE_REQUEST_GAD1;
    return(EasyRequest(Window1, &Extractrequest, NULL, NULL));
}

STRPTR Filerequest(void)
{
    STRPTR ASLReturn = "";
    struct FileRequester *ASLRequester;

    ASLRequester = AllocAslRequestTags(ASL_FileRequest, ASLFR_Window, Window1, ASLFR_Screen, Screen, ASLFR_SleepWindow, TRUE, ASLFR_TitleText, LOCALE_ASL_FILEREQ_TITLE11, TAG_DONE);
    AslRequestTags(ASLRequester, ASLFR_SetSortBy, 0, ASLFR_SetSortOrder, 0, ASLFR_SetSortDrawers, 0, ASLFR_DoMultiSelect, TRUE, ASLFR_RejectIcons, TRUE, TAG_DONE);
    strcpy(ASLReturn, ASLRequester->fr_Drawer);
    strcat(ASLReturn, "/");
    strcat(ASLReturn, ASLRequester->fr_File);
    return(ASLReturn);
}

