1229 lines
43 KiB
C++
1229 lines
43 KiB
C++
// ***** BEGIN LICENSE BLOCK *****
|
|
// * Version: MPL 1.1
|
|
// *
|
|
// * The contents of this file are subject to the Mozilla Public License Version
|
|
// * 1.1 (the "License"); you may not use this file except in compliance with
|
|
// * the License. You may obtain a copy of the License at
|
|
// * http://www.mozilla.org/MPL/
|
|
// *
|
|
// * Software distributed under the License is distributed on an "AS IS" basis,
|
|
// * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
// * for the specific language governing rights and limitations under the
|
|
// * License.
|
|
// *
|
|
// * The Original Code is TurboPower Abbrevia
|
|
// *
|
|
// * The Initial Developer of the Original Code is
|
|
// * TurboPower Software
|
|
// *
|
|
// * Portions created by the Initial Developer are Copyright (C) 1997-2002
|
|
// * the Initial Developer. All Rights Reserved.
|
|
// *
|
|
// * Contributor(s):
|
|
// *
|
|
// * ***** END LICENSE BLOCK *****
|
|
/*********************************************************/
|
|
/* UMain.cpp */
|
|
/*********************************************************/
|
|
//---------------------------------------------------------------------------
|
|
#include <vcl\vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "UMain.h"
|
|
#include "DgAbout.h"
|
|
#include "UBaseDlg.h"
|
|
#include "UDemoDlg.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma link "AbZipOut"
|
|
#pragma link "AbArcTyp"
|
|
#pragma link "AbDlgPwd"
|
|
#pragma link "AbZBrows"
|
|
#pragma link "AbBase"
|
|
#pragma link "AbMeter"
|
|
#pragma resource "*.dfm"
|
|
TForm1 *Form1;
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TForm1::TForm1(TComponent* Owner)
|
|
: TForm(Owner)
|
|
{
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void TForm1::ReadIniSettings()
|
|
{
|
|
// This example is derived from the corresponding Delphi example.
|
|
// To be compatible with Delphi 1 the Delphi example uses INI files
|
|
// rather than using the registry to store configuration data.
|
|
// This program uses INI files as well since it has been converted
|
|
// from the Delphi example. Normally you would use the registry
|
|
// to store configuration data in a 32-bit program.
|
|
//
|
|
int Value;
|
|
bool Exists;
|
|
TIniFile* ini = new TIniFile(ChangeFileExt(Application->ExeName, ".INI"));
|
|
try {
|
|
// view menu
|
|
Exists = ini->ReadBool("General", "Exists", false);
|
|
if (Exists) {
|
|
AbZipOutline1->Attributes.Clear();
|
|
if (ini->ReadBool("View", "CSize", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaCompressedSize;
|
|
if (ini->ReadBool("View", "CMethod", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaCompressionMethod;
|
|
if (ini->ReadBool("View", "CRatio", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaCompressionRatio;
|
|
if (ini->ReadBool("View", "CRC", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaCRC;
|
|
if (ini->ReadBool("View", "EFA", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaExternalFileAttributes;
|
|
if (ini->ReadBool("View", "IFA", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaInternalFileAttributes;
|
|
if (ini->ReadBool("View", "Encryption", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaEncryption;
|
|
if (ini->ReadBool("View", "TimeStamp", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaTimeStamp;
|
|
if (ini->ReadBool("View", "USize", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaUncompressedSize;
|
|
if (ini->ReadBool("View", "MadeBy", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaVersionMade;
|
|
if (ini->ReadBool("View", "Needed", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaVersionNeeded;
|
|
if (ini->ReadBool("View", "Comment", false))
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << zaComment;
|
|
|
|
AbZipOutline1->Hierarchy =
|
|
ini->ReadBool("View", "Hierarchy", true);
|
|
|
|
Value = ini->ReadInteger("View", "OutlineStyle", -1);
|
|
// if (Value != -1)
|
|
// AbZipOutline1->OutlineStyle = TOutlineStyle(Value);
|
|
// preferences menu
|
|
AbZipOutline1->BaseDirectory = ini->ReadString(
|
|
"Preferences", "BaseDirectory", ExtractFilePath(Application->ExeName));
|
|
if (!AbDirectoryExists(AbZipOutline1->BaseDirectory))
|
|
AbZipOutline1->BaseDirectory = ExtractFilePath(Application->ExeName);
|
|
Confirmations1->Checked =
|
|
ini->ReadBool("Preferences", "Confirmations", false);
|
|
SpeedButton7->Down = Confirmations1->Checked;
|
|
Value = ini->ReadInteger(
|
|
"Preferences", "CompressionMethodToUse", (int)smBestMethod);
|
|
AbZipOutline1->CompressionMethodToUse = TAbZipSupportedMethod(Value);
|
|
Value = ini->ReadInteger("Preferences", "DeflationOption", doNormal);
|
|
AbZipOutline1->DeflationOption = TAbZipDeflationOption(Value);
|
|
AbZipOutline1->ExtractOptions.Clear();
|
|
if (ini->ReadBool("Preferences", "CreateDirs", false))
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoCreateDirs;
|
|
if (ini->ReadBool("Preferences", "RestorePath", false))
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoRestorePath;
|
|
AbZipOutline1->StoreOptions.Clear();
|
|
if (ini->ReadBool("Preferences", "StripPath", false))
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soStripPath;
|
|
if (ini->ReadBool("Preferences", "RemoveDots", false))
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soRemoveDots;
|
|
if (ini->ReadBool("Preferences", "Recurse", false))
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soRecurse;
|
|
StubName = ini->ReadString("Self Extracting", "StubName", "selfex.exe");
|
|
FilterComboBox1->Filter =
|
|
ini->ReadString("Navigator", "Filter",
|
|
"All files (*.*)|*.*|Zip Files (*.ZIP)|*.ZIP|"
|
|
"Executable Files (*.EXE)|*.EXE|Text files (*.TXT)|*.TXT|");
|
|
}
|
|
} // try
|
|
catch (...) {
|
|
delete ini;
|
|
return;
|
|
}
|
|
delete ini;
|
|
}
|
|
|
|
void TForm1::SaveIniSettings()
|
|
{
|
|
TIniFile* ini = new TIniFile(ChangeFileExt(Application->ExeName, ".INI"));
|
|
try {
|
|
// view menu
|
|
ini->WriteBool("General", "Exists", true);
|
|
ini->WriteBool("View", "CSize", AbZipOutline1->Attributes.Contains(zaCompressedSize));
|
|
ini->WriteBool("View", "CMethod", AbZipOutline1->Attributes.Contains(zaCompressionMethod));
|
|
ini->WriteBool("View", "CRatio", AbZipOutline1->Attributes.Contains(zaCompressionRatio));
|
|
ini->WriteBool("View", "CRC", AbZipOutline1->Attributes.Contains(zaCRC));
|
|
ini->WriteBool("View", "EFA", AbZipOutline1->Attributes.Contains(zaExternalFileAttributes));
|
|
ini->WriteBool("View", "IFA", AbZipOutline1->Attributes.Contains(zaInternalFileAttributes));
|
|
ini->WriteBool("View", "Encryption", AbZipOutline1->Attributes.Contains(zaEncryption));
|
|
ini->WriteBool("View", "TimeStamp", AbZipOutline1->Attributes.Contains(zaTimeStamp));
|
|
ini->WriteBool("View", "USize", AbZipOutline1->Attributes.Contains(zaUncompressedSize));
|
|
ini->WriteBool("View", "MadeBy", AbZipOutline1->Attributes.Contains(zaVersionMade));
|
|
ini->WriteBool("View", "Needed", AbZipOutline1->Attributes.Contains(zaVersionNeeded));
|
|
ini->WriteBool("View", "Comment", AbZipOutline1->Attributes.Contains(zaComment));
|
|
|
|
ini->WriteBool("View", "Hierarchy", AbZipOutline1->Hierarchy);
|
|
// ini->WriteInteger("View", "OutlineStyle", AbZipOutline1->OutlineStyle);
|
|
// preferences menu
|
|
ini->WriteString("Preferences",
|
|
"BaseDirectory", AbZipOutline1->BaseDirectory);
|
|
ini->WriteBool("Preferences", "Confirmations", Confirmations1->Checked);
|
|
ini->WriteInteger("Preferences",
|
|
"CompressionMethodToUse", AbZipOutline1->CompressionMethodToUse);
|
|
ini->WriteInteger("Preferences",
|
|
"DeflationOption", AbZipOutline1->DeflationOption);
|
|
ini->WriteBool("Preferences",
|
|
"CreateDirs", AbZipOutline1->ExtractOptions.Contains(eoCreateDirs));
|
|
ini->WriteBool("Preferences",
|
|
"RestorePath", AbZipOutline1->ExtractOptions.Contains(eoRestorePath));
|
|
ini->WriteBool("Preferences",
|
|
"StripPath", AbZipOutline1->StoreOptions.Contains(soStripPath));
|
|
ini->WriteBool("Preferences",
|
|
"RemoveDots", AbZipOutline1->StoreOptions.Contains(soRemoveDots));
|
|
ini->WriteBool("Preferences",
|
|
"Recurse", AbZipOutline1->StoreOptions.Contains(soRecurse));
|
|
}
|
|
catch (...) {
|
|
delete ini;
|
|
return;
|
|
}
|
|
delete ini;
|
|
}
|
|
|
|
void TForm1::SetCaption()
|
|
{
|
|
Caption = "TPZip " + AbZipOutline1->Version + " - " +
|
|
AbZipOutline1->FileName;
|
|
}
|
|
|
|
void TForm1::UpdateMenu()
|
|
{
|
|
TAbZipAttribute i = zaCompressedSize;
|
|
while (i != zaComment) {
|
|
Attributes1->Items[i]->Checked = AbZipOutline1->Attributes.Contains(i);
|
|
i = (TAbZipAttribute)(i + 1);
|
|
}
|
|
Hierarchy1->Checked = AbZipOutline1->Hierarchy;
|
|
// OS1->Checked = AbZipOutline1->OutlineStyle == 0;
|
|
// OS2->Checked = AbZipOutline1->OutlineStyle == 1;
|
|
// OS3->Checked = AbZipOutline1->OutlineStyle == 2;
|
|
// OS4->Checked = AbZipOutline1->OutlineStyle == 3;
|
|
// OS5->Checked = AbZipOutline1->OutlineStyle == 4;
|
|
// OS6->Checked = AbZipOutline1->OutlineStyle == 5;
|
|
|
|
Best1->Checked = AbZipOutline1->CompressionMethodToUse == smBestMethod;
|
|
Deflate1->Checked = AbZipOutline1->CompressionMethodToUse == smDeflated;
|
|
Store1->Checked = AbZipOutline1->CompressionMethodToUse == smStored;
|
|
// deflation options
|
|
Normal1->Checked = AbZipOutline1->DeflationOption == doNormal;
|
|
Maximum1->Checked = AbZipOutline1->DeflationOption == doMaximum;
|
|
Fast1->Checked = AbZipOutline1->DeflationOption == doFast;
|
|
SuperFast1->Checked = AbZipOutline1->DeflationOption == doSuperFast;
|
|
// extractOptions
|
|
CreateDirs1->Checked = AbZipOutline1->ExtractOptions.Contains(eoCreateDirs);
|
|
RestorePath1->Checked = AbZipOutline1->ExtractOptions.Contains(eoRestorePath);
|
|
// StoreOptions
|
|
RecurseTree1->Checked = AbZipOutline1->StoreOptions.Contains(soRecurse);
|
|
StripPath1->Checked = AbZipOutline1->StoreOptions.Contains(soStripPath);
|
|
RemoveDots1->Checked = AbZipOutline1->StoreOptions.Contains(soRemoveDots);
|
|
}
|
|
|
|
void __fastcall TForm1::DoConfirm(TObject* Sender, TAbArchiveItem* Item,
|
|
bool& Confirm, String Caption)
|
|
{
|
|
char buff[256];
|
|
sprintf(buff, "%s %s?", Caption.c_str(), Item->FileName.c_str());
|
|
|
|
if (Confirmations1->Checked)
|
|
Confirm = MessageBox(0, buff, "Confirmation",
|
|
MB_ICONQUESTION || MB_OKCANCEL) == IDOK;
|
|
}
|
|
|
|
void __fastcall TForm1::GetMinMaxInfo(TWMGetMinMaxInfo& Msg)
|
|
{
|
|
Msg.MinMaxInfo->ptMinTrackSize = Point(700, 400);
|
|
Msg.MinMaxInfo->ptMaxTrackSize = Point(1600, 1200);
|
|
}
|
|
|
|
void __fastcall TForm1::All1Click(TObject *Sender)
|
|
{
|
|
for (int i=0;i < zaComment + 1;i++)
|
|
Attributes1->Items[i]->Checked = true;
|
|
AbZipOutline1->Attributes <<
|
|
zaCompressedSize << zaCompressionMethod <<
|
|
zaCompressionRatio << zaCRC << zaExternalFileAttributes <<
|
|
zaInternalFileAttributes << zaEncryption << zaTimeStamp <<
|
|
zaUncompressedSize << zaVersionMade << zaVersionNeeded << zaComment;
|
|
AbZipOutline1->Update();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Exit1Click(TObject *Sender)
|
|
{
|
|
Close();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FormCreate(TObject *Sender)
|
|
{
|
|
ReadIniSettings();
|
|
SetCaption();
|
|
UpdateMenu();
|
|
if (ParamCount > 0)
|
|
try {
|
|
AbZipOutline1->FileName = ParamStr(1);
|
|
}
|
|
catch (...) {}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Hierarchy1Click(TObject *Sender)
|
|
{
|
|
Hierarchy1->Checked = !Hierarchy1->Checked;
|
|
AbZipOutline1->Hierarchy = Hierarchy1->Checked;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::None1Click(TObject *Sender)
|
|
{
|
|
for (int i=0;i<Attributes1->Count;i++)
|
|
Attributes1->Items[i]->Checked = false;
|
|
AbZipOutline1->Attributes.Clear();
|
|
AbZipOutline1->Update();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Save1Click(TObject *Sender)
|
|
{
|
|
AbZipOutline1->Save();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::za10Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Item->Checked = !Item->Checked;
|
|
if (Item->Checked)
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes << (TAbZipAttribute)Item->Tag;
|
|
else
|
|
AbZipOutline1->Attributes =
|
|
AbZipOutline1->Attributes >> (TAbZipAttribute)Item->Tag;
|
|
AbZipOutline1->Update();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Font1Click(TObject *Sender)
|
|
{
|
|
if (FontDialog1->Execute()) {
|
|
AbZipOutline1->Font = FontDialog1->Font;
|
|
DirectoryListBox1->Font = FontDialog1->Font;
|
|
FileListBox1->Font = FontDialog1->Font;
|
|
DriveComboBox1->Font = FontDialog1->Font;
|
|
FilterComboBox1->Font = FontDialog1->Font;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Open1Click(TObject *Sender)
|
|
{
|
|
if (OpenDialog1->Execute()) {
|
|
AbZipOutline1->FileName = OpenDialog1->FileName;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1DragOver(TObject *Sender, TObject *Source,
|
|
int X, int Y, TDragState State, bool &Accept)
|
|
{
|
|
Accept = (bool)dynamic_cast<TFileListBox*>(Source);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1DragDrop(TObject *Sender, TObject *Source,
|
|
int X, int Y)
|
|
{
|
|
TAbZipBrowser* ZB;
|
|
bool IsZip;
|
|
String ZipName;
|
|
int i;
|
|
|
|
TFileListBox* lb = dynamic_cast<TFileListBox*>(Source);
|
|
if (lb) {
|
|
if (lb->SelCount == 1) {
|
|
for (i=0;i<lb->Items->Count;i++)
|
|
if (lb->Selected[i]) {
|
|
IsZip = false;
|
|
ZB = new TAbZipBrowser(this);
|
|
try {
|
|
ZB->FileName = lb->Directory + "\\" + lb->Items->Strings[i];
|
|
IsZip = true;
|
|
}
|
|
catch (...) {
|
|
delete ZB;
|
|
ZB = 0;
|
|
}
|
|
delete ZB;
|
|
if (IsZip)
|
|
// only one file, and it is a zip file
|
|
AbZipOutline1->FileName = lb->Directory + "\\" + lb->Items->Strings[i];
|
|
else if (AbZipOutline1->FileName != "")
|
|
// only one file, and it's not a zip file
|
|
AbZipOutline1->AddFiles(lb->Directory + "\\" + lb->Items->Strings[i], 0);
|
|
else {
|
|
if (OpenDialog1->Execute()) {
|
|
AbZipOutline1->FileName = OpenDialog1->FileName;
|
|
AbZipOutline1->AddFiles(lb->Directory + "\\" + lb->Items->Strings[i], 0);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else {
|
|
// multiple files dropped...
|
|
IsZip = false;
|
|
ZB = new TAbZipBrowser(this);
|
|
try {
|
|
for (i=0;i<lb->Items->Count;i++)
|
|
if (lb->Selected[i]) {
|
|
try {
|
|
ZB->FileName = lb->Directory + "\\" + lb->Items->Strings[i];
|
|
IsZip = true;
|
|
ZipName = ZB->FileName;
|
|
break;
|
|
}
|
|
catch (...) {}
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete ZB;
|
|
ZB = 0;
|
|
}
|
|
delete ZB;
|
|
if (IsZip && (Application->MessageBox(
|
|
"One of the dropped files is a Zip Archive. Open it?",
|
|
"Open or Add Files?",
|
|
MB_YESNO) == IDYES))
|
|
AbZipOutline1->FileName = ZipName;
|
|
else {
|
|
if (AbZipOutline1->FileName != "") {
|
|
for (int i=0;i<lb->Items->Count;i++)
|
|
if (FileListBox1->Selected[i])
|
|
AbZipOutline1->AddFiles(lb->Directory + "\\" + lb->Items->Strings[i], 0);
|
|
}
|
|
else {
|
|
if (OpenDialog1->Execute()) {
|
|
AbZipOutline1->FileName = OpenDialog1->FileName;
|
|
for (int j=0;j<lb->Items->Count;j++)
|
|
if (FileListBox1->Selected[j])
|
|
AbZipOutline1->AddFiles(lb->Directory + "\\" + lb->Items->Strings[j], 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1DblClick(TObject *Sender)
|
|
{
|
|
bool Restoring;
|
|
String TempDir, SaveDir;
|
|
char TempPath[256];
|
|
String TempName;
|
|
|
|
GetTempPath(sizeof(TempPath), TempPath);
|
|
SaveDir = TempPath;
|
|
if (SaveDir[SaveDir.Length()] == '\\')
|
|
SaveDir.Delete(SaveDir.Length(), 1);
|
|
|
|
if (AbZipOutline1->SelectedZipItem) {
|
|
TempDir = AbZipOutline1->BaseDirectory;
|
|
Restoring = AbZipOutline1->ExtractOptions.Contains(eoRestorePath);
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoRestorePath;
|
|
AbZipOutline1->BaseDirectory = SaveDir;
|
|
try {
|
|
AbZipOutline1->ExtractFiles(AbZipOutline1->SelectedZipItem->FileName);
|
|
TempName = AbZipOutline1->SelectedZipItem->FileName;
|
|
AbUnfixName(TempName);
|
|
ShellExecute(Application->MainForm->Handle, NULL,
|
|
ExtractFileName(TempName).c_str(),
|
|
"", SaveDir.c_str(), SW_SHOWNORMAL);
|
|
}
|
|
catch (...) {
|
|
AbZipOutline1->BaseDirectory = TempDir;
|
|
}
|
|
AbZipOutline1->BaseDirectory = TempDir;
|
|
if (Restoring)
|
|
AbZipOutline1->ExtractOptions = AbZipOutline1->ExtractOptions << eoRestorePath;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1MouseDown(TObject *Sender,
|
|
TMouseButton Button, TShiftState Shift, int X, int Y)
|
|
{
|
|
if (Button == mbLeft) {
|
|
OutlineX = X;
|
|
OutlineY = Y;
|
|
}
|
|
else if (Button == mbRight) {
|
|
// enable appropriate popup menu items
|
|
// prepare popup menu
|
|
if (AbZipOutline1->Count > 0) {
|
|
// there are items in the outline - select the item under the mouse
|
|
// int i = AbZipOutline1->GetOutlineItem(X, Y);
|
|
// if (i != -1)
|
|
// AbZipOutline1->SelectedItem = i;
|
|
}
|
|
if (AbZipOutline1->SelectedZipItem) {
|
|
// pointing at a file - allow file operations
|
|
Delete1->Enabled = true;
|
|
Extract1->Enabled = true;
|
|
Freshen1->Enabled = true;
|
|
Move1->Enabled = true;
|
|
Run1->Enabled = true;
|
|
}
|
|
else {
|
|
// pointing at a directory - don't allow file operations
|
|
Delete1->Enabled = false;
|
|
Extract1->Enabled = false;
|
|
Freshen1->Enabled = false;
|
|
Move1->Enabled = false;
|
|
Run1->Enabled = false;
|
|
}
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FileListBox1DragOver(TObject *Sender, TObject *Source,
|
|
int X, int Y, TDragState State, bool &Accept)
|
|
{
|
|
Accept = (bool)dynamic_cast<TAbZipOutline*>(Source);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FileListBox1DragDrop(TObject *Sender, TObject *Source,
|
|
int X, int Y)
|
|
{
|
|
String TempDir;
|
|
TAbZipOutline* zo = dynamic_cast<TAbZipOutline*>(Source);
|
|
|
|
if (zo)
|
|
TempDir = zo->BaseDirectory;
|
|
zo->BaseDirectory = FileListBox1->Directory;
|
|
try {
|
|
zo->ExtractFiles(zo->SelectedZipItem->FileName);
|
|
FileListBox1->Update();
|
|
}
|
|
catch (...) {
|
|
zo->BaseDirectory = TempDir;
|
|
return;
|
|
}
|
|
zo->BaseDirectory = TempDir;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1WindowsDrop(TObject *Sender,
|
|
AnsiString FileName)
|
|
{
|
|
TAbZipBrowser* ZB;
|
|
bool IsZip = false;
|
|
ZB = new TAbZipBrowser(this);
|
|
try {
|
|
ZB->FileName = FileName;
|
|
IsZip = true;
|
|
}
|
|
catch (...) {
|
|
delete ZB;
|
|
ZB = 0;
|
|
}
|
|
delete ZB;
|
|
|
|
if (IsZip && AbZipOutline1->FileName == "")
|
|
AbZipOutline1->FileName = FileName;
|
|
else if (AbZipOutline1->FileName == "") {
|
|
if (OpenDialog1->Execute()) {
|
|
AbZipOutline1->FileName = OpenDialog1->FileName;
|
|
AbZipOutline1->AddFiles(FileName, 0);
|
|
}
|
|
}
|
|
else {
|
|
// This is a Zip file, but there's already an open archive
|
|
if (Application->MessageBox("Open this file as an archive?",
|
|
"Open or Add File", MB_YESNO) == IDYES)
|
|
AbZipOutline1->FileName = FileName;
|
|
else
|
|
AbZipOutline1->AddFiles(FileName, 0);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Best1Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Store1->Checked = false;
|
|
Deflate1->Checked = false;
|
|
Best1->Checked = false;
|
|
Item->Checked = true;
|
|
AbZipOutline1->CompressionMethodToUse = (TAbZipSupportedMethod)Item->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::SuperFast1Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Normal1->Checked = false;
|
|
Maximum1->Checked = false;
|
|
Fast1->Checked = false;
|
|
SuperFast1->Checked = false;
|
|
Item->Checked = true;
|
|
AbZipOutline1->DeflationOption = (TAbZipDeflationOption)Item->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::CreateDirs1Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Item->Checked = !Item->Checked;
|
|
if (Item->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoCreateDirs;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoCreateDirs;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::RestorePath1Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Item->Checked = !Item->Checked;
|
|
if (Item->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoRestorePath;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoRestorePath;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::StripPath1Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
Item->Checked = !Item->Checked;
|
|
if (Item->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << (TAbStoreOption)Item->Tag;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> (TAbStoreOption)Item->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1Change(TObject *Sender)
|
|
{
|
|
char buff[300];
|
|
if (AbZipOutline1->FileName != "") {
|
|
sprintf(buff, "Archive %s contains %d items.",
|
|
AbZipOutline1->FileName.c_str(), AbZipOutline1->Count);
|
|
ArchiveLabel->Caption = buff;
|
|
}
|
|
else
|
|
ArchiveLabel->Caption = "No Archive Open";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Confirmations1Click(TObject *Sender)
|
|
{
|
|
Confirmations1->Checked = !Confirmations1->Checked;
|
|
SpeedButton7->Down = Confirmations1->Checked;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1ConfirmSave(TObject *Sender, bool &Confirm)
|
|
{
|
|
if (Confirmations1->Checked) {
|
|
char buff[300];
|
|
TAbZipOutline* zo = dynamic_cast<TAbZipOutline*>(Sender);
|
|
sprintf(buff, "Save %s?", zo->FileName.c_str());
|
|
Confirm = MessageBox(0, buff,
|
|
"Confirmation", MB_ICONQUESTION | MB_OKCANCEL) == IDOK;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Delete1Click(TObject *Sender)
|
|
{
|
|
if (AbZipOutline1->SelectedZipItem)
|
|
AbZipOutline1->ClearTags();
|
|
AbZipOutline1->SelectedZipItem->Tagged = true;
|
|
try {
|
|
AbZipOutline1->DeleteTaggedItems();
|
|
}
|
|
catch (...) {
|
|
AbZipOutline1->ClearTags();
|
|
return;
|
|
}
|
|
AbZipOutline1->ClearTags();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Extract1Click(TObject *Sender)
|
|
{
|
|
if (AbZipOutline1->SelectedZipItem) {
|
|
TBaseDirDlg* BaseDirDlg = new TBaseDirDlg(Application);
|
|
try {
|
|
BaseDirDlg->Caption = "Extract Selected File";
|
|
BaseDirDlg->Edit1->Text = AbZipOutline1->SelectedZipItem->FileName;
|
|
BaseDirDlg->Edit1->Enabled = false;
|
|
BaseDirDlg->ActionLabel->Caption = "Target Directory:";
|
|
if (AbZipOutline1->BaseDirectory != "")
|
|
BaseDirDlg->DLB->Directory = AbZipOutline1->BaseDirectory;
|
|
BaseDirDlg->CheckBox1->Caption = "Restore Path";
|
|
BaseDirDlg->CheckBox1->Checked =
|
|
AbZipOutline1->ExtractOptions.Contains(eoRestorePath);
|
|
BaseDirDlg->CheckBox2->Caption = "Create Directories";
|
|
BaseDirDlg->CheckBox2->Checked =
|
|
AbZipOutline1->ExtractOptions.Contains(eoCreateDirs);
|
|
BaseDirDlg->ShowModal();
|
|
if (BaseDirDlg->ModalResult == mrOk) {
|
|
AbZipOutline1->BaseDirectory = BaseDirDlg->DirLabel->Caption;
|
|
if (BaseDirDlg->CheckBox1->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoRestorePath;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoRestorePath;
|
|
if (BaseDirDlg->CheckBox2->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoCreateDirs;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoCreateDirs;
|
|
AbZipOutline1->ClearTags();
|
|
AbZipOutline1->SelectedZipItem->Tagged = true;
|
|
try {
|
|
AbZipOutline1->ExtractTaggedItems();
|
|
}
|
|
catch (...) {
|
|
AbZipOutline1->ClearTags();
|
|
}
|
|
AbZipOutline1->ClearTags();
|
|
FileListBox1->Update();
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete BaseDirDlg;
|
|
return;
|
|
}
|
|
delete BaseDirDlg;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Freshen1Click(TObject *Sender)
|
|
{
|
|
if (AbZipOutline1->SelectedZipItem) {
|
|
BaseDirDlg = new TBaseDirDlg(Application);
|
|
try {
|
|
BaseDirDlg->Caption = "Freshen Selected File";
|
|
BaseDirDlg->Edit1->Text = AbZipOutline1->SelectedZipItem->FileName;
|
|
BaseDirDlg->Edit1->Enabled = false;
|
|
BaseDirDlg->ActionLabel->Caption = "Source Directory:";
|
|
if (AbZipOutline1->BaseDirectory != "")
|
|
BaseDirDlg->DLB->Directory = AbZipOutline1->BaseDirectory;
|
|
BaseDirDlg->CheckBox1->Caption = "Recurse";
|
|
BaseDirDlg->CheckBox1->Checked =
|
|
AbZipOutline1->StoreOptions.Contains(soRecurse);
|
|
BaseDirDlg->CheckBox2->Caption = "Strip Path";
|
|
BaseDirDlg->CheckBox2->Checked
|
|
= AbZipOutline1->StoreOptions.Contains(soStripPath);
|
|
|
|
BaseDirDlg->ShowModal();
|
|
if (BaseDirDlg->ModalResult == mrOk) {
|
|
if (BaseDirDlg->CheckBox1->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soRecurse;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soRecurse;
|
|
if (BaseDirDlg->CheckBox2->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soStripPath;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soStripPath;
|
|
AbZipOutline1->BaseDirectory = BaseDirDlg->DirLabel->Caption;
|
|
|
|
AbZipOutline1->ClearTags();
|
|
AbZipOutline1->SelectedZipItem->Tagged = true;
|
|
try {
|
|
AbZipOutline1->FreshenTaggedItems();
|
|
}
|
|
catch (...) {
|
|
AbZipOutline1->ClearTags();
|
|
}
|
|
AbZipOutline1->ClearTags();
|
|
FileListBox1->Update();
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete BaseDirDlg;
|
|
return;
|
|
}
|
|
delete BaseDirDlg;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Move1Click(TObject *Sender)
|
|
{
|
|
TDemoDlg* DemoDlg = new TDemoDlg(Application);
|
|
try {
|
|
DemoDlg->Caption = "Move File to New Path";
|
|
DemoDlg->Edit1->Text = AbZipOutline1->SelectedZipItem->FileName;
|
|
DemoDlg->ShowModal();
|
|
if (ModalResult == mrOk)
|
|
AbZipOutline1->Move(
|
|
AbZipOutline1->SelectedZipItem, DemoDlg->Edit1->Text);
|
|
}
|
|
catch (...) {
|
|
delete DemoDlg;
|
|
return;
|
|
}
|
|
delete DemoDlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Password1Click(TObject *Sender)
|
|
{
|
|
TPassWordDlg* dlg = new TPassWordDlg(Application);
|
|
try {
|
|
dlg->Edit1->Text = AbZipOutline1->Password;
|
|
dlg->ShowModal();
|
|
if (dlg->ModalResult == mrOk)
|
|
AbZipOutline1->Password = dlg->Edit1->Text;
|
|
}
|
|
catch (...) {
|
|
delete dlg;
|
|
dlg = 0;
|
|
}
|
|
delete dlg;
|
|
if (AbZipOutline1->Password.Length() > 0)
|
|
Image1->Visible = true;
|
|
else
|
|
Image1->Visible = false;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AddFiles1Click(TObject *Sender)
|
|
{
|
|
TBaseDirDlg* BaseDirDlg = new TBaseDirDlg(Application);
|
|
try {
|
|
BaseDirDlg->Caption = "Add Files with FileMask";
|
|
BaseDirDlg->Edit1->Text = "*.*";
|
|
BaseDirDlg->ActionLabel->Caption = "Source Directory";
|
|
BaseDirDlg->CheckBox1->Caption = "Recurse";
|
|
BaseDirDlg->CheckBox1->Checked =
|
|
AbZipOutline1->StoreOptions.Contains(soRecurse);
|
|
BaseDirDlg->CheckBox2->Caption = "Strip Path";
|
|
BaseDirDlg->CheckBox2->Checked =
|
|
AbZipOutline1->StoreOptions.Contains(soStripPath);
|
|
|
|
if (AbZipOutline1->BaseDirectory != "")
|
|
BaseDirDlg->DLB->Directory = AbZipOutline1->BaseDirectory;
|
|
|
|
BaseDirDlg->ShowModal();
|
|
if (BaseDirDlg->ModalResult == mrOk) {
|
|
if (BaseDirDlg->CheckBox1->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soRecurse;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soRecurse;
|
|
if (BaseDirDlg->CheckBox2->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soStripPath;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soStripPath;
|
|
AbZipOutline1->BaseDirectory = BaseDirDlg->DirLabel->Caption;
|
|
AbZipOutline1->AddFiles(BaseDirDlg->Edit1->Text, 0);
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete BaseDirDlg;
|
|
return;
|
|
}
|
|
delete BaseDirDlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FreshenFiles1Click(TObject *Sender)
|
|
{
|
|
TBaseDirDlg* BaseDirDlg = new TBaseDirDlg(Application);
|
|
try {
|
|
BaseDirDlg->Caption = "Freshen Files with FileMask";
|
|
BaseDirDlg->Edit1->Text = "*.*";
|
|
BaseDirDlg->ActionLabel->Caption = "Source Directory";
|
|
BaseDirDlg->CheckBox1->Caption = "Recurse";
|
|
BaseDirDlg->CheckBox1->Checked =
|
|
AbZipOutline1->StoreOptions.Contains(soRecurse);
|
|
BaseDirDlg->CheckBox2->Caption = "Strip Path";
|
|
BaseDirDlg->CheckBox2->Checked =
|
|
AbZipOutline1->StoreOptions.Contains(soStripPath);
|
|
if (AbZipOutline1->BaseDirectory != "")
|
|
BaseDirDlg->DLB->Directory = AbZipOutline1->BaseDirectory;
|
|
|
|
BaseDirDlg->ShowModal();
|
|
if (BaseDirDlg->ModalResult == mrOk) {
|
|
if (BaseDirDlg->CheckBox1->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soRecurse;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soRecurse;
|
|
if (BaseDirDlg->CheckBox2->Checked)
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions << soStripPath;
|
|
else
|
|
AbZipOutline1->StoreOptions =
|
|
AbZipOutline1->StoreOptions >> soStripPath;
|
|
AbZipOutline1->BaseDirectory = BaseDirDlg->DirLabel->Caption;
|
|
AbZipOutline1->FreshenFiles(BaseDirDlg->Edit1->Text);
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete BaseDirDlg;
|
|
return;
|
|
}
|
|
delete BaseDirDlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1ArchiveItemProgress(TObject *Sender,
|
|
TAbArchiveItem *Item, BYTE Progress, bool &Abort)
|
|
{
|
|
String MethodStrings[] = { "UnStoring", "UnShrinking",
|
|
"UnReducing", "UnReducing",
|
|
"UnReducing", "UnReducing",
|
|
"Exploding", "DeTokenizing",
|
|
"Inflating", "Enhanced Inflating",
|
|
"DCL Exploding", "Extracting" };
|
|
String ActionString;
|
|
|
|
switch (Item->Action) {
|
|
case aaAdd : ActionString = "Adding "; break;
|
|
case aaFreshen : ActionString = "Freshening "; break;
|
|
default :
|
|
ActionString = MethodStrings[((TAbZipItem*)Item)->CompressionMethod] +
|
|
" ";
|
|
}
|
|
Panel5->Caption = ActionString + Item->FileName + " ";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1NeedPassword(TObject *Sender,
|
|
AnsiString &NewPassword)
|
|
{
|
|
TPassWordDlg* dlg = new TPassWordDlg(Application);
|
|
try {
|
|
dlg->ShowModal();
|
|
if (dlg->ModalResult == mrOk)
|
|
NewPassword = dlg->Edit1->Text;
|
|
}
|
|
catch (...) {
|
|
delete dlg;
|
|
dlg = 0;
|
|
}
|
|
delete dlg;
|
|
if (NewPassword.Length() > 0)
|
|
Image1->Visible = true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::DeleteFiles1Click(TObject *Sender)
|
|
{
|
|
TDemoDlg* dlg = new TDemoDlg(Application);
|
|
try {
|
|
dlg->Caption = "Delete Files with FileMask";
|
|
dlg->Edit1->Text = "*.*";
|
|
dlg->ShowModal();
|
|
if (dlg->ModalResult == mrOk)
|
|
AbZipOutline1->DeleteFiles(dlg->Edit1->Text);
|
|
}
|
|
catch (...) {
|
|
delete dlg;
|
|
return;
|
|
}
|
|
delete dlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::ExtractFiles1Click(TObject *Sender)
|
|
{
|
|
TBaseDirDlg* BaseDirDlg = new TBaseDirDlg(Application);
|
|
try {
|
|
BaseDirDlg->Caption = "Extract Files with FileMask";
|
|
BaseDirDlg->Edit1->Text = "*.*";
|
|
BaseDirDlg->ActionLabel->Caption = "Target Directory:";
|
|
if (AbZipOutline1->BaseDirectory != "")
|
|
BaseDirDlg->DLB->Directory = AbZipOutline1->BaseDirectory;
|
|
BaseDirDlg->CheckBox1->Caption = "Restore Path";
|
|
BaseDirDlg->CheckBox1->Checked =
|
|
AbZipOutline1->ExtractOptions.Contains(eoRestorePath);
|
|
BaseDirDlg->CheckBox2->Caption = "Create Directories";
|
|
BaseDirDlg->CheckBox2->Checked =
|
|
AbZipOutline1->ExtractOptions.Contains(eoCreateDirs);
|
|
BaseDirDlg->ShowModal();
|
|
if (BaseDirDlg->ModalResult == mrOk) {
|
|
AbZipOutline1->BaseDirectory = BaseDirDlg->DirLabel->Caption;
|
|
if (BaseDirDlg->CheckBox1->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoRestorePath;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoRestorePath;
|
|
if (BaseDirDlg->CheckBox2->Checked)
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions << eoCreateDirs;
|
|
else
|
|
AbZipOutline1->ExtractOptions =
|
|
AbZipOutline1->ExtractOptions >> eoCreateDirs;
|
|
AbZipOutline1->ExtractFiles(BaseDirDlg->Edit1->Text);
|
|
FileListBox1->Update();
|
|
}
|
|
}
|
|
catch (...) {
|
|
delete BaseDirDlg;
|
|
return;
|
|
}
|
|
delete BaseDirDlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FormDestroy(TObject *Sender)
|
|
{
|
|
AbZipOutline1->Save();
|
|
SaveIniSettings();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Close1Click(TObject *Sender)
|
|
{
|
|
AbZipOutline1->FileName = "";
|
|
AbZipOutline1->Color = clBtnFace;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1Load(TObject *Sender)
|
|
{
|
|
AbZipOutline1->Color = clWindow;
|
|
SetCaption();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Convert1Click(TObject *Sender)
|
|
{
|
|
String ZipName;
|
|
String ExeName;
|
|
String StubSpec;
|
|
AbZipOutline1->Save();
|
|
ZipName = ExpandFileName(AbZipOutline1->FileName);
|
|
AbZipOutline1->FileName = "";
|
|
|
|
ExeName = ChangeFileExt(ZipName, ".EXE");
|
|
StubSpec = ExtractFilePath(Application->ExeName) + StubName;
|
|
|
|
TStream* StubStream =
|
|
new TFileStream(StubSpec, fmOpenRead | fmShareDenyWrite);
|
|
TStream* ZipStream =
|
|
new TFileStream(ZipName , fmOpenRead | fmShareDenyWrite);
|
|
TStream* SelfExtractingStream =
|
|
new TFileStream(ExeName, fmCreate | fmShareExclusive);
|
|
try {
|
|
MakeSelfExtracting(StubStream, ZipStream, SelfExtractingStream);
|
|
}
|
|
catch (...) {
|
|
delete SelfExtractingStream;
|
|
delete StubStream;
|
|
delete ZipStream;
|
|
AbZipOutline1->FileName = ExeName;
|
|
}
|
|
delete SelfExtractingStream;
|
|
delete StubStream;
|
|
delete ZipStream;
|
|
// and reload...
|
|
AbZipOutline1->FileName = ExeName;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1ConfirmOverwrite(AnsiString &Name,
|
|
bool &Confirm)
|
|
{
|
|
char buff[300];
|
|
sprintf(buff, "Overwrite %s?", Name.c_str());
|
|
Confirm = MessageBox(0, buff, "Confirmation",
|
|
MB_ICONQUESTION | MB_OKCANCEL) == IDOK;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Default1Click(TObject *Sender)
|
|
{
|
|
AbZipOutline1->Attributes = TAbZipAttributes() <<
|
|
zaCompressedSize << zaCompressionMethod << zaCompressionRatio <<
|
|
zaCRC << zaExternalFileAttributes << zaEncryption <<
|
|
zaTimeStamp << zaUncompressedSize;
|
|
for (int i=0;i<zaComment;i++)
|
|
Attributes1->Items[i]->Checked =
|
|
AbZipOutline1->Attributes.Contains((TAbZipAttribute)i);
|
|
AbZipOutline1->Update();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Contents1Click(TObject *Sender)
|
|
{
|
|
Application->HelpCommand(HELP_CONTENTS, 0);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::About1Click(TObject *Sender)
|
|
{
|
|
TdlgAboutBox* dlg = new TdlgAboutBox(this);
|
|
dlg->ShowModal();
|
|
delete dlg;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)
|
|
{
|
|
if (AbZipOutline1->FileName == "")
|
|
try {
|
|
AbZipOutline1->FileName =
|
|
FileListBox1->Items->Strings[FileListBox1->ItemIndex];
|
|
}
|
|
catch (...) {
|
|
AbZipOutline1->FileName = "";
|
|
}
|
|
else {
|
|
TAbZipBrowser* Browser = new TAbZipBrowser(this);
|
|
bool OK = true;
|
|
try {
|
|
Browser->FileName =
|
|
FileListBox1->Items->Strings[FileListBox1->ItemIndex];
|
|
}
|
|
catch (...) {
|
|
OK = false;
|
|
delete Browser;
|
|
Browser = 0;
|
|
}
|
|
delete Browser;
|
|
if (OK)
|
|
AbZipOutline1->FileName =
|
|
FileListBox1->Items->Strings[FileListBox1->ItemIndex];
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1EndDrag(TObject *Sender, TObject *Target,
|
|
int X, int Y)
|
|
{
|
|
FileListBox1->Update();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FileListBox1MouseDown(TObject *Sender,
|
|
TMouseButton Button, TShiftState Shift, int X, int Y)
|
|
{
|
|
if (Button == mbLeft) {
|
|
FileX = X;
|
|
FileY = Y;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FileListBox1MouseMove(TObject *Sender,
|
|
TShiftState Shift, int X, int Y)
|
|
{
|
|
if (Shift.Contains(ssLeft))
|
|
if (((X - FileX) * (X - FileX) +
|
|
(Y - FileY) * (Y - FileY) > 100))
|
|
if (FileListBox1->SelCount > 0)
|
|
if (!FileListBox1->Dragging())
|
|
#if __BCPLUSPLUS__==0x0530
|
|
FileListBox1->BeginDrag(true);
|
|
#else
|
|
FileListBox1->BeginDrag(true, 0);
|
|
#endif
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1MouseMove(TObject *Sender,
|
|
TShiftState Shift, int X, int Y)
|
|
{
|
|
if (Shift.Contains(ssLeft))
|
|
if (((X - OutlineX) * (X - OutlineX) +
|
|
(Y - OutlineY) * (Y - OutlineY) > 100))
|
|
if (AbZipOutline1->SelectedZipItem != NULL)
|
|
if (!FileListBox1->Dragging())
|
|
#if __BCPLUSPLUS__==0x0530
|
|
AbZipOutline1->BeginDrag(true);
|
|
#else
|
|
AbZipOutline1->BeginDrag(true, 0);
|
|
#endif
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::Edit1Exit(TObject *Sender)
|
|
{
|
|
FileListBox1->ApplyFilePath(Edit1->Text);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
|
|
{
|
|
if (Key == VK_RETURN)
|
|
Edit1Exit(this);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::OS5Click(TObject *Sender)
|
|
{
|
|
TMenuItem* Item = dynamic_cast<TMenuItem*>(Sender);
|
|
OS1->Checked = false;
|
|
OS2->Checked = false;
|
|
OS3->Checked = false;
|
|
OS4->Checked = false;
|
|
OS5->Checked = false;
|
|
OS6->Checked = false;
|
|
Item->Checked = true;
|
|
// AbZipOutline1->OutlineStyle = (TOutlineStyle)Item->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1ConfirmProcessItem(TObject *Sender,
|
|
TAbArchiveItem *Item, TAbProcessType ProcessType, bool &Confirm)
|
|
{
|
|
String Process;
|
|
Confirm = true;
|
|
switch (ProcessType) {
|
|
case ptAdd : Process = "Add"; break;
|
|
case ptDelete : Process = "Delete"; break;
|
|
case ptExtract : Process = "Extract"; break;
|
|
case ptFreshen : Process = "Freshen"; break;
|
|
case ptMove : Process = "Move"; break;
|
|
}
|
|
DoConfirm(Sender, Item, Confirm, Process);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbZipOutline1ProcessItemFailure(TObject *Sender,
|
|
TAbArchiveItem *Item, const TAbProcessType ProcessType,
|
|
TAbErrorClass ErrorClass, int ErrorCode)
|
|
{
|
|
TAbZipOutline* zo = dynamic_cast<TAbZipOutline*>(Sender);
|
|
switch (ProcessType) {
|
|
case ptAdd : {
|
|
ShowMessage("Cannot add "
|
|
+ Item->FileName + " to " + zo->FileName);
|
|
break;
|
|
}
|
|
case ptExtract : {
|
|
ShowMessage("Cannot extract "
|
|
+ Item->FileName + " from " + zo->FileName);
|
|
break;
|
|
}
|
|
case ptFreshen :
|
|
ShowMessage("Cannot freshen "
|
|
+ Item->FileName + " in " + zo->FileName);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::TurboPowerontheWeb1Click(TObject *Sender)
|
|
{
|
|
if ((int)ShellExecute(0, "open",
|
|
"http://www.turbopower.com", "", "", SW_SHOWNORMAL) <= 32)
|
|
ShowMessage("Unable to start web browser. "
|
|
"Make sure you have it properly set up on your system.");
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::AbbreviaontheWeb1Click(TObject *Sender)
|
|
{
|
|
if ((int)ShellExecute(0, "open",
|
|
"http://www.turbopower.com/products/abbrevia", "", "", SW_SHOWNORMAL) <= 32)
|
|
ShowMessage("Unable to start web browser. "
|
|
"Make sure you have it properly set up on your system.");
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TForm1::SendmailtoTurboPower1Click(TObject *Sender)
|
|
{
|
|
if ((int)ShellExecute(0, "open",
|
|
"mailto:info@turbopower.com", "", "", SW_SHOWNORMAL) <= 32)
|
|
ShowMessage("Unable to start web browser. "
|
|
"Make sure you have it properly set up on your system.");
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
|