diff options
Diffstat (limited to 'plugins/ImportTXT/importtxt.dpr')
-rw-r--r-- | plugins/ImportTXT/importtxt.dpr | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/plugins/ImportTXT/importtxt.dpr b/plugins/ImportTXT/importtxt.dpr new file mode 100644 index 0000000000..c7a1ab303b --- /dev/null +++ b/plugins/ImportTXT/importtxt.dpr @@ -0,0 +1,202 @@ +(*
+ ImportTXT plugin for Miranda IM: the free IM client for Microsoft* Windows*
+
+ Copyright (Ñ) 2008 Abyss
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*)
+
+{$IMAGEBASE $2080000}
+library importtxt;
+
+uses
+ m_api,
+ Windows,
+ General,
+ ImportTxtDlg,
+ ImportTxtWiz;
+
+{$R imptxt_ver.res}
+{$include m_helpers.inc}
+
+
+const
+ PluginInfo:TPLUGININFOEX=(
+ cbSize :sizeof(TPLUGININFOEX);
+ shortName :'Import TXT';
+ version :$0000010A;
+ description:'Imports history saved in TXT files from other clients.';
+ author :'Abyss';
+ authorEmail:'abyss.andrey@gmail.com';
+ copyright :'(C)2008 Abyss';
+ homepage :'none';
+ flags :UNICODE_AWARE;
+ replacesDefaultModule:0;
+ uuid:'{6F376B33-D3F4-4c4f-A96B-77DA08043B06}';
+ );
+
+// Updater compatibility data
+const
+ VersionURL = 'http://abyss.web.ur.ru/itxt_ver.htm';
+ VersionPrefix = 'Current version: ';
+ UpdateURL = 'http://abyss.web.ur.ru/importtxt.zip';
+ BetaVersionURL = nil;
+ BetaVersionPrefix = nil;
+ BetaUpdateURL = nil;
+ BetaChangelogURL = nil;
+
+var
+ PluginInterfaces:array [0..1] of MUUID;
+ hwndWizard:HWND;
+ hwndDialog:HWND;
+ //Services
+ SrvITxt,SrvIWiz:Cardinal;
+ //hooks
+ onLoadHook:Cardinal;
+ onAccChangHook:Cardinal;
+
+function MirandaPluginInfo(mirandaVersion:DWORD):PPLUGININFOEX; cdecl;
+begin
+ MirVers:=mirandaVersion;
+ result:=@PluginInfo;
+ //PluginInfo.cbSize:=SizeOf(TPLUGININFO);
+end;
+
+function MirandaPluginInfoEx(mirandaVersion:DWORD):PPLUGININFOEX; cdecl;
+begin
+ MirVers:=mirandaVersion;
+ result:=@PluginInfo;
+ //PluginInfo.cbSize:=SizeOf(TPLUGININFOEX);
+end;
+
+function ContactMenuCommand(wParam: WPARAM; lParam: LPARAM): Integer; cdecl;
+begin
+ Result := 0;
+ if IsWindow(hwndDialog) then
+ begin
+ SetForegroundWindow(hwndDialog);
+ BringWindowToTop(hwndDialog);
+ end
+ else
+ hwndDialog:=CreateDialogParamW(hInstance,MAKEINTRESOURCEW(IDD_IMPDIALOG),0,@IDMainWndProc, wParam);
+end;
+
+function MainMenuCommand(wParam: WPARAM; lParam: LPARAM): Integer; cdecl;
+begin
+ Result:=0;
+ if (IsWindow(hwndWizard)) then
+ begin
+ SetForegroundWindow(hwndWizard);
+ BringWindowToTop(hwndWizard);
+ end
+ else
+ hwndWizard:=CreateDialogW(hInstance, MAKEINTRESOURCEW(IDD_IMPWIZARD), 0, @WizardDlgProc);
+end;
+
+function OnAccountChanged(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ Result:=0;
+ EnumProtocols;
+ if Assigned(OnAccountListChange) then OnAccountListChange;
+end;
+
+function OnModulesLoaded(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+var upd: TUpdate;
+ buf:array [0..63] of char;
+begin
+ PluginLink^.UnhookEvent(onloadhook);
+ Result:=0;
+ EnumProtocols;
+ // Register in updater
+ if Boolean(PluginLink.ServiceExists(MS_UPDATE_REGISTER)) then
+ begin
+ ZeroMemory(@upd,SizeOf(upd));
+ upd.cpbVersion := SizeOf(upd);
+ upd.szComponentName := PluginInfo.ShortName;;
+ upd.pbVersion := CreateVersionStringPlugin(@pluginInfo,buf);
+ upd.cpbVersion := lstrlen(upd.pbVersion);
+ upd.szUpdateURL := UpdateURL;
+ upd.szVersionURL := VersionURL;
+ upd.pbVersionPrefix := VersionPrefix;
+ upd.cpbVersionPrefix := Length(VersionPrefix);
+ upd.szBetaUpdateURL := BetaUpdateURL;
+ upd.szBetaVersionURL := BetaVersionURL;
+ upd.pbBetaVersionPrefix := BetaVersionPrefix;
+ upd.cpbBetaVersionPrefix := length(upd.pbBetaVersionPrefix);
+ upd.szBetaChangelogURL := BetaChangelogURL;
+ PluginLink.CallService(MS_UPDATE_REGISTER, 0, DWORD(@upd));
+ end;
+ //check for AutoStart
+ if (DBReadByte(0,IMPORT_TXT_MODULE,IMPORT_TXT_AS)=1) and
+ (ProtoCount>0) then
+ begin
+ pluginLink^.CallService(IMPORT_WIZ_SERVICE,0,0);
+ DBWriteByte(0,IMPORT_TXT_MODULE,IMPORT_TXT_AS,0);
+ end;
+end;
+
+
+function Load(link: PPLUGINLINK): int; cdecl;
+var
+ mi: TCListMenuItem;
+begin
+ PLUGINLINK := Pointer(link);
+ IsMirandaUnicode:=fIsMirandaUnicode;
+ cp:=pluginLink^.CallService(MS_LANGPACK_GETCODEPAGE, 0, 0);
+ SrvITxt:=pluginLink^.CreateServiceFunction(IMPORT_TXT_SERVICE, @ContactMenuCommand);
+ SrvIWiz:=pluginLink^.CreateServiceFunction(IMPORT_WIZ_SERVICE, @MainMenuCommand);
+ FillChar(mi, sizeof(mi), 0);
+ mi.cbSize := sizeof(mi);
+ mi.flags := 0;
+ mi.position := 1000090050;
+ mi.hIcon := LoadIcon(hInstance,MAKEINTRESOURCE(IDI_DEFAULT));
+ mi.szName.a := 'Import history';
+ mi.pszService := IMPORT_TXT_SERVICE;
+ mi.pszContactOwner:=nil; //All contacts
+ pluginLink^.CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, int(@mi));
+ mi.position := 500050010;
+ mi.pszService := IMPORT_WIZ_SERVICE;
+ mi.pszContactOwner:=nil;
+ pluginLink^.CallService(MS_CLIST_ADDMAINMENUITEM, 0, int(@mi));
+ onloadhook:=PluginLink^.HookEvent(ME_SYSTEM_MODULESLOADED,@OnModulesLoaded);
+ if MirVers>080000 then onAccChangHook:=pluginLink^.HookEvent(ME_PROTO_ACCLISTCHANGED,@OnAccountChanged);
+ Result := 0;
+end;
+
+function Unload: int; cdecl;
+begin
+ if MirVers>080000 then pluginLink^.UnhookEvent(onAccChangHook);
+ pluginlink^.DestroyServiceFunction(SrvITxt);
+ pluginlink^.DestroyServiceFunction(SrvIWiz);
+ Result := 0;
+end;
+
+function MirandaPluginInterfaces:PMUUID; cdecl;
+begin
+ PluginInterfaces[0]:=PluginInfo.uuid;
+ PluginInterfaces[1]:=MIID_LAST;
+ result:=@PluginInterfaces;
+end;
+
+
+exports
+
+ Load, Unload,
+ MirandaPluginInfo,
+ MirandaPluginInfoEx,
+ MirandaPluginInterfaces;
+
+begin
+end.
|