From 53f77c375515d9082169854b3e39b11a38bd8bca Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 6 Jul 2015 13:04:54 +0200 Subject: [PATCH] v6.0 - GitHub --- .justforgithub | 0 Handwriting program/.justforgithub | 0 .../Handwriting program/.justforgithub | 0 .../Handwriting program/Handwriting.cs | 105 +- .../Properties/.justforgithub | 0 .../Resources/.justforgithub | 0 .../Handwriting program/bin/.justforgithub | 0 .../bin/Debug/.justforgithub | 0 .../Debug/Anya szerint harcoló kínai.bmp | Bin 6235 -> 0 bytes .../bin/Debug/Handwriting program.dll | Bin 20480 -> 20480 bytes .../bin/Debug/Handwriting program.pdb | Bin 40448 -> 40448 bytes .../bin/Release/.justforgithub | 0 .../bin/Release/Handwriting program.dll | Bin 0 -> 19968 bytes .../Release/Handwriting program.dll.config | 6 + .../bin/Release/Handwriting program.pdb | Bin 0 -> 32256 bytes .../Handwriting program/obj/.justforgithub | 0 .../obj/Debug/.justforgithub | 0 .../obj/Debug/Handwriting program.dll | Bin 20480 -> 20480 bytes .../obj/Debug/Handwriting program.pdb | Bin 40448 -> 40448 bytes .../obj/Debug/TempPE/.justforgithub | 0 .../obj/Release/.justforgithub | 0 ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7422 bytes ...riting program.csproj.FileListAbsolute.txt | 9 + ...ting program.csproj.GenerateResource.Cache | Bin 0 -> 1125 bytes .../obj/Release/Handwriting program.dll | Bin 0 -> 19968 bytes .../obj/Release/Handwriting program.pdb | Bin 0 -> 32256 bytes .../Handwriting_program.Form1.resources | Bin 0 -> 180 bytes .../Handwriting_program.Handwriting.resources | Bin 0 -> 180 bytes ...ing_program.Properties.Resources.resources | Bin 0 -> 5278 bytes .../obj/Release/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 0 -> 5120 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 LICENSE | 674 ++++ MSGer.tk/.justforgithub | 0 MSGer.tk/CurrentUser.cs | 94 +- MSGer.tk/ErrorHandling_REMOVE.cs | 35 + MSGer.tk/Forms/.justforgithub | 0 MSGer.tk/Forms/AboutBox1.Designer.cs | 190 + MSGer.tk/Forms/AboutBox1.cs | 130 + MSGer.tk/Forms/AboutBox1.resx | 604 ++++ MSGer.tk/Forms/AddPartner.Designer.cs | 175 + MSGer.tk/Forms/AddPartner.cs | 66 + MSGer.tk/Forms/AddPartner.resx | 120 + MSGer.tk/Forms/BeforeLogin.Designer.cs | 68 + MSGer.tk/Forms/BeforeLogin.cs | 64 + MSGer.tk/Forms/BeforeLogin.resx | 120 + MSGer.tk/Forms/ChatForm.Designer.cs | 49 + MSGer.tk/Forms/ChatForm.cs | 36 + MSGer.tk/Forms/ChatForm.resx | 120 + MSGer.tk/Forms/ChatPanel.Designer.cs | 349 ++ MSGer.tk/Forms/ChatPanel.cs | 423 +++ MSGer.tk/Forms/ChatPanel.resx | 162 + MSGer.tk/Forms/Emoticons.Designer.cs | 213 ++ MSGer.tk/Forms/Emoticons.cs | 212 ++ MSGer.tk/Forms/Emoticons.resx | 123 + MSGer.tk/Forms/ErrorHandler.Designer.cs | 131 + MSGer.tk/Forms/ErrorHandler.cs | 145 + MSGer.tk/Forms/ErrorHandler.resx | 120 + MSGer.tk/Forms/FloatingChatIcon.Designer.cs | 74 + MSGer.tk/Forms/FloatingChatIcon.cs | 53 + MSGer.tk/Forms/FloatingChatIcon.resx | 120 + MSGer.tk/Forms/InvitePartner.Designer.cs | 176 + MSGer.tk/Forms/InvitePartner.cs | 75 + MSGer.tk/Forms/InvitePartner.resx | 120 + MSGer.tk/Forms/LoginForm.Designer.cs | 202 ++ MSGer.tk/Forms/LoginForm.LoginUser.cs | 171 + .../LoginForm.RegistrationForm.Designer.cs | 176 + MSGer.tk/Forms/LoginForm.RegistrationForm.cs | 72 + .../Forms/LoginForm.RegistrationForm.resx | 120 + MSGer.tk/Forms/LoginForm.cs | 176 + MSGer.tk/Forms/LoginForm.resx | 125 + MSGer.tk/Forms/MainForm.Designer.cs | 945 +++++ MSGer.tk/Forms/MainForm.Events.cs | 306 ++ MSGer.tk/Forms/MainForm.cs | 462 +++ MSGer.tk/Forms/MainForm.resx | 142 + MSGer.tk/Forms/Notifier.Designer.cs | 99 + MSGer.tk/Forms/Notifier.cs | 68 + MSGer.tk/Forms/Notifier.resx | 120 + MSGer.tk/Forms/PartnerInformation.Designer.cs | 182 + MSGer.tk/Forms/PartnerInformation.cs | 41 + MSGer.tk/Forms/PartnerInformation.resx | 120 + MSGer.tk/Forms/ScripterWindow.Designer.cs | 169 + MSGer.tk/Forms/ScripterWindow.cs | 108 + MSGer.tk/Forms/ScripterWindow.resx | 129 + MSGer.tk/Forms/SelectPartnerForm.Designer.cs | 180 + MSGer.tk/Forms/SelectPartnerForm.cs | 93 + MSGer.tk/Forms/SelectPartnerForm.resx | 120 + MSGer.tk/Forms/SelectShownImage.Designer.cs | 136 + MSGer.tk/Forms/SelectShownImage.cs | 41 + MSGer.tk/Forms/SelectShownImage.resx | 123 + MSGer.tk/Forms/SettingsForm.Designer.cs | 155 + MSGer.tk/Forms/SettingsForm.cs | 112 + MSGer.tk/Forms/SettingsForm.resx | 120 + MSGer.tk/Forms/SettingsPanels/.justforgithub | 0 .../Forms/SettingsPanels/SettingsPanel.cs | 21 + .../SettingsPanelLayout.Designer.cs | 87 + .../SettingsPanels/SettingsPanelLayout.cs | 44 + .../SettingsPanels/SettingsPanelLayout.resx | 120 + .../SettingsPanelNetwork.Designer.cs | 99 + .../SettingsPanels/SettingsPanelNetwork.cs | 28 + .../SettingsPanels/SettingsPanelNetwork.resx | 120 + .../SettingsPanelPacks.Designer.cs | 86 + .../SettingsPanels/SettingsPanelPacks.cs | 38 + .../SettingsPanels/SettingsPanelPacks.resx | 120 + .../SettingsPanelPersonal.Designer.cs | 152 + .../SettingsPanels/SettingsPanelPersonal.cs | 69 + .../SettingsPanels/SettingsPanelPersonal.resx | 120 + MSGer.tk/Forms/ThemeDesigner.Designer.cs | 217 ++ MSGer.tk/Forms/ThemeDesigner.cs | 185 + MSGer.tk/Forms/ThemeDesigner.resx | 123 + MSGer.tk/Language.cs | 346 +- MSGer.tk/Logging.cs | 4 +- MSGer.tk/MSGer.tk.csproj | 218 +- MSGer.tk/MSGer.tk.sln | 8 +- MSGer.tk/MSGer.tk.v12.suo | Bin 293888 -> 360960 bytes MSGer.tk/Networking/.justforgithub | 0 MSGer.tk/Networking/Networking.CreateParse.cs | 72 + MSGer.tk/Networking/Networking.PacketData.cs | 569 +++ .../Networking/Networking.PacketFormat.cs | 98 + .../Networking/Networking.PacketSender.cs | 171 + MSGer.tk/Networking/Networking.SendRequest.cs | 142 + MSGer.tk/Networking/Networking.SendUpdate.cs | 163 + MSGer.tk/Networking/Networking.Threads.cs | 25 + .../Networking.UpdateListAndChat.cs | 167 + MSGer.tk/Networking/Networking.cs | 82 + MSGer.tk/Packer/.justforgithub | 0 MSGer.tk/Packer/IPackable.cs | 23 + MSGer.tk/Packer/PackManager.cs | 94 + MSGer.tk/Program.cs | 148 +- MSGer.tk/Properties/.justforgithub | 0 MSGer.tk/Properties/AssemblyInfo.cs | 4 +- MSGer.tk/Properties/Resources.Designer.cs | 12 +- MSGer.tk/Properties/Resources.resx | 3 + MSGer.tk/Resources/.justforgithub | 0 MSGer.tk/Resources/noimage.png | Bin 0 -> 5023 bytes MSGer.tk/Resources/tmp/.justforgithub | 0 MSGer.tk/Scripts/.justforgithub | 0 MSGer.tk/Scripts/IScript.cs | 20 + MSGer.tk/Scripts/ScriptInAppDomain.cs | 162 + MSGer.tk/Scripts/ScriptLoader.cs | 87 + MSGer.tk/Storage.cs | 74 +- MSGer.tk/TextBoxHelpers.cs | 116 + MSGer.tk/TextFormat.cs | 147 +- MSGer.tk/Theme/.justforgithub | 0 MSGer.tk/Theme/MSGerToolStripRenderer.cs | 127 + MSGer.tk/Theme/NoImage.cs | 14 + MSGer.tk/Theme/Theme.cs | 165 + MSGer.tk/Theme/ThemeControl.cs | 103 + MSGer.tk/Theme/ThemedForms.Designer.cs | 120 + MSGer.tk/Theme/ThemedForms.cs | 258 ++ MSGer.tk/Theme/ThemedForms.resx | 120 + MSGer.tk/UserInfo.cs | 253 +- MSGer.tk/bin/.justforgithub | 0 MSGer.tk/bin/Debug/.justforgithub | 0 MSGer.tk/bin/Debug/1.db | Bin 760 -> 856 bytes MSGer.tk/bin/Debug/2.db | Bin 440 -> 424 bytes MSGer.tk/bin/Debug/FastColoredTextBox.dll | Bin 0 -> 335872 bytes MSGer.tk/bin/Debug/FastColoredTextBox.xml | 3188 +++++++++++++++++ MSGer.tk/bin/Debug/Handwriting program.dll | Bin 20480 -> 20480 bytes MSGer.tk/bin/Debug/Handwriting program.pdb | Bin 40448 -> 40448 bytes MSGer.tk/bin/Debug/MSGer.tk.exe | Bin 316928 -> 391680 bytes MSGer.tk/bin/Debug/MSGer.tk.pdb | Bin 351744 -> 544256 bytes MSGer.tk/bin/Debug/RichListView.dll | Bin 15872 -> 15872 bytes MSGer.tk/bin/Debug/RichListView.pdb | Bin 40448 -> 40448 bytes MSGer.tk/bin/Debug/SVN/.justforgithub | 0 MSGer.tk/bin/Debug/Updater.exe | Bin 10752 -> 10752 bytes MSGer.tk/bin/Debug/Updater.pdb | Bin 26112 -> 26112 bytes MSGer.tk/bin/Debug/language/.justforgithub | 0 MSGer.tk/bin/Debug/language/en.txt | 139 + MSGer.tk/bin/Debug/language/hu.txt | 139 + MSGer.tk/bin/Debug/languages/.justforgithub | 0 MSGer.tk/bin/Debug/logs/.justforgithub | 0 MSGer.tk/bin/Debug/pictures/.justforgithub | 0 MSGer.tk/bin/Debug/pictures/1.png | Bin 0 -> 515264 bytes MSGer.tk/bin/Debug/program.db | Bin 120 -> 72 bytes .../bin/Debug/scriptloader/.justforgithub | 0 MSGer.tk/bin/Debug/textformat/.justforgithub | 0 MSGer.tk/bin/Debug/textformat/New pack.npack | Bin 0 -> 2260 bytes MSGer.tk/bin/Debug/theme/.justforgithub | 0 MSGer.tk/bin/Release/.justforgithub | 0 MSGer.tk/bin/Release/Handwriting program.dll | Bin 0 -> 19968 bytes MSGer.tk/bin/Release/Handwriting program.pdb | Bin 0 -> 32256 bytes MSGer.tk/bin/Release/MSGer.tk.exe | Bin 260608 -> 347648 bytes MSGer.tk/bin/Release/MSGer.tk.pdb | Bin 196096 -> 431616 bytes MSGer.tk/bin/Release/MSGer.tk.vshost.exe | Bin 24224 -> 23168 bytes MSGer.tk/bin/Release/RichListView.dll | Bin 12800 -> 15360 bytes MSGer.tk/bin/Release/RichListView.pdb | Bin 30208 -> 40448 bytes MSGer.tk/bin/Release/SVN/.justforgithub | 0 MSGer.tk/bin/Release/SVN/SVN Cheat Sheet.htm | 101 + MSGer.tk/bin/Release/SVN/SVN Readme.htm | 105 + MSGer.tk/bin/Release/SVN/SVN Reference.htm | 106 + MSGer.tk/bin/Release/SVN/intl3_svn.dll | Bin 0 -> 69716 bytes MSGer.tk/bin/Release/SVN/libapr-1.dll | Bin 0 -> 139332 bytes MSGer.tk/bin/Release/SVN/libapriconv-1.dll | Bin 0 -> 36943 bytes MSGer.tk/bin/Release/SVN/libaprutil-1.dll | Bin 0 -> 188493 bytes MSGer.tk/bin/Release/SVN/libdb44.dll | Bin 0 -> 802816 bytes MSGer.tk/bin/Release/SVN/libeay32.dll | Bin 0 -> 1077248 bytes MSGer.tk/bin/Release/SVN/libsasl.dll | Bin 0 -> 77881 bytes MSGer.tk/bin/Release/SVN/libsvn_client-1.dll | Bin 0 -> 208983 bytes MSGer.tk/bin/Release/SVN/libsvn_delta-1.dll | Bin 0 -> 90197 bytes MSGer.tk/bin/Release/SVN/libsvn_diff-1.dll | Bin 0 -> 53331 bytes MSGer.tk/bin/Release/SVN/libsvn_fs-1.dll | Bin 0 -> 237647 bytes MSGer.tk/bin/Release/SVN/libsvn_ra-1.dll | Bin 0 -> 516175 bytes MSGer.tk/bin/Release/SVN/libsvn_repos-1.dll | Bin 0 -> 143445 bytes MSGer.tk/bin/Release/SVN/libsvn_subr-1.dll | Bin 0 -> 720979 bytes MSGer.tk/bin/Release/SVN/libsvn_wc-1.dll | Bin 0 -> 221263 bytes MSGer.tk/bin/Release/SVN/openssl.exe | Bin 0 -> 331776 bytes MSGer.tk/bin/Release/SVN/pluginviewer.exe | Bin 0 -> 16448 bytes MSGer.tk/bin/Release/SVN/saslANONYMOUS.dll | Bin 0 -> 28739 bytes MSGer.tk/bin/Release/SVN/saslCRAMMD5.dll | Bin 0 -> 32833 bytes MSGer.tk/bin/Release/SVN/saslDIGESTMD5.dll | Bin 0 -> 53315 bytes MSGer.tk/bin/Release/SVN/saslLOGIN.dll | Bin 0 -> 32831 bytes MSGer.tk/bin/Release/SVN/saslNTLM.dll | Bin 0 -> 41022 bytes MSGer.tk/bin/Release/SVN/saslPLAIN.dll | Bin 0 -> 32831 bytes MSGer.tk/bin/Release/SVN/saslSASLDB.dll | Bin 0 -> 712768 bytes MSGer.tk/bin/Release/SVN/sasldblistusers2.exe | Bin 0 -> 16452 bytes MSGer.tk/bin/Release/SVN/saslpasswd2.exe | Bin 0 -> 16447 bytes MSGer.tk/bin/Release/SVN/ssleay32.dll | Bin 0 -> 221184 bytes .../SVN/svn-populate-node-origins-index.exe | Bin 0 -> 16480 bytes MSGer.tk/bin/Release/SVN/svn-push.exe | Bin 0 -> 16468 bytes MSGer.tk/bin/Release/SVN/svn.exe | Bin 0 -> 159809 bytes MSGer.tk/bin/Release/SVN/svnadmin.exe | Bin 0 -> 61515 bytes .../bin/Release/SVN/svnauthz-validate.exe | Bin 0 -> 28754 bytes MSGer.tk/bin/Release/SVN/svndumpfilter.exe | Bin 0 -> 41045 bytes MSGer.tk/bin/Release/SVN/svnlook.exe | Bin 0 -> 57417 bytes MSGer.tk/bin/Release/SVN/svnmucc.exe | Bin 0 -> 24656 bytes MSGer.tk/bin/Release/SVN/svnserve.exe | Bin 0 -> 114763 bytes MSGer.tk/bin/Release/SVN/svnsync.exe | Bin 0 -> 49225 bytes MSGer.tk/bin/Release/SVN/svnversion.exe | Bin 0 -> 28751 bytes MSGer.tk/bin/Release/Updater.exe | Bin 0 -> 10752 bytes MSGer.tk/bin/Release/Updater.exe.config | 6 + MSGer.tk/bin/Release/Updater.pdb | Bin 0 -> 22016 bytes MSGer.tk/bin/Release/language/.justforgithub | 0 MSGer.tk/bin/Release/languages/.justforgithub | 0 MSGer.tk/bin/Release/program.db | Bin 0 -> 40 bytes .../bin/Release/scriptloader/.justforgithub | 0 .../bin/Release/textformat/.justforgithub | 0 MSGer.tk/bin/Release/theme/.justforgithub | 0 MSGer.tk/obj/.justforgithub | 0 MSGer.tk/obj/Debug/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 88936 -> 100375 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 8422 -> 8712 bytes MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll | Bin 7680 -> 7680 bytes .../obj/Debug/MSGer.tk.ChatPanel.resources | Bin 180 -> 2120 bytes .../obj/Debug/MSGer.tk.Emoticons.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ErrorHandler.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.FloatingChatIcon.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 44727 -> 49940 bytes .../Debug/MSGer.tk.ScripterWindow.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.SelectShownImage.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelLayout.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelNetwork.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPacks.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPersonal.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.ThemeDesigner.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 12 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 1969 -> 2902 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 20453 -> 24824 bytes MSGer.tk/obj/Debug/MSGer.tk.exe | Bin 316928 -> 391680 bytes MSGer.tk/obj/Debug/MSGer.tk.pdb | Bin 351744 -> 544256 bytes MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 5120 -> 5120 bytes MSGer.tk/obj/Release/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 28620 -> 56771 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 8272 -> 8522 bytes MSGer.tk/obj/Release/Interop.NATUPNPLib.dll | Bin 0 -> 7680 bytes .../Release/MSGer.tk.BeforeLogin.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.ChatPanel.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ErrorHandler.resources | Bin 0 -> 180 bytes .../MSGer.tk.FloatingChatIcon.resources | Bin 0 -> 180 bytes .../MSGer.tk.Forms.SelectShownImage.resources | Bin 0 -> 180 bytes .../MSGer.tk.PartnerInformation.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 44727 -> 49940 bytes .../Release/MSGer.tk.ScripterWindow.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelLayout.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelNetwork.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPacks.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPersonal.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ThemeDesigner.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ThemedForms.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 38 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 1708 -> 2801 bytes .../MSGer.tk.csproj.ResolveComReference.cache | Bin 0 -> 739 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 17061 -> 24431 bytes MSGer.tk/obj/Release/MSGer.tk.exe | Bin 260608 -> 347648 bytes MSGer.tk/obj/Release/MSGer.tk.pdb | Bin 196096 -> 431616 bytes MSGer.tk/obj/Release/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 6656 -> 5120 bytes MSGer.tk/packages.config | 4 + MSGer.tk/packages/.justforgithub | 0 .../packages/FCTB.2.16.11.0/.justforgithub | 0 .../FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg | Bin 0 -> 143186 bytes .../FCTB.2.16.11.0/lib/.justforgithub | 0 .../FCTB.2.16.11.0/lib/FastColoredTextBox.dll | Bin 0 -> 335872 bytes .../FCTB.2.16.11.0/lib/FastColoredTextBox.xml | 3188 +++++++++++++++++ MSGer.tk/packages/repositories.config | 4 + MSGerTextBox/.justforgithub | 0 MSGerTextBox/App.config | 6 + MSGerTextBox/Diff.cs | 537 +++ MSGerTextBox/Form1.Designer.cs | 72 + MSGerTextBox/Form1.cs | 26 + MSGerTextBox/Form1.resx | 120 + MSGerTextBox/MSGerTextBox.Designer.cs | 60 + MSGerTextBox/MSGerTextBox.cs | 290 ++ MSGerTextBox/MSGerTextBox.csproj | 98 + MSGerTextBox/MSGerTextBox.resx | 120 + MSGerTextBox/Program.cs | 22 + MSGerTextBox/Properties/.justforgithub | 0 MSGerTextBox/Properties/AssemblyInfo.cs | 36 + MSGerTextBox/Properties/Resources.Designer.cs | 71 + MSGerTextBox/Properties/Resources.resx | 117 + MSGerTextBox/Properties/Settings.Designer.cs | 30 + MSGerTextBox/Properties/Settings.settings | 7 + MSGerTextBox/bin/.justforgithub | 0 MSGerTextBox/bin/Debug/.justforgithub | 0 MSGerTextBox/bin/Debug/MSGerTextBox.exe | Bin 0 -> 17920 bytes .../bin/Debug/MSGerTextBox.exe.config | 6 + MSGerTextBox/bin/Debug/MSGerTextBox.pdb | Bin 0 -> 44544 bytes .../bin/Debug/MSGerTextBox.vshost.exe | Bin 0 -> 23168 bytes .../bin/Debug/MSGerTextBox.vshost.exe.config | 6 + .../Debug/MSGerTextBox.vshost.exe.manifest | 11 + MSGerTextBox/obj/.justforgithub | 0 MSGerTextBox/obj/Debug/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 7537 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7067 bytes ...SGerTextBox.Properties.Resources.resources | Bin 0 -> 180 bytes .../MSGerTextBox.csproj.FileListAbsolute.txt | 10 + ...MSGerTextBox.csproj.GenerateResource.Cache | Bin 0 -> 1042 bytes ...xtBox.csprojResolveAssemblyReference.cache | Bin 0 -> 2211 bytes MSGerTextBox/obj/Debug/MSGerTextBox.exe | Bin 0 -> 17920 bytes MSGerTextBox/obj/Debug/MSGerTextBox.pdb | Bin 0 -> 44544 bytes .../SzNPProjects.TextBox.Form1.resources | Bin 0 -> 180 bytes ...zNPProjects.TextBox.MSGerTextBox.resources | Bin 0 -> 180 bytes MSGerTextBox/obj/Debug/TempPE/.justforgithub | 0 ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 RichListView/.justforgithub | 0 RichListView/0 Versions/.justforgithub | 0 .../2014.05.09.-2014.05.11/.justforgithub | 0 .../RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 .../RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Release/.justforgithub | 0 .../RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 .../Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 .../Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../2014.05.11.-2014.05.13/.justforgithub | 0 .../RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 .../RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Release/.justforgithub | 0 .../RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 .../Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 .../Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../.justforgithub | 0 .../RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 .../RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Release/.justforgithub | 0 .../RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 .../Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 .../Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../2014.08.16. - v1.2/.justforgithub | 0 .../RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 .../RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Release/.justforgithub | 0 .../RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../RichListView/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 .../Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 .../Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 .../Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 RichListView/0 Versions/v1.1/.justforgithub | 0 .../v1.1/RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 .../v1.1/RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Release/.justforgithub | 0 .../v1.1/RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../v1.1/Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 .../v1.1/Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 .../v1.1/Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 RichListView/RichListView/.justforgithub | 0 .../RichListView/Properties/.justforgithub | 0 RichListView/RichListView/RichListView.cs | 4 +- RichListView/RichListView/RichListViewItem.cs | 4 +- RichListView/RichListView/bin/.justforgithub | 0 .../RichListView/bin/Debug/.justforgithub | 0 .../RichListView/bin/Debug/RichListView.dll | Bin 15872 -> 15872 bytes .../RichListView/bin/Debug/RichListView.pdb | Bin 40448 -> 40448 bytes .../RichListView/bin/Release/.justforgithub | 0 .../RichListView/bin/Release/RichListView.dll | Bin 12800 -> 15360 bytes .../RichListView/bin/Release/RichListView.pdb | Bin 30208 -> 40448 bytes RichListView/RichListView/obj/.justforgithub | 0 .../RichListView/obj/Debug/.justforgithub | 0 .../RichListView/obj/Debug/RichListView.dll | Bin 15872 -> 15872 bytes .../RichListView/obj/Debug/RichListView.pdb | Bin 40448 -> 40448 bytes .../obj/Debug/TempPE/.justforgithub | 0 .../RichListView/obj/Release/.justforgithub | 0 ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6882 -> 6937 bytes .../RichListView.csproj.FileListAbsolute.txt | 8 + ...RichListView.csproj.GenerateResource.Cache | Bin 911 -> 911 bytes ...tView.csprojResolveAssemblyReference.cache | Bin 0 -> 7446 bytes .../RichListView/obj/Release/RichListView.dll | Bin 12800 -> 15360 bytes .../RichListView/obj/Release/RichListView.pdb | Bin 30208 -> 40448 bytes .../obj/Release/TempPE/.justforgithub | 0 RichListView/Test Project/.justforgithub | 0 .../Test Project/Properties/.justforgithub | 0 RichListView/Test Project/bin/.justforgithub | 0 .../Test Project/bin/Debug/.justforgithub | 0 .../Test Project/bin/Release/.justforgithub | 0 RichListView/Test Project/obj/.justforgithub | 0 .../Test Project/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 Updater/.justforgithub | 0 Updater/Properties/.justforgithub | 0 Updater/SVN/.justforgithub | 0 Updater/UpdateDialog.Designer.cs | 2 + Updater/bin/.justforgithub | 0 Updater/bin/Debug/.justforgithub | 0 Updater/bin/Debug/SVN/.justforgithub | 0 Updater/bin/Release/.justforgithub | 0 Updater/obj/.justforgithub | 0 Updater/obj/Debug/.justforgithub | 0 Updater/obj/Debug/TempPE/.justforgithub | 0 .../Updater.csproj.GenerateResource.Cache | Bin 984 -> 984 bytes Updater/obj/Debug/Updater.exe | Bin 10752 -> 10752 bytes Updater/obj/Debug/Updater.pdb | Bin 26112 -> 26112 bytes Updater/obj/Release/.justforgithub | 0 ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 10749 bytes Updater/obj/Release/TempPE/.justforgithub | 0 ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../Updater.Properties.Resources.resources | Bin 0 -> 180 bytes .../Release/Updater.UpdateDialog.resources | Bin 0 -> 180 bytes .../Updater.csproj.FileListAbsolute.txt | 51 + .../Updater.csproj.GenerateResource.Cache | Bin 0 -> 984 bytes Updater/obj/Release/Updater.exe | Bin 0 -> 10752 bytes Updater/obj/Release/Updater.pdb | Bin 0 -> 22016 bytes Versions/.justforgithub | 0 Versions/Less Closed Beta/.justforgithub | 0 Versions/Less Closed Beta/v1.0/.justforgithub | 0 .../v1.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v1.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v1.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v2.0/.justforgithub | 0 .../v2.0/Post-Cleanup/.justforgithub | 0 .../Post-Cleanup/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../v2.0/Pre-Cleanup/.justforgithub | 0 .../.justforgithub | 0 .../Properties/.justforgithub | 0 .../Resources/.justforgithub | 0 .../bin/.justforgithub | 0 .../bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../bin/Release/.justforgithub | 0 .../obj/.justforgithub | 0 .../obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v2.1/.justforgithub | 0 .../v2.1/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v2.1/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v2.1/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v2.2/.justforgithub | 0 .../v2.2/MSGer.tk/.justforgithub | 0 .../v2.2/MSGer.tk/Properties/.justforgithub | 0 .../v2.2/MSGer.tk/Resources/.justforgithub | 0 .../v2.2/MSGer.tk/bin/.justforgithub | 0 .../v2.2/MSGer.tk/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../v2.2/MSGer.tk/bin/Release/.justforgithub | 0 .../bin/Release/languages/.justforgithub | 0 .../v2.2/MSGer.tk/obj/.justforgithub | 0 .../v2.2/MSGer.tk/obj/Debug/.justforgithub | 0 .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../v2.2/MSGer.tk/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v3.0/.justforgithub | 0 .../v3.0/MSGer.tk/.justforgithub | 0 .../v3.0/MSGer.tk/Properties/.justforgithub | 0 .../v3.0/MSGer.tk/Resources/.justforgithub | 0 .../v3.0/MSGer.tk/bin/.justforgithub | 0 .../v3.0/MSGer.tk/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../v3.0/MSGer.tk/bin/Release/.justforgithub | 0 .../bin/Release/languages/.justforgithub | 0 .../v3.0/MSGer.tk/obj/.justforgithub | 0 .../v3.0/MSGer.tk/obj/Debug/.justforgithub | 0 .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../v3.0/MSGer.tk/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 .../v3.0/Pre-Cleanup/.justforgithub | 0 .../v3.0/Pre-Cleanup/MSGer.tk/.justforgithub | 0 .../MSGer.tk/Properties/.justforgithub | 0 .../MSGer.tk/Resources/.justforgithub | 0 .../Pre-Cleanup/MSGer.tk/bin/.justforgithub | 0 .../MSGer.tk/bin/Debug/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../MSGer.tk/bin/Release/.justforgithub | 0 .../bin/Release/languages/.justforgithub | 0 .../Pre-Cleanup/MSGer.tk/obj/.justforgithub | 0 .../MSGer.tk/obj/Debug/.justforgithub | 0 .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v4.0/.justforgithub | 0 .../v4.0/MSGer.tk/.justforgithub | 0 .../v4.0/MSGer.tk/Properties/.justforgithub | 0 .../v4.0/MSGer.tk/Resources/.justforgithub | 0 .../MSGer.tk/Resources/tmp/.justforgithub | 0 .../v4.0/MSGer.tk/bin/.justforgithub | 0 .../v4.0/MSGer.tk/bin/Debug/.justforgithub | 0 .../MSGer.tk/bin/Debug/SVN/.justforgithub | 0 .../bin/Debug/languages/.justforgithub | 0 .../MSGer.tk/bin/Debug/logs/.justforgithub | 0 .../v4.0/MSGer.tk/bin/Release/.justforgithub | 0 .../bin/Release/languages/.justforgithub | 0 .../v4.0/MSGer.tk/obj/.justforgithub | 0 .../v4.0/MSGer.tk/obj/Debug/.justforgithub | 0 .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../v4.0/MSGer.tk/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Less Closed Beta/v5.0/.justforgithub | 0 Versions/Less Closed Beta/v5.0/Changelog.txt | 60 + .../v5.0/MSGer.tk/.justforgithub | 0 .../Less Closed Beta/v5.0/MSGer.tk/App.config | 33 + .../v5.0/MSGer.tk/CurrentUser.cs | 227 ++ .../v5.0/MSGer.tk/ErrorHandling.cs | 35 + .../v5.0/MSGer.tk/Forms/.justforgithub | 0 .../v5.0/MSGer.tk/Forms/AboutBox1.Designer.cs | 190 + .../v5.0/MSGer.tk/Forms/AboutBox1.cs | 130 + .../v5.0/MSGer.tk/Forms/AboutBox1.resx | 604 ++++ .../MSGer.tk/Forms/AddPartner.Designer.cs | 175 + .../v5.0/MSGer.tk/Forms/AddPartner.cs | 66 + .../v5.0/MSGer.tk/Forms/AddPartner.resx | 120 + .../MSGer.tk/Forms/BeforeLogin.Designer.cs | 68 + .../v5.0/MSGer.tk/Forms/BeforeLogin.cs | 64 + .../v5.0/MSGer.tk/Forms/BeforeLogin.resx | 120 + .../v5.0/MSGer.tk/Forms/ChatForm.Designer.cs | 49 + .../v5.0/MSGer.tk/Forms/ChatForm.cs | 39 + .../v5.0/MSGer.tk/Forms/ChatForm.resx | 120 + .../v5.0/MSGer.tk/Forms/ChatPanel.Designer.cs | 296 ++ .../v5.0/MSGer.tk/Forms/ChatPanel.cs | 390 ++ .../v5.0/MSGer.tk/Forms/ChatPanel.resx | 126 + .../Forms/FloatingChatIcon.Designer.cs | 74 + .../v5.0/MSGer.tk/Forms/FloatingChatIcon.cs | 74 + .../v5.0/MSGer.tk/Forms/FloatingChatIcon.resx | 120 + .../MSGer.tk/Forms/InvitePartner.Designer.cs | 176 + .../v5.0/MSGer.tk/Forms/InvitePartner.cs | 75 + .../v5.0/MSGer.tk/Forms/InvitePartner.resx | 120 + .../v5.0/MSGer.tk/Forms/LoginForm.Designer.cs | 202 ++ .../MSGer.tk/Forms/LoginForm.LoginUser.cs | 196 + .../LoginForm.RegistrationForm.Designer.cs | 176 + .../Forms/LoginForm.RegistrationForm.cs | 72 + .../Forms/LoginForm.RegistrationForm.resx | 120 + .../v5.0/MSGer.tk/Forms/LoginForm.cs | 212 ++ .../v5.0/MSGer.tk/Forms/LoginForm.resx | 125 + .../v5.0/MSGer.tk/Forms/MainForm.Designer.cs | 922 +++++ .../v5.0/MSGer.tk/Forms/MainForm.Events.cs | 320 ++ .../v5.0/MSGer.tk/Forms/MainForm.cs | 448 +++ .../v5.0/MSGer.tk/Forms/MainForm.resx | 142 + .../v5.0/MSGer.tk/Forms/Notifier.Designer.cs | 99 + .../v5.0/MSGer.tk/Forms/Notifier.cs | 68 + .../v5.0/MSGer.tk/Forms/Notifier.resx | 120 + .../Forms/PartnerInformation.Designer.cs | 182 + .../v5.0/MSGer.tk/Forms/PartnerInformation.cs | 47 + .../MSGer.tk/Forms/PartnerInformation.resx | 120 + .../MSGer.tk/Forms/ScripterWindow.Designer.cs | 169 + .../v5.0/MSGer.tk/Forms/ScripterWindow.cs | 117 + .../v5.0/MSGer.tk/Forms/ScripterWindow.resx | 129 + .../Forms/SelectPartnerForm.Designer.cs | 180 + .../v5.0/MSGer.tk/Forms/SelectPartnerForm.cs | 93 + .../MSGer.tk/Forms/SelectPartnerForm.resx | 120 + .../Forms/SelectShownImage.Designer.cs | 118 + .../v5.0/MSGer.tk/Forms/SelectShownImage.cs | 25 + .../v5.0/MSGer.tk/Forms/SelectShownImage.resx | 120 + .../MSGer.tk/Forms/SettingsForm.Designer.cs | 155 + .../v5.0/MSGer.tk/Forms/SettingsForm.cs | 172 + .../v5.0/MSGer.tk/Forms/SettingsForm.resx | 120 + .../Forms/SettingsPanels/.justforgithub | 0 .../Forms/SettingsPanels/SettingsPanel.cs | 21 + .../SettingsPanelLayout.Designer.cs | 87 + .../SettingsPanels/SettingsPanelLayout.cs | 46 + .../SettingsPanels/SettingsPanelLayout.resx | 120 + .../SettingsPanelNetwork.Designer.cs | 99 + .../SettingsPanels/SettingsPanelNetwork.cs | 28 + .../SettingsPanels/SettingsPanelNetwork.resx | 120 + .../SettingsPanelPacks.Designer.cs | 86 + .../SettingsPanels/SettingsPanelPacks.cs | 38 + .../SettingsPanels/SettingsPanelPacks.resx | 120 + .../SettingsPanelPersonal.Designer.cs | 139 + .../SettingsPanels/SettingsPanelPersonal.cs | 65 + .../SettingsPanels/SettingsPanelPersonal.resx | 120 + .../MSGer.tk/Forms/ThemeDesigner.Designer.cs | 194 + .../v5.0/MSGer.tk/Forms/ThemeDesigner.cs | 54 + .../v5.0/MSGer.tk/Forms/ThemeDesigner.resx | 123 + .../Less Closed Beta/v5.0/MSGer.tk/IScript.cs | 14 + .../v5.0/MSGer.tk/Language.cs | 425 +++ .../Less Closed Beta/v5.0/MSGer.tk/Logging.cs | 49 + .../v5.0/MSGer.tk/MSGer.tk.csproj | 402 +++ .../v5.0/MSGer.tk/MSGer.tk.csproj.user | 13 + .../v5.0/MSGer.tk/MSGer.tk.sln | 45 + .../v5.0/MSGer.tk/MSGer.tk.v11.suo | Bin 0 -> 57344 bytes .../v5.0/MSGer.tk/MSGer.tk.v12.suo | Bin 0 -> 340992 bytes .../v5.0/MSGer.tk/Networking/.justforgithub | 0 .../Networking/Networking.CreateParse.cs | 148 + .../Networking/Networking.PacketData.cs | 427 +++ .../Networking/Networking.PacketFormat.cs | 105 + .../Networking/Networking.PacketSender.cs | 187 + .../Networking/Networking.SendRequest.cs | 152 + .../Networking/Networking.SendUpdate.cs | 163 + .../MSGer.tk/Networking/Networking.Threads.cs | 69 + .../Networking.UpdateListAndChat.cs | 257 ++ .../v5.0/MSGer.tk/Networking/Networking.cs | 122 + .../v5.0/MSGer.tk/ObjectListView.dll | Bin 0 -> 463360 bytes .../v5.0/MSGer.tk/Packer/.justforgithub | 0 .../v5.0/MSGer.tk/Packer/IPackable.cs | 15 + .../v5.0/MSGer.tk/Packer/PackManager.cs | 55 + .../Less Closed Beta/v5.0/MSGer.tk/Program.cs | 296 ++ .../v5.0/MSGer.tk/ProgressStatistic.cs | 357 ++ .../v5.0/MSGer.tk/Properties/.justforgithub | 0 .../v5.0/MSGer.tk/Properties/AssemblyInfo.cs | 36 + .../MSGer.tk/Properties/Resources.Designer.cs | 93 + .../v5.0/MSGer.tk/Properties/Resources.resx | 130 + .../MSGer.tk/Properties/Settings.Designer.cs | 30 + .../MSGer.tk/Properties/Settings.settings | 7 + .../v5.0/MSGer.tk/Resources/.justforgithub | 0 .../Resources/Blue-Wallpaper-HD 2.jpg | Bin 0 -> 35761 bytes .../Resources/Blue-Wallpaper-HD 21.jpg | Bin 0 -> 35761 bytes .../MSGer.tk/Resources/Blue-Wallpaper-HD.jpg | Bin 0 -> 126105 bytes .../MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg | Bin 0 -> 126105 bytes .../v5.0/MSGer.tk/Resources/Keresősáv.jpg | Bin 0 -> 7378 bytes .../v5.0/MSGer.tk/Resources/Menü 2.jpg | Bin 0 -> 708 bytes .../v5.0/MSGer.tk/Resources/Menü 21.jpg | Bin 0 -> 708 bytes .../v5.0/MSGer.tk/Resources/Menü 22.jpg | Bin 0 -> 708 bytes .../v5.0/MSGer.tk/Resources/Menü 3.jpg | Bin 0 -> 1828 bytes .../MSGer.tk/Resources/tmp/.justforgithub | 0 .../MSGer.tk/Resources/tmp/colorpicker.jpg | Bin 0 -> 2232 bytes .../v5.0/MSGer.tk/Resources/tmp/erase.png | Bin 0 -> 1826 bytes .../v5.0/MSGer.tk/Scripts/.justforgithub | 0 .../MSGer.tk/Scripts/ScriptInAppDomain.cs | 168 + .../v5.0/MSGer.tk/Scripts/ScriptLoader.cs | 111 + .../Less Closed Beta/v5.0/MSGer.tk/Storage.cs | 238 ++ .../v5.0/MSGer.tk/StreamHelper.cs | 213 ++ .../v5.0/MSGer.tk/TextFormat.cs | 115 + .../v5.0/MSGer.tk/Theme/.justforgithub | 0 .../MSGer.tk/Theme/MSGerToolStripRenderer.cs | 127 + .../v5.0/MSGer.tk/Theme/Theme.cs | 183 + .../v5.0/MSGer.tk/Theme/ThemeControl.cs | 87 + .../MSGer.tk/Theme/ThemedForms.Designer.cs | 120 + .../v5.0/MSGer.tk/Theme/ThemedForms.cs | 244 ++ .../v5.0/MSGer.tk/Theme/ThemedForms.resx | 120 + .../v5.0/MSGer.tk/UserInfo.cs | 432 +++ .../v5.0/MSGer.tk/bin/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/1.db | Bin 0 -> 1016 bytes .../v5.0/MSGer.tk/bin/Debug/2.db | Bin 0 -> 824 bytes .../bin/Debug/Confused/.justforgithub | 0 .../MSGer.tk/bin/Debug/Confused/MSGer.tk.exe | Bin 0 -> 338432 bytes .../bin/Debug/Confused/RichListView.dll | Bin 0 -> 15872 bytes .../Debug/Confused/language/.justforgithub | 0 .../Confused/scriptloader/.justforgithub | 0 .../Debug/Confused/textformat/.justforgithub | 0 .../bin/Debug/Confused/theme/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/GlacialList.dll | Bin 0 -> 98304 bytes .../v5.0/MSGer.tk/bin/Debug/GlacialList.pdb | Bin 0 -> 206336 bytes .../bin/Debug/Handwriting program.dll | Bin 0 -> 20480 bytes .../bin/Debug/Handwriting program.pdb | Bin 0 -> 40448 bytes .../Debug/Khendys.Controls.ExRichTextBox.dll | Bin 0 -> 24576 bytes .../Debug/Khendys.Controls.ExRichTextBox.pdb | Bin 0 -> 22016 bytes .../v5.0/MSGer.tk/bin/Debug/MSGer.tk.exe | Bin 0 -> 351744 bytes .../Debug/MSGer.tk.exe.CodeAnalysisLog.xml | 28 + .../MSGer.tk/bin/Debug/MSGer.tk.exe.config | 33 + .../v5.0/MSGer.tk/bin/Debug/MSGer.tk.pdb | Bin 0 -> 476672 bytes .../MSGer.tk/bin/Debug/MSGer.tk.vshost.exe | Bin 0 -> 23168 bytes .../bin/Debug/MSGer.tk.vshost.exe.config | 33 + .../v5.0/MSGer.tk/bin/Debug/RichListView.dll | Bin 0 -> 15872 bytes .../v5.0/MSGer.tk/bin/Debug/RichListView.pdb | Bin 0 -> 40448 bytes .../MSGer.tk/bin/Debug/SVN/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/SVN/LICENSE | 270 ++ .../bin/Debug/SVN/SVN Cheat Sheet.htm | 101 + .../MSGer.tk/bin/Debug/SVN/SVN Readme.htm | 105 + .../MSGer.tk/bin/Debug/SVN/SVN Reference.htm | 106 + .../v5.0/MSGer.tk/bin/Debug/SVN/intl3_svn.dll | Bin 0 -> 69716 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/libapr-1.dll | Bin 0 -> 139332 bytes .../MSGer.tk/bin/Debug/SVN/libapriconv-1.dll | Bin 0 -> 36943 bytes .../MSGer.tk/bin/Debug/SVN/libaprutil-1.dll | Bin 0 -> 188493 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/libdb44.dll | Bin 0 -> 802816 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/libeay32.dll | Bin 0 -> 1077248 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/libsasl.dll | Bin 0 -> 77881 bytes .../bin/Debug/SVN/libsvn_client-1.dll | Bin 0 -> 208983 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll | Bin 0 -> 90197 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll | Bin 0 -> 53331 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll | Bin 0 -> 237647 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll | Bin 0 -> 516175 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll | Bin 0 -> 143445 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll | Bin 0 -> 720979 bytes .../MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll | Bin 0 -> 221263 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/openssl.exe | Bin 0 -> 331776 bytes .../MSGer.tk/bin/Debug/SVN/pluginviewer.exe | Bin 0 -> 16448 bytes .../MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll | Bin 0 -> 28739 bytes .../MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll | Bin 0 -> 32833 bytes .../MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll | Bin 0 -> 53315 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll | Bin 0 -> 32831 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/saslNTLM.dll | Bin 0 -> 41022 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll | Bin 0 -> 32831 bytes .../MSGer.tk/bin/Debug/SVN/saslSASLDB.dll | Bin 0 -> 712768 bytes .../bin/Debug/SVN/sasldblistusers2.exe | Bin 0 -> 16452 bytes .../MSGer.tk/bin/Debug/SVN/saslpasswd2.exe | Bin 0 -> 16447 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/ssleay32.dll | Bin 0 -> 221184 bytes .../SVN/svn-populate-node-origins-index.exe | Bin 0 -> 16480 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svn-push.exe | Bin 0 -> 16468 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svn.exe | Bin 0 -> 159809 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svnadmin.exe | Bin 0 -> 61515 bytes .../bin/Debug/SVN/svnauthz-validate.exe | Bin 0 -> 28754 bytes .../MSGer.tk/bin/Debug/SVN/svndumpfilter.exe | Bin 0 -> 41045 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svnlook.exe | Bin 0 -> 57417 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svnmucc.exe | Bin 0 -> 24656 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svnserve.exe | Bin 0 -> 114763 bytes .../v5.0/MSGer.tk/bin/Debug/SVN/svnsync.exe | Bin 0 -> 49225 bytes .../MSGer.tk/bin/Debug/SVN/svnversion.exe | Bin 0 -> 28751 bytes .../v5.0/MSGer.tk/bin/Debug/Updater.exe | Bin 0 -> 10752 bytes .../MSGer.tk/bin/Debug/Updater.exe.config | 6 + .../v5.0/MSGer.tk/bin/Debug/Updater.pdb | Bin 0 -> 26112 bytes .../MSGer.tk/bin/Debug/Updater.vshost.exe | Bin 0 -> 23168 bytes .../bin/Debug/Updater.vshost.exe.config | 6 + .../v5.0/MSGer.tk/bin/Debug/close.bmp | Bin 0 -> 1654 bytes .../bin/Debug/language/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/language/en.txt | 135 + .../v5.0/MSGer.tk/bin/Debug/language/hu.txt | 135 + .../MSGer.tk/bin/Debug/logs/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/logs/network.txt | 486 +++ .../v5.0/MSGer.tk/bin/Debug/noimage.png | Bin 0 -> 5023 bytes .../v5.0/MSGer.tk/bin/Debug/popup-bg.bmp | Bin 0 -> 80054 bytes .../v5.0/MSGer.tk/bin/Debug/program.db | Bin 0 -> 56 bytes .../bin/Debug/scriptloader/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Debug/test.bmp | Bin 0 -> 237 bytes .../v5.0/MSGer.tk/bin/Debug/test.cs | 14 + .../bin/Debug/textformat/.justforgithub | 0 .../MSGer.tk/bin/Debug/textformat/icon2.png | Bin 0 -> 2164 bytes .../MSGer.tk/bin/Debug/textformat/icon2.txt | 1 + .../MSGer.tk/bin/Debug/theme/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Release/.justforgithub | 0 .../v5.0/MSGer.tk/bin/Release/GlacialList.dll | Bin 0 -> 98304 bytes .../v5.0/MSGer.tk/bin/Release/GlacialList.pdb | Bin 0 -> 206336 bytes .../Khendys.Controls.ExRichTextBox.dll | Bin 0 -> 24576 bytes .../Khendys.Controls.ExRichTextBox.pdb | Bin 0 -> 22016 bytes .../v5.0/MSGer.tk/bin/Release/MSGer.exe | Bin 0 -> 620670 bytes .../v5.0/MSGer.tk/bin/Release/MSGer.tk.exe | Bin 0 -> 260608 bytes .../MSGer.tk/bin/Release/MSGer.tk.exe.config | 33 + .../v5.0/MSGer.tk/bin/Release/MSGer.tk.pdb | Bin 0 -> 196096 bytes .../MSGer.tk/bin/Release/MSGer.tk.vshost.exe | Bin 0 -> 24224 bytes .../bin/Release/MSGer.tk.vshost.exe.config | 33 + .../MSGer.tk/bin/Release/RichListView.dll | Bin 0 -> 12800 bytes .../MSGer.tk/bin/Release/RichListView.pdb | Bin 0 -> 30208 bytes .../v5.0/MSGer.tk/bin/Release/close.bmp | Bin 0 -> 1654 bytes .../bin/Release/languages/.justforgithub | 0 .../MSGer.tk/bin/Release/languages/en.txt | 102 + .../MSGer.tk/bin/Release/languages/hu.txt | 102 + .../v5.0/MSGer.tk/bin/Release/noimage.png | Bin 0 -> 5023 bytes .../v5.0/MSGer.tk/bin/Release/popup-bg.bmp | Bin 0 -> 80054 bytes .../v5.0/MSGer.tk/obj/.justforgithub | 0 .../v5.0/MSGer.tk/obj/Debug/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 88936 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 8422 bytes .../MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll | Bin 0 -> 7680 bytes .../MSGer.tk/obj/Debug/Interop.UPNPLib.dll | Bin 0 -> 12288 bytes .../obj/Debug/MSGer.tk.AboutBox1.resources | Bin 0 -> 29192 bytes .../obj/Debug/MSGer.tk.AddPartner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.BeforeLogin.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ChatForm.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ChatPanel.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.FloatingChatIcon.resources | Bin 0 -> 180 bytes .../MSGer.tk.Forms.SelectShownImage.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.InvitePartner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.LoginForm.resources | Bin 0 -> 460 bytes ...er.tk.LoginForm_RegistrationForm.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.MainForm.resources | Bin 0 -> 74832 bytes .../obj/Debug/MSGer.tk.Notifier.resources | Bin 0 -> 180 bytes .../MSGer.tk.PartnerInformation.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 0 -> 44727 bytes .../Debug/MSGer.tk.ScripterWindow.resources | Bin 0 -> 180 bytes .../MSGer.tk.SelectPartnerForm.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.SettingsForm.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelLayout.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelNetwork.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPacks.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPersonal.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.ThemeDesigner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ThemedForms.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 86 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 0 -> 2722 bytes .../MSGer.tk.csproj.ResolveComReference.cache | Bin 0 -> 739 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 0 -> 20453 bytes .../v5.0/MSGer.tk/obj/Debug/MSGer.tk.exe | Bin 0 -> 351744 bytes .../v5.0/MSGer.tk/obj/Debug/MSGer.tk.pdb | Bin 0 -> 476672 bytes .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 0 -> 5120 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../v5.0/MSGer.tk/obj/Release/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 28620 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 8272 bytes .../obj/Release/MSGer.tk.AboutBox1.resources | Bin 0 -> 29192 bytes .../obj/Release/MSGer.tk.AddPartner.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.ChatForm.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.InvitePartner.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.LoginForm.resources | Bin 0 -> 460 bytes ...er.tk.LoginForm_RegistrationForm.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.MainForm.resources | Bin 0 -> 74832 bytes .../obj/Release/MSGer.tk.Notifier.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 0 -> 44727 bytes .../MSGer.tk.SelectPartnerForm.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.SettingsForm.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 27 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 0 -> 1708 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 0 -> 17061 bytes .../v5.0/MSGer.tk/obj/Release/MSGer.tk.exe | Bin 0 -> 260608 bytes .../v5.0/MSGer.tk/obj/Release/MSGer.tk.pdb | Bin 0 -> 196096 bytes .../obj/Release/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 0 -> 6656 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 Versions/Less Closed Beta/v6.0/.justforgithub | 0 Versions/Less Closed Beta/v6.0/Changelog.txt | 24 + ...Torgashov-FastColoredTextBox · GitHub.url | 2 + .../v6.0/MSGer.tk/.justforgithub | 0 .../Less Closed Beta/v6.0/MSGer.tk/App.config | 33 + .../v6.0/MSGer.tk/CurrentUser.cs | 280 ++ .../v6.0/MSGer.tk/ErrorHandling_REMOVE.cs | 35 + .../v6.0/MSGer.tk/Forms/.justforgithub | 0 .../v6.0/MSGer.tk/Forms/AboutBox1.Designer.cs | 190 + .../v6.0/MSGer.tk/Forms/AboutBox1.cs | 130 + .../v6.0/MSGer.tk/Forms/AboutBox1.resx | 604 ++++ .../MSGer.tk/Forms/AddPartner.Designer.cs | 175 + .../v6.0/MSGer.tk/Forms/AddPartner.cs | 67 + .../v6.0/MSGer.tk/Forms/AddPartner.resx | 120 + .../MSGer.tk/Forms/BeforeLogin.Designer.cs | 68 + .../v6.0/MSGer.tk/Forms/BeforeLogin.cs | 66 + .../v6.0/MSGer.tk/Forms/BeforeLogin.resx | 120 + .../v6.0/MSGer.tk/Forms/ChatForm.Designer.cs | 49 + .../v6.0/MSGer.tk/Forms/ChatForm.cs | 39 + .../v6.0/MSGer.tk/Forms/ChatForm.resx | 120 + .../v6.0/MSGer.tk/Forms/ChatPanel.Designer.cs | 349 ++ .../v6.0/MSGer.tk/Forms/ChatPanel.cs | 576 +++ .../v6.0/MSGer.tk/Forms/ChatPanel.resx | 162 + .../v6.0/MSGer.tk/Forms/Emoticons.Designer.cs | 213 ++ .../v6.0/MSGer.tk/Forms/Emoticons.cs | 221 ++ .../v6.0/MSGer.tk/Forms/Emoticons.resx | 123 + .../MSGer.tk/Forms/ErrorHandler.Designer.cs | 131 + .../v6.0/MSGer.tk/Forms/ErrorHandler.cs | 156 + .../v6.0/MSGer.tk/Forms/ErrorHandler.resx | 120 + .../Forms/FloatingChatIcon.Designer.cs | 74 + .../v6.0/MSGer.tk/Forms/FloatingChatIcon.cs | 74 + .../v6.0/MSGer.tk/Forms/FloatingChatIcon.resx | 120 + .../MSGer.tk/Forms/InvitePartner.Designer.cs | 176 + .../v6.0/MSGer.tk/Forms/InvitePartner.cs | 75 + .../v6.0/MSGer.tk/Forms/InvitePartner.resx | 120 + .../v6.0/MSGer.tk/Forms/LoginForm.Designer.cs | 202 ++ .../MSGer.tk/Forms/LoginForm.LoginUser.cs | 201 ++ .../LoginForm.RegistrationForm.Designer.cs | 176 + .../Forms/LoginForm.RegistrationForm.cs | 73 + .../Forms/LoginForm.RegistrationForm.resx | 120 + .../v6.0/MSGer.tk/Forms/LoginForm.cs | 212 ++ .../v6.0/MSGer.tk/Forms/LoginForm.resx | 125 + .../v6.0/MSGer.tk/Forms/MainForm.Designer.cs | 945 +++++ .../v6.0/MSGer.tk/Forms/MainForm.Events.cs | 331 ++ .../v6.0/MSGer.tk/Forms/MainForm.cs | 489 +++ .../v6.0/MSGer.tk/Forms/MainForm.resx | 142 + .../v6.0/MSGer.tk/Forms/Notifier.Designer.cs | 99 + .../v6.0/MSGer.tk/Forms/Notifier.cs | 71 + .../v6.0/MSGer.tk/Forms/Notifier.resx | 120 + .../Forms/PartnerInformation.Designer.cs | 182 + .../v6.0/MSGer.tk/Forms/PartnerInformation.cs | 49 + .../MSGer.tk/Forms/PartnerInformation.resx | 120 + .../MSGer.tk/Forms/ScripterWindow.Designer.cs | 169 + .../v6.0/MSGer.tk/Forms/ScripterWindow.cs | 116 + .../v6.0/MSGer.tk/Forms/ScripterWindow.resx | 129 + .../Forms/SelectPartnerForm.Designer.cs | 180 + .../v6.0/MSGer.tk/Forms/SelectPartnerForm.cs | 93 + .../MSGer.tk/Forms/SelectPartnerForm.resx | 120 + .../Forms/SelectShownImage.Designer.cs | 136 + .../v6.0/MSGer.tk/Forms/SelectShownImage.cs | 43 + .../v6.0/MSGer.tk/Forms/SelectShownImage.resx | 123 + .../MSGer.tk/Forms/SettingsForm.Designer.cs | 155 + .../v6.0/MSGer.tk/Forms/SettingsForm.cs | 176 + .../v6.0/MSGer.tk/Forms/SettingsForm.resx | 120 + .../Forms/SettingsPanels/.justforgithub | 0 .../Forms/SettingsPanels/SettingsPanel.cs | 21 + .../SettingsPanelLayout.Designer.cs | 87 + .../SettingsPanels/SettingsPanelLayout.cs | 46 + .../SettingsPanels/SettingsPanelLayout.resx | 120 + .../SettingsPanelNetwork.Designer.cs | 99 + .../SettingsPanels/SettingsPanelNetwork.cs | 28 + .../SettingsPanels/SettingsPanelNetwork.resx | 120 + .../SettingsPanelPacks.Designer.cs | 86 + .../SettingsPanels/SettingsPanelPacks.cs | 38 + .../SettingsPanels/SettingsPanelPacks.resx | 120 + .../SettingsPanelPersonal.Designer.cs | 152 + .../SettingsPanels/SettingsPanelPersonal.cs | 72 + .../SettingsPanels/SettingsPanelPersonal.resx | 120 + .../MSGer.tk/Forms/ThemeDesigner.Designer.cs | 217 ++ .../v6.0/MSGer.tk/Forms/ThemeDesigner.cs | 217 ++ .../v6.0/MSGer.tk/Forms/ThemeDesigner.resx | 123 + .../v6.0/MSGer.tk/Language.cs | 462 +++ .../Less Closed Beta/v6.0/MSGer.tk/Logging.cs | 49 + .../v6.0/MSGer.tk/MSGer.tk.csproj | 429 +++ .../v6.0/MSGer.tk/MSGer.tk.csproj.user | 13 + .../v6.0/MSGer.tk/MSGer.tk.sln | 51 + .../v6.0/MSGer.tk/MSGer.tk.v11.suo | Bin 0 -> 57344 bytes .../v6.0/MSGer.tk/MSGer.tk.v12.suo | Bin 0 -> 365056 bytes .../v6.0/MSGer.tk/Networking/.justforgithub | 0 .../Networking/Networking.CreateParse.cs | 148 + .../Networking/Networking.PacketData.cs | 640 ++++ .../Networking/Networking.PacketFormat.cs | 105 + .../Networking/Networking.PacketSender.cs | 188 + .../Networking/Networking.SendRequest.cs | 158 + .../Networking/Networking.SendUpdate.cs | 163 + .../MSGer.tk/Networking/Networking.Threads.cs | 69 + .../Networking.UpdateListAndChat.cs | 311 ++ .../v6.0/MSGer.tk/Networking/Networking.cs | 124 + .../v6.0/MSGer.tk/ObjectListView.dll | Bin 0 -> 463360 bytes .../v6.0/MSGer.tk/Packer/.justforgithub | 0 .../v6.0/MSGer.tk/Packer/IPackable.cs | 24 + .../v6.0/MSGer.tk/Packer/PackManager.cs | 103 + .../Less Closed Beta/v6.0/MSGer.tk/Program.cs | 328 ++ .../v6.0/MSGer.tk/ProgressStatistic.cs | 357 ++ .../v6.0/MSGer.tk/Properties/.justforgithub | 0 .../v6.0/MSGer.tk/Properties/AssemblyInfo.cs | 36 + .../MSGer.tk/Properties/Resources.Designer.cs | 103 + .../v6.0/MSGer.tk/Properties/Resources.resx | 133 + .../MSGer.tk/Properties/Settings.Designer.cs | 30 + .../MSGer.tk/Properties/Settings.settings | 7 + .../v6.0/MSGer.tk/Resources/.justforgithub | 0 .../Resources/Blue-Wallpaper-HD 2.jpg | Bin 0 -> 35761 bytes .../Resources/Blue-Wallpaper-HD 21.jpg | Bin 0 -> 35761 bytes .../MSGer.tk/Resources/Blue-Wallpaper-HD.jpg | Bin 0 -> 126105 bytes .../MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg | Bin 0 -> 126105 bytes .../v6.0/MSGer.tk/Resources/Keresősáv.jpg | Bin 0 -> 7378 bytes .../v6.0/MSGer.tk/Resources/Menü 2.jpg | Bin 0 -> 708 bytes .../v6.0/MSGer.tk/Resources/Menü 21.jpg | Bin 0 -> 708 bytes .../v6.0/MSGer.tk/Resources/Menü 22.jpg | Bin 0 -> 708 bytes .../v6.0/MSGer.tk/Resources/Menü 3.jpg | Bin 0 -> 1828 bytes .../v6.0/MSGer.tk/Resources/noimage.png | Bin 0 -> 5023 bytes .../MSGer.tk/Resources/tmp/.justforgithub | 0 .../MSGer.tk/Resources/tmp/colorpicker.jpg | Bin 0 -> 2232 bytes .../v6.0/MSGer.tk/Resources/tmp/erase.png | Bin 0 -> 1826 bytes .../v6.0/MSGer.tk/Scripts/.justforgithub | 0 .../v6.0/MSGer.tk/Scripts/IScript.cs | 20 + .../MSGer.tk/Scripts/ScriptInAppDomain.cs | 168 + .../v6.0/MSGer.tk/Scripts/ScriptLoader.cs | 111 + .../Less Closed Beta/v6.0/MSGer.tk/Storage.cs | 245 ++ .../v6.0/MSGer.tk/StreamHelper.cs | 213 ++ .../v6.0/MSGer.tk/TextBoxHelpers.cs | 128 + .../v6.0/MSGer.tk/TextFormat.cs | 215 ++ .../v6.0/MSGer.tk/Theme/.justforgithub | 0 .../MSGer.tk/Theme/MSGerToolStripRenderer.cs | 127 + .../v6.0/MSGer.tk/Theme/NoImage.cs | 14 + .../v6.0/MSGer.tk/Theme/Theme.cs | 260 ++ .../v6.0/MSGer.tk/Theme/ThemeControl.cs | 113 + .../MSGer.tk/Theme/ThemedForms.Designer.cs | 120 + .../v6.0/MSGer.tk/Theme/ThemedForms.cs | 266 ++ .../v6.0/MSGer.tk/Theme/ThemedForms.resx | 120 + .../v6.0/MSGer.tk/UserInfo.cs | 519 +++ .../v6.0/MSGer.tk/bin/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Debug/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Debug/1.db | Bin 0 -> 856 bytes .../v6.0/MSGer.tk/bin/Debug/2.db | Bin 0 -> 424 bytes .../MSGer.tk/bin/Debug/FastColoredTextBox.dll | Bin 0 -> 335872 bytes .../MSGer.tk/bin/Debug/FastColoredTextBox.xml | 3188 +++++++++++++++++ .../v6.0/MSGer.tk/bin/Debug/GlacialList.dll | Bin 0 -> 98304 bytes .../v6.0/MSGer.tk/bin/Debug/GlacialList.pdb | Bin 0 -> 206336 bytes .../bin/Debug/Handwriting program.dll | Bin 0 -> 20480 bytes .../bin/Debug/Handwriting program.pdb | Bin 0 -> 40448 bytes .../Debug/Khendys.Controls.ExRichTextBox.dll | Bin 0 -> 24576 bytes .../Debug/Khendys.Controls.ExRichTextBox.pdb | Bin 0 -> 22016 bytes .../v6.0/MSGer.tk/bin/Debug/MSGer.tk.exe | Bin 0 -> 391680 bytes .../MSGer.tk/bin/Debug/MSGer.tk.exe.config | 33 + .../v6.0/MSGer.tk/bin/Debug/MSGer.tk.pdb | Bin 0 -> 544256 bytes .../MSGer.tk/bin/Debug/MSGer.tk.vshost.exe | Bin 0 -> 23168 bytes .../bin/Debug/MSGer.tk.vshost.exe.config | 33 + .../v6.0/MSGer.tk/bin/Debug/RichListView.dll | Bin 0 -> 15872 bytes .../v6.0/MSGer.tk/bin/Debug/RichListView.pdb | Bin 0 -> 40448 bytes .../v6.0/MSGer.tk/bin/Debug/Updater.exe | Bin 0 -> 10752 bytes .../MSGer.tk/bin/Debug/Updater.exe.config | 6 + .../v6.0/MSGer.tk/bin/Debug/Updater.pdb | Bin 0 -> 26112 bytes .../bin/Debug/language/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Debug/language/en.txt | 139 + .../v6.0/MSGer.tk/bin/Debug/language/hu.txt | 139 + .../bin/Debug/pictures/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Debug/pictures/1.png | Bin 0 -> 515264 bytes .../v6.0/MSGer.tk/bin/Debug/program.db | Bin 0 -> 72 bytes .../bin/Debug/scriptloader/.justforgithub | 0 .../bin/Debug/textformat/.justforgithub | 0 .../bin/Debug/textformat/New pack.npack | Bin 0 -> 2260 bytes .../MSGer.tk/bin/Debug/theme/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Release/.justforgithub | 0 .../v6.0/MSGer.tk/bin/Release/GlacialList.dll | Bin 0 -> 98304 bytes .../v6.0/MSGer.tk/bin/Release/GlacialList.pdb | Bin 0 -> 206336 bytes .../bin/Release/Handwriting program.dll | Bin 0 -> 19968 bytes .../bin/Release/Handwriting program.pdb | Bin 0 -> 32256 bytes .../Khendys.Controls.ExRichTextBox.dll | Bin 0 -> 24576 bytes .../Khendys.Controls.ExRichTextBox.pdb | Bin 0 -> 22016 bytes .../v6.0/MSGer.tk/bin/Release/MSGer.exe | Bin 0 -> 620670 bytes .../v6.0/MSGer.tk/bin/Release/MSGer.tk.exe | Bin 0 -> 347648 bytes .../MSGer.tk/bin/Release/MSGer.tk.exe.config | 33 + .../v6.0/MSGer.tk/bin/Release/MSGer.tk.pdb | Bin 0 -> 431616 bytes .../MSGer.tk/bin/Release/MSGer.tk.vshost.exe | Bin 0 -> 23168 bytes .../bin/Release/MSGer.tk.vshost.exe.config | 33 + .../MSGer.tk/bin/Release/RichListView.dll | Bin 0 -> 15360 bytes .../MSGer.tk/bin/Release/RichListView.pdb | Bin 0 -> 40448 bytes .../MSGer.tk/bin/Release/SVN/.justforgithub | 0 .../bin/Release/SVN/SVN Cheat Sheet.htm | 101 + .../MSGer.tk/bin/Release/SVN/SVN Readme.htm | 105 + .../bin/Release/SVN/SVN Reference.htm | 106 + .../MSGer.tk/bin/Release/SVN/intl3_svn.dll | Bin 0 -> 69716 bytes .../MSGer.tk/bin/Release/SVN/libapr-1.dll | Bin 0 -> 139332 bytes .../bin/Release/SVN/libapriconv-1.dll | Bin 0 -> 36943 bytes .../MSGer.tk/bin/Release/SVN/libaprutil-1.dll | Bin 0 -> 188493 bytes .../v6.0/MSGer.tk/bin/Release/SVN/libdb44.dll | Bin 0 -> 802816 bytes .../MSGer.tk/bin/Release/SVN/libeay32.dll | Bin 0 -> 1077248 bytes .../v6.0/MSGer.tk/bin/Release/SVN/libsasl.dll | Bin 0 -> 77881 bytes .../bin/Release/SVN/libsvn_client-1.dll | Bin 0 -> 208983 bytes .../bin/Release/SVN/libsvn_delta-1.dll | Bin 0 -> 90197 bytes .../bin/Release/SVN/libsvn_diff-1.dll | Bin 0 -> 53331 bytes .../MSGer.tk/bin/Release/SVN/libsvn_fs-1.dll | Bin 0 -> 237647 bytes .../MSGer.tk/bin/Release/SVN/libsvn_ra-1.dll | Bin 0 -> 516175 bytes .../bin/Release/SVN/libsvn_repos-1.dll | Bin 0 -> 143445 bytes .../bin/Release/SVN/libsvn_subr-1.dll | Bin 0 -> 720979 bytes .../MSGer.tk/bin/Release/SVN/libsvn_wc-1.dll | Bin 0 -> 221263 bytes .../v6.0/MSGer.tk/bin/Release/SVN/openssl.exe | Bin 0 -> 331776 bytes .../MSGer.tk/bin/Release/SVN/pluginviewer.exe | Bin 0 -> 16448 bytes .../bin/Release/SVN/saslANONYMOUS.dll | Bin 0 -> 28739 bytes .../MSGer.tk/bin/Release/SVN/saslCRAMMD5.dll | Bin 0 -> 32833 bytes .../bin/Release/SVN/saslDIGESTMD5.dll | Bin 0 -> 53315 bytes .../MSGer.tk/bin/Release/SVN/saslLOGIN.dll | Bin 0 -> 32831 bytes .../MSGer.tk/bin/Release/SVN/saslNTLM.dll | Bin 0 -> 41022 bytes .../MSGer.tk/bin/Release/SVN/saslPLAIN.dll | Bin 0 -> 32831 bytes .../MSGer.tk/bin/Release/SVN/saslSASLDB.dll | Bin 0 -> 712768 bytes .../bin/Release/SVN/sasldblistusers2.exe | Bin 0 -> 16452 bytes .../MSGer.tk/bin/Release/SVN/saslpasswd2.exe | Bin 0 -> 16447 bytes .../MSGer.tk/bin/Release/SVN/ssleay32.dll | Bin 0 -> 221184 bytes .../SVN/svn-populate-node-origins-index.exe | Bin 0 -> 16480 bytes .../MSGer.tk/bin/Release/SVN/svn-push.exe | Bin 0 -> 16468 bytes .../v6.0/MSGer.tk/bin/Release/SVN/svn.exe | Bin 0 -> 159809 bytes .../MSGer.tk/bin/Release/SVN/svnadmin.exe | Bin 0 -> 61515 bytes .../bin/Release/SVN/svnauthz-validate.exe | Bin 0 -> 28754 bytes .../bin/Release/SVN/svndumpfilter.exe | Bin 0 -> 41045 bytes .../v6.0/MSGer.tk/bin/Release/SVN/svnlook.exe | Bin 0 -> 57417 bytes .../v6.0/MSGer.tk/bin/Release/SVN/svnmucc.exe | Bin 0 -> 24656 bytes .../MSGer.tk/bin/Release/SVN/svnserve.exe | Bin 0 -> 114763 bytes .../v6.0/MSGer.tk/bin/Release/SVN/svnsync.exe | Bin 0 -> 49225 bytes .../MSGer.tk/bin/Release/SVN/svnversion.exe | Bin 0 -> 28751 bytes .../v6.0/MSGer.tk/bin/Release/Updater.exe | Bin 0 -> 10752 bytes .../MSGer.tk/bin/Release/Updater.exe.config | 6 + .../v6.0/MSGer.tk/bin/Release/Updater.pdb | Bin 0 -> 22016 bytes .../v6.0/MSGer.tk/bin/Release/close.bmp | Bin 0 -> 1654 bytes .../bin/Release/language/.justforgithub | 0 .../bin/Release/languages/.justforgithub | 0 .../MSGer.tk/bin/Release/languages/en.txt | 102 + .../MSGer.tk/bin/Release/languages/hu.txt | 102 + .../v6.0/MSGer.tk/bin/Release/noimage.png | Bin 0 -> 5023 bytes .../v6.0/MSGer.tk/bin/Release/popup-bg.bmp | Bin 0 -> 80054 bytes .../v6.0/MSGer.tk/bin/Release/program.db | Bin 0 -> 40 bytes .../bin/Release/scriptloader/.justforgithub | 0 .../bin/Release/textformat/.justforgithub | 0 .../MSGer.tk/bin/Release/theme/.justforgithub | 0 .../v6.0/MSGer.tk/obj/.justforgithub | 0 .../v6.0/MSGer.tk/obj/Debug/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 100395 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 8712 bytes .../MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll | Bin 0 -> 7680 bytes .../MSGer.tk/obj/Debug/Interop.UPNPLib.dll | Bin 0 -> 12288 bytes .../obj/Debug/MSGer.tk.AboutBox1.resources | Bin 0 -> 29192 bytes .../obj/Debug/MSGer.tk.AddPartner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.BeforeLogin.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ChatForm.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ChatPanel.resources | Bin 0 -> 2120 bytes .../obj/Debug/MSGer.tk.Emoticons.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ErrorHandler.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.FloatingChatIcon.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.InvitePartner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.LoginForm.resources | Bin 0 -> 460 bytes ...er.tk.LoginForm_RegistrationForm.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.MainForm.resources | Bin 0 -> 74832 bytes .../obj/Debug/MSGer.tk.Notifier.resources | Bin 0 -> 180 bytes .../MSGer.tk.PartnerInformation.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 0 -> 49940 bytes .../Debug/MSGer.tk.ScripterWindow.resources | Bin 0 -> 180 bytes .../MSGer.tk.SelectPartnerForm.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.SelectShownImage.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.SettingsForm.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelLayout.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelNetwork.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPacks.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPersonal.resources | Bin 0 -> 180 bytes .../Debug/MSGer.tk.ThemeDesigner.resources | Bin 0 -> 180 bytes .../obj/Debug/MSGer.tk.ThemedForms.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 90 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 0 -> 2902 bytes .../MSGer.tk.csproj.ResolveComReference.cache | Bin 0 -> 739 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 0 -> 24824 bytes .../v6.0/MSGer.tk/obj/Debug/MSGer.tk.exe | Bin 0 -> 391680 bytes .../v6.0/MSGer.tk/obj/Debug/MSGer.tk.pdb | Bin 0 -> 544256 bytes .../MSGer.tk/obj/Debug/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 0 -> 5120 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../v6.0/MSGer.tk/obj/Release/.justforgithub | 0 .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 56771 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 8522 bytes .../obj/Release/Interop.NATUPNPLib.dll | Bin 0 -> 7680 bytes .../obj/Release/MSGer.tk.AboutBox1.resources | Bin 0 -> 29192 bytes .../obj/Release/MSGer.tk.AddPartner.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.BeforeLogin.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.ChatForm.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.ChatPanel.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ErrorHandler.resources | Bin 0 -> 180 bytes .../MSGer.tk.FloatingChatIcon.resources | Bin 0 -> 180 bytes .../MSGer.tk.Forms.SelectShownImage.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.InvitePartner.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.LoginForm.resources | Bin 0 -> 460 bytes ...er.tk.LoginForm_RegistrationForm.resources | Bin 0 -> 180 bytes .../obj/Release/MSGer.tk.MainForm.resources | Bin 0 -> 74832 bytes .../obj/Release/MSGer.tk.Notifier.resources | Bin 0 -> 180 bytes .../MSGer.tk.PartnerInformation.resources | Bin 0 -> 180 bytes .../MSGer.tk.Properties.Resources.resources | Bin 0 -> 49940 bytes .../Release/MSGer.tk.ScripterWindow.resources | Bin 0 -> 180 bytes .../MSGer.tk.SelectPartnerForm.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.SettingsForm.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelLayout.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelNetwork.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPacks.resources | Bin 0 -> 180 bytes .../MSGer.tk.SettingsPanelPersonal.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ThemeDesigner.resources | Bin 0 -> 180 bytes .../Release/MSGer.tk.ThemedForms.resources | Bin 0 -> 180 bytes .../MSGer.tk.csproj.FileListAbsolute.txt | 65 + .../MSGer.tk.csproj.GenerateResource.Cache | Bin 0 -> 2801 bytes .../MSGer.tk.csproj.ResolveComReference.cache | Bin 0 -> 739 bytes ...er.tk.csprojResolveAssemblyReference.cache | Bin 0 -> 24431 bytes .../v6.0/MSGer.tk/obj/Release/MSGer.tk.exe | Bin 0 -> 347648 bytes .../v6.0/MSGer.tk/obj/Release/MSGer.tk.pdb | Bin 0 -> 431616 bytes .../obj/Release/TempPE/.justforgithub | 0 .../Properties.Resources.Designer.cs.dll | Bin 0 -> 5120 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../v6.0/MSGer.tk/packages.config | 4 + .../v6.0/MSGer.tk/packages/.justforgithub | 0 .../packages/FCTB.2.16.11.0/.justforgithub | 0 .../FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg | Bin 0 -> 143186 bytes .../FCTB.2.16.11.0/lib/.justforgithub | 0 .../FCTB.2.16.11.0/lib/FastColoredTextBox.dll | Bin 0 -> 335872 bytes .../FCTB.2.16.11.0/lib/FastColoredTextBox.xml | 3188 +++++++++++++++++ .../MSGer.tk/packages/repositories.config | 4 + Versions/Less Closed Beta/v7.0/.justforgithub | 0 Versions/Less Closed Beta/v7.0/Changelog.txt | 36 + Versions/Most Closed Beta/.justforgithub | 0 Versions/Most Closed Beta/v2.0/.justforgithub | 0 .../v2.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v2.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v2.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v3.0/.justforgithub | 0 .../v3.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v3.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v3.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v4.0/.justforgithub | 0 .../v4.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v4.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v4.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v5.0/.justforgithub | 0 .../v5.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v5.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v5.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v6.0/.justforgithub | 0 .../v6.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v6.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v6.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v7.0/.justforgithub | 0 .../v7.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v7.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v7.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v8.0/.justforgithub | 0 .../v8.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v8.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v8.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 .../MSGer.tk (C#)/obj/Release/.justforgithub | 0 .../obj/Release/TempPE/.justforgithub | 0 Versions/Most Closed Beta/v9.0/.justforgithub | 0 .../v9.0/MSGer.tk (C#)/.justforgithub | 0 .../MSGer.tk (C#)/Properties/.justforgithub | 0 .../MSGer.tk (C#)/Resources/.justforgithub | 0 .../v9.0/MSGer.tk (C#)/bin/.justforgithub | 0 .../MSGer.tk (C#)/bin/Debug/.justforgithub | 0 .../MSGer.tk (C#)/bin/Release/.justforgithub | 0 .../v9.0/MSGer.tk (C#)/obj/.justforgithub | 0 .../MSGer.tk (C#)/obj/Debug/.justforgithub | 0 .../obj/Debug/TempPE/.justforgithub | 0 1325 files changed, 67772 insertions(+), 465 deletions(-) create mode 100644 .justforgithub create mode 100644 Handwriting program/.justforgithub create mode 100644 Handwriting program/Handwriting program/.justforgithub create mode 100644 Handwriting program/Handwriting program/Properties/.justforgithub create mode 100644 Handwriting program/Handwriting program/Resources/.justforgithub create mode 100644 Handwriting program/Handwriting program/bin/.justforgithub create mode 100644 Handwriting program/Handwriting program/bin/Debug/.justforgithub delete mode 100644 Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp create mode 100644 Handwriting program/Handwriting program/bin/Release/.justforgithub create mode 100644 Handwriting program/Handwriting program/bin/Release/Handwriting program.dll create mode 100644 Handwriting program/Handwriting program/bin/Release/Handwriting program.dll.config create mode 100644 Handwriting program/Handwriting program/bin/Release/Handwriting program.pdb create mode 100644 Handwriting program/Handwriting program/obj/.justforgithub create mode 100644 Handwriting program/Handwriting program/obj/Debug/.justforgithub create mode 100644 Handwriting program/Handwriting program/obj/Debug/TempPE/.justforgithub create mode 100644 Handwriting program/Handwriting program/obj/Release/.justforgithub create mode 100644 Handwriting program/Handwriting program/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.FileListAbsolute.txt create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.GenerateResource.Cache create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting program.dll create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting program.pdb create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting_program.Form1.resources create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting_program.Handwriting.resources create mode 100644 Handwriting program/Handwriting program/obj/Release/Handwriting_program.Properties.Resources.resources create mode 100644 Handwriting program/Handwriting program/obj/Release/TempPE/.justforgithub create mode 100644 Handwriting program/Handwriting program/obj/Release/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 Handwriting program/Handwriting program/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Handwriting program/Handwriting program/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Handwriting program/Handwriting program/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 LICENSE create mode 100644 MSGer.tk/.justforgithub create mode 100644 MSGer.tk/ErrorHandling_REMOVE.cs create mode 100644 MSGer.tk/Forms/.justforgithub create mode 100644 MSGer.tk/Forms/AboutBox1.Designer.cs create mode 100644 MSGer.tk/Forms/AboutBox1.cs create mode 100644 MSGer.tk/Forms/AboutBox1.resx create mode 100644 MSGer.tk/Forms/AddPartner.Designer.cs create mode 100644 MSGer.tk/Forms/AddPartner.cs create mode 100644 MSGer.tk/Forms/AddPartner.resx create mode 100644 MSGer.tk/Forms/BeforeLogin.Designer.cs create mode 100644 MSGer.tk/Forms/BeforeLogin.cs create mode 100644 MSGer.tk/Forms/BeforeLogin.resx create mode 100644 MSGer.tk/Forms/ChatForm.Designer.cs create mode 100644 MSGer.tk/Forms/ChatForm.cs create mode 100644 MSGer.tk/Forms/ChatForm.resx create mode 100644 MSGer.tk/Forms/ChatPanel.Designer.cs create mode 100644 MSGer.tk/Forms/ChatPanel.cs create mode 100644 MSGer.tk/Forms/ChatPanel.resx create mode 100644 MSGer.tk/Forms/Emoticons.Designer.cs create mode 100644 MSGer.tk/Forms/Emoticons.cs create mode 100644 MSGer.tk/Forms/Emoticons.resx create mode 100644 MSGer.tk/Forms/ErrorHandler.Designer.cs create mode 100644 MSGer.tk/Forms/ErrorHandler.cs create mode 100644 MSGer.tk/Forms/ErrorHandler.resx create mode 100644 MSGer.tk/Forms/FloatingChatIcon.Designer.cs create mode 100644 MSGer.tk/Forms/FloatingChatIcon.cs create mode 100644 MSGer.tk/Forms/FloatingChatIcon.resx create mode 100644 MSGer.tk/Forms/InvitePartner.Designer.cs create mode 100644 MSGer.tk/Forms/InvitePartner.cs create mode 100644 MSGer.tk/Forms/InvitePartner.resx create mode 100644 MSGer.tk/Forms/LoginForm.Designer.cs create mode 100644 MSGer.tk/Forms/LoginForm.LoginUser.cs create mode 100644 MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs create mode 100644 MSGer.tk/Forms/LoginForm.RegistrationForm.cs create mode 100644 MSGer.tk/Forms/LoginForm.RegistrationForm.resx create mode 100644 MSGer.tk/Forms/LoginForm.cs create mode 100644 MSGer.tk/Forms/LoginForm.resx create mode 100644 MSGer.tk/Forms/MainForm.Designer.cs create mode 100644 MSGer.tk/Forms/MainForm.Events.cs create mode 100644 MSGer.tk/Forms/MainForm.cs create mode 100644 MSGer.tk/Forms/MainForm.resx create mode 100644 MSGer.tk/Forms/Notifier.Designer.cs create mode 100644 MSGer.tk/Forms/Notifier.cs create mode 100644 MSGer.tk/Forms/Notifier.resx create mode 100644 MSGer.tk/Forms/PartnerInformation.Designer.cs create mode 100644 MSGer.tk/Forms/PartnerInformation.cs create mode 100644 MSGer.tk/Forms/PartnerInformation.resx create mode 100644 MSGer.tk/Forms/ScripterWindow.Designer.cs create mode 100644 MSGer.tk/Forms/ScripterWindow.cs create mode 100644 MSGer.tk/Forms/ScripterWindow.resx create mode 100644 MSGer.tk/Forms/SelectPartnerForm.Designer.cs create mode 100644 MSGer.tk/Forms/SelectPartnerForm.cs create mode 100644 MSGer.tk/Forms/SelectPartnerForm.resx create mode 100644 MSGer.tk/Forms/SelectShownImage.Designer.cs create mode 100644 MSGer.tk/Forms/SelectShownImage.cs create mode 100644 MSGer.tk/Forms/SelectShownImage.resx create mode 100644 MSGer.tk/Forms/SettingsForm.Designer.cs create mode 100644 MSGer.tk/Forms/SettingsForm.cs create mode 100644 MSGer.tk/Forms/SettingsForm.resx create mode 100644 MSGer.tk/Forms/SettingsPanels/.justforgithub create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs create mode 100644 MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx create mode 100644 MSGer.tk/Forms/ThemeDesigner.Designer.cs create mode 100644 MSGer.tk/Forms/ThemeDesigner.cs create mode 100644 MSGer.tk/Forms/ThemeDesigner.resx create mode 100644 MSGer.tk/Networking/.justforgithub create mode 100644 MSGer.tk/Networking/Networking.CreateParse.cs create mode 100644 MSGer.tk/Networking/Networking.PacketData.cs create mode 100644 MSGer.tk/Networking/Networking.PacketFormat.cs create mode 100644 MSGer.tk/Networking/Networking.PacketSender.cs create mode 100644 MSGer.tk/Networking/Networking.SendRequest.cs create mode 100644 MSGer.tk/Networking/Networking.SendUpdate.cs create mode 100644 MSGer.tk/Networking/Networking.Threads.cs create mode 100644 MSGer.tk/Networking/Networking.UpdateListAndChat.cs create mode 100644 MSGer.tk/Networking/Networking.cs create mode 100644 MSGer.tk/Packer/.justforgithub create mode 100644 MSGer.tk/Packer/IPackable.cs create mode 100644 MSGer.tk/Packer/PackManager.cs create mode 100644 MSGer.tk/Properties/.justforgithub create mode 100644 MSGer.tk/Resources/.justforgithub create mode 100644 MSGer.tk/Resources/noimage.png create mode 100644 MSGer.tk/Resources/tmp/.justforgithub create mode 100644 MSGer.tk/Scripts/.justforgithub create mode 100644 MSGer.tk/Scripts/IScript.cs create mode 100644 MSGer.tk/Scripts/ScriptInAppDomain.cs create mode 100644 MSGer.tk/Scripts/ScriptLoader.cs create mode 100644 MSGer.tk/TextBoxHelpers.cs create mode 100644 MSGer.tk/Theme/.justforgithub create mode 100644 MSGer.tk/Theme/MSGerToolStripRenderer.cs create mode 100644 MSGer.tk/Theme/NoImage.cs create mode 100644 MSGer.tk/Theme/Theme.cs create mode 100644 MSGer.tk/Theme/ThemeControl.cs create mode 100644 MSGer.tk/Theme/ThemedForms.Designer.cs create mode 100644 MSGer.tk/Theme/ThemedForms.cs create mode 100644 MSGer.tk/Theme/ThemedForms.resx create mode 100644 MSGer.tk/bin/.justforgithub create mode 100644 MSGer.tk/bin/Debug/.justforgithub create mode 100644 MSGer.tk/bin/Debug/FastColoredTextBox.dll create mode 100644 MSGer.tk/bin/Debug/FastColoredTextBox.xml create mode 100644 MSGer.tk/bin/Debug/SVN/.justforgithub create mode 100644 MSGer.tk/bin/Debug/language/.justforgithub create mode 100644 MSGer.tk/bin/Debug/language/en.txt create mode 100644 MSGer.tk/bin/Debug/language/hu.txt create mode 100644 MSGer.tk/bin/Debug/languages/.justforgithub create mode 100644 MSGer.tk/bin/Debug/logs/.justforgithub create mode 100644 MSGer.tk/bin/Debug/pictures/.justforgithub create mode 100644 MSGer.tk/bin/Debug/pictures/1.png create mode 100644 MSGer.tk/bin/Debug/scriptloader/.justforgithub create mode 100644 MSGer.tk/bin/Debug/textformat/.justforgithub create mode 100644 MSGer.tk/bin/Debug/textformat/New pack.npack create mode 100644 MSGer.tk/bin/Debug/theme/.justforgithub create mode 100644 MSGer.tk/bin/Release/.justforgithub create mode 100644 MSGer.tk/bin/Release/Handwriting program.dll create mode 100644 MSGer.tk/bin/Release/Handwriting program.pdb create mode 100644 MSGer.tk/bin/Release/SVN/.justforgithub create mode 100644 MSGer.tk/bin/Release/SVN/SVN Cheat Sheet.htm create mode 100644 MSGer.tk/bin/Release/SVN/SVN Readme.htm create mode 100644 MSGer.tk/bin/Release/SVN/SVN Reference.htm create mode 100644 MSGer.tk/bin/Release/SVN/intl3_svn.dll create mode 100644 MSGer.tk/bin/Release/SVN/libapr-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libapriconv-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libaprutil-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libdb44.dll create mode 100644 MSGer.tk/bin/Release/SVN/libeay32.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsasl.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_client-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_delta-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_diff-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_fs-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_ra-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_repos-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_subr-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/libsvn_wc-1.dll create mode 100644 MSGer.tk/bin/Release/SVN/openssl.exe create mode 100644 MSGer.tk/bin/Release/SVN/pluginviewer.exe create mode 100644 MSGer.tk/bin/Release/SVN/saslANONYMOUS.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslCRAMMD5.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslDIGESTMD5.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslLOGIN.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslNTLM.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslPLAIN.dll create mode 100644 MSGer.tk/bin/Release/SVN/saslSASLDB.dll create mode 100644 MSGer.tk/bin/Release/SVN/sasldblistusers2.exe create mode 100644 MSGer.tk/bin/Release/SVN/saslpasswd2.exe create mode 100644 MSGer.tk/bin/Release/SVN/ssleay32.dll create mode 100644 MSGer.tk/bin/Release/SVN/svn-populate-node-origins-index.exe create mode 100644 MSGer.tk/bin/Release/SVN/svn-push.exe create mode 100644 MSGer.tk/bin/Release/SVN/svn.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnadmin.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnauthz-validate.exe create mode 100644 MSGer.tk/bin/Release/SVN/svndumpfilter.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnlook.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnmucc.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnserve.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnsync.exe create mode 100644 MSGer.tk/bin/Release/SVN/svnversion.exe create mode 100644 MSGer.tk/bin/Release/Updater.exe create mode 100644 MSGer.tk/bin/Release/Updater.exe.config create mode 100644 MSGer.tk/bin/Release/Updater.pdb create mode 100644 MSGer.tk/bin/Release/language/.justforgithub create mode 100644 MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 MSGer.tk/bin/Release/program.db create mode 100644 MSGer.tk/bin/Release/scriptloader/.justforgithub create mode 100644 MSGer.tk/bin/Release/textformat/.justforgithub create mode 100644 MSGer.tk/bin/Release/theme/.justforgithub create mode 100644 MSGer.tk/obj/.justforgithub create mode 100644 MSGer.tk/obj/Debug/.justforgithub create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.Emoticons.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.ErrorHandler.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.FloatingChatIcon.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.ScripterWindow.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.SelectShownImage.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelLayout.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelNetwork.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPacks.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPersonal.resources create mode 100644 MSGer.tk/obj/Debug/MSGer.tk.ThemeDesigner.resources create mode 100644 MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 MSGer.tk/obj/Release/.justforgithub create mode 100644 MSGer.tk/obj/Release/Interop.NATUPNPLib.dll create mode 100644 MSGer.tk/obj/Release/MSGer.tk.BeforeLogin.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.ChatPanel.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.ErrorHandler.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.FloatingChatIcon.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.Forms.SelectShownImage.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.PartnerInformation.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.ScripterWindow.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.SettingsPanelLayout.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.SettingsPanelNetwork.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.SettingsPanelPacks.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.SettingsPanelPersonal.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.ThemeDesigner.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.ThemedForms.resources create mode 100644 MSGer.tk/obj/Release/MSGer.tk.csproj.ResolveComReference.cache create mode 100644 MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 MSGer.tk/packages.config create mode 100644 MSGer.tk/packages/.justforgithub create mode 100644 MSGer.tk/packages/FCTB.2.16.11.0/.justforgithub create mode 100644 MSGer.tk/packages/FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg create mode 100644 MSGer.tk/packages/FCTB.2.16.11.0/lib/.justforgithub create mode 100644 MSGer.tk/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.dll create mode 100644 MSGer.tk/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.xml create mode 100644 MSGer.tk/packages/repositories.config create mode 100644 MSGerTextBox/.justforgithub create mode 100644 MSGerTextBox/App.config create mode 100644 MSGerTextBox/Diff.cs create mode 100644 MSGerTextBox/Form1.Designer.cs create mode 100644 MSGerTextBox/Form1.cs create mode 100644 MSGerTextBox/Form1.resx create mode 100644 MSGerTextBox/MSGerTextBox.Designer.cs create mode 100644 MSGerTextBox/MSGerTextBox.cs create mode 100644 MSGerTextBox/MSGerTextBox.csproj create mode 100644 MSGerTextBox/MSGerTextBox.resx create mode 100644 MSGerTextBox/Program.cs create mode 100644 MSGerTextBox/Properties/.justforgithub create mode 100644 MSGerTextBox/Properties/AssemblyInfo.cs create mode 100644 MSGerTextBox/Properties/Resources.Designer.cs create mode 100644 MSGerTextBox/Properties/Resources.resx create mode 100644 MSGerTextBox/Properties/Settings.Designer.cs create mode 100644 MSGerTextBox/Properties/Settings.settings create mode 100644 MSGerTextBox/bin/.justforgithub create mode 100644 MSGerTextBox/bin/Debug/.justforgithub create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.exe create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.exe.config create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.pdb create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.vshost.exe create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.vshost.exe.config create mode 100644 MSGerTextBox/bin/Debug/MSGerTextBox.vshost.exe.manifest create mode 100644 MSGerTextBox/obj/.justforgithub create mode 100644 MSGerTextBox/obj/Debug/.justforgithub create mode 100644 MSGerTextBox/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 MSGerTextBox/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.Properties.Resources.resources create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.csproj.FileListAbsolute.txt create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.csproj.GenerateResource.Cache create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.csprojResolveAssemblyReference.cache create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.exe create mode 100644 MSGerTextBox/obj/Debug/MSGerTextBox.pdb create mode 100644 MSGerTextBox/obj/Debug/SzNPProjects.TextBox.Form1.resources create mode 100644 MSGerTextBox/obj/Debug/SzNPProjects.TextBox.MSGerTextBox.resources create mode 100644 MSGerTextBox/obj/Debug/TempPE/.justforgithub create mode 100644 MSGerTextBox/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 MSGerTextBox/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 MSGerTextBox/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 RichListView/.justforgithub create mode 100644 RichListView/0 Versions/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/obj/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/RichListView/obj/Release/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/Properties/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/bin/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/obj/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/Properties/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/bin/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/obj/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/0 Versions/v1.1/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/RichListView/.justforgithub create mode 100644 RichListView/RichListView/Properties/.justforgithub create mode 100644 RichListView/RichListView/bin/.justforgithub create mode 100644 RichListView/RichListView/bin/Debug/.justforgithub create mode 100644 RichListView/RichListView/bin/Release/.justforgithub create mode 100644 RichListView/RichListView/obj/.justforgithub create mode 100644 RichListView/RichListView/obj/Debug/.justforgithub create mode 100644 RichListView/RichListView/obj/Debug/TempPE/.justforgithub create mode 100644 RichListView/RichListView/obj/Release/.justforgithub create mode 100644 RichListView/RichListView/obj/Release/RichListView.csprojResolveAssemblyReference.cache create mode 100644 RichListView/RichListView/obj/Release/TempPE/.justforgithub create mode 100644 RichListView/Test Project/.justforgithub create mode 100644 RichListView/Test Project/Properties/.justforgithub create mode 100644 RichListView/Test Project/bin/.justforgithub create mode 100644 RichListView/Test Project/bin/Debug/.justforgithub create mode 100644 RichListView/Test Project/bin/Release/.justforgithub create mode 100644 RichListView/Test Project/obj/.justforgithub create mode 100644 RichListView/Test Project/obj/Debug/.justforgithub create mode 100644 RichListView/Test Project/obj/Debug/TempPE/.justforgithub create mode 100644 Updater/.justforgithub create mode 100644 Updater/Properties/.justforgithub create mode 100644 Updater/SVN/.justforgithub create mode 100644 Updater/bin/.justforgithub create mode 100644 Updater/bin/Debug/.justforgithub create mode 100644 Updater/bin/Debug/SVN/.justforgithub create mode 100644 Updater/bin/Release/.justforgithub create mode 100644 Updater/obj/.justforgithub create mode 100644 Updater/obj/Debug/.justforgithub create mode 100644 Updater/obj/Debug/TempPE/.justforgithub create mode 100644 Updater/obj/Release/.justforgithub create mode 100644 Updater/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Updater/obj/Release/TempPE/.justforgithub create mode 100644 Updater/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Updater/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Updater/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Updater/obj/Release/Updater.Properties.Resources.resources create mode 100644 Updater/obj/Release/Updater.UpdateDialog.resources create mode 100644 Updater/obj/Release/Updater.csproj.FileListAbsolute.txt create mode 100644 Updater/obj/Release/Updater.csproj.GenerateResource.Cache create mode 100644 Updater/obj/Release/Updater.exe create mode 100644 Updater/obj/Release/Updater.pdb create mode 100644 Versions/.justforgithub create mode 100644 Versions/Less Closed Beta/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v1.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Post-Cleanup/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.0/Pre-Cleanup/MSGer.tk (C#) - Azóta írtam bele/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.1/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v2.2/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v3.0/Pre-Cleanup/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/logs/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/Changelog.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/App.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/CurrentUser.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/ErrorHandling.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AboutBox1.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AboutBox1.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AboutBox1.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AddPartner.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AddPartner.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/AddPartner.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/BeforeLogin.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/BeforeLogin.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/BeforeLogin.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatPanel.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatPanel.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ChatPanel.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/FloatingChatIcon.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/FloatingChatIcon.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/FloatingChatIcon.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/InvitePartner.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/InvitePartner.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/InvitePartner.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.LoginUser.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.RegistrationForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.RegistrationForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/LoginForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/MainForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/MainForm.Events.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/MainForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/MainForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/Notifier.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/Notifier.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/Notifier.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/PartnerInformation.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/PartnerInformation.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/PartnerInformation.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ScripterWindow.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ScripterWindow.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ScripterWindow.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectPartnerForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectPartnerForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectPartnerForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectShownImage.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectShownImage.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SelectShownImage.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsForm.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsForm.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ThemeDesigner.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ThemeDesigner.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Forms/ThemeDesigner.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/IScript.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Language.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Logging.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/MSGer.tk.csproj create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/MSGer.tk.csproj.user create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/MSGer.tk.sln create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/MSGer.tk.v11.suo create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/MSGer.tk.v12.suo create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.CreateParse.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.PacketData.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.PacketFormat.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.PacketSender.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.SendRequest.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.SendUpdate.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.Threads.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.UpdateListAndChat.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Networking/Networking.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/ObjectListView.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Packer/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Packer/IPackable.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Packer/PackManager.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Program.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/ProgressStatistic.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/AssemblyInfo.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/Resources.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/Resources.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/Settings.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Properties/Settings.settings create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Keresősáv.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Menü 2.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Menü 21.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Menü 22.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/Menü 3.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/tmp/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/tmp/colorpicker.jpg create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Resources/tmp/erase.png create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Scripts/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Scripts/ScriptInAppDomain.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Scripts/ScriptLoader.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Storage.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/StreamHelper.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/TextFormat.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/MSGerToolStripRenderer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/Theme.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/ThemeControl.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/ThemedForms.Designer.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/ThemedForms.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/Theme/ThemedForms.resx create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/UserInfo.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/1.db create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/2.db create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/RichListView.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/language/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/scriptloader/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/textformat/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Confused/theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/GlacialList.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/GlacialList.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Handwriting program.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Handwriting program.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/RichListView.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/RichListView.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/LICENSE create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/SVN Readme.htm create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/SVN Reference.htm create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/intl3_svn.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libapr-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libdb44.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libeay32.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsasl.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/openssl.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/pluginviewer.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslNTLM.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/ssleay32.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svn-push.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svn.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnadmin.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnlook.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnmucc.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnserve.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnsync.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/SVN/svnversion.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Updater.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Updater.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Updater.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Updater.vshost.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/Updater.vshost.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/close.bmp create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/language/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/language/en.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/language/hu.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/logs/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/logs/network.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/noimage.png create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/popup-bg.bmp create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/program.db create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/scriptloader/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/test.bmp create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/test.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/textformat/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/textformat/icon2.png create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/textformat/icon2.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Debug/theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/GlacialList.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/GlacialList.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.tk.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/RichListView.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/RichListView.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/close.bmp create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/languages/en.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/languages/hu.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/noimage.png create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/bin/Release/popup-bg.bmp create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/Interop.UPNPLib.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.FloatingChatIcon.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.Forms.SelectShownImage.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.ScripterWindow.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelLayout.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelNetwork.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPacks.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPersonal.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.ThemeDesigner.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Versions/Less Closed Beta/v5.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Versions/Less Closed Beta/v6.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/Changelog.txt create mode 100644 Versions/Less Closed Beta/v6.0/FastColoredTextBox-GifImageDrawingSample.cs at master · PavelTorgashov-FastColoredTextBox · GitHub.url create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/App.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/CurrentUser.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/ErrorHandling_REMOVE.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AboutBox1.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AboutBox1.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AboutBox1.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AddPartner.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AddPartner.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/AddPartner.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/BeforeLogin.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/BeforeLogin.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/BeforeLogin.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatPanel.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatPanel.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ChatPanel.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Emoticons.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Emoticons.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Emoticons.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ErrorHandler.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ErrorHandler.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ErrorHandler.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/FloatingChatIcon.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/FloatingChatIcon.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/FloatingChatIcon.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/InvitePartner.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/InvitePartner.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/InvitePartner.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.LoginUser.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.RegistrationForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.RegistrationForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/LoginForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/MainForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/MainForm.Events.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/MainForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/MainForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Notifier.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Notifier.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/Notifier.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/PartnerInformation.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/PartnerInformation.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/PartnerInformation.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ScripterWindow.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ScripterWindow.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ScripterWindow.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectPartnerForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectPartnerForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectPartnerForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectShownImage.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectShownImage.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SelectShownImage.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsForm.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsForm.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsForm.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ThemeDesigner.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ThemeDesigner.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Forms/ThemeDesigner.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Language.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Logging.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/MSGer.tk.csproj create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/MSGer.tk.csproj.user create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/MSGer.tk.sln create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/MSGer.tk.v11.suo create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/MSGer.tk.v12.suo create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.CreateParse.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.PacketData.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.PacketFormat.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.PacketSender.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.SendRequest.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.SendUpdate.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.Threads.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.UpdateListAndChat.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Networking/Networking.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/ObjectListView.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Packer/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Packer/IPackable.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Packer/PackManager.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Program.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/ProgressStatistic.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/AssemblyInfo.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/Resources.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/Resources.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/Settings.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Properties/Settings.settings create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Keresősáv.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Menü 2.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Menü 21.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Menü 22.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/Menü 3.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/noimage.png create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/tmp/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/tmp/colorpicker.jpg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Resources/tmp/erase.png create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Scripts/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Scripts/IScript.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Scripts/ScriptInAppDomain.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Scripts/ScriptLoader.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Storage.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/StreamHelper.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/TextBoxHelpers.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/TextFormat.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/MSGerToolStripRenderer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/NoImage.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/Theme.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/ThemeControl.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/ThemedForms.Designer.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/ThemedForms.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/Theme/ThemedForms.resx create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/UserInfo.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/1.db create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/2.db create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/FastColoredTextBox.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/FastColoredTextBox.xml create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/GlacialList.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/GlacialList.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Handwriting program.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Handwriting program.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/RichListView.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/RichListView.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Updater.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Updater.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/Updater.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/language/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/language/en.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/language/hu.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/pictures/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/pictures/1.png create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/program.db create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/scriptloader/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/textformat/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/textformat/New pack.npack create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Debug/theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/GlacialList.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/GlacialList.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Handwriting program.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Handwriting program.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.tk.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/RichListView.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/RichListView.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/SVN Cheat Sheet.htm create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/SVN Readme.htm create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/SVN Reference.htm create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/intl3_svn.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libapr-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libapriconv-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libaprutil-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libdb44.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libeay32.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsasl.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_client-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_delta-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_diff-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_fs-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_ra-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_repos-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_subr-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/libsvn_wc-1.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/openssl.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/pluginviewer.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslANONYMOUS.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslCRAMMD5.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslDIGESTMD5.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslLOGIN.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslNTLM.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslPLAIN.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslSASLDB.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/sasldblistusers2.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/saslpasswd2.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/ssleay32.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svn-populate-node-origins-index.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svn-push.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svn.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnadmin.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnauthz-validate.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svndumpfilter.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnlook.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnmucc.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnserve.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnsync.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/SVN/svnversion.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Updater.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Updater.exe.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/Updater.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/close.bmp create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/language/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/languages/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/languages/en.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/languages/hu.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/noimage.png create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/popup-bg.bmp create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/program.db create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/scriptloader/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/textformat/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/bin/Release/theme/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/Interop.UPNPLib.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.Emoticons.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ErrorHandler.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.FloatingChatIcon.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ScripterWindow.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SelectShownImage.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelLayout.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelNetwork.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPacks.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsPanelPersonal.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ThemeDesigner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/Interop.NATUPNPLib.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.BeforeLogin.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ChatPanel.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ErrorHandler.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.FloatingChatIcon.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.Forms.SelectShownImage.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.PartnerInformation.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ScripterWindow.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SettingsPanelLayout.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SettingsPanelNetwork.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SettingsPanelPacks.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.SettingsPanelPersonal.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ThemeDesigner.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.ThemedForms.resources create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.csproj.ResolveComReference.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.exe create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/MSGer.tk.pdb create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages.config create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/FCTB.2.16.11.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/FCTB.2.16.11.0/lib/.justforgithub create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.dll create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.xml create mode 100644 Versions/Less Closed Beta/v6.0/MSGer.tk/packages/repositories.config create mode 100644 Versions/Less Closed Beta/v7.0/.justforgithub create mode 100644 Versions/Less Closed Beta/v7.0/Changelog.txt create mode 100644 Versions/Most Closed Beta/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v2.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v3.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v4.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v5.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v6.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v7.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/obj/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v8.0/MSGer.tk (C#)/obj/Release/TempPE/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/Properties/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/Resources/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/bin/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/bin/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/bin/Release/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/obj/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/obj/Debug/.justforgithub create mode 100644 Versions/Most Closed Beta/v9.0/MSGer.tk (C#)/obj/Debug/TempPE/.justforgithub diff --git a/.justforgithub b/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/.justforgithub b/Handwriting program/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/.justforgithub b/Handwriting program/Handwriting program/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/Handwriting.cs b/Handwriting program/Handwriting program/Handwriting.cs index 736bf87..f72c044 100644 --- a/Handwriting program/Handwriting program/Handwriting.cs +++ b/Handwriting program/Handwriting program/Handwriting.cs @@ -81,12 +81,17 @@ namespace Handwriting_program private Bitmap bmp; private bool drawing = false; private Thread MainT; + private object lockobj = new object(); //2015.06.06. 0:07 private void Handwriting_MouseDown(object sender, MouseEventArgs e) { /*timer.Interval = 100; timer.Tick += timer_Tick; timer.Start();*/ - drawing = true; + lock (lockobj) + { + drawing = true; + Monitor.Pulse(lockobj); //2015.06.06. + } } //void timer_Tick(object sender, EventArgs e) @@ -94,55 +99,60 @@ namespace Handwriting_program { while (MainT.IsAlive) { - if (!drawing) + lock (lockobj) { - prevp = new Point(); - continue; - } - //GC.Collect(); - /*var bm = new Bitmap(pictureBox1.Image); - Point p = pictureBox1.PointToClient(Cursor.Position);*/ - Point p = new Point(); - //this.Invoke(new Action(() => p = this.PointToClient(Cursor.Position))); - this.Invoke(new Action(() => p = panel1.PointToClient(Cursor.Position))); //2014.11.08. - //Graphics gr = this.CreateGraphics(); - //this.Invoke(new Action(() => gr = this.CreateGraphics())); - this.Invoke(new Action(() => gr = panel1.CreateGraphics())); //2014.11.08. - /*if (bmp != null) - { - bmp.Dispose(); - bmp = null; - } - bmp = new Bitmap(this.Width, this.Height);*/ - this.Invoke(new Action(() => bmpgr = Graphics.FromImage(bmp))); - var tmppen = (Pen)pen.Clone(); - if (Erase) - tmppen.Color = Color.White; //2014.11.08. - gr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); - //if (Erase) + //if (!drawing) //TODO: Optimalizálás, és a thread leállítása, ha már nincs rá szükség + while (!drawing) //while: 2015.06.06. + { + Monitor.Wait(lockobj); //2015.06.06. + prevp = new Point(); + //continue; + } + //GC.Collect(); + /*var bm = new Bitmap(pictureBox1.Image); + Point p = pictureBox1.PointToClient(Cursor.Position);*/ + Point p = new Point(); + //this.Invoke(new Action(() => p = this.PointToClient(Cursor.Position))); + this.Invoke(new Action(() => p = panel1.PointToClient(Cursor.Position))); //2014.11.08. + //Graphics gr = this.CreateGraphics(); + //this.Invoke(new Action(() => gr = this.CreateGraphics())); + this.Invoke(new Action(() => gr = panel1.CreateGraphics())); //2014.11.08. + /*if (bmp != null) + { + bmp.Dispose(); + bmp = null; + } + bmp = new Bitmap(this.Width, this.Height);*/ + this.Invoke(new Action(() => bmpgr = Graphics.FromImage(bmp))); + var tmppen = (Pen)pen.Clone(); + if (Erase) + tmppen.Color = Color.White; //2014.11.08. + gr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); + //if (Erase) //tmppen.Color = Color.Transparent; //2014.11.08. //tmppen.Color = Color.Empty; //2014.12.05. - bmpgr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); - if (Erase) - bmp.MakeTransparent(Color.White); //2014.12.05. - prevp = p; - //Bitmap tmpbmp = new Bitmap(this.Width, this.Height); - //Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format64bppArgb); //2014.11.08. - 2014.12.05. - PixelFormat - Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height); - using (Graphics g = Graphics.FromImage(tmpbmp)) - //g.DrawImage(bmp, 0, 0, this.Width, this.Height); - g.DrawImage(bmp, 0, 0, panel1.Width, panel1.Height); //2014.11.08. - bmp.Dispose(); - bmp = tmpbmp; - - /*if (bmp != null) - { + bmpgr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); + if (Erase) + bmp.MakeTransparent(Color.White); //2014.12.05. + prevp = p; + //Bitmap tmpbmp = new Bitmap(this.Width, this.Height); + //Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format64bppArgb); //2014.11.08. - 2014.12.05. - PixelFormat + Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height); + using (Graphics g = Graphics.FromImage(tmpbmp)) + //g.DrawImage(bmp, 0, 0, this.Width, this.Height); + g.DrawImage(bmp, 0, 0, panel1.Width, panel1.Height); //2014.11.08. bmp.Dispose(); - bmp = null; + bmp = tmpbmp; + + /*if (bmp != null) + { + bmp.Dispose(); + bmp = null; + } + bmp = new Bitmap(this.Width, this.Height); + this.Invoke(new Action(() => this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size))));*/ + GC.Collect(); } - bmp = new Bitmap(this.Width, this.Height); - this.Invoke(new Action(() => this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size))));*/ - GC.Collect(); } /*if (p.X < 0 || p.X >= bm.Width || p.Y < 0 || p.Y >= bm.Height) return; @@ -234,7 +244,7 @@ namespace Handwriting_program catch (ArgumentException) { }*/ - //Refresh(); + //Refresh(); //} /*void resizeT_Tick(object sender, EventArgs e) @@ -262,7 +272,8 @@ namespace Handwriting_program { /*var bmp = new Bitmap(this.Width, this.Height); this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size));*/ - return bmp; + //return bmp; + return (Bitmap)bmp.Clone(); //2015.07.05. 0:30 } private void Handwriting_Paint(object sender, PaintEventArgs e) diff --git a/Handwriting program/Handwriting program/Properties/.justforgithub b/Handwriting program/Handwriting program/Properties/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/Resources/.justforgithub b/Handwriting program/Handwriting program/Resources/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/bin/.justforgithub b/Handwriting program/Handwriting program/bin/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/bin/Debug/.justforgithub b/Handwriting program/Handwriting program/bin/Debug/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp b/Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp deleted file mode 100644 index 0457634268ddcbfa5b3851c8199f806e2ab63e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6235 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 diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.pdb b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.pdb index b9cda3d2dd59ba60aefe4cc7ce3bb30b8d451d8c..4721f6e6bba19e6a73c6a022e2824ed2a0e5bc77 100644 GIT binary patch delta 6419 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 delta 5968 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 MyRMm^irS_92MYWcdH?_b diff --git a/Handwriting program/Handwriting program/bin/Release/.justforgithub b/Handwriting program/Handwriting program/bin/Release/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/bin/Release/Handwriting program.dll b/Handwriting program/Handwriting program/bin/Release/Handwriting program.dll new file mode 100644 index 0000000000000000000000000000000000000000..496f949210945ce2aa7a2800a560d858c7e61606 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/bin/Release/Handwriting program.dll.config b/Handwriting program/Handwriting program/bin/Release/Handwriting program.dll.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Handwriting program/Handwriting program/bin/Release/Handwriting program.dll.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/bin/Release/Handwriting program.pdb b/Handwriting program/Handwriting program/bin/Release/Handwriting program.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2a6c2d4c16a2219b90fd4c1c871f8c833aae3f34 GIT binary patch literal 32256 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 literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/.justforgithub b/Handwriting program/Handwriting program/obj/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Debug/.justforgithub b/Handwriting program/Handwriting program/obj/Debug/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.dll b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.dll index d949d4e08204bdbc2c7e3ae0db3aa20ea07dd3e7..7a3f8fa1ca5955fcc5130f0094af47f2c5d181f6 100644 GIT binary patch delta 5703 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 diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.pdb b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.pdb index b9cda3d2dd59ba60aefe4cc7ce3bb30b8d451d8c..4721f6e6bba19e6a73c6a022e2824ed2a0e5bc77 100644 GIT binary patch delta 6419 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 delta 5968 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 MyRMm^irS_92MYWcdH?_b diff --git a/Handwriting program/Handwriting program/obj/Debug/TempPE/.justforgithub b/Handwriting program/Handwriting program/obj/Debug/TempPE/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Release/.justforgithub b/Handwriting program/Handwriting program/obj/Release/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Handwriting program/Handwriting program/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..e08609565346a36d453d406da274453dbb8c06bf GIT binary patch literal 7422 zcmeHM+fo}x5S6%$5tzgxjxP{9>%>WHm%Nd<7@H~{Y=mqowu_QfI2A0uw2;AaVb;#mU(Q;IJQFEc4j?j$dpT=8s(Zru z2|88Tf?&CxpKB~M78`|vyO8H|e3T%cegf%5Bs`b!)&c`chVK*)Lr`{^tF<7EjJ}DT zZ*$L+ZE&A!4SwD0tnL{IXjXa>Td&BVA(|!O!3~E8u5h`5qn4!AGmXgeN{ai?ma27B zRpoW8yMC&!Bs~}Hy-Ug}S4}XzZk4F6!Mw#m^nK9`q=F(eIJ#mj&<5vsJiEhzA6?w& zaJa*!H^uow-1$gF|`j8p>jwa_(ORe&pJXPuiJeXV&$F%c@+Ko5~s zQwo|w8`U}PkU_%?kPD}App(uxfpX(a)f*Xz7N~pYtBXR19`6v~*^b>nn>p;buA~E6 zOZ6OQFAUm*A=m8!ZaE5!@S)q~>_~@R(rkzgGnPsXqZ~@7(+oc-{}`=wv;iN34p+@F z6h`(-2tWzPevK}8U)bEdpb5tL2KORZ=R&=o?KQ0!C4y$o^0gzCC+f#LXZ}BLoW(`H z;4C~TJe!+`{L^P!xr^p;NvE2GAGZ4I)=NHIIz0%{B%-Ldo01s(lE+k^H_#wJlZc@~ zfcEQ$bBoArW*EhIW`v5PB#;ZFGFMRG*BFTmiE$DWD8|`Ulqoie;>CWsONW*!$d21w zL9NGNYxdjKYL6J^cIWMd+!3qnGRW1v1NIq?^Lx6uRQttxY`vALE-WW<9A3*?$ZkGB z%RsC4rt%Wmu4$pN458Elxm&093VCc>34@HnLXOr%?s~3H)<4wB-~rcAD}qMKSw&h@ z1}(ka9tSQ%0~7>Er)-BiJCOODth|O|`m`ZORG$oDS*)L;daGxtMfxe!kHjs$ppvhJ z$F5^(9CdknEc0G^Xic7EuSz4fYO1H7lNz`BH zcT6q}lH*zh47pd^$m-()n@0F%qVUhd(01Z%h0P$?ZlYim1(Cv4uQ}3_DijXVa{EKr zWM3h6_&;HT!q~LKpvmr#dsmifxCRu@R-Bqy5B8oud5AIG4Nb`rD@LQi&l2uy6%w}`ft92yyPA0Z$)h@#?no;G7^zC);1a!~I?;L5hP zOH%nd2K*iYd2)b1`(6z51Hv?tg?TN4UkPi3=)r)~4mfRJZ*TgY62@d|8}Gt=J-V&M zZ!osKdw4mEHGhrtel}krv;?(TqRMM1|eWcA&o<>iWay6PQ%b~cnzjE%K{{ef9 zwNv}AL}2LhyQJ_H18$uIW}|+3zk2?KcISZoi1qzQ|MED_)QN+e3W z>mukSgjq_eC=q6}D3VxGHirXmCJ-wn?r;}VfGlN_^jwJpgrbL@;Xenb-M_tr8=Q8% J*C<;P{{Ty}wZi}a literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.FileListAbsolute.txt b/Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f3a7e56 --- /dev/null +++ b/Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Release\Handwriting program.dll.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Release\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Release\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting_program.Form1.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting_program.Handwriting.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting_program.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting program.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Release\Handwriting program.pdb diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.GenerateResource.Cache b/Handwriting program/Handwriting program/obj/Release/Handwriting program.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..c24b0365fa2f9bfd7892330e966ad65486c500e8 GIT binary patch literal 1125 zcma)5!EVz)5VdLS#7;^bp(r3Y1cU@qBP*e*;1ZBX6hb0@YwQHA# zFW?h6z+Z6Y#Dybg5I1h{4KTAniQ0fVmd3L)v-|dqpDo+6tRHCfCaax8_hgGlN@|(p z;r)V(INW7=ti!|Zt+3N>?Sax?zRu11><}&HeW=|)+XKbTZ&)lYjk?&A=hOI=l7S9s8vNP2=Ov1ht z0`H2$)ZseQPYo}F;@}>ePz;=lL5WiT-B`v3e^at}z=(hO_jjuF+KjQ2_@i8d<0a^sn+F zmi>WLldf3@glPcIW8f{33(y6GM-~t!nL`cT`Jy>3%w}nm$pqz45bTHqoI6# z`|91B4^$(9rq-YuO=SQ5-NxtFSgX@fWOdp{hr3O5H)aMJhJR;z5J@3b#-lN)@L4u; WFJkl6e>H=`zcI|xQJsLvsy_jF>@-~f literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting program.dll b/Handwriting program/Handwriting program/obj/Release/Handwriting program.dll new file mode 100644 index 0000000000000000000000000000000000000000..496f949210945ce2aa7a2800a560d858c7e61606 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting program.pdb b/Handwriting program/Handwriting program/obj/Release/Handwriting program.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2a6c2d4c16a2219b90fd4c1c871f8c833aae3f34 GIT binary patch literal 32256 zcmeI54RoAUnaAHr)1gJ;Hl>tMN}aZ8>1RGlzXGMDNg7&dq|g>x?2=BBX%m~TCR5uY z%AlZ#xVA_4h{v)5i=r;>qO!Xvt&2x2=s~E8Y~4k-?qQYgsucBj@GJ}a``?e5cP5jP zKoe}6OP~3_@4e4+pZoFLd!KvfW~gs%>hA36+>(sdl-JCj9jjkk7h6?1@iU(`NRExDtCES-9A-T8F}Q>UF+rAJ@8kpHS0!9UGb&0pZmzo|9tEg z&!{x#`uV6}`QCZCQR%edhm)rT@{NBjh2i;M@2XKQo;xrwan=e|8nD1 z%MPCLXG{J8kQtRQ%K)T#rUztC~n z)6E}T{ZGfLpSijF{?9mIZDI{CY2J^kvE)1&oH{#u@>{(r|) z+yCoFk97UA?!mS@6JOi&z{%e-r$-G=RR4eViNjz0WbD};FYF!jv%OpIKRp`n6sYBi z>i;vQ-O;?e<%)yfn)s9UBeNP`It7~Mw5Y;~>i?fC9Xa_uUq3kY=RX*C{dboCeAj8w zc&A7ub&$u`yuk=a=RPB$D0Bui3K|Wa3B3(E3o3%%4*dnB{a-OO7CIXm2b}|rht7pc zp!1=L&;`&W=p9fDnhZ^Wrb5%8>Ck!51gI1m4nx-h|D%p2c(iZBpQm~Yy!zs+FKYbH z*MM)nc++*Uxv_V3b~m=hnszib#Wz*N)^vBiC$TM=*tV&D?d6H?vg9@*uTFGz_OvED zyLWF|8SiM`+1;9K?bsUY>h9dy9dFMYM?PJN?qqACXVcn5QtUltwTYhAtsP|A)MK>Y zfcB0o?d0gRxA$!I+PgE_Tk>en7e_u`dym)N9MV2iRlhpX)48L&DUn@wv=2$uyVKf- zvhFeo_3&WVGNfnl%s6E3S>`*al?z#P*^u>IxTb^Md*KRNU4z$yb)DVql|$EeTa3CP z>or@u!R{|xDYVE}yMYDd6>zhhNP^aro6M8_xE-hRPtYXjYdD!LIG9h#$;=ZjCH(`$ zKjHH7EH9I({LSHTVq4(+|E!4IM%y0P{^7fR|2Kys>brpi?GdyWkX%EI4}$Dr2B^Hp zC6^uDz_aW_{i?JC=!5LU^ZufG*X`m}UgA|+m{&IAd2jg2nbqQzEs0lYVP4sh=k0my zXa6o<*_3#d7Uq>*dfszpG`~~4vQzOYEzBz$_q@|TKA}>)vQ6l>e4wSU^^f=B-Dq0P#( zKBx`mfra#q%B=k=k7kcsSWs*Bv(zoBJbp*~O32nHl5Pjd`7bnRsMJW_+3%*bA7;;+ z(tekHZ>orvEDEZjS?rn54E{j;C`k69pl1c`k^fwR>UOc~|1MW3?bUslO4}r1GF4b& zd!=qiN7K^AhK355%3iPC5iE?@c4n?fx3gqzz7caaAbskWQaup1(VjXt`0b0YrpkhA zO`LB}jZFo$=NxFYUWUUPY611XAOHJY4w}<_V118X<;QLlu)%^xcuOZi8}<`=qp9CG#0cH0NWTl8b$derP_ zOYZ14%R~Qk*>kyET}w2e2;u(Z3@*CY>tZL|@FsQnx#Nh_6`ngLq3cesOa0T-+1AIqP_W&e0&pY1r0rPCS4>}v)Gk~_YHssr5o@@IX-MkSlBWID(hr(q{bjN#W zdD+MFlxrn2;`cl!x@=l=G#A=26iN4$n$ypPl<{WS%Vg%n(VU`cZIPVTDr?UXW81t2 z8qZ7gK$r=?&T6^3le!R`4bBCjR55?ib58J0Xa|;{Z&f`8x-M!SV0!AcF8cK(CI&)y zj>j*GE}&ygpK0D*gWsOS3up1}-+EFSkxuo!%IkIA;dG5N8tn()4MmrDU0P2DtSj3$ z^txWoQ!l=Qimvgx()C)~dIR%y|LRqqw_eR|UC_Ma1HOIqTCXczuYu^wu9x>?4m(}) zU43Bx9BuQuLZ@yG^_@F<61AN>*>v@lFN!|)$EttBIQpkA zyN+Jp!+G>gL*Ko9=$rQj_4##uvst`H8 z@eImy56b_=mD&5D;qoNgySftCg3^f3Dl2J?@=~XeCKC(GnR+a4XlUzfinsMFG;N?w zY$-Yy!8;aIe)4TJ?835JdG~&A|9#)=aprCR8T2TG=Z`V;({`sn=w41TYhunHqK|n!;r280u(hxIC|C)ylJmTi=xb#|e>;0G46u`m(h7o!@9#dxu1~1Q zS}TsZvg$j3AL#e!uY6g}UZ64A(NNRIhQQe58f5lElJR_g9AMMwaoOay5dF8u?0L$s zF`IO;fpD<}^T`?zEu=CU4}sYWWXjmTzRPY8KPNuvba`J|*>lboUFvluyW>sUs^i_2 z4Qu&}{I)jI`=>8^t@buqs|y&dG#uKq6@f*ZL>2|BpjprihZloOL+=xLz9hZJBj3RKa+!UWY}4CO zIeLo8TWzsKM7u}$&(E=p8?(Ozv`0+Q4fu0G>THm?AK6j{mda-LXVPbVto-_x8ks3+ zebz^cu#dDMtgqVXTLG#(bw+k-mOjlj*7u2|&quWesT>L$T^`qgMf8r}`%2FGFOjrg z6P9C{q;CHF@SVyky^pkhNPf8;S#tGhxmp_C`U(-_Hz)zy2^Om}2s)=!pTv=mflc5X zuoq>H9GFUhvc4PVjT!F7V4BHkW!Hd_On|T^|6agExT-!4&_h z!4HAggSUVQkUUc#1y!!U20z04-QaED{or2k0k8qw4}KR!4Sh3-zMKh7;`u`8I;b96 z1C>MPlU4y<18sEg3k?=y+a=~)VU@BX?j4ZwnS^~!N%x)X)UNsY?ezPUMRxiFPjwN3508B)NGO!;D<@}2_5 zK-tP<5c^6oe+4tZDsUE9#BDy?pSHDazh>&A@o3kw2&J(hJRZx)<6NT4OBie{0@We`?;Af53c0nJ%JC)2aKkbbb%f5q7PK1X_dC4;sZ^R0k0> zpKCpcx%{ZFsWbg##_Lp2c7i>ms=;ZX>JvbX=3}Zn-iZN-<)NTjMc;5$V zUVZ?iT~Y@@=77|Xz*1;@N#f89YTAj&IcKxso5YiV`>?A1$YIx8oU;y z&Z!RYD)2+#)!?1rTJS3%_M7?!xE}l-cn$a*crEyAkhV(cLg_~EEKu`z3HWZX9Aw_P zc?lTj{YtPA+ypj(ZD2F_Aus`c0^9ASkiZbTH`N*u7RdNmq9C_TBrun8L9YW&k3j zBqy2;Nza9lbX7s`bTkK4-U}g>Upy+yB1mnq4w`Pp?jINvjCJ$9JCMHrv4`h<*zbeT z6VMBgHZ3~$S`4j&+MwH@yP?M*+2JeDIP73Pv>IxGQqX zzrP4Q3LSx7hQ=^C&wy4#r&6G5%vtvPf1P_P6j?BzL`C&rl5);}bzbgyl|Crvzj@Aj z^PLF~#`&-I81wq`{Wf)%?P7A+vOO>HXCAUy1+9HPz!z1!nWW6V@0xhqjzkSN;kG84 z2ecm|pRB$2d=-RnmId>PsYgqBGCCV~B$J&Tm2T_(rgUk{DQIo>0h@|e@DkEB@6G7) zds?j@3X?3DPljWZHO}f9q&@8&PVfJ@x=JyFBHHZrzNtO!*Xz_zs)ygxveuiReViX( zDuUWn0iP|UL0Jq+R=&|_EKGaM@czi!SR`$GD!yz$f&Mc76n2@?{2Z3Eb`nY3PgqX- zWcg1MjaTwqGKF`b+*FzE;qs!Vm`H z|KV$~q6IhOBbjpqe48x458uG}eIEnm_uUK1@B0Ukwn#k!dcSW0`TPg(i-`XtD1R@? z0Fl3U0VscOCU^;01Jq#U!ehn2em}AglXbsc?-2n|nQ1SeE=#5TcSapnf z=@63)ri1g%_j|R8Epe`==yf1>?%WjG>)g=$9!HcRL34x;)6xB`*Im|RE*}l#oG=!e zQ%lLz)+7Jjh6&hVF{Ax=@Tsq?-psicrkb8R$H5Dk{qpGGlRO3KyMCsfcpn4ZM?*de z9fpoUe~v-F=`>+<`AhPr3+be9V2`T9M|l@UFc9HC>KXctORsYA+RG}QdB)%Y^3eM| zPX6=mU2&oXd}5zaKchhgzXnk{ zDCbN%Z2U_zq)TMx5#4i&~@u ziJ|m#^gtgj>m}feSrGVk?!_{|2>G2QP$^Ua;jgf&8vh~K47Nd>spve~+_l;Vei3>S zIt)Dz9fMwhMp3+RPz=(2Or5FgynPKM-=_siLU%xSLia&B57-ZBfAtJ>1o}1fGE_(- zj)5jZGa&7UE`wG>8=z)L{-AtCof~`#x*L)o^Dv|{ghSAC&TpGa$!g3=5D>o14JFH`5U=I<(ydxcN zWnAB@+49^?nMN9iqxYp=FKc;R`5JXE!ph2CtZe3TtCz89PNpd%BO4kSWM7E&GB(Z0 zG-ujDHf8l>Uu^YqHr>f3)IPR+@`tUQy=?0FZM@^(lHG0vdD^YOwOa+73g0&mQ;!1E zZlQ};7gZ7-vJUr3j^ROe-Env-eF%m+HZE$Dqg$Xt%|vX;lmGTwaMo-?vJ^HpVL zOxScQH*bDMZgrt_=E%*<$k}u!w;)qL-7hN$LYL047GFl2=E}$z_w!vdepsIRnF~-} z*78`{O6FTXuWEl$5ZH@Mp4Y}XUQ<^)_bfR>yqOD0p5Mkhe(LDkPIrg0%VjSXc{!Wz zJQricQsnbMR0z|YHC9w*Bj>-!0_!1wFD{zd#ePCrd|<=VhJ z9tqVa>u@;K9+uDQs-WNe7<mJAV4fx8Fp@V&rw&&+<4~`pTD2?HA2Cgz)9FX;x;Q@kMO^ri_d`JP5U$jd%R$ zI9-F*_?@FGwY}3h@f{_>=qJt#?zwdz{kosNnnU~s(1-CnoM&Es`>2nzzYZP#eQ2K| zJSW)Wn8?=l+Dlj2@Wzqe5i21wD%Al_1q7`-3^BEHg$Ja3~*w46Bc;1X>%KSPy zLVAO$iWSw>3zjp=Z8*NJu|d-DtpwF>qx!F_Y{}B5h6W9nw)pOvws=p^f}og6WamyCyY4;_kyL;#KA*VZeEX5||>PwO~(WQl} zBECJOjdf|ca`zr5O?N2{IDuR_-4*Mre!2t35^F-PobGe=Rrkk8o7#t*?qyxjN1E^2h1@j#ExNZe%p)Ddr@t9Q)C4DPo|UG*3uI|G zAvaBb<3|z z?|^=rY?L!Nty{`S7&Vq!!1={U^qhfY0qto2dz?JxBGUrz)jSIoG|sff4fgLo4f$^p z@tZ7zT_^uTTIq>C_s4Vw@3(tGOWe>Y4gaLh;8o3PseKE6lguxkSuM)=@V^b`hM|Uy z4H|SdjNvkZfA*=vcoMb1@&5lmx3S=qbFpgMs*Ww4L3u~KJ<$`C_jEUvxA5C6iS9=J zplq9s*wWgT=qVr6-$28o^%D=rwD$J{!@sI!3O2Om=+66ddP7(czq$;S%9hNpEoS`= z-CLobg>I2Xld(SjmqE78CJg_7y<9__CcwRyAO?-Yq1Qg@3XI3^ryj(JZo`H) z5Z@Q=BW(t>3%)177zQ~XhkhRhsk4Lmyw4$i6z|%<@YR9YKXK2^*r@g>^PvThj^T7x zApNpu*|qkPXG5}m?Gr{pvQ^o*Y+H6Lo0ffZFVcLUrTvoj^d*qas#M4GA?;7JuhTw^ zdw{0ilR=GxsZc324Vn&J2&rB(p;^#uNcETtamP>h{mdDFj;AuD@jf literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Form1.resources b/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Form1.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Handwriting.resources b/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Handwriting.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Properties.Resources.resources b/Handwriting program/Handwriting program/obj/Release/Handwriting_program.Properties.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..7d8e885e66fff8c520fb775bc4570d4c068a85a3 GIT binary patch literal 5278 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 YDp%6LDF_{M#S|`|GDoTo|53{S2CP#i4FCWD literal 0 HcmV?d00001 diff --git a/Handwriting program/Handwriting program/obj/Release/TempPE/.justforgithub b/Handwriting program/Handwriting program/obj/Release/TempPE/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/Handwriting program/Handwriting program/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..bfa0bb1c653d6e28f5ce2b8a43ca0896da983265 GIT binary patch literal 5120 zcmeHLU1%KF6+U-%wYyqN!n^*dL)>%}#YL8ziG*cnLh7uf)n8*-wpNmz)*#Q$Uad!- zo!QLHT9O|UmC`?OX-Xk^D1C7Vq!36*LmXN{3xSe6gqA>_@{)%@Tj1JIfAiQ{F%HCe_cvB@N-?f5z4I)d^rz-ITdS+8=Pu7(PhIAd<&ey zR>FV-9YF7DC7?Ha>3C4&l+k5$_EkjhY9*q{E>;b7&MO*Y)2N3o4-(w~aG|9CIT_K0 zv11(62pt&J=rN4ot3XeIrVkEhF?skC(U*Jhe)1t|{uV&BVXT<TjW2SfM_djKW!M(}rs z{?$*{kJd-}u|8Ib)?W>PJTu&n1wsh59iADvPaDP-Z6-py{e3XY~SLVxj9t6LIL=8Y6YBV z#r^Qe`P7u)tO`}7Txsaa7_`p3zl56Hl&KPwD6Ko=0}3Hk|5(YCqCXaA5Ss=qffLZ9MofEO~go(cGxhR%7f)Op5L^ss{qB;(r5gMkM7xMrY6@- zK$~}i&~z=SY|4?0lIJzkX?1eYaznczk+??FcBEgC{xusrMUg;7yCfZROO1kw5GAbI z3MDN?hOCCEs_od}c4xM;bN_ntldMkRv!U!Y+RM|d#OW|YS>u_Gza&GpS$Dl4w5+S838cSUKMAMpuH$M+u1jAcInz(JOedh_?Pfa~9`iwTB!Gm>&G=p;mc$rf z@8HC#^A!ZLQFXRenkNzlmU|Cnqv^TQ4RJN3L(?@I2V~OsHUqQjbOpI*q7otxI8Ev} z?K!`$b;b8w`?{?0#XCQTo9a@HHpwTOLUfnvv_?(v9!5Uq8>l(w6yGF?Cu>OxAYD>V zk6MsgYD}NAVCSIw@L@xGRoT!!wlrZSvFyy)&)$6NL)uY(Yq=33FiiO-OkF7mjct8IL%MPV;JPT4_atKC!Ebn8kFRcra z>(MnaFi;Y7vb_OGHCgsNCou3<_1wC%&D&K=uH0nHc52ek@@pA?C~RD!PzSZ6M>8af z4;IGKIu%c4*n9C*Hk&H;7yGqz76>6bIsmv??P&2(4=@zIk`t(!+@28h_=0WuUf`{V z#;P6Q3{}Eb&Gw9F`+z4dRqa}r2r9VTj-0_Yi;tz}=f=j`0I_r*Ue9>3isD3Z0!!i> z1noY4TP|ydFZgB?hkbg>l1)B-%Qym?0m3@SA0%-zc&sPf?x)_RN3=HO`DMphFl{#~ zs#2`=!H4>~-tFQ4-2Y|oV8Uf44Fl z6ydT_)m`PuKy~ISUV}gW)j>3@;y8oZx>{ul8EVqDilk0gfPhqq2oKMh0nOg*b@IkJB>J+lnLw2M-f3XB97LmkrXA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/MSGer.tk/.justforgithub b/MSGer.tk/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/CurrentUser.cs b/MSGer.tk/CurrentUser.cs index 1ce0617..da33670 100644 --- a/MSGer.tk/CurrentUser.cs +++ b/MSGer.tk/CurrentUser.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Net; @@ -15,7 +17,7 @@ namespace MSGer.tk get { if (!Storage.LoggedInSettings.ContainsKey("currentuser_userid")) - Storage.LoggedInSettings.Add("currentuser_userid", "0"); + return 0; //2015.06.25. - Nincs bejelentkezve return Int32.Parse(Storage.LoggedInSettings["currentuser_userid"]); } set @@ -48,11 +50,11 @@ namespace MSGer.tk { get { - return Language.FromString(Storage.Settings["lang"]); + return Language.CurrentLanguage; //2015.05.16. } set { - Storage.Settings["lang"] = value.ToString(); + Language.CurrentLanguage = value; //2015.05.16. } } public static string Message @@ -131,7 +133,6 @@ namespace MSGer.tk SendUpdate(); } } - //public static IPAddress IP; public static List IPs; public static string[] Keys { //2014.09.08-09. @@ -171,7 +172,7 @@ namespace MSGer.tk Storage.LoggedInSettings["currentuser_keys"] = value.ToString(); } } - public static int PicUpdateTime + public static double PicUpdateTime //2015.06.06. - int-->double { get { @@ -186,42 +187,65 @@ namespace MSGer.tk Storage.LoggedInSettings["currentuser_picupdatetime"] = value.ToString(); } } + + public static int Port; //2015.05.24. + public static bool SendChanges = false; public static void SendUpdate() { //2014.08.30. - /* - * CurrentUser.SendUpdate() - * Bármi változás történik, elküldi mindenkinek - */ if (!SendChanges) return; - string retstr = ""; - retstr += UserID + "_name=" + Name + "\n"; - retstr += UserID + "_message=" + Message + "\n"; - retstr += UserID + "_state=" + State + "\n"; - retstr += UserID + "_username=" + UserName + "\n"; - retstr += UserID + "_email=" + Email + "\n"; - retstr += UserID + "_ispartner=" + false + "\n"; //Ellenőrizze le, amikor megkapja - retstr += UserID + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now); - retstr += UserID + "_picupdatetime=" + PicUpdateTime; - //while (true) - //{ - //byte[][] resp = Networking.SendUpdate(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), false); - //bool fine = false; //Elvileg így az event működésekor is tudja használni, és utána ha minden rendben, akkor törli az objectet - Networking.SendUpdateInThread(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), null); - /*(e, resp) => - { - if (resp == null || resp.Length == 0) - fine = true; - foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik - { - if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19. - fine = true; - }*/ - /*if (fine) - break;*/ - //} + List retstr = new List(); + retstr.Add(UserID + "_name=" + Name); + retstr.Add(UserID + "_message=" + Message); + retstr.Add(UserID + "_state=" + State); + retstr.Add(UserID + "_username=" + UserName); + retstr.Add(UserID + "_email=" + Email); + retstr.Add(UserID + "_ispartner=" + false); //Ellenőrizze le, amikor megkapja + retstr.Add(UserID + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now)); + retstr.Add(UserID + "_picupdatetime=" + PicUpdateTime); + var task = new Networking.PacketSender(new Networking.PDListUpdate(retstr.ToArray())).SendAsync(); + } + + private static Image image; + public static Image Image + { //2015.06.06. + get + { + if (image == null) + { + if (!Directory.Exists("pictures")) + Directory.CreateDirectory("pictures"); + string[] files = Directory.GetFiles("pictures", UserID + ".*"); + if (files.Length > 0) + image = Program.LoadImageFromFile(files[0]); + else + image = UserInfo.NoImage.Clone() as Image; //Ugyanaz, mint a Properties.Resources.noimage + } + return image; + } + set + { + if (image != null) + image.Dispose(); + image = value; + string[] files = Directory.GetFiles("pictures", UserID + ".*"); + foreach (string file in files) + { + if (Path.GetExtension(file) != ".png") + File.Delete(file); + } + image.Save("pictures\\" + UserID + ".png", ImageFormat.Png); + PicUpdateTime = Program.DateTimeToUnixTime(DateTime.Now); + var tmp = UserInfo.Select(CurrentUser.UserID); + if (tmp != null) + { + tmp.Image = value; + tmp.PicUpdateTime = PicUpdateTime; + } + SendUpdate(); + } } } } diff --git a/MSGer.tk/ErrorHandling_REMOVE.cs b/MSGer.tk/ErrorHandling_REMOVE.cs new file mode 100644 index 0000000..bf6f49c --- /dev/null +++ b/MSGer.tk/ErrorHandling_REMOVE.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + class ErrorHandling + { //TO!DO + /*public static void FormError(Form fname, Exception e) + { + MessageBox.Show(e.GetType().ToString()); + if (fname == Program.MainF) + { + switch (e.GetType().ToString()) + { + default: + MessageBox.Show("Ismeretlen hiba történt (" + e.GetType().ToString() + ")!\n\nForrás: " + e.Source + "\nA hibaüzenet: \n" + e.Message + "\nEnnél a műveletnél: " + e.TargetSite); + break; + } + } + else if(fname==MainForm.LoginDialog) + { + switch (e.GetType().ToString()) + { + default: + MessageBox.Show("Ismeretlen hiba történt (" + e.GetType().ToString() + ")!\n\nForrás: " + e.Source + "\nA hibaüzenet: \n" + e.Message + "\nEnnél a műveletnél: " + e.TargetSite); + break; + } + } + }*/ + } +} diff --git a/MSGer.tk/Forms/.justforgithub b/MSGer.tk/Forms/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Forms/AboutBox1.Designer.cs b/MSGer.tk/Forms/AboutBox1.Designer.cs new file mode 100644 index 0000000..f3a0e83 --- /dev/null +++ b/MSGer.tk/Forms/AboutBox1.Designer.cs @@ -0,0 +1,190 @@ +namespace MSGer.tk +{ + partial class AboutBox1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox1)); + this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.logoPictureBox = new System.Windows.Forms.PictureBox(); + this.labelProductName = new System.Windows.Forms.Label(); + this.labelVersion = new System.Windows.Forms.Label(); + this.labelCopyright = new System.Windows.Forms.Label(); + this.labelLicenseLink = new System.Windows.Forms.LinkLabel(); + this.textBoxDescription = new System.Windows.Forms.TextBox(); + this.okButton = new System.Windows.Forms.Button(); + this.tableLayoutPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel + // + this.tableLayoutPanel.ColumnCount = 2; + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); + this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); + this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); + this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); + this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); + this.tableLayoutPanel.Controls.Add(this.labelLicenseLink, 1, 3); + this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); + this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); + this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9); + this.tableLayoutPanel.Name = "tableLayoutPanel"; + this.tableLayoutPanel.RowCount = 6; + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.Size = new System.Drawing.Size(417, 265); + this.tableLayoutPanel.TabIndex = 0; + // + // logoPictureBox + // + this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); + this.logoPictureBox.Location = new System.Drawing.Point(3, 3); + this.logoPictureBox.Name = "logoPictureBox"; + this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); + this.logoPictureBox.Size = new System.Drawing.Size(131, 259); + this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.logoPictureBox.TabIndex = 12; + this.logoPictureBox.TabStop = false; + // + // labelProductName + // + this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelProductName.Location = new System.Drawing.Point(143, 0); + this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17); + this.labelProductName.Name = "labelProductName"; + this.labelProductName.Size = new System.Drawing.Size(271, 17); + this.labelProductName.TabIndex = 19; + this.labelProductName.Text = "Product Name"; + this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelVersion + // + this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelVersion.Location = new System.Drawing.Point(143, 26); + this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(271, 17); + this.labelVersion.TabIndex = 0; + this.labelVersion.Text = "Version"; + this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelCopyright + // + this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelCopyright.Location = new System.Drawing.Point(143, 52); + this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17); + this.labelCopyright.Name = "labelCopyright"; + this.labelCopyright.Size = new System.Drawing.Size(271, 17); + this.labelCopyright.TabIndex = 21; + this.labelCopyright.Text = "Copyright"; + this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelLicenseLink + // + this.labelLicenseLink.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelLicenseLink.LinkColor = System.Drawing.Color.Blue; + this.labelLicenseLink.Location = new System.Drawing.Point(143, 78); + this.labelLicenseLink.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelLicenseLink.MaximumSize = new System.Drawing.Size(0, 17); + this.labelLicenseLink.Name = "labelLicenseLink"; + this.labelLicenseLink.Size = new System.Drawing.Size(271, 17); + this.labelLicenseLink.TabIndex = 22; + this.labelLicenseLink.TabStop = true; + this.labelLicenseLink.Text = "License Link"; + this.labelLicenseLink.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.labelLicenseLink.VisitedLinkColor = System.Drawing.Color.Blue; + this.labelLicenseLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.labelLicenseLink_LinkClicked); + // + // textBoxDescription + // + this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxDescription.Location = new System.Drawing.Point(143, 107); + this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); + this.textBoxDescription.Multiline = true; + this.textBoxDescription.Name = "textBoxDescription"; + this.textBoxDescription.ReadOnly = true; + this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.textBoxDescription.Size = new System.Drawing.Size(271, 126); + this.textBoxDescription.TabIndex = 23; + this.textBoxDescription.TabStop = false; + this.textBoxDescription.Text = "Description"; + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.okButton.Location = new System.Drawing.Point(339, 239); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); + this.okButton.TabIndex = 24; + this.okButton.Text = "&OK"; + // + // AboutBox1 + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(435, 283); + this.Controls.Add(this.tableLayoutPanel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AboutBox1"; + this.Padding = new System.Windows.Forms.Padding(9); + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "AboutBox1"; + this.tableLayoutPanel.ResumeLayout(false); + this.tableLayoutPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; + private System.Windows.Forms.PictureBox logoPictureBox; + private System.Windows.Forms.Label labelProductName; + private System.Windows.Forms.Label labelVersion; + private System.Windows.Forms.Label labelCopyright; + private System.Windows.Forms.TextBox textBoxDescription; + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.LinkLabel labelLicenseLink; + } +} diff --git a/MSGer.tk/Forms/AboutBox1.cs b/MSGer.tk/Forms/AboutBox1.cs new file mode 100644 index 0000000..4e7c0c5 --- /dev/null +++ b/MSGer.tk/Forms/AboutBox1.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class AboutBox1 : ThemedForms + { + public AboutBox1() + { + InitializeComponent(); + this.Text = String.Format(Language.Translate(Language.StringID.About), AssemblyTitle); + this.labelProductName.Text = AssemblyProduct; + this.labelVersion.Text = String.Format(Language.Translate(Language.StringID.About_Version), AssemblyVersion); + this.labelCopyright.Text = AssemblyCopyright; + + labelLicenseLink.Text = "https://www.gnu.org/copyleft/gpl.html"; //2014.04.18. - Frissitve: 2014.04.25. + List desc = new List(); //2014.04.18. + desc.Add(Language.Translate(Language.StringID.About_Programmer)); //2014.04.18. + desc.Add("SzNP"); + desc.Add("http://sznp.tk"); + desc.Add(""); + desc.Add(Language.Translate(Language.StringID.About_SpecialThanks)); + desc.Add("Jonathan Kay"); + desc.Add("http://messengergeek.com"); + desc.Add(Language.Translate(Language.StringID.About_SpecThanks1)); + desc.Add(""); + desc.Add(Language.Translate(Language.StringID.About_SpecThanks2)); + desc.Add(""); + desc.Add("Allen Anderson"); + desc.Add("http://www.codeproject.com/Articles/4012/C-List-View-v"); + desc.Add(Language.Translate(Language.StringID.About_SpecThanks3)); + desc.Add(""); + desc.Add("Khendys Gordon"); + desc.Add("http://www.codeproject.com/Articles/4544/Insert-Plain-Text-and-Images-into-RichTextBox-at-R"); + desc.Add(Language.Translate(Language.StringID.About_SpecThanks4)); + textBoxDescription.Lines = desc.ToArray(); + } + + #region Assembly Attribute Accessors + + public string AssemblyTitle + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); + if (attributes.Length > 0) + { + AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; + if (titleAttribute.Title != "") + { + return titleAttribute.Title; + } + } + return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); + } + } + + public string AssemblyVersion + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public string AssemblyDescription + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyDescriptionAttribute)attributes[0]).Description; + } + } + + public string AssemblyProduct + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyProductAttribute)attributes[0]).Product; + } + } + + public string AssemblyCopyright + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; + } + } + + public string AssemblyCompany + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCompanyAttribute)attributes[0]).Company; + } + } + #endregion + + private void labelLicenseLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(labelLicenseLink.Text); + } + } +} diff --git a/MSGer.tk/Forms/AboutBox1.resx b/MSGer.tk/Forms/AboutBox1.resx new file mode 100644 index 0000000..e3289f3 --- /dev/null +++ b/MSGer.tk/Forms/AboutBox1.resx @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/MSGer.tk/Forms/AddPartner.Designer.cs b/MSGer.tk/Forms/AddPartner.Designer.cs new file mode 100644 index 0000000..dd0f39c --- /dev/null +++ b/MSGer.tk/Forms/AddPartner.Designer.cs @@ -0,0 +1,175 @@ +namespace MSGer.tk +{ + partial class AddPartner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.nameText = new System.Windows.Forms.TextBox(); + this.searchbtn = new System.Windows.Forms.Button(); + this.glacialList1 = new GlacialComponents.Controls.GlacialList(); + this.gobtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.ForeColor = System.Drawing.Color.Blue; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(174, 25); + this.label1.TabIndex = 0; + this.label1.Text = "Ismerős felvétele"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label2.ForeColor = System.Drawing.Color.Black; + this.label2.Location = new System.Drawing.Point(18, 86); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(174, 16); + this.label2.TabIndex = 1; + this.label2.Text = "Név/E-mail/Felhasználónév"; + // + // nameText + // + this.nameText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nameText.Location = new System.Drawing.Point(18, 106); + this.nameText.Name = "nameText"; + this.nameText.Size = new System.Drawing.Size(270, 20); + this.nameText.TabIndex = 2; + // + // searchbtn + // + this.searchbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.searchbtn.Location = new System.Drawing.Point(297, 104); + this.searchbtn.Name = "searchbtn"; + this.searchbtn.Size = new System.Drawing.Size(75, 23); + this.searchbtn.TabIndex = 3; + this.searchbtn.Text = "Keresés"; + this.searchbtn.UseVisualStyleBackColor = true; + this.searchbtn.Click += new System.EventHandler(this.searchbtn_Click); + // + // glacialList1 + // + this.glacialList1.AllowColumnResize = true; + this.glacialList1.AllowMultiselect = false; + this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen; + this.glacialList1.AlternatingColors = false; + this.glacialList1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.glacialList1.AutoHeight = true; + this.glacialList1.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.glacialList1.BackgroundStretchToFit = true; + glColumn2.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None; + glColumn2.CheckBoxes = false; + glColumn2.ImageIndex = -1; + glColumn2.Name = "UserName"; + glColumn2.NumericSort = false; + glColumn2.Text = "Felhasználónév"; + glColumn2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; + glColumn2.Width = 200; + this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] { + glColumn2}); + this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal; + this.glacialList1.FullRowSelect = true; + this.glacialList1.GridColor = System.Drawing.Color.LightGray; + this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth; + this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid; + this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists; + this.glacialList1.HeaderHeight = 22; + this.glacialList1.HeaderVisible = true; + this.glacialList1.HeaderWordWrap = false; + this.glacialList1.HotColumnTracking = false; + this.glacialList1.HotItemTracking = true; + this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray; + this.glacialList1.HoverEvents = false; + this.glacialList1.HoverTime = 1; + this.glacialList1.ImageList = null; + this.glacialList1.ItemHeight = 17; + this.glacialList1.ItemWordWrap = false; + this.glacialList1.Location = new System.Drawing.Point(18, 152); + this.glacialList1.Name = "glacialList1"; + this.glacialList1.Selectable = true; + this.glacialList1.SelectedTextColor = System.Drawing.Color.White; + this.glacialList1.SelectionColor = System.Drawing.Color.DarkBlue; + this.glacialList1.ShowBorder = true; + this.glacialList1.ShowFocusRect = false; + this.glacialList1.Size = new System.Drawing.Size(354, 272); + this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort; + this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White; + this.glacialList1.TabIndex = 4; + this.glacialList1.Text = "glacialList1"; + this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click); + // + // gobtn + // + this.gobtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.gobtn.Location = new System.Drawing.Point(297, 427); + this.gobtn.Name = "gobtn"; + this.gobtn.Size = new System.Drawing.Size(75, 23); + this.gobtn.TabIndex = 5; + this.gobtn.Text = "Felvétel"; + this.gobtn.UseVisualStyleBackColor = true; + this.gobtn.Click += new System.EventHandler(this.gobtn_Click); + // + // AddPartner + // + this.AcceptButton = this.searchbtn; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.LightSkyBlue; + this.ClientSize = new System.Drawing.Size(384, 462); + this.Controls.Add(this.gobtn); + this.Controls.Add(this.glacialList1); + this.Controls.Add(this.searchbtn); + this.Controls.Add(this.nameText); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "AddPartner"; + this.Text = "Ismerős felvétele"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox nameText; + private System.Windows.Forms.Button searchbtn; + private GlacialComponents.Controls.GlacialList glacialList1; + private System.Windows.Forms.Button gobtn; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/AddPartner.cs b/MSGer.tk/Forms/AddPartner.cs new file mode 100644 index 0000000..862f1de --- /dev/null +++ b/MSGer.tk/Forms/AddPartner.cs @@ -0,0 +1,66 @@ +using GlacialComponents.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class AddPartner : ThemedForms + { + public AddPartner() + { + InitializeComponent(); + this.Text = Language.Translate(Language.StringID.AddContact); + label1.Text = Language.Translate(Language.StringID.AddContact); + label2.Text = Language.Translate(Language.StringID.AddContact_NameEmail); + searchbtn.Text = Language.Translate(Language.StringID.AddContact_Search); + glacialList1.Columns[0].Text = Language.Translate(Language.StringID.UserName); + gobtn.Text = Language.Translate(Language.StringID.Add); + } + + List FoundUsers = new List(); + + private void searchbtn_Click(object sender, EventArgs e) + { + glacialList1.Items.Clear(); + foreach (var tmp in UserInfo.KnownUsers) + { + if ((tmp.UserName.Contains(nameText.Text) || tmp.Name.Contains(nameText.Text) || tmp.UserID.ToString() == nameText.Text) && !FoundUsers.Contains(tmp)) + { + glacialList1.Items.Add(tmp.UserName); + + FoundUsers.Add(tmp); + } + } + } + + private void glacialList1_Click(object sender, EventArgs e) + { + int item = glacialList1.HotItemIndex; + if (item >= glacialList1.Items.Count) + return; + //2014.04.18. - Partnerinformáció mutatása + //2014.08.16. - Megvalósítás + if (FoundUsers.Count < item) + (new PartnerInformation(FoundUsers[item])).ShowDialog(); + } + + private void gobtn_Click(object sender, EventArgs e) + { + if (glacialList1.SelectedItems.Count == 0 || FoundUsers.Count == 0) + return; + string username = ((GLItem)glacialList1.SelectedItems[0]).Text; + string response = Networking.SendRequest(Networking.RequestType.AddUser, username, 0, true); + if (response == "Success") + MessageBox.Show("Felhasználó felvéve az ismerőseid közé."); + else + MessageBox.Show("Nem sikerült felvenni a felhasználót az ismerőseid közé.\nLehet, hogy már felvetted, vagy valami hiba történt.\n(" + response + ")"); + } + } +} diff --git a/MSGer.tk/Forms/AddPartner.resx b/MSGer.tk/Forms/AddPartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/AddPartner.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/BeforeLogin.Designer.cs b/MSGer.tk/Forms/BeforeLogin.Designer.cs new file mode 100644 index 0000000..cbd9cc2 --- /dev/null +++ b/MSGer.tk/Forms/BeforeLogin.Designer.cs @@ -0,0 +1,68 @@ +namespace MSGer.tk +{ + partial class BeforeLogin + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(0, 24); + this.label1.TabIndex = 0; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // BeforeLogin + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(362, 53); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.Name = "BeforeLogin"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "BeforeLogin"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.BeforeLogin_FormClosed); + this.TextChanged += new System.EventHandler(this.BeforeLogin_TextChanged); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/BeforeLogin.cs b/MSGer.tk/Forms/BeforeLogin.cs new file mode 100644 index 0000000..b38ee3f --- /dev/null +++ b/MSGer.tk/Forms/BeforeLogin.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class BeforeLogin : ThemedForms + { + private static BeforeLogin mInstance; + private static bool done = false; + private static string ttext { get; set; } + public static void Create() + { + var t = new System.Threading.Thread(() => + { + Thread.Sleep(1000); + if (done) + return; + mInstance = new BeforeLogin(); + mInstance.FormClosed += (s, e) => mInstance = null; + Application.Run(mInstance); + }); + t.SetApartmentState(System.Threading.ApartmentState.STA); + t.IsBackground = true; + t.Start(); + } + + public static void Destroy() + { + done = true; + if (mInstance != null) mInstance.Invoke(new Action(() => mInstance.Close())); + } + + public static void SetText(string text) + { + if (mInstance != null) mInstance.Invoke((MethodInvoker)delegate { mInstance.Text = text; }); + ttext = text; + } + + private BeforeLogin() + { //2014.09.06. + InitializeComponent(); + Text = ttext; + } + + private void BeforeLogin_TextChanged(object sender, EventArgs e) + { + label1.Text = this.Text; + } + + private void BeforeLogin_FormClosed(object sender, FormClosedEventArgs e) + { + if (!done) + Program.Exit(); + } + } +} diff --git a/MSGer.tk/Forms/BeforeLogin.resx b/MSGer.tk/Forms/BeforeLogin.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/BeforeLogin.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/ChatForm.Designer.cs b/MSGer.tk/Forms/ChatForm.Designer.cs new file mode 100644 index 0000000..80c8738 --- /dev/null +++ b/MSGer.tk/Forms/ChatForm.Designer.cs @@ -0,0 +1,49 @@ +namespace MSGer.tk +{ + partial class ChatForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ChatForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.ClientSize = new System.Drawing.Size(564, 422); + this.Name = "ChatForm"; + this.Text = "Beszélgetés"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ChatForm_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/ChatForm.cs b/MSGer.tk/Forms/ChatForm.cs new file mode 100644 index 0000000..58f4978 --- /dev/null +++ b/MSGer.tk/Forms/ChatForm.cs @@ -0,0 +1,36 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using HdSystemLibrary.IO; + +namespace MSGer.tk +{ + public partial class ChatForm : ThemedForms + { + public ChatForm() + { + InitializeComponent(); + //Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e + + this.Text = Language.Translate(Language.StringID.Chat_Title, this); + } + + private void ChatForm_FormClosing(object sender, FormClosingEventArgs e) + { + + } + } +} diff --git a/MSGer.tk/Forms/ChatForm.resx b/MSGer.tk/Forms/ChatForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/ChatForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/ChatPanel.Designer.cs b/MSGer.tk/Forms/ChatPanel.Designer.cs new file mode 100644 index 0000000..24dd6c6 --- /dev/null +++ b/MSGer.tk/Forms/ChatPanel.Designer.cs @@ -0,0 +1,349 @@ +namespace MSGer.tk +{ + partial class ChatPanel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChatPanel)); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.partnerName = new Khendys.Controls.ExRichTextBox(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.button1 = new System.Windows.Forms.Button(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.recentMsgTextBox = new FastColoredTextBoxNS.FastColoredTextBox(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.messageTextBox = new FastColoredTextBoxNS.FastColoredTextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.masterPanel = new System.Windows.Forms.Panel(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.recentMsgTextBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.messageTextBox)).BeginInit(); + this.menuStrip1.SuspendLayout(); + this.masterPanel.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(169, 363); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.partnerName); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(391, 39); + this.panel2.TabIndex = 0; + // + // partnerName + // + this.partnerName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.partnerName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.partnerName.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.partnerName.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.partnerName.ForeColor = System.Drawing.Color.Black; + this.partnerName.HiglightColor = Khendys.Controls.RtfColor.White; + this.partnerName.Location = new System.Drawing.Point(9, 7); + this.partnerName.Multiline = false; + this.partnerName.Name = "partnerName"; + this.partnerName.ReadOnly = true; + this.partnerName.Size = new System.Drawing.Size(337, 25); + this.partnerName.TabIndex = 3; + this.partnerName.Text = "partnerName"; + this.partnerName.TextColor = Khendys.Controls.RtfColor.Black; + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(313, 122); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "handwriting"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.panel1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(564, 363); + this.splitContainer1.SplitterDistance = 169; + this.splitContainer1.TabIndex = 7; + this.splitContainer1.TabStop = false; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.splitContainer3); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.progressBar1); + this.splitContainer2.Panel2.Controls.Add(this.button1); + this.splitContainer2.Panel2.Controls.Add(this.messageTextBox); + this.splitContainer2.Size = new System.Drawing.Size(391, 363); + this.splitContainer2.SplitterDistance = 203; + this.splitContainer2.TabIndex = 2; + this.splitContainer2.TabStop = false; + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer3.Location = new System.Drawing.Point(0, 0); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.panel2); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.Controls.Add(this.recentMsgTextBox); + this.splitContainer3.Size = new System.Drawing.Size(391, 203); + this.splitContainer3.SplitterDistance = 39; + this.splitContainer3.TabIndex = 2; + this.splitContainer3.TabStop = false; + // + // recentMsgTextBox + // + this.recentMsgTextBox.AcceptsTab = false; + this.recentMsgTextBox.AllowMacroRecording = false; + this.recentMsgTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.recentMsgTextBox.AutoCompleteBracketsList = new char[] { + '(', + ')', + '{', + '}', + '[', + ']', + '\"', + '\"', + '\'', + '\''}; + this.recentMsgTextBox.AutoIndent = false; + this.recentMsgTextBox.AutoIndentChars = false; + this.recentMsgTextBox.AutoIndentExistingLines = false; + this.recentMsgTextBox.AutoScrollMinSize = new System.Drawing.Size(0, 12); + this.recentMsgTextBox.BackBrush = null; + this.recentMsgTextBox.CharHeight = 12; + this.recentMsgTextBox.CharWidth = 7; + this.recentMsgTextBox.Cursor = System.Windows.Forms.Cursors.IBeam; + this.recentMsgTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.recentMsgTextBox.Font = new System.Drawing.Font("Courier New", 8.25F); + this.recentMsgTextBox.IsReplaceMode = false; + this.recentMsgTextBox.Location = new System.Drawing.Point(3, 3); + this.recentMsgTextBox.Name = "recentMsgTextBox"; + this.recentMsgTextBox.Paddings = new System.Windows.Forms.Padding(0); + this.recentMsgTextBox.ReadOnly = true; + this.recentMsgTextBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))); + this.recentMsgTextBox.ServiceColors = ((FastColoredTextBoxNS.ServiceColors)(resources.GetObject("recentMsgTextBox.ServiceColors"))); + this.recentMsgTextBox.ShowLineNumbers = false; + this.recentMsgTextBox.Size = new System.Drawing.Size(388, 157); + this.recentMsgTextBox.TabIndex = 4; + this.recentMsgTextBox.WordWrap = true; + this.recentMsgTextBox.Zoom = 100; + this.recentMsgTextBox.TextChanged += new System.EventHandler(this.recentMsgTextBox_TextChanged); + // + // progressBar1 + // + this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar1.ForeColor = System.Drawing.Color.White; + this.progressBar1.Location = new System.Drawing.Point(162, 123); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(145, 20); + this.progressBar1.Step = 1; + this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.progressBar1.TabIndex = 4; + this.progressBar1.Value = 100; + this.progressBar1.Visible = false; + // + // messageTextBox + // + this.messageTextBox.AcceptsTab = false; + this.messageTextBox.AllowMacroRecording = false; + this.messageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messageTextBox.AutoCompleteBracketsList = new char[] { + '(', + ')', + '{', + '}', + '[', + ']', + '\"', + '\"', + '\'', + '\''}; + this.messageTextBox.AutoIndent = false; + this.messageTextBox.AutoIndentChars = false; + this.messageTextBox.AutoIndentExistingLines = false; + this.messageTextBox.AutoScrollMinSize = new System.Drawing.Size(0, 12); + this.messageTextBox.BackBrush = null; + this.messageTextBox.CharHeight = 12; + this.messageTextBox.CharWidth = 7; + this.messageTextBox.Cursor = System.Windows.Forms.Cursors.IBeam; + this.messageTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.messageTextBox.Font = new System.Drawing.Font("Courier New", 8.25F); + this.messageTextBox.IsReplaceMode = false; + this.messageTextBox.Location = new System.Drawing.Point(0, 2); + this.messageTextBox.Name = "messageTextBox"; + this.messageTextBox.Paddings = new System.Windows.Forms.Padding(0); + this.messageTextBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))); + this.messageTextBox.ServiceColors = ((FastColoredTextBoxNS.ServiceColors)(resources.GetObject("messageTextBox.ServiceColors"))); + this.messageTextBox.ShowLineNumbers = false; + this.messageTextBox.Size = new System.Drawing.Size(391, 114); + this.messageTextBox.TabIndex = 3; + this.messageTextBox.WordWrap = true; + this.messageTextBox.Zoom = 100; + this.messageTextBox.TextChanged += new System.EventHandler(this.MessageTextChanged); + this.messageTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SendMessage); + // + // menuStrip1 + // + this.menuStrip1.BackgroundImage = global::MSGer.tk.Properties.Resources.Menü_2; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.menuStrip1.Size = new System.Drawing.Size(564, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // masterPanel + // + this.masterPanel.Controls.Add(this.splitContainer1); + this.masterPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.masterPanel.Location = new System.Drawing.Point(0, 24); + this.masterPanel.Name = "masterPanel"; + this.masterPanel.Size = new System.Drawing.Size(564, 363); + this.masterPanel.TabIndex = 0; + // + // ChatPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.Controls.Add(this.masterPanel); + this.Controls.Add(this.menuStrip1); + this.Name = "ChatPanel"; + this.Size = new System.Drawing.Size(564, 387); + this.Load += new System.EventHandler(this.ChatForm_Load); + this.panel2.ResumeLayout(false); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.recentMsgTextBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.messageTextBox)).EndInit(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.masterPanel.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + public Khendys.Controls.ExRichTextBox partnerName; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.SplitContainer splitContainer3; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.Panel masterPanel; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private FastColoredTextBoxNS.FastColoredTextBox messageTextBox; + private FastColoredTextBoxNS.FastColoredTextBox recentMsgTextBox; + private System.Windows.Forms.ProgressBar progressBar1; + } +} diff --git a/MSGer.tk/Forms/ChatPanel.cs b/MSGer.tk/Forms/ChatPanel.cs new file mode 100644 index 0000000..f2aeb4b --- /dev/null +++ b/MSGer.tk/Forms/ChatPanel.cs @@ -0,0 +1,423 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Net; +using System.Net.Sockets; +using HdSystemLibrary.IO; +using System.Diagnostics; +using Handwriting_program; +using FastColoredTextBoxNS; +using System.Text.RegularExpressions; + +namespace MSGer.tk +{ + public partial class ChatPanel : UserControl + { + public static List ChatWindows = new List(); + public List ChatPartners = new List(); + private string chatname = ""; + public string ChatName //2014.12.13. - A beszélgetés neve + { + get + { + return chatname; + } + set + { + chatname = value; + this.Text = chatname; + } + } + private TextBoxHelpers.GifImageStyle style; + private TextBoxHelpers.GifImageStyle styleRecent; //2015.06.16. + const string RegexSpecSymbolsPattern = @"[\^\$\[\]\(\)\.\\\*\+\|\?\{\}]"; //static-->const: 2015.07.05. + public ChatPanel() + { + InitializeComponent(); + //Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e + + this.Text = Language.Translate(Language.StringID.Chat_Title, this); + button1.Text = Language.Translate(Language.StringID.Handwriting, button1); //2015.06.29. + + style = new TextBoxHelpers.GifImageStyle(messageTextBox); + styleRecent = new TextBoxHelpers.GifImageStyle(recentMsgTextBox); //2015.06.16. + foreach (var item in TextFormat.TextFormats) + { //2015.06.26. + foreach (var item2 in item.Emoticons) + { + style.ImagesByText.Add(item2.Value, item2.Image); + styleRecent.ImagesByText.Add(item2.Value, item2.Image); + } + } + style.StartAnimation(); //2015.06.16. + styleRecent.StartAnimation(); //2015.06.16. + + messageTextBox.OnTextChanged(); //2015.06.16. + recentMsgTextBox.OnTextChanged(); //2015.06.16. + recentMsgTextBox.GoEnd(); //2015.06.16. + } //TODO: A recentMsgTextBox-nál megoldani az OpenLink event-et + + private void ChatForm_Load(object sender, EventArgs e) + { + if (ChatPartners.Count == 0) + { + new ErrorHandler(ErrorType.Chat_NoPartners, new Exception()); //2015.06.04. + Close(); //2015.05.21. + return; //2015.05.21. - Ezesetben ne folytassa + } + if (ChatName.Length == 0) + { + this.Text = ""; + foreach (var item in ChatPartners) + this.Text += item.Name + ", "; + this.Text = this.Text.Remove(this.Text.Length - 2); + partnerName.Text = this.Text; + this.Text += " - " + Language.Translate(Language.StringID.Chat_Title); + } + else + { + this.Text = ChatName; + } + if (Storage.Settings[SettingType.ChatWindow] == "1") //<-- 2015.06.14. + Parent.Parent.Text = this.Text; //2014.12.22. + messageTextBox.Select(); + } + + public bool InternalMessageChange = false; + public int SelectionStart = 0; + public int SelectionLength = 0; + public int TextLength = 0; + private async void SendMessage(object sender, KeyEventArgs e) + { + //SendMessage + if (e.KeyCode != Keys.Enter || e.Shift || !messageTextBox.Visible) + return; + e.SuppressKeyPress = true; //2015.05.21. + if (messageTextBox.Text.Length == 0) + { //2015.05.21. + return; + } + messageTextBox.ReadOnly = true; + double time = Program.DateTimeToUnixTime(DateTime.Now); + if (ChatPartners.Any(entry => entry.UserID != CurrentUser.UserID) && !await Networking.SendChatMessage(this, messageTextBox.Text, time)) //UserID==CurrentUser.UserID: 2015.05.23. + MessageBox.Show(Language.Translate(Language.StringID.Networking_Alone)); + else //else: 2014.10.31. + { + recentMsgTextBox.GoEnd(); //2015.06.16. + ShowReceivedMessageT(UserInfo.Select(CurrentUser.UserID), messageTextBox.Text, time); + messageTextBox.Text = ""; + } + messageTextBox.Select(); //2014.12.13. + messageTextBox.ReadOnly = false; + } + + private void MessageTextChanged(object sender, TextChangedEventArgs e) + { + if (style == null) + return; + e.ChangedRange.ClearStyle(StyleIndex.All); + foreach (var key in style.ImagesByText.Keys) + { + string pattern = Regex.Replace(key, RegexSpecSymbolsPattern, "\\$0"); + e.ChangedRange.SetStyle(style, pattern); + } + } + + private void OpenLink(object sender, LinkClickedEventArgs e) + { + Process.Start(e.LinkText); + } + + public static ChatPanel GetChatPanelByUsers(IEnumerable users) //2014.08.08. - IEnumerable: 2014.08.16. - GetChatFormByUsers --> GetChatPanelByUsers: 2015.05.15. + { + if (users.Any(entry => entry == null)) + return null; //2015.05.15. + int i; + for (i = 0; i < ChatWindows.Count; i++) + { + UserInfo[] tmp = new UserInfo[ChatWindows[i].ChatPartners.Count + 1]; //2015.05.15. + ChatWindows[i].ChatPartners.CopyTo(tmp); //2015.05.15. + tmp[tmp.Length - 1] = UserInfo.Select(CurrentUser.UserID); //2015.05.15. + if (tmp.HasSameElementsAs(users)) + break; //2015.05.15. + } + return (i != ChatWindows.Count) ? ChatWindows[i] : null; + } + + private UserInfo _LastMessageUser; + private string _LastMessage; + private double _LastMessageStartTime; + + /// + /// Thread-safe + /// + /// + /// + public void ShowReceivedMessageT(UserInfo user, string message, double time) + { //2015.05.15. + this.Invoke(new Action(() => + { + if (user == _LastMessageUser && message == _LastMessage && time < _LastMessageStartTime + 1) //1000-->1: 2015.07.05. 0:35 + return; + _LastMessageUser = user; + _LastMessage = message; + _LastMessageStartTime = Program.DateTimeToUnixTime(DateTime.Now); + int index = message.IndexOf("//!img"); //2015.07.05. + int index2 = message.IndexOfAny(new char[] { ' ', '\n' }); //2015.07.05. + if (index2 == -1) //2015.07.05. + index2 = message.Length; //2015.07.05. + if (index != -1) //2015.07.05. + { + string newlines = ""; //2015.07.05. + message = message.Substring(index, index2); //2015.07.05. + if (!styleRecent.SentImagesByText.ContainsKey(message)) //2015.07.05. + message = "[Invalid image data]"; //2015.07.05. + else + for (int i = 0; i <= styleRecent.SentImagesByText[message].Height; i += (int)recentMsgTextBox.Font.GetHeight()) + newlines += "\n"; //2015.07.05. + message += newlines; //2015.07.05. + } + string txt = "\n" + ((user.UserID == CurrentUser.UserID) ? CurrentUser.Name : user.Name) + " " + Language.Translate(Language.StringID.Said) + " (" + Program.UnixTimeToDateTime(time).ToString("yyyy.MM.dd. HH:mm:ss") + "):\n" + message + "\n"; + recentMsgTextBox.AppendText(txt); + recentMsgTextBox.GoEnd(); //2015.06.16. + })); + } + private double _LastImageTime; + private UserInfo _LastImageUser; + public void ShowReceivedImageT(UserInfo user, Image image, double time) + { //2015.06.25. + this.Invoke(new Action(() => + { + if (user == _LastImageUser && time < _LastImageTime + 1) //<-- 2015.07.04. + return; + _LastImageTime = time; + _LastImageUser = user; + string txt = "\n" + ((user.UserID == CurrentUser.UserID) ? CurrentUser.Name : user.Name) + " " + Language.Translate(Language.StringID.Said) + " (" + Program.UnixTimeToDateTime(time).ToString("yyyy.MM.dd. HH:mm:ss") + "):\n"; + txt += styleRecent.AddImage(image) + "\n"; //2015.06.26. - style-->styleRecent: 2015.07.04. + for (int i = 0; i <= image.Height; i += (int)recentMsgTextBox.Font.GetHeight()) + txt += "\n"; //2015.07.04. + recentMsgTextBox.AppendText(txt); + recentMsgTextBox.GoEnd(); //2015.06.16. + })); + } + + public long ShowReceivedFileT(UserInfo user, FileInfo file, double time, long progress) + { //2015.06.30. + long prog = 0; + this.Invoke(new Action(() => + { + progressBar1.Value = (int)((progress / file.Length) * 100); + progressBar1.Visible = true; + if (progress + Networking.PDSendFile.BufferLength >= file.Length + 1) + { + progressBar1.Visible = false; + string txt = "\n" + ((user.UserID == CurrentUser.UserID) ? CurrentUser.Name : user.Name) + " " + Language.Translate(Language.StringID.FileReceived) + " (" + Program.UnixTimeToDateTime(time).ToString("yyyy.MM.dd. HH:mm:ss") + "): " + file.Name + "\n"; + recentMsgTextBox.AppendText(txt); + prog = Progress; + Progress = 0; + } + })); + return prog; + } + + public static ChatPanel Create(IEnumerable users) + { //2015.05.15. + ChatPanel cf = null; + Program.MainF.Invoke(new Action(() => //Invoke: 2015.05.16. + { + ChatPanel.ChatWindows.Add(cf = new ChatPanel()); + cf.ChatPartners.AddRange(users); + if (cf.ChatPartners.Count > 1) //2015.05.23. - Így saját magunkkal is beszélhetünk... + cf.ChatPartners.RemoveAll(entry => entry.UserID == CurrentUser.UserID); //2015.05.16. + cf.Init(); + })); + return cf; + } + + private long Progress = 0; //2015.06.30. + private FileInfo fileinfo; //2015.06.30. + public void OpenSendFile() //<-- 2015.06.30. + { + if (openFileDialog1.ShowDialog() == DialogResult.Cancel) + return; + fileinfo = new FileInfo(openFileDialog1.FileName); + + Progress = 0; //2015.06.30. + new Networking.PacketSender(new Networking.PDSendFile(ChatPartners.Select(entry => entry.UserID).ToArray(), + fileinfo, Program.DateTimeToUnixTime(DateTime.Now), 0)).SendAsync() + .ContinueWith(new Action>(SendFileContinue)); + progressBar1.Visible = true; + } + private IEnumerable SendFileIPs; //2015.06.30. + private void SendFileContinue(Task task) //<-- 2015.06.30. + { + if (task.Result.Count() == 0) + return; //2015.06.30. + if (SendFileIPs == null) + SendFileIPs = task.Result.Where(entry => ChatPartners.Any(item => item.UserID == entry.EUserID)) //2015.06.30. + .Select(entry => ((Networking.PDSendFile)entry.EData).RespIPs) //2015.06.30. + .Aggregate((entry1, entry2) => entry1.Concat(entry2)); //2015.06.30. + var pf = task.Result.FirstOrDefault(entry => ((Networking.PDSendFile)entry.EData).RespIPs.SequenceEqual(SendFileIPs)); //2015.06.30. + if (pf == null) + return; //2015.06.30. + var pd = ((Networking.PDSendFile)pf.EData); + if (pd.RProgress < Progress) //Ha a fájl fogadója le van maradva + { //2015.06.30. + Progress = pd.RProgress; + } + Progress += Networking.PDSendFile.BufferLength; //2015.06.30. + if (Progress < fileinfo.Length) + { + progressBar1.Value = (int)((Progress / fileinfo.Length) * 100); //2015.06.30. + new Networking.PacketSender(new Networking.PDSendFile(ChatPartners.Select(entry => entry.UserID).ToArray(), + fileinfo, Program.DateTimeToUnixTime(DateTime.Now), Progress)).SendAsync() + .ContinueWith(new Action>(SendFileContinue)); + } + else + { + SendFileIPs = null; //2015.06.30. + Progress = 0; //2015.06.30. + } + } + + public void Close() + { + ChatWindows.Remove(this); + if (Storage.Settings[SettingType.ChatWindow] == "0" ^ SettingsForm.ApplyingSettings) //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + { //2014.10.31. + this.Dispose(); + if (ChatIcon != null) //Most már nem feltétlenül változik a beállítás + ChatIcon.Dispose(); + } + } + + private void Init() + { //2014.10.28. + if (Storage.Settings[SettingType.ChatWindow] == "") + Storage.Settings[SettingType.ChatWindow] = "0"; //2015.05.21. + if (Storage.Settings[SettingType.ChatWindow] == "1") + { + //ChatForm a ChatPanel-lel + var cf = new ChatForm(); + cf.Controls.Add(this); + cf.FormClosing += cf_FormClosing; + this.Dock = DockStyle.Fill; + cf.Show(); + cf.Select(); //2014.12.13. + cf.Focus(); //2015.05.16. + } + else + { + Program.MainF.Controls.Add(this); + if (ChatPartners.Count == 0) + return; //2015.05.21. - Azt várja meg, hogy a Load metódus hibát jelezzen + Program.MainF.PlaceChatIcon(this); + this.BringToFront(); + this.Show(); + } + } + + void cf_FormClosing(object sender, FormClosingEventArgs e) + { + this.Close(); + } + + internal static void ReopenChatWindows(bool settingchanged) + { + for (int i = 0; i < ChatWindows.Count; i++) + { + var tmp = ChatWindows[i].ChatPartners; + if (settingchanged) + { + if (Storage.Settings[SettingType.ChatWindow] == "0") //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + else + { + if (Storage.Settings[SettingType.ChatWindow] == "1") //Ha a régi beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + var tmp2 = new ChatPanel(); + tmp2.ChatPartners = tmp; + tmp2.Init(); + ChatWindows.Add(tmp2); + } + } + + public new void Show() + { + if (Storage.Settings[SettingType.ChatWindow] == "0") + { + foreach (var item in ChatWindows) + { + item.Hide(); + } + //A ChatIcon-hoz a legközelebbi helyre rakja - Vagy fedje be kb. a partnerlistát, úgyis elég nagy + this.Location = new Point(150, Program.MainF.contactList.Location.Y); + } + base.Show(); + } + + public PictureBox ChatIcon { get; set; } + + public Handwriting handw; + private void button1_Click(object sender, EventArgs e) + { + if (messageTextBox.Visible) + { + if (handw == null) + { + handw = new Handwriting(); + handw.Parent = this.splitContainer2.Panel2; + handw.Bounds = messageTextBox.Bounds; + handw.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + handw.sendbtn.Text = Language.Translate(Language.StringID.Sendbtn_Send, handw.sendbtn); + handw.sendbtn.Click += Handw_sendbtn_Click; + } + else + handw.Show(); + messageTextBox.Hide(); + } + else + { + handw.Hide(); + messageTextBox.Show(); + } + } + + async void Handw_sendbtn_Click(object sender, EventArgs e) + { + double time = Program.DateTimeToUnixTime(DateTime.Now); //2015.07.04. + await new Networking.PacketSender(new Networking.PDSendImage(ChatPartners.Select(entry => entry.UserID).ToArray(), handw.GetBitmap(), time)).SendAsync(); //2015.06.28. + ShowReceivedImageT(UserInfo.Select(CurrentUser.UserID), handw.GetBitmap(), time); //2015.07.04. + handw.Clear(); //2015.07.04. + } + + private void recentMsgTextBox_TextChanged(object sender, TextChangedEventArgs e) + { + if (style == null) + return; + e.ChangedRange.ClearStyle(StyleIndex.All); + foreach (var key in style.ImagesByText.Keys) + { + string pattern = Regex.Replace(key, RegexSpecSymbolsPattern, "\\$0"); + e.ChangedRange.SetStyle(styleRecent, pattern); + } + foreach (var key in styleRecent.SentImagesByText.Keys) + { + e.ChangedRange.SetStyle(styleRecent, key); + } + } + } +} diff --git a/MSGer.tk/Forms/ChatPanel.resx b/MSGer.tk/Forms/ChatPanel.resx new file mode 100644 index 0000000..40bd558 --- /dev/null +++ b/MSGer.tk/Forms/ChatPanel.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4xMS4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWZiOGFhMTJiOTk0ZWY2MWIMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACJGYXN0Q29sb3JlZFRleHRCb3hOUy5TZXJ2aWNlQ29sb3JzBgAA + ACg8Q29sbGFwc2VNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxDb2xsYXBzZU1hcmtlckJh + Y2tDb2xvcj5rX19CYWNraW5nRmllbGQqPENvbGxhcHNlTWFya2VyQm9yZGVyQ29sb3I+a19fQmFja2lu + Z0ZpZWxkJjxFeHBhbmRNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkJjxFeHBhbmRNYXJrZXJC + YWNrQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxFeHBhbmRNYXJrZXJCb3JkZXJDb2xvcj5rX19CYWNraW5n + RmllbGQEBAQEBAQUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAA + ABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5E + cmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAACAAAABfz///8UU3lzdGVtLkRy + YXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAACgAAAAAA + AAAAlgABAAH7/////P///woAAAAAAAAAAKQAAQAB+v////z///8KAAAAAAAAAACWAAEAAfn////8//// + CgAAAAAAAAAAjQABAAH4/////P///woAAAAAAAAAAKQAAQAB9/////z///8KAAAAAAAAAACWAAEACw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4xMS4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWZiOGFhMTJiOTk0ZWY2MWIMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACJGYXN0Q29sb3JlZFRleHRCb3hOUy5TZXJ2aWNlQ29sb3JzBgAA + ACg8Q29sbGFwc2VNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxDb2xsYXBzZU1hcmtlckJh + Y2tDb2xvcj5rX19CYWNraW5nRmllbGQqPENvbGxhcHNlTWFya2VyQm9yZGVyQ29sb3I+a19fQmFja2lu + Z0ZpZWxkJjxFeHBhbmRNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkJjxFeHBhbmRNYXJrZXJC + YWNrQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxFeHBhbmRNYXJrZXJCb3JkZXJDb2xvcj5rX19CYWNraW5n + RmllbGQEBAQEBAQUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAA + ABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5E + cmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAACAAAABfz///8UU3lzdGVtLkRy + YXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAACgAAAAAA + AAAAlgABAAH7/////P///woAAAAAAAAAAKQAAQAB+v////z///8KAAAAAAAAAACWAAEAAfn////8//// + CgAAAAAAAAAAjQABAAH4/////P///woAAAAAAAAAAKQAAQAB9/////z///8KAAAAAAAAAACWAAEACw== + + + + 157, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/Emoticons.Designer.cs b/MSGer.tk/Forms/Emoticons.Designer.cs new file mode 100644 index 0000000..61871c6 --- /dev/null +++ b/MSGer.tk/Forms/Emoticons.Designer.cs @@ -0,0 +1,213 @@ +namespace MSGer.tk +{ + partial class Emoticons + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.removebtn = new System.Windows.Forms.Button(); + this.domainUpDown1 = new System.Windows.Forms.DomainUpDown(); + this.addbtn = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.closebtn = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.flowLayoutPanel1.BackColor = System.Drawing.Color.White; + this.flowLayoutPanel1.Location = new System.Drawing.Point(13, 66); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(228, 297); + this.flowLayoutPanel1.TabIndex = 0; + this.flowLayoutPanel1.Click += new System.EventHandler(this.flowLayoutPanel1_Click); + // + // removebtn + // + this.removebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.removebtn.Location = new System.Drawing.Point(247, 95); + this.removebtn.Name = "removebtn"; + this.removebtn.Size = new System.Drawing.Size(124, 23); + this.removebtn.TabIndex = 2; + this.removebtn.Text = "Törlés"; + this.removebtn.UseVisualStyleBackColor = true; + this.removebtn.Click += new System.EventHandler(this.removebtn_Click); + // + // domainUpDown1 + // + this.domainUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.domainUpDown1.Location = new System.Drawing.Point(12, 40); + this.domainUpDown1.Name = "domainUpDown1"; + this.domainUpDown1.Size = new System.Drawing.Size(229, 20); + this.domainUpDown1.TabIndex = 3; + this.domainUpDown1.Text = "New pack"; + this.domainUpDown1.SelectedItemChanged += new System.EventHandler(this.domainUpDown1_SelectedItemChanged); + this.domainUpDown1.TextChanged += new System.EventHandler(this.domainUpDown1_TextChanged); + // + // addbtn + // + this.addbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addbtn.Location = new System.Drawing.Point(247, 66); + this.addbtn.Name = "addbtn"; + this.addbtn.Size = new System.Drawing.Size(124, 23); + this.addbtn.TabIndex = 1; + this.addbtn.Text = "Hozzáadás"; + this.addbtn.UseVisualStyleBackColor = true; + this.addbtn.Click += new System.EventHandler(this.addbtn_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 24); + this.label1.TabIndex = 4; + this.label1.Text = "label1"; + // + // closebtn + // + this.closebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.closebtn.Location = new System.Drawing.Point(296, 367); + this.closebtn.Name = "closebtn"; + this.closebtn.Size = new System.Drawing.Size(75, 23); + this.closebtn.TabIndex = 5; + this.closebtn.Text = "Bezárás"; + this.closebtn.UseVisualStyleBackColor = true; + this.closebtn.Click += new System.EventHandler(this.closebtn_Click); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(247, 147); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 7; + this.button1.Text = "Módosítás"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(247, 131); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(87, 13); + this.label2.TabIndex = 8; + this.label2.Text = "Kép kiválasztása"; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Location = new System.Drawing.Point(247, 177); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(124, 124); + this.pictureBox1.TabIndex = 9; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(244, 314); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(43, 13); + this.label3.TabIndex = 10; + this.label3.Text = "Szöveg"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(247, 331); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(124, 20); + this.textBox1.TabIndex = 11; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + this.openFileDialog1.Filter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff|All Image Types|" + + "*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff"; + this.openFileDialog1.RestoreDirectory = true; + // + // Emoticons + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(383, 402); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.button1); + this.Controls.Add(this.closebtn); + this.Controls.Add(this.label1); + this.Controls.Add(this.domainUpDown1); + this.Controls.Add(this.removebtn); + this.Controls.Add(this.addbtn); + this.Controls.Add(this.flowLayoutPanel1); + this.Name = "Emoticons"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Emoticons"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Emoticons_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button removebtn; + private System.Windows.Forms.DomainUpDown domainUpDown1; + private System.Windows.Forms.Button addbtn; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button closebtn; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/Emoticons.cs b/MSGer.tk/Forms/Emoticons.cs new file mode 100644 index 0000000..2a50cf0 --- /dev/null +++ b/MSGer.tk/Forms/Emoticons.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class Emoticons : ThemedForms //ThemedForms: 2015.07.05. + { //2015.06.06. + public Emoticons() + { + InitializeComponent(); + label1.Text = Language.Translate(Language.StringID.Emoticons); //TODO: A ...-t a menüknél mindig adja hozzá + this.Text = label1.Text; + addbtn.Text = Language.Translate(Language.StringID.Add); //TODO: A teljesen megegyező string-eket jelezze + removebtn.Text = Language.Translate(Language.StringID.Remove); + closebtn.Text = Language.Translate(Language.StringID.Close); + label2.Text = Language.Translate(Language.StringID.SelectImage); + button1.Text = Language.Translate(Language.StringID.Modify); + label3.Text = Language.Translate(Language.StringID.Text); + domainUpDown1.Items.Clear(); + domainUpDown1.Items.AddRange(TextFormat.TextFormats); + if (domainUpDown1.Items.Count == 0) + domainUpDown1.SelectedIndex = -1; + else + domainUpDown1.SelectedIndex = 0; + SelectedTextFormat = domainUpDown1.SelectedIndex; + } + + private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e) + { + SelectedTextFormat = domainUpDown1.SelectedIndex; + } + + private int selectedtextformat; + private int SelectedTextFormat + { + get + { + return selectedtextformat; + } + set + { + selectedtextformat = value; + if (value == -1) + return; + flowLayoutPanel1.Controls.Clear(); + SelectedEmoticon = 0; + if (TextFormat.TextFormats.Count > 0) + flowLayoutPanel1.Controls.AddRange(TextFormat.TextFormats[value].Emoticons.Select(entry => new PictureBox { Image = entry.Clone() as Image }).ToArray()); + int i = 0; + foreach (PictureBox pictbox in flowLayoutPanel1.Controls) + { + pictbox.Click += Emoticons_Click; + pictbox.Tag = i; + pictbox.Size = pictbox.Image.Size; + i++; + } + } + } + + void Emoticons_Click(object sender, EventArgs e) + { + SelectedEmoticon = (int)(sender as Control).Tag; + } + + private int selectedemoticon; + private int SelectedEmoticon + { + get + { + return selectedemoticon; + } + set + { + SaveEmoticonIfChanged(); + if (value == selectedemoticon) + return; + if (value >= flowLayoutPanel1.Controls.Count) + { + pictureBox1.Image = null; + initialtext = ""; + textBox1.Text = ""; + } + else + { + pictureBox1.Image = (flowLayoutPanel1.Controls[value] as PictureBox).Image; + initialtext = TextFormat.TextFormats[SelectedTextFormat].Emoticons[value].Value; + } + textBox1.Text = initialtext; + selectedemoticon = value; + } + } + + private bool imagechanged = false; + private void SaveEmoticonIfChanged() + { + bool save = false; + if (pictureBox1.Image == null || textBox1.Text == "") + return; + if (SelectedEmoticon >= flowLayoutPanel1.Controls.Count) + { + flowLayoutPanel1.Controls.Add(new PictureBox { Tag = flowLayoutPanel1.Controls.Count, Image = pictureBox1.Image.Clone() as Image, Size = pictureBox1.Image.Size }); + flowLayoutPanel1.Controls[flowLayoutPanel1.Controls.Count - 1].Click += Emoticons_Click; + if (SelectedTextFormat == -1) + { + TextFormat.TextFormats.Add(PackManager.Add(domainUpDown1.Text + ".npack")); + selectedtextformat = TextFormat.TextFormats.Count - 1; + save = true; + } + var emoticon = new Emoticon(textBox1.Text); + emoticon.Image = new Bitmap(pictureBox1.Image); //2015.07.05. + TextFormat.TextFormats[SelectedTextFormat].Emoticons.Add(emoticon); + } + else if (textBox1.Text != initialtext || imagechanged) + { + TextFormat.TextFormats[SelectedTextFormat].Emoticons[SelectedEmoticon].Value = textBox1.Text; + TextFormat.TextFormats[SelectedTextFormat].Emoticons[SelectedEmoticon].Image.Dispose(); //2015.07.05. + TextFormat.TextFormats[SelectedTextFormat].Emoticons[SelectedEmoticon].Image = new Bitmap(pictureBox1.Image); //2015.07.05. + initialtext = textBox1.Text; + imagechanged = false; + (flowLayoutPanel1.Controls[SelectedEmoticon] as PictureBox).Image = pictureBox1.Image; + save = true; + } + + if (save) + PackManager.Save(TextFormat.TextFormats[SelectedTextFormat]); + } + + private string initialtext; + private void domainUpDown1_TextChanged(object sender, EventArgs e) + { + if (domainUpDown1.SelectedIndex == -1) + { + flowLayoutPanel1.Controls.Clear(); + TextFormat tf = domainUpDown1.Items.ToArray().Cast().FirstOrDefault(entry => entry.ToString() == domainUpDown1.Text); + if (tf != default(TextFormat)) + domainUpDown1.SelectedItem = tf; + } + SelectedEmoticon = 0; + imagechanged = false; + } + + private void addbtn_Click(object sender, EventArgs e) + { + SelectedEmoticon = flowLayoutPanel1.Controls.Count; + } + + private void removebtn_Click(object sender, EventArgs e) + { + if (SelectedTextFormat == -1 || SelectedEmoticon > TextFormat.TextFormats[SelectedTextFormat].Emoticons.Count) + return; + if (MessageBox.Show(Language.Translate(Language.StringID.AreYouSure), "", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + TextFormat.TextFormats[SelectedTextFormat].Emoticons.RemoveAt(SelectedEmoticon); + flowLayoutPanel1.Controls.RemoveAt(SelectedEmoticon); + if (TextFormat.TextFormats[SelectedTextFormat].Emoticons.Count == 0) + { + PackManager.Remove(TextFormat.TextFormats[SelectedTextFormat]); //2015.06.14. + TextFormat.TextFormats.RemoveAt(SelectedTextFormat); //2015.06.14. + } + } + } + + private void button1_Click(object sender, EventArgs e) + { + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + pictureBox1.Image = Program.LoadImageFromFile(openFileDialog1.FileName); + imagechanged = true; + SaveEmoticonIfChanged(); + } + } + + private void closebtn_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void Emoticons_FormClosing(object sender, FormClosingEventArgs e) + { + SaveEmoticonIfChanged(); + Program.MainF.contactList.Items.Clear(); + Program.MainF.LoadPartnerList(); + } + + private void textBox1_TextChanged(object sender, EventArgs e) + { + + } + + private void textBox1_Leave(object sender, EventArgs e) + { + SaveEmoticonIfChanged(); + } + + private void flowLayoutPanel1_Click(object sender, EventArgs e) + { + SaveEmoticonIfChanged(); + } + + private void pictureBox1_Click(object sender, EventArgs e) + { + SaveEmoticonIfChanged(); + } + } +} diff --git a/MSGer.tk/Forms/Emoticons.resx b/MSGer.tk/Forms/Emoticons.resx new file mode 100644 index 0000000..3a7d671 --- /dev/null +++ b/MSGer.tk/Forms/Emoticons.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/ErrorHandler.Designer.cs b/MSGer.tk/Forms/ErrorHandler.Designer.cs new file mode 100644 index 0000000..0135680 --- /dev/null +++ b/MSGer.tk/Forms/ErrorHandler.Designer.cs @@ -0,0 +1,131 @@ +namespace MSGer.tk +{ + partial class ErrorHandler + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.titleLabel = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.sendbtn = new System.Windows.Forms.Button(); + this.restartokbtn = new System.Windows.Forms.Button(); + this.exitbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // titleLabel + // + this.titleLabel.AutoSize = true; + this.titleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.titleLabel.Location = new System.Drawing.Point(13, 13); + this.titleLabel.Name = "titleLabel"; + this.titleLabel.Size = new System.Drawing.Size(155, 31); + this.titleLabel.TabIndex = 0; + this.titleLabel.Text = "Hiba történt"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.BackColor = System.Drawing.Color.White; + this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.textBox1.Location = new System.Drawing.Point(19, 48); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(338, 174); + this.textBox1.TabIndex = 1; + this.textBox1.Text = "You shouldn\'t see this text. If you do, well, sorry."; + // + // sendbtn + // + this.sendbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.sendbtn.Enabled = false; + this.sendbtn.Location = new System.Drawing.Point(19, 228); + this.sendbtn.Name = "sendbtn"; + this.sendbtn.Size = new System.Drawing.Size(75, 23); + this.sendbtn.TabIndex = 2; + this.sendbtn.Text = "Küldés"; + this.sendbtn.UseVisualStyleBackColor = true; + this.sendbtn.Click += new System.EventHandler(this.sendbtn_Click); + // + // restartokbtn + // + this.restartokbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.restartokbtn.Location = new System.Drawing.Point(282, 228); + this.restartokbtn.Name = "restartokbtn"; + this.restartokbtn.Size = new System.Drawing.Size(75, 23); + this.restartokbtn.TabIndex = 3; + this.restartokbtn.Text = "Újraindítás"; + this.restartokbtn.UseVisualStyleBackColor = true; + this.restartokbtn.Click += new System.EventHandler(this.restartbtn_Click); + // + // exitbtn + // + this.exitbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.exitbtn.Location = new System.Drawing.Point(201, 228); + this.exitbtn.Name = "exitbtn"; + this.exitbtn.Size = new System.Drawing.Size(75, 23); + this.exitbtn.TabIndex = 4; + this.exitbtn.Text = "Kilépés"; + this.exitbtn.UseVisualStyleBackColor = true; + this.exitbtn.Click += new System.EventHandler(this.exitbtn_Click); + // + // ErrorHandler + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.WhiteSmoke; + this.ClientSize = new System.Drawing.Size(369, 263); + this.Controls.Add(this.exitbtn); + this.Controls.Add(this.restartokbtn); + this.Controls.Add(this.sendbtn); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.titleLabel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ErrorHandler"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ErrorHandler"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ErrorHandler_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label titleLabel; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button sendbtn; + private System.Windows.Forms.Button restartokbtn; + private System.Windows.Forms.Button exitbtn; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/ErrorHandler.cs b/MSGer.tk/Forms/ErrorHandler.cs new file mode 100644 index 0000000..6cc6f96 --- /dev/null +++ b/MSGer.tk/Forms/ErrorHandler.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class ErrorHandler : Form + { //2015.06.04. + public ErrorHandler(ErrorType type, Exception e) + { + InitializeComponent(); + try + { + sendbtn.Text = Language.Translate(Language.StringID.Sendbtn_Send); + exitbtn.Text = Language.Translate(Language.StringID.Menu_File_Exit); + restartokbtn.Text = Language.Translate(Language.StringID.RestartButton); + } + catch + { + sendbtn.Text = "Send"; + exitbtn.Text = "Exit"; + restartokbtn.Text = "Restart"; + } + switch (type) + { + case ErrorType.Unknown: + fatalerror = true; + int maxvalue = Enum.GetNames(typeof(Language.StringID)).Where(entry => entry.StartsWith("Error_Unknown")).Count(); + if (maxvalue < 1) + { + textBox1.Text = "We don't have any error messages."; + break; + } + int index = new Random().Next(1, maxvalue); + try + { + Language.StringID result; + if (Enum.TryParse("Error_Unknown" + index, out result)) + { + textBox1.Text = Language.Translate(result); + } + else + { + textBox1.Lines = new string[] + { + "Unknown error.", + "Also...", + "Something interesting happened. I don't have all messages up to the latest message count (" + index + "). Which means I forgot to do something." + }; + } + } + catch + { //2015.06.14. ˇˇ + textBox1.Text = "Unknown error."; + } + break; + case ErrorType.ServerError: + fatalerror = false; + textBox1.Lines = new string[] + { + Language.Translate(Language.StringID.Error_ServerError) + }; + break; + case ErrorType.ServerConnectError: + fatalerror = false; + textBox1.Text = Language.Translate(Language.StringID.ConnectError); + break; + case ErrorType.Chat_NoPartners: + fatalerror = false; + textBox1.Text = Language.Translate(Language.StringID.Chat_NoWindow); + break; + default: + fatalerror = true; + textBox1.Text = "I don't have this implemented (" + type + "). I'm really sorry."; + break; + } + + if (!fatalerror) + { + exitbtn.Hide(); + restartokbtn.Text = "OK"; + } + + try + { + if (fatalerror) + titleLabel.Text = Language.Translate(Language.StringID.FatalError); + else + titleLabel.Text = Language.Translate(Language.StringID.Error); + } + catch + { + if (fatalerror) //<-- 2015.06.14. + titleLabel.Text = "A fatal error occured."; //2015.06.14. + else + titleLabel.Text = "An error occured."; + } + this.Text = titleLabel.Text; + + textBox1.AppendText(Environment.NewLine + e.Message); + textBox1.AppendText(Environment.NewLine + e.StackTrace); + this.ShowDialog(); + } + + private void exitbtn_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void ErrorHandler_FormClosing(object sender, FormClosingEventArgs e) + { +#if !DEBUG + if (fatalerror) + Program.Exit(); +#endif + } + + private bool fatalerror; + private void restartbtn_Click(object sender, EventArgs e) + { + if (fatalerror) + Program.Restart(); + else + this.Close(); + } + + private void sendbtn_Click(object sender, EventArgs e) + { + //TODO: Hibajelentés + } + } + public enum ErrorType + { + Unknown, + ServerError, + ServerConnectError, + Chat_NoPartners + } +} diff --git a/MSGer.tk/Forms/ErrorHandler.resx b/MSGer.tk/Forms/ErrorHandler.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/ErrorHandler.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/FloatingChatIcon.Designer.cs b/MSGer.tk/Forms/FloatingChatIcon.Designer.cs new file mode 100644 index 0000000..b266be8 --- /dev/null +++ b/MSGer.tk/Forms/FloatingChatIcon.Designer.cs @@ -0,0 +1,74 @@ +namespace MSGer.tk +{ + partial class FloatingChatIcon + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.pictureBox1.Location = new System.Drawing.Point(12, 12); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(260, 238); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // FloatingChatIcon + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(284, 262); + this.Controls.Add(this.pictureBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FloatingChatIcon"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FloatingChatIcon"; + this.TopMost = true; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/FloatingChatIcon.cs b/MSGer.tk/Forms/FloatingChatIcon.cs new file mode 100644 index 0000000..4414b68 --- /dev/null +++ b/MSGer.tk/Forms/FloatingChatIcon.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class FloatingChatIcon : Form + { + [StructLayout(LayoutKind.Sequential)] + public struct MARGINS + { + public int Left; + public int Right; + public int Top; + public int Bottom; + } + + [DllImport("dwmapi.dll", PreserveSig = false)] + public static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins); + + [DllImport("dwmapi.dll", PreserveSig = false)] + public static extern bool DwmIsCompositionEnabled(); + + public FloatingChatIcon(ChatPanel cp) + { + InitializeComponent(); + } + + // defines how far we are extending the Glass margins + private MARGINS margins; + + // uses PInvoke to setup the Glass area. + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + if (DwmIsCompositionEnabled()) + { + // Paint the glass effect. + margins = new MARGINS(); + margins.Top = -1; + margins.Left = 20; + DwmExtendFrameIntoClientArea(this.Handle, ref margins); + } + } + } +} diff --git a/MSGer.tk/Forms/FloatingChatIcon.resx b/MSGer.tk/Forms/FloatingChatIcon.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/FloatingChatIcon.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/InvitePartner.Designer.cs b/MSGer.tk/Forms/InvitePartner.Designer.cs new file mode 100644 index 0000000..71499a7 --- /dev/null +++ b/MSGer.tk/Forms/InvitePartner.Designer.cs @@ -0,0 +1,176 @@ +namespace MSGer.tk +{ + partial class InvitePartner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.addbtn = new System.Windows.Forms.Button(); + this.removebtn = new System.Windows.Forms.Button(); + this.copybtn = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.hideAccepted = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.ForeColor = System.Drawing.Color.Blue; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(189, 24); + this.label1.TabIndex = 0; + this.label1.Text = "Ismerős meghívása"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label2.Location = new System.Drawing.Point(17, 53); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(98, 24); + this.label2.TabIndex = 1; + this.label2.Text = "Letöltőlink:"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.BackColor = System.Drawing.Color.White; + this.textBox1.Location = new System.Drawing.Point(21, 90); + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(382, 20); + this.textBox1.TabIndex = 2; + this.textBox1.Text = "http://msger.url.ph/download.php?version=latest"; + // + // listBox1 + // + this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listBox1.BackColor = System.Drawing.Color.White; + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(21, 163); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(379, 173); + this.listBox1.TabIndex = 6; + // + // addbtn + // + this.addbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.addbtn.Location = new System.Drawing.Point(21, 343); + this.addbtn.Name = "addbtn"; + this.addbtn.Size = new System.Drawing.Size(75, 23); + this.addbtn.TabIndex = 7; + this.addbtn.Text = "Hozzáadás"; + this.addbtn.UseVisualStyleBackColor = true; + this.addbtn.Click += new System.EventHandler(this.addbtn_Click); + // + // removebtn + // + this.removebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.removebtn.Location = new System.Drawing.Point(102, 343); + this.removebtn.Name = "removebtn"; + this.removebtn.Size = new System.Drawing.Size(75, 23); + this.removebtn.TabIndex = 8; + this.removebtn.Text = "Eltávolítás"; + this.removebtn.UseVisualStyleBackColor = true; + this.removebtn.Click += new System.EventHandler(this.removebtn_Click); + // + // copybtn + // + this.copybtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.copybtn.Location = new System.Drawing.Point(292, 343); + this.copybtn.Name = "copybtn"; + this.copybtn.Size = new System.Drawing.Size(108, 23); + this.copybtn.TabIndex = 9; + this.copybtn.Text = "Kód másolása"; + this.copybtn.UseVisualStyleBackColor = true; + this.copybtn.Click += new System.EventHandler(this.copybtn_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label3.Location = new System.Drawing.Point(17, 125); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(64, 24); + this.label3.TabIndex = 10; + this.label3.Text = "Kódok"; + // + // hideAccepted + // + this.hideAccepted.AutoSize = true; + this.hideAccepted.Location = new System.Drawing.Point(251, 132); + this.hideAccepted.Name = "hideAccepted"; + this.hideAccepted.Size = new System.Drawing.Size(149, 17); + this.hideAccepted.TabIndex = 11; + this.hideAccepted.Text = "Elfogadott kódok elrejtése"; + this.hideAccepted.UseVisualStyleBackColor = true; + this.hideAccepted.CheckedChanged += new System.EventHandler(this.hideAccepted_CheckedChanged); + // + // InvitePartner + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.ClientSize = new System.Drawing.Size(415, 449); + this.Controls.Add(this.hideAccepted); + this.Controls.Add(this.label3); + this.Controls.Add(this.copybtn); + this.Controls.Add(this.removebtn); + this.Controls.Add(this.addbtn); + this.Controls.Add(this.listBox1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "InvitePartner"; + this.Text = "Ismerős meghivása"; + this.Load += new System.EventHandler(this.InvitePartner_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.Button addbtn; + private System.Windows.Forms.Button removebtn; + private System.Windows.Forms.Button copybtn; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox hideAccepted; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/InvitePartner.cs b/MSGer.tk/Forms/InvitePartner.cs new file mode 100644 index 0000000..1d6c8b0 --- /dev/null +++ b/MSGer.tk/Forms/InvitePartner.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class InvitePartner : ThemedForms + { + public InvitePartner() + { + InitializeComponent(); + } + + private void InvitePartner_Load(object sender, EventArgs e) + { + RefreshList(); + } + + private void addbtn_Click(object sender, EventArgs e) + { + string res = Networking.SendRequest(Networking.RequestType.AddCode, "", 0, true); + if (res.Length < "Fail".Length || res.Substring(0, "Fail".Length) == "Fail") + MessageBox.Show("A kódgenerálás sikertelen.\n\n" + res, "Hiba"); + else + RefreshList(); + } + + public void RefreshList() + { + listBox1.Items.Clear(); + string[] response = Networking.SendRequest(Networking.RequestType.GetCodes, "", 0, true).Split('ͦ'); + int x = 0; + for (int i = 0; i + 1 < response.Length; i += 2) + { + if (Int32.Parse(response[i + 1]) == 1) + { + if (!hideAccepted.Checked) + listBox1.Items.Add("Elfogadott - " + response[i]); + } + else if (Int32.Parse(response[i + 1]) == 0) + listBox1.Items.Add("Visszaigazolásra vár - " + response[i]); + else MessageBox.Show("Hiba:\n" + response[i] + "\n" + response[i + 1]); + x++; + } + } + + private void removebtn_Click(object sender, EventArgs e) + { + if (listBox1.SelectedIndex == -1) + return; + string res = Networking.SendRequest(Networking.RequestType.RemCode, listBox1.SelectedItem.ToString().Remove(0, listBox1.SelectedItem.ToString().IndexOf(" - ") + " - ".Length), 0, true); + if (res.Substring(0, "Fail".Length) == "Fail") + MessageBox.Show("A kód törlése sikertelen.\n\n" + res, "Hiba"); + else RefreshList(); + } + + private void copybtn_Click(object sender, EventArgs e) + { + if (listBox1.SelectedIndex == -1) + return; + Clipboard.SetText(listBox1.SelectedItem.ToString().Remove(0, listBox1.SelectedItem.ToString().IndexOf(" - ") + " - ".Length)); + } + + private void hideAccepted_CheckedChanged(object sender, EventArgs e) + { + RefreshList(); + } + } +} diff --git a/MSGer.tk/Forms/InvitePartner.resx b/MSGer.tk/Forms/InvitePartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/InvitePartner.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/LoginForm.Designer.cs b/MSGer.tk/Forms/LoginForm.Designer.cs new file mode 100644 index 0000000..9318efa --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.Designer.cs @@ -0,0 +1,202 @@ +namespace MSGer.tk +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.ForeColor = System.Drawing.Color.Blue; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(197, 33); + this.label1.TabIndex = 0; + this.label1.Text = "Bejelentkezés"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label2.Location = new System.Drawing.Point(19, 77); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(63, 24); + this.label2.TabIndex = 1; + this.label2.Text = "E-mail"; + // + // textBox1 + // + this.textBox1.AcceptsReturn = true; + this.textBox1.AcceptsTab = true; + this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; + this.textBox1.Location = new System.Drawing.Point(88, 80); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(294, 20); + this.textBox1.TabIndex = 2; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label3.Location = new System.Drawing.Point(19, 106); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(63, 24); + this.label3.TabIndex = 3; + this.label3.Text = "Jelszó"; + // + // textBox2 + // + this.textBox2.AcceptsReturn = true; + this.textBox2.AcceptsTab = true; + this.textBox2.Location = new System.Drawing.Point(179, 110); + this.textBox2.Name = "textBox2"; + this.textBox2.PasswordChar = '→'; + this.textBox2.Size = new System.Drawing.Size(203, 20); + this.textBox2.TabIndex = 4; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.button1.Location = new System.Drawing.Point(235, 153); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(147, 23); + this.button1.TabIndex = 5; + this.button1.Text = "Bejelentkezés"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.BackColor = System.Drawing.Color.SteelBlue; + this.textBox3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox3.ForeColor = System.Drawing.Color.White; + this.textBox3.Location = new System.Drawing.Point(13, 198); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.ReadOnly = true; + this.textBox3.Size = new System.Drawing.Size(369, 261); + this.textBox3.TabIndex = 6; + this.textBox3.Text = resources.GetString("textBox3.Text"); + this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + this.linkLabel1.LinkColor = System.Drawing.Color.Blue; + this.linkLabel1.Location = new System.Drawing.Point(23, 162); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(77, 13); + this.linkLabel1.TabIndex = 7; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "Regisztráció"; + this.linkLabel1.VisitedLinkColor = System.Drawing.Color.Blue; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.RegistrateLink); + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + this.linkLabel2.Location = new System.Drawing.Point(23, 175); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(66, 13); + this.linkLabel2.TabIndex = 8; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "forgotpass"; + this.linkLabel2.VisitedLinkColor = System.Drawing.Color.Blue; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked); + // + // LoginForm + // + this.AcceptButton = this.button1; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.ClientSize = new System.Drawing.Size(394, 471); + this.Controls.Add(this.linkLabel2); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.Name = "LoginForm"; + this.Opacity = 0.9D; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Bejelentkezés"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LoginForm_FormClosing); + this.Load += new System.EventHandler(this.LoginForm_Load); + this.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.label2, 0); + this.Controls.SetChildIndex(this.textBox1, 0); + this.Controls.SetChildIndex(this.label3, 0); + this.Controls.SetChildIndex(this.textBox2, 0); + this.Controls.SetChildIndex(this.button1, 0); + this.Controls.SetChildIndex(this.textBox3, 0); + this.Controls.SetChildIndex(this.linkLabel1, 0); + this.Controls.SetChildIndex(this.linkLabel2, 0); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel2; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/LoginForm.LoginUser.cs b/MSGer.tk/Forms/LoginForm.LoginUser.cs new file mode 100644 index 0000000..9c05436 --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.LoginUser.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class LoginForm + { + public static HttpWebRequest Request; //2014.03.27. - A megállitáshoz + + public void LoginUser() + { + string UserText = ""; + string PassText = ""; + this.Invoke(new Action(delegate + { //2015.04.03. + UserText = textBox1.Text; + PassText = textBox2.Text; + linkLabel1.Enabled = false; + button1.Text = Language.Translate(Language.StringID.Button_Cancel); + })); + HttpWebRequest httpWReq = + (HttpWebRequest)WebRequest.Create("http://msger.url.ph/client.php"); + + Request = httpWReq; //2014.03.27. + + ASCIIEncoding encoding = new ASCIIEncoding(); + string postData = "username=" + UserText; + postData += "&password=" + CalculateMD5Hash(PassText).ToLower(); //ToLower: 2014.10.24. 1:22 - Most már a PHP-nak is titkosítania kell többek közt MD5-tel + postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg"; + //postData += "&port=" + Storage.Settings[SettingType.Port]; //2014.08.29. + postData += "&port=" + CurrentUser.Port; //2015.05.24. + List myips = new List(); + do + { //Az ips már deklarálva lesz később; megváltoztattam myips-re ezt + foreach (var ipaddr in Dns.GetHostAddresses(Dns.GetHostName())) + if (ipaddr.AddressFamily == AddressFamily.InterNetworkV6) + myips.Add(ipaddr); + string ipstr = ""; + foreach (var ip in myips) + { + ipstr += ip + ";"; + } + postData += "&ip=" + Uri.EscapeUriString(ipstr); + } while (false); + byte[] data = encoding.GetBytes(postData); + + httpWReq.Method = "POST"; + httpWReq.ContentType = "application/x-www-form-urlencoded"; + httpWReq.ContentLength = data.Length; + + try + { + using (Stream stream = httpWReq.GetRequestStream()) + { + stream.Write(data, 0, data.Length); + } + } + catch (WebException e) + { + if (e.Status != WebExceptionStatus.RequestCanceled) + { + new ErrorHandler(ErrorType.ServerConnectError, e); //2015.06.04. + ResetAfterLogin(false); //2015.04.03. + return; + } + else + { + return; + } + } + + HttpWebResponse response; + try + { + response = (HttpWebResponse)httpWReq.GetResponse(); + } + catch (WebException e) + { + if (e.Status != WebExceptionStatus.RequestCanceled) + { + new ErrorHandler(ErrorType.ServerConnectError, e); //2015.06.04. + ResetAfterLogin(false); //2015.04.03. + return; + } + else + { + return; + } + } + + string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); + + try + { + if (responseString[0] == '<') + { + ResetAfterLogin(false); //2015.04.03. + new ErrorHandler(ErrorType.ServerConnectError, new Exception(responseString)); + return; + } + else + responseString = responseString.Remove(responseString.IndexOf('<')); + } + catch + { + } + + if (String.Compare(responseString, "Fail") == 0) + { + ResetAfterLogin(false); //2015.04.03. + MessageBox.Show(Language.Translate(Language.StringID.Error) + ": " + Language.Translate(Language.StringID.Login_BadNamePass), Language.Translate(Language.StringID.Error)); + } + else if (responseString.Contains("Fail")) + { //2015.04.03. + ResetAfterLogin(false); + new ErrorHandler(ErrorType.ServerConnectError, new Exception(responseString)); //2015.06.04. + } + else + { + //Elmenti az E-mail-t + if (!Storage.Settings[SettingType.Email].Contains(UserText)) + { + if (Storage.Settings[SettingType.Email].Length != 0) //2014.07.08. + Storage.Settings[SettingType.Email] += ","; + Storage.Settings[SettingType.Email] += UserText; + } + Storage.Settings[SettingType.LastUsedEmail] = Storage.Settings[SettingType.Email].Split(',').ToList().IndexOf(UserText).ToString(); + string[] respstr = responseString.Split('ͦ'); + + if (respstr.Any(entry => entry.Contains("Fail"))) //2014.12.05. + { + //this.Invoke(new MyDelegate(ResetAfterLogin)); + ResetAfterLogin(false); //2015.04.03. + /*try + { + MessageBox.Show(respstr.Single(entry => entry.Contains("Fail"))); //2014.12.05. + } + catch { }*/ + MessageBox.Show(respstr.FirstOrDefault(entry => entry.Contains("Fail"))); //2014.12.05. - Single-->FirstOrDefault: 2015.06.06. + return; + } + string[] entries = respstr[(int)LoginInfo.IPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + IEnumerable ips = entries.Select(entry => ((entry != ",") ? new IPEndPoint(IPAddress.Parse(entry.Split(',')[0]), Int32.Parse(entry.Split(',')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); + UserInfo.IPs = new HashSet(ips); //2014.08.30. + CurrentUser.IPs = myips; + + CurrentUser.UserID = Int32.Parse(respstr[(int)LoginInfo.UserID]); //2014.09.01. - Áthelyeztem, hogy addig ne higgye bejelentkezettnek, amíg el nem küldi a többieknek + + Storage.SaltKey = CalculateMD5Hash(PassText); //2014.08.07. + Storage.FileName = respstr[(int)LoginInfo.UserID] + ".db"; //2014.09.01. - Felesleges számmá alakítani, majd vissza + + CurrentUser.UserName = UserText; //2014.09.01. - Ha semmit nem tud saját magáról, és más sem, de nem ismerőse saját magának, akkor az itt beállított felhasználónév érvényesül + CurrentUser.Name = UserText; //2014.09.01. + string ReceivedPass = respstr[(int)LoginInfo.Password]; //2014.10.24. 1:39 + LoginForm.UserCode = CalculateMD5Hash(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower(); + + this.Invoke(new Action(delegate + { + this.Dispose(); + })); + } + } + } +} diff --git a/MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs b/MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs new file mode 100644 index 0000000..6bfb4b3 --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.RegistrationForm.Designer.cs @@ -0,0 +1,176 @@ +namespace MSGer.tk +{ + partial class LoginForm_RegistrationForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.codeText = new System.Windows.Forms.TextBox(); + this.userText = new System.Windows.Forms.TextBox(); + this.passText = new System.Windows.Forms.TextBox(); + this.emailText = new System.Windows.Forms.TextBox(); + this.registerButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.ForeColor = System.Drawing.Color.Blue; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(124, 24); + this.label1.TabIndex = 0; + this.label1.Text = "Regisztráció"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F); + this.label2.Location = new System.Drawing.Point(17, 58); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(44, 24); + this.label2.TabIndex = 1; + this.label2.Text = "Kód"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F); + this.label3.Location = new System.Drawing.Point(17, 92); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(143, 24); + this.label3.TabIndex = 2; + this.label3.Text = "Felhasználónév"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F); + this.label4.Location = new System.Drawing.Point(17, 125); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(63, 24); + this.label4.TabIndex = 3; + this.label4.Text = "Jelszó"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F); + this.label5.Location = new System.Drawing.Point(17, 160); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(63, 24); + this.label5.TabIndex = 4; + this.label5.Text = "E-mail"; + // + // codeText + // + this.codeText.Location = new System.Drawing.Point(86, 63); + this.codeText.Name = "codeText"; + this.codeText.Size = new System.Drawing.Size(358, 20); + this.codeText.TabIndex = 6; + // + // userText + // + this.userText.Location = new System.Drawing.Point(166, 97); + this.userText.Name = "userText"; + this.userText.Size = new System.Drawing.Size(278, 20); + this.userText.TabIndex = 7; + // + // passText + // + this.passText.Location = new System.Drawing.Point(166, 130); + this.passText.Name = "passText"; + this.passText.PasswordChar = '→'; + this.passText.Size = new System.Drawing.Size(278, 20); + this.passText.TabIndex = 8; + // + // emailText + // + this.emailText.Location = new System.Drawing.Point(86, 165); + this.emailText.Name = "emailText"; + this.emailText.Size = new System.Drawing.Size(358, 20); + this.emailText.TabIndex = 9; + // + // registerButton + // + this.registerButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.registerButton.Location = new System.Drawing.Point(17, 220); + this.registerButton.Name = "registerButton"; + this.registerButton.Size = new System.Drawing.Size(427, 23); + this.registerButton.TabIndex = 10; + this.registerButton.Text = "Regisztráció"; + this.registerButton.UseVisualStyleBackColor = true; + this.registerButton.Click += new System.EventHandler(this.registerButton_Click); + // + // LoginForm_RegistrationForm + // + this.AcceptButton = this.registerButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200))))); + this.ClientSize = new System.Drawing.Size(469, 356); + this.Controls.Add(this.registerButton); + this.Controls.Add(this.emailText); + this.Controls.Add(this.passText); + this.Controls.Add(this.userText); + this.Controls.Add(this.codeText); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LoginForm_RegistrationForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Regisztráció"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox codeText; + private System.Windows.Forms.TextBox userText; + private System.Windows.Forms.TextBox passText; + private System.Windows.Forms.TextBox emailText; + private System.Windows.Forms.Button registerButton; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/LoginForm.RegistrationForm.cs b/MSGer.tk/Forms/LoginForm.RegistrationForm.cs new file mode 100644 index 0000000..79edd73 --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.RegistrationForm.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class LoginForm_RegistrationForm : ThemedForms + { + public LoginForm_RegistrationForm() + { + InitializeComponent(); + label1.Text = Language.Translate(Language.StringID.Registration); + label2.Text = Language.Translate(Language.StringID.Reg_Code); + label3.Text = Language.Translate(Language.StringID.UserName); + label4.Text = Language.Translate(Language.StringID.Password); + registerButton.Text = Language.Translate(Language.StringID.Registration); + } + + private void registerButton_Click(object sender, EventArgs e) + { + registerButton.Enabled = false; + if (codeText.TextLength == 0 || userText.TextLength == 0 || passText.TextLength == 0 || emailText.TextLength == 0) + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_EmptyField), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + return; + } + string response = Networking.SendRequest(Networking.RequestType.Register, codeText.Text + "ͦ" + userText.Text + "ͦ" + LoginForm.CalculateMD5Hash(passText.Text) + "ͦ" + emailText.Text, 2, false); + if (response == "code") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_CodeErr), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + } + else if (response == "uname") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_NameErr), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + } + else if (response == "ulen") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_NameLen), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + } + else if (response == "plen") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_PassLen), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + } + else if (response == "email") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_Email), Language.Translate(Language.StringID.Error)); + registerButton.Enabled = true; + } + else if (response == "Success!") + { + MessageBox.Show(Language.Translate(Language.StringID.Reg_Success)); + Close(); + } + else + { + new ErrorHandler(ErrorType.ServerError, new Exception(response)); //2015.06.04. + registerButton.Enabled = true; + } + } + } +} diff --git a/MSGer.tk/Forms/LoginForm.RegistrationForm.resx b/MSGer.tk/Forms/LoginForm.RegistrationForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.RegistrationForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/LoginForm.cs b/MSGer.tk/Forms/LoginForm.cs new file mode 100644 index 0000000..11dae8c --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.cs @@ -0,0 +1,176 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Net; +using System.IO; +using System.Security.Cryptography; +using System.Configuration; +using System.Threading; +using System.Net.Sockets; + +namespace MSGer.tk +{ + public partial class LoginForm : ThemedForms + { + public static string UserCode = ""; + public static Thread LThread; + private void LoginForm_Load(object sender, EventArgs e) + { + List tmp; //E-mail - 2014.04.02. + if (Storage.Settings[SettingType.Email].Length != 0) + tmp = Storage.Settings[SettingType.Email].Split(',').ToList(); + else tmp = new List(); + tmp.Add(""); + textBox1.Text = tmp[Int32.Parse(Storage.Settings[SettingType.LastUsedEmail])]; //2014.07.08. + textBox1.AutoCompleteCustomSource.AddRange(tmp.ToArray()); + this.Activate(); + this.Activate(); + } + public LoginForm() + { + InitializeComponent(); + this.Text = Language.Translate(Language.StringID.Login); + label1.Text = Language.Translate(Language.StringID.Login); + label3.Text = Language.Translate(Language.StringID.Password); + button1.Text = Language.Translate(Language.StringID.Login); + linkLabel1.Text = Language.Translate(Language.StringID.Registration); + linkLabel2.Text = Language.Translate(Language.StringID.ForgotPassword); + textBox3.Text = ""; + List lines = new List(); + lines.Add(Language.Translate(Language.StringID.Login_Desc1)); + lines.Add(""); + lines.Add(Language.Translate(Language.StringID.Login_Desc2)); + textBox3.Lines = lines.ToArray(); + } + private void button1_Click(object sender, EventArgs e) + { + if (button1.Text == Language.Translate(Language.StringID.Button_Cancel)) + { + ResetAfterLogin(true); + } + else + { + try + { + if (LThread.IsAlive) + { + //2014.03.27. - Ne csináljon semmit - Elvégre ilyen nem fordulhat elő sokáig most már + return; + } + } + catch + { + } + + //Ellenőrizzen le néhány dolgot helyileg - 2014.04.28. + if (textBox2.Text.Length == 0) + return; + + textBox1.ReadOnly = true; //2015.04.08. + textBox2.ReadOnly = true; //2015.04.08. + + // Create the thread object, passing in the Alpha.Beta method + // via a ThreadStart delegate. This does not start the thread. + LThread = new Thread(new ThreadStart(LoginUser)); + LThread.Name = "Login Thread"; + + // Start the thread + LThread.Start(); + } + } + /// + /// A login threadból (stoplogint=false) hívja Invoke-kal + /// + /// + public void ResetAfterLogin(bool stoplogint) + { + var a = new Action(delegate //2015.04.03. + { + button1.Enabled = false; + Request.Abort(); + if (stoplogint) //2014.09.01. + LThread.Abort(); //2014.09.01. + button1.Text = Language.Translate(Language.StringID.Login); + button1.Enabled = true; + linkLabel1.Enabled = true; + textBox1.Enabled = true; //2014.09.01. + textBox2.Enabled = true; //2014.09.01. + textBox1.ReadOnly = false; //2015.04.08. + textBox2.ReadOnly = false; //2015.04.08. + }); + if (stoplogint) //2015.04.03. + a(); + else + this.Invoke(a); + } + + public enum LoginInfo + { + UserID, + UserName, + IPs, + Password + } + + public static string CalculateMD5Hash(string input) + { + // step 1, calculate MD5 hash from input + MD5 md5 = System.Security.Cryptography.MD5.Create(); + byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); + byte[] hash = md5.ComputeHash(inputBytes); + + // step 2, convert byte array to hex string + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < hash.Length; i++) + { + sb.Append(hash[i].ToString("X2")); + } + return sb.ToString(); + } + + private void RegistrateLink(object sender, LinkLabelLinkClickedEventArgs e) + { + (new LoginForm_RegistrationForm()).ShowDialog(); + } + + private void LoginForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (LThread != null && LThread.IsAlive) + { + LThread.Abort(); //2014.03.27. - Na vajon kell-e más + Request.Abort(); //2014.03.27. - Kell... Ez + } + if (CurrentUser.UserID == 0) + Program.Exit(); + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (textBox1.Text.Length == 0) + { //TODO: Fordítás + MessageBox.Show("Nincs megadva felhasználónév."); //Translate! + return; + } + if (MessageBox.Show("Új jelszót kérsz a megadott névhez?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + string ret = Networking.SendRequest(Networking.RequestType.ResetPass, textBox1.Text, 0, false); + if (ret == "nouser") + MessageBox.Show("A megadott felhasználó nem létezik."); + else if (ret == "already") + MessageBox.Show("A link MÁR el lett küldve az E-mail címedre."); + else if (ret == "sent") + MessageBox.Show("A link elküldve az E-mail címedre."); + else if (ret.Contains("notsent")) + MessageBox.Show("A link NEM lett elküldve az E-mail címedre.\nHiba: " + ret.Remove(ret.IndexOf("notsent"), "notsent".Length + 1)); + else + MessageBox.Show("Ismeretlen hiba:\n" + ret); + } + } + } +} diff --git a/MSGer.tk/Forms/LoginForm.resx b/MSGer.tk/Forms/LoginForm.resx new file mode 100644 index 0000000..7938e5e --- /dev/null +++ b/MSGer.tk/Forms/LoginForm.resx @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Az e-mail helyett használható a felhasználóneved is. + +Ha nem tudsz bejelentkezni, próbáld meg újrainditani a programot. Ha az sem segít, és nem a felhasználóneveddel/jelszavaddal van a probléma, akkor jelentsd a problémát. + + \ No newline at end of file diff --git a/MSGer.tk/Forms/MainForm.Designer.cs b/MSGer.tk/Forms/MainForm.Designer.cs new file mode 100644 index 0000000..bf3a356 --- /dev/null +++ b/MSGer.tk/Forms/MainForm.Designer.cs @@ -0,0 +1,945 @@ +namespace MSGer.tk +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn3 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn4 = new SzNPProjects.RichListViewColumn(); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.iconMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem(); + this.panel2 = new System.Windows.Forms.Panel(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fájlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.kijelentkezésToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.állapotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.elérhetőToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.elfoglaltToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.nincsAGépnélToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.rejtveKapcsolódikToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.fájlKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.bezárásToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.kilépésToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ismerősökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ismerősFelvételeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ismerősSzerkesztéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ismerősTörléseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.csoportLétrehozásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.kategóriaLétrehozásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.kategóriaSzerkesztéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.kategóriaTörléseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.műveletekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.azonnaliÜzenetKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.egyébKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.emailKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.fájlKüldéseToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.videóhivásInditásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.onlineFájlokMegtekintéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.közösJátékToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.távsegitségKéréseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.eszközökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mindigLegfelülToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.hangulatjelekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.megjelenitendőKépVáltásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.háttérMódositásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.hangokÉsVideóBeállitásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.beállitásokToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); + this.szkriptíróToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.súgóToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.témakörökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.aSzolgáltatásÁllapotsaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.adatvédelmiNyilatkozatToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.használatiFeltételekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.visszaélésBejelentéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.segitsenAProgramTökéletesitésébenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.névjegyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.partnerImages = new System.Windows.Forms.ImageList(this.components); + this.contactList = new SzNPProjects.RichListView(); + this.MainPanel = new System.Windows.Forms.Panel(); + this.searchListView = new SzNPProjects.RichListView(); + this.statusStrip2 = new System.Windows.Forms.StatusStrip(); + this.servers = new System.Windows.Forms.ToolStripStatusLabel(); + this.onlineservers = new System.Windows.Forms.ToolStripStatusLabel(); + this.mainserver = new System.Windows.Forms.ToolStripStatusLabel(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); + this.chatIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.listPartnerMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.iconMenu.SuspendLayout(); + this.panel2.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.MainPanel.SuspendLayout(); + this.statusStrip2.SuspendLayout(); + this.SuspendLayout(); + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.iconMenu; + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + this.notifyIcon1.Text = "MSGer.tk"; + this.notifyIcon1.DoubleClick += new System.EventHandler(this.toolStripMenuItem4_Click); + // + // iconMenu + // + this.iconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem4, + this.toolStripSeparator18, + this.toolStripMenuItem8, + this.toolStripMenuItem9}); + this.iconMenu.Name = "partnerMenu"; + this.iconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.iconMenu.Size = new System.Drawing.Size(147, 76); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(146, 22); + this.toolStripMenuItem4.Text = "Megjelenítés"; + this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click); + // + // toolStripSeparator18 + // + this.toolStripSeparator18.Name = "toolStripSeparator18"; + this.toolStripSeparator18.Size = new System.Drawing.Size(143, 6); + // + // toolStripMenuItem8 + // + this.toolStripMenuItem8.Name = "toolStripMenuItem8"; + this.toolStripMenuItem8.Size = new System.Drawing.Size(146, 22); + this.toolStripMenuItem8.Text = "Kijelentkezés"; + this.toolStripMenuItem8.Click += new System.EventHandler(this.LogoutUser); + // + // toolStripMenuItem9 + // + this.toolStripMenuItem9.Name = "toolStripMenuItem9"; + this.toolStripMenuItem9.Size = new System.Drawing.Size(146, 22); + this.toolStripMenuItem9.Text = "Kilépés"; + this.toolStripMenuItem9.Click += new System.EventHandler(this.ExitProgram); + // + // panel2 + // + this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel2.BackgroundImage = global::MSGer.tk.Properties.Resources.Keresősáv; + this.panel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel2.Controls.Add(this.textBox1); + this.panel2.Cursor = System.Windows.Forms.Cursors.IBeam; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(494, 31); + this.panel2.TabIndex = 5; + this.panel2.Click += new System.EventHandler(this.panel2_Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(249)))), ((int)(((byte)(252))))); + this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(137)))), ((int)(((byte)(161)))), ((int)(((byte)(194))))); + this.textBox1.Location = new System.Drawing.Point(6, 8); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(485, 13); + this.textBox1.TabIndex = 3; + this.textBox1.Text = "Ismerősök keresése..."; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + this.textBox1.Enter += new System.EventHandler(this.ClearSearchBar); + this.textBox1.Leave += new System.EventHandler(this.PutTextInSearchBar); + // + // menuStrip1 + // + this.menuStrip1.BackColor = System.Drawing.Color.Black; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fájlToolStripMenuItem, + this.ismerősökToolStripMenuItem, + this.műveletekToolStripMenuItem, + this.eszközökToolStripMenuItem, + this.súgóToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional; + this.menuStrip1.Size = new System.Drawing.Size(799, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // fájlToolStripMenuItem + // + this.fájlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.kijelentkezésToolStripMenuItem, + this.toolStripMenuItem1, + this.toolStripSeparator1, + this.állapotToolStripMenuItem, + this.toolStripSeparator2, + this.fájlKüldéseToolStripMenuItem, + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem, + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem, + this.toolStripSeparator3, + this.bezárásToolStripMenuItem, + this.toolStripSeparator4, + this.kilépésToolStripMenuItem}); + this.fájlToolStripMenuItem.Name = "fájlToolStripMenuItem"; + this.fájlToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fájlToolStripMenuItem.Text = "Fájl"; + // + // kijelentkezésToolStripMenuItem + // + this.kijelentkezésToolStripMenuItem.Name = "kijelentkezésToolStripMenuItem"; + this.kijelentkezésToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.kijelentkezésToolStripMenuItem.Text = "Kijelentkezés"; + this.kijelentkezésToolStripMenuItem.Click += new System.EventHandler(this.LogoutUser); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(292, 22); + this.toolStripMenuItem1.Text = "Újabb felhasználó bejelentkeztetése..."; + this.toolStripMenuItem1.Click += new System.EventHandler(this.LoginNewUser); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(289, 6); + // + // állapotToolStripMenuItem + // + this.állapotToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.elérhetőToolStripMenuItem, + this.elfoglaltToolStripMenuItem, + this.nincsAGépnélToolStripMenuItem, + this.rejtveKapcsolódikToolStripMenuItem}); + this.állapotToolStripMenuItem.Name = "állapotToolStripMenuItem"; + this.állapotToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.állapotToolStripMenuItem.Text = "Állapot"; + // + // elérhetőToolStripMenuItem + // + this.elérhetőToolStripMenuItem.Name = "elérhetőToolStripMenuItem"; + this.elérhetőToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.elérhetőToolStripMenuItem.Text = "Elérhető"; + this.elérhetőToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState); + // + // elfoglaltToolStripMenuItem + // + this.elfoglaltToolStripMenuItem.Name = "elfoglaltToolStripMenuItem"; + this.elfoglaltToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.elfoglaltToolStripMenuItem.Text = "Elfoglalt"; + this.elfoglaltToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState); + // + // nincsAGépnélToolStripMenuItem + // + this.nincsAGépnélToolStripMenuItem.Name = "nincsAGépnélToolStripMenuItem"; + this.nincsAGépnélToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.nincsAGépnélToolStripMenuItem.Text = "Nincs a gépnél"; + this.nincsAGépnélToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState); + // + // rejtveKapcsolódikToolStripMenuItem + // + this.rejtveKapcsolódikToolStripMenuItem.Name = "rejtveKapcsolódikToolStripMenuItem"; + this.rejtveKapcsolódikToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.rejtveKapcsolódikToolStripMenuItem.Text = "Rejtve kapcsolódik"; + this.rejtveKapcsolódikToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(289, 6); + // + // fájlKüldéseToolStripMenuItem + // + this.fájlKüldéseToolStripMenuItem.Name = "fájlKüldéseToolStripMenuItem"; + this.fájlKüldéseToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.fájlKüldéseToolStripMenuItem.Text = "Fájl küldése..."; + this.fájlKüldéseToolStripMenuItem.Click += new System.EventHandler(this.SelectPartner); + // + // beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem + // + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Name = "beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem"; + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = "Beérkezett fájlok mappájának megnyitása"; + this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Click += new System.EventHandler(this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem_Click); + // + // üzenetekElőzményeinekMegtekintéseToolStripMenuItem + // + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Enabled = false; + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Name = "üzenetekElőzményeinekMegtekintéseToolStripMenuItem"; + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = "Üzenetek előzményeinek megtekintése..."; + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(289, 6); + // + // bezárásToolStripMenuItem + // + this.bezárásToolStripMenuItem.Name = "bezárásToolStripMenuItem"; + this.bezárásToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.bezárásToolStripMenuItem.Text = "Bezárás"; + this.bezárásToolStripMenuItem.Click += new System.EventHandler(this.bezárásToolStripMenuItem_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(289, 6); + // + // kilépésToolStripMenuItem + // + this.kilépésToolStripMenuItem.Name = "kilépésToolStripMenuItem"; + this.kilépésToolStripMenuItem.Size = new System.Drawing.Size(292, 22); + this.kilépésToolStripMenuItem.Text = "Kilépés"; + this.kilépésToolStripMenuItem.Click += new System.EventHandler(this.ExitProgram); + // + // ismerősökToolStripMenuItem + // + this.ismerősökToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.ismerősFelvételeToolStripMenuItem, + this.ismerősSzerkesztéseToolStripMenuItem, + this.ismerősTörléseToolStripMenuItem, + this.toolStripMenuItem3, + this.toolStripSeparator5, + this.csoportLétrehozásaToolStripMenuItem, + this.toolStripSeparator6, + this.kategóriaLétrehozásaToolStripMenuItem, + this.kategóriaSzerkesztéseToolStripMenuItem, + this.kategóriaTörléseToolStripMenuItem}); + this.ismerősökToolStripMenuItem.Name = "ismerősökToolStripMenuItem"; + this.ismerősökToolStripMenuItem.Size = new System.Drawing.Size(73, 20); + this.ismerősökToolStripMenuItem.Text = "Ismerősök"; + // + // ismerősFelvételeToolStripMenuItem + // + this.ismerősFelvételeToolStripMenuItem.Name = "ismerősFelvételeToolStripMenuItem"; + this.ismerősFelvételeToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.ismerősFelvételeToolStripMenuItem.Text = "Ismerős felvétele..."; + this.ismerősFelvételeToolStripMenuItem.Click += new System.EventHandler(this.ismerősFelvételeToolStripMenuItem_Click); + // + // ismerősSzerkesztéseToolStripMenuItem + // + this.ismerősSzerkesztéseToolStripMenuItem.Enabled = false; + this.ismerősSzerkesztéseToolStripMenuItem.Name = "ismerősSzerkesztéseToolStripMenuItem"; + this.ismerősSzerkesztéseToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.ismerősSzerkesztéseToolStripMenuItem.Text = "Ismerős szerkesztése..."; + // + // ismerősTörléseToolStripMenuItem + // + this.ismerősTörléseToolStripMenuItem.Enabled = false; + this.ismerősTörléseToolStripMenuItem.Name = "ismerősTörléseToolStripMenuItem"; + this.ismerősTörléseToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.ismerősTörléseToolStripMenuItem.Text = "Ismerős törlése..."; + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(199, 22); + this.toolStripMenuItem3.Text = "Ismerős meghivása..."; + this.toolStripMenuItem3.Click += new System.EventHandler(this.InvitePartner); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(196, 6); + // + // csoportLétrehozásaToolStripMenuItem + // + this.csoportLétrehozásaToolStripMenuItem.Enabled = false; + this.csoportLétrehozásaToolStripMenuItem.Name = "csoportLétrehozásaToolStripMenuItem"; + this.csoportLétrehozásaToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.csoportLétrehozásaToolStripMenuItem.Text = "Csoport létrehozása..."; + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(196, 6); + // + // kategóriaLétrehozásaToolStripMenuItem + // + this.kategóriaLétrehozásaToolStripMenuItem.Enabled = false; + this.kategóriaLétrehozásaToolStripMenuItem.Name = "kategóriaLétrehozásaToolStripMenuItem"; + this.kategóriaLétrehozásaToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.kategóriaLétrehozásaToolStripMenuItem.Text = "Kategória létrehozása..."; + // + // kategóriaSzerkesztéseToolStripMenuItem + // + this.kategóriaSzerkesztéseToolStripMenuItem.Enabled = false; + this.kategóriaSzerkesztéseToolStripMenuItem.Name = "kategóriaSzerkesztéseToolStripMenuItem"; + this.kategóriaSzerkesztéseToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.kategóriaSzerkesztéseToolStripMenuItem.Text = "Kategória szerkesztése..."; + // + // kategóriaTörléseToolStripMenuItem + // + this.kategóriaTörléseToolStripMenuItem.Enabled = false; + this.kategóriaTörléseToolStripMenuItem.Name = "kategóriaTörléseToolStripMenuItem"; + this.kategóriaTörléseToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.kategóriaTörléseToolStripMenuItem.Text = "Kategória törlése..."; + // + // műveletekToolStripMenuItem + // + this.műveletekToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.azonnaliÜzenetKüldéseToolStripMenuItem, + this.egyébKüldéseToolStripMenuItem, + this.toolStripSeparator7, + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem, + this.videóhivásInditásaToolStripMenuItem, + this.onlineFájlokMegtekintéseToolStripMenuItem, + this.közösJátékToolStripMenuItem, + this.távsegitségKéréseToolStripMenuItem}); + this.műveletekToolStripMenuItem.Name = "műveletekToolStripMenuItem"; + this.műveletekToolStripMenuItem.Size = new System.Drawing.Size(74, 20); + this.műveletekToolStripMenuItem.Text = "Műveletek"; + // + // azonnaliÜzenetKüldéseToolStripMenuItem + // + this.azonnaliÜzenetKüldéseToolStripMenuItem.Name = "azonnaliÜzenetKüldéseToolStripMenuItem"; + this.azonnaliÜzenetKüldéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.azonnaliÜzenetKüldéseToolStripMenuItem.Text = "Azonnali üzenet küldése..."; + this.azonnaliÜzenetKüldéseToolStripMenuItem.Click += new System.EventHandler(this.SelectPartner); + // + // egyébKüldéseToolStripMenuItem + // + this.egyébKüldéseToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.emailKüldéseToolStripMenuItem, + this.fájlKüldéseToolStripMenuItem1}); + this.egyébKüldéseToolStripMenuItem.Name = "egyébKüldéseToolStripMenuItem"; + this.egyébKüldéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.egyébKüldéseToolStripMenuItem.Text = "Egyéb küldése"; + // + // emailKüldéseToolStripMenuItem + // + this.emailKüldéseToolStripMenuItem.Enabled = false; + this.emailKüldéseToolStripMenuItem.Name = "emailKüldéseToolStripMenuItem"; + this.emailKüldéseToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.emailKüldéseToolStripMenuItem.Text = "E-mail küldése..."; + // + // fájlKüldéseToolStripMenuItem1 + // + this.fájlKüldéseToolStripMenuItem1.Name = "fájlKüldéseToolStripMenuItem1"; + this.fájlKüldéseToolStripMenuItem1.Size = new System.Drawing.Size(160, 22); + this.fájlKüldéseToolStripMenuItem1.Text = "Fájl küldése..."; + this.fájlKüldéseToolStripMenuItem1.Click += new System.EventHandler(this.SelectPartner); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(250, 6); + // + // ismerősSzámitógépénekFelhivásaToolStripMenuItem + // + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Enabled = false; + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Name = "ismerősSzámitógépénekFelhivásaToolStripMenuItem"; + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = "Ismerős számitógépének felhivása"; + // + // videóhivásInditásaToolStripMenuItem + // + this.videóhivásInditásaToolStripMenuItem.Enabled = false; + this.videóhivásInditásaToolStripMenuItem.Name = "videóhivásInditásaToolStripMenuItem"; + this.videóhivásInditásaToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.videóhivásInditásaToolStripMenuItem.Text = "Videóhivás inditása..."; + // + // onlineFájlokMegtekintéseToolStripMenuItem + // + this.onlineFájlokMegtekintéseToolStripMenuItem.Enabled = false; + this.onlineFájlokMegtekintéseToolStripMenuItem.Name = "onlineFájlokMegtekintéseToolStripMenuItem"; + this.onlineFájlokMegtekintéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.onlineFájlokMegtekintéseToolStripMenuItem.Text = "Online fájlok megtekintése"; + // + // közösJátékToolStripMenuItem + // + this.közösJátékToolStripMenuItem.Enabled = false; + this.közösJátékToolStripMenuItem.Name = "közösJátékToolStripMenuItem"; + this.közösJátékToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.közösJátékToolStripMenuItem.Text = "Közös játék..."; + // + // távsegitségKéréseToolStripMenuItem + // + this.távsegitségKéréseToolStripMenuItem.Enabled = false; + this.távsegitségKéréseToolStripMenuItem.Name = "távsegitségKéréseToolStripMenuItem"; + this.távsegitségKéréseToolStripMenuItem.Size = new System.Drawing.Size(253, 22); + this.távsegitségKéréseToolStripMenuItem.Text = "Távsegitség kérése..."; + // + // eszközökToolStripMenuItem + // + this.eszközökToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mindigLegfelülToolStripMenuItem, + this.toolStripSeparator8, + this.hangulatjelekToolStripMenuItem, + this.megjelenitendőKépVáltásaToolStripMenuItem, + this.háttérMódositásaToolStripMenuItem, + this.toolStripSeparator9, + this.hangokÉsVideóBeállitásaToolStripMenuItem, + this.toolStripSeparator10, + this.beállitásokToolStripMenuItem, + this.toolStripSeparator14, + this.szkriptíróToolStripMenuItem}); + this.eszközökToolStripMenuItem.Name = "eszközökToolStripMenuItem"; + this.eszközökToolStripMenuItem.Size = new System.Drawing.Size(66, 20); + this.eszközökToolStripMenuItem.Text = "Eszközök"; + // + // mindigLegfelülToolStripMenuItem + // + this.mindigLegfelülToolStripMenuItem.CheckOnClick = true; + this.mindigLegfelülToolStripMenuItem.Name = "mindigLegfelülToolStripMenuItem"; + this.mindigLegfelülToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.mindigLegfelülToolStripMenuItem.Text = "Mindig legfelül"; + this.mindigLegfelülToolStripMenuItem.Click += new System.EventHandler(this.mindigLegfelülToolStripMenuItem_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(224, 6); + // + // hangulatjelekToolStripMenuItem + // + this.hangulatjelekToolStripMenuItem.Name = "hangulatjelekToolStripMenuItem"; + this.hangulatjelekToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.hangulatjelekToolStripMenuItem.Text = "Hangulatjelek..."; + this.hangulatjelekToolStripMenuItem.Click += new System.EventHandler(this.hangulatjelekToolStripMenuItem_Click); + // + // megjelenitendőKépVáltásaToolStripMenuItem + // + this.megjelenitendőKépVáltásaToolStripMenuItem.Name = "megjelenitendőKépVáltásaToolStripMenuItem"; + this.megjelenitendőKépVáltásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.megjelenitendőKépVáltásaToolStripMenuItem.Text = "Megjelenitendő kép váltása..."; + this.megjelenitendőKépVáltásaToolStripMenuItem.Click += new System.EventHandler(this.megjelenitendőKépVáltásaToolStripMenuItem_Click); + // + // háttérMódositásaToolStripMenuItem + // + this.háttérMódositásaToolStripMenuItem.Enabled = false; + this.háttérMódositásaToolStripMenuItem.Name = "háttérMódositásaToolStripMenuItem"; + this.háttérMódositásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.háttérMódositásaToolStripMenuItem.Text = "Háttér módositása..."; + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(224, 6); + // + // hangokÉsVideóBeállitásaToolStripMenuItem + // + this.hangokÉsVideóBeállitásaToolStripMenuItem.Enabled = false; + this.hangokÉsVideóBeállitásaToolStripMenuItem.Name = "hangokÉsVideóBeállitásaToolStripMenuItem"; + this.hangokÉsVideóBeállitásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.hangokÉsVideóBeállitásaToolStripMenuItem.Text = "Hangok és videó beállitása..."; + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(224, 6); + // + // beállitásokToolStripMenuItem + // + this.beállitásokToolStripMenuItem.Name = "beállitásokToolStripMenuItem"; + this.beállitásokToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.beállitásokToolStripMenuItem.Text = "Beállitások..."; + this.beállitásokToolStripMenuItem.Click += new System.EventHandler(this.beállitásokToolStripMenuItem_Click); + // + // toolStripSeparator14 + // + this.toolStripSeparator14.Name = "toolStripSeparator14"; + this.toolStripSeparator14.Size = new System.Drawing.Size(224, 6); + // + // szkriptíróToolStripMenuItem + // + this.szkriptíróToolStripMenuItem.Name = "szkriptíróToolStripMenuItem"; + this.szkriptíróToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.szkriptíróToolStripMenuItem.Text = "Szkriptíró"; + this.szkriptíróToolStripMenuItem.Click += new System.EventHandler(this.szkriptíróToolStripMenuItem_Click); + // + // súgóToolStripMenuItem + // + this.súgóToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.témakörökToolStripMenuItem, + this.toolStripSeparator11, + this.aSzolgáltatásÁllapotsaToolStripMenuItem, + this.adatvédelmiNyilatkozatToolStripMenuItem, + this.használatiFeltételekToolStripMenuItem, + this.visszaélésBejelentéseToolStripMenuItem, + this.toolStripSeparator12, + this.segitsenAProgramTökéletesitésébenToolStripMenuItem, + this.toolStripSeparator13, + this.névjegyToolStripMenuItem}); + this.súgóToolStripMenuItem.Name = "súgóToolStripMenuItem"; + this.súgóToolStripMenuItem.Size = new System.Drawing.Size(46, 20); + this.súgóToolStripMenuItem.Text = "Súgó"; + // + // témakörökToolStripMenuItem + // + this.témakörökToolStripMenuItem.Enabled = false; + this.témakörökToolStripMenuItem.Name = "témakörökToolStripMenuItem"; + this.témakörökToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.témakörökToolStripMenuItem.Text = "Témakörök"; + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(267, 6); + // + // aSzolgáltatásÁllapotsaToolStripMenuItem + // + this.aSzolgáltatásÁllapotsaToolStripMenuItem.Enabled = false; + this.aSzolgáltatásÁllapotsaToolStripMenuItem.Name = "aSzolgáltatásÁllapotsaToolStripMenuItem"; + this.aSzolgáltatásÁllapotsaToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.aSzolgáltatásÁllapotsaToolStripMenuItem.Text = "A szolgáltatás állapota"; + // + // adatvédelmiNyilatkozatToolStripMenuItem + // + this.adatvédelmiNyilatkozatToolStripMenuItem.Enabled = false; + this.adatvédelmiNyilatkozatToolStripMenuItem.Name = "adatvédelmiNyilatkozatToolStripMenuItem"; + this.adatvédelmiNyilatkozatToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.adatvédelmiNyilatkozatToolStripMenuItem.Text = "Adatvédelmi nyilatkozat"; + // + // használatiFeltételekToolStripMenuItem + // + this.használatiFeltételekToolStripMenuItem.Enabled = false; + this.használatiFeltételekToolStripMenuItem.Name = "használatiFeltételekToolStripMenuItem"; + this.használatiFeltételekToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.használatiFeltételekToolStripMenuItem.Text = "Használati feltételek"; + // + // visszaélésBejelentéseToolStripMenuItem + // + this.visszaélésBejelentéseToolStripMenuItem.Enabled = false; + this.visszaélésBejelentéseToolStripMenuItem.Name = "visszaélésBejelentéseToolStripMenuItem"; + this.visszaélésBejelentéseToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.visszaélésBejelentéseToolStripMenuItem.Text = "Visszaélés bejelentése"; + // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + this.toolStripSeparator12.Size = new System.Drawing.Size(267, 6); + // + // segitsenAProgramTökéletesitésébenToolStripMenuItem + // + this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Enabled = false; + this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Name = "segitsenAProgramTökéletesitésébenToolStripMenuItem"; + this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = "Segitsen a program tökéletesitésében"; + // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + this.toolStripSeparator13.Size = new System.Drawing.Size(267, 6); + // + // névjegyToolStripMenuItem + // + this.névjegyToolStripMenuItem.Name = "névjegyToolStripMenuItem"; + this.névjegyToolStripMenuItem.Size = new System.Drawing.Size(270, 22); + this.névjegyToolStripMenuItem.Text = "Névjegy"; + this.névjegyToolStripMenuItem.Click += new System.EventHandler(this.névjegyToolStripMenuItem_Click); + // + // partnerImages + // + this.partnerImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; + this.partnerImages.ImageSize = new System.Drawing.Size(16, 16); + this.partnerImages.TransparentColor = System.Drawing.Color.Transparent; + // + // contactList + // + this.contactList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.contactList.AutoScroll = true; + this.contactList.AutoUpdate = true; + this.contactList.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; + this.contactList.ColumnAutoFill = true; + richListViewColumn1.Text = null; + richListViewColumn1.Width = 50; + richListViewColumn2.Text = null; + richListViewColumn2.Width = 100; + this.contactList.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.contactList.HeaderHeight = 0; + this.contactList.ItemHeight = 50; + this.contactList.Location = new System.Drawing.Point(3, 40); + this.contactList.Name = "contactList"; + this.contactList.SelectedIndex = -1; + this.contactList.SelectionColor = System.Drawing.Color.Aqua; + this.contactList.Size = new System.Drawing.Size(494, 471); + this.contactList.TabIndex = 0; + this.contactList.ItemDoubleClicked += new System.EventHandler(this.contactList_ItemDoubleClicked); + this.contactList.ItemRightClicked += new System.EventHandler(this.contactList_ItemRightClicked); + // + // MainPanel + // + this.MainPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.MainPanel.Controls.Add(this.panel2); + this.MainPanel.Controls.Add(this.searchListView); + this.MainPanel.Controls.Add(this.contactList); + this.MainPanel.Controls.Add(this.statusStrip2); + this.MainPanel.Location = new System.Drawing.Point(150, 24); + this.MainPanel.Name = "MainPanel"; + this.MainPanel.Size = new System.Drawing.Size(500, 536); + this.MainPanel.TabIndex = 9; + // + // searchListView + // + this.searchListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.searchListView.AutoScroll = true; + this.searchListView.AutoUpdate = true; + this.searchListView.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; + this.searchListView.ColumnAutoFill = true; + richListViewColumn3.Text = null; + richListViewColumn3.Width = 50; + richListViewColumn4.Text = null; + richListViewColumn4.Width = 100; + this.searchListView.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn3, + richListViewColumn4}; + this.searchListView.HeaderHeight = 0; + this.searchListView.ItemHeight = 50; + this.searchListView.Location = new System.Drawing.Point(3, 32); + this.searchListView.Name = "searchListView"; + this.searchListView.SelectedIndex = -1; + this.searchListView.SelectionColor = System.Drawing.Color.Aqua; + this.searchListView.Size = new System.Drawing.Size(494, 366); + this.searchListView.TabIndex = 7; + this.searchListView.Visible = false; + // + // statusStrip2 + // + this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.servers, + this.onlineservers, + this.mainserver}); + this.statusStrip2.Location = new System.Drawing.Point(0, 514); + this.statusStrip2.Name = "statusStrip2"; + this.statusStrip2.Size = new System.Drawing.Size(500, 22); + this.statusStrip2.SizingGrip = false; + this.statusStrip2.TabIndex = 6; + // + // servers + // + this.servers.Name = "servers"; + this.servers.Size = new System.Drawing.Size(43, 17); + this.servers.Text = "servers"; + // + // onlineservers + // + this.onlineservers.Name = "onlineservers"; + this.onlineservers.Size = new System.Drawing.Size(76, 17); + this.onlineservers.Text = "onlineservers"; + // + // mainserver + // + this.mainserver.Name = "mainserver"; + this.mainserver.Size = new System.Drawing.Size(366, 17); + this.mainserver.Spring = true; + this.mainserver.Text = "mainserver"; + this.mainserver.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.flowLayoutPanel1.AutoScroll = true; + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 24); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(150, 536); + this.flowLayoutPanel1.TabIndex = 10; + this.flowLayoutPanel1.WrapContents = false; + this.flowLayoutPanel1.Click += new System.EventHandler(this.flowLayoutPanel1_Click); + // + // flowLayoutPanel2 + // + this.flowLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.flowLayoutPanel2.AutoScroll = true; + this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel2.Location = new System.Drawing.Point(649, 24); + this.flowLayoutPanel2.Name = "flowLayoutPanel2"; + this.flowLayoutPanel2.Size = new System.Drawing.Size(150, 538); + this.flowLayoutPanel2.TabIndex = 11; + this.flowLayoutPanel2.WrapContents = false; + this.flowLayoutPanel2.Click += new System.EventHandler(this.flowLayoutPanel1_Click); + // + // chatIconMenu + // + this.chatIconMenu.Name = "contextMenuStrip1"; + this.chatIconMenu.Size = new System.Drawing.Size(61, 4); + // + // listPartnerMenu + // + this.listPartnerMenu.Name = "listPartnerMenu"; + this.listPartnerMenu.Size = new System.Drawing.Size(61, 4); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.LightSkyBlue; + this.ClientSize = new System.Drawing.Size(799, 562); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.flowLayoutPanel1); + this.Controls.Add(this.MainPanel); + this.Controls.Add(this.flowLayoutPanel2); + this.MainMenuStrip = this.menuStrip1; + this.MinimumSize = new System.Drawing.Size(500, 300); + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Live Messenger - MSGer.tk"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BeforeExit); + this.Load += new System.EventHandler(this.OnMainFormLoad); + this.Controls.SetChildIndex(this.flowLayoutPanel2, 0); + this.Controls.SetChildIndex(this.MainPanel, 0); + this.Controls.SetChildIndex(this.flowLayoutPanel1, 0); + this.Controls.SetChildIndex(this.menuStrip1, 0); + this.iconMenu.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.MainPanel.ResumeLayout(false); + this.MainPanel.PerformLayout(); + this.statusStrip2.ResumeLayout(false); + this.statusStrip2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fájlToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem kijelentkezésToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem állapotToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem elérhetőToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem elfoglaltToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem nincsAGépnélToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem rejtveKapcsolódikToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem fájlKüldéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem üzenetekElőzményeinekMegtekintéseToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem bezárásToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem kilépésToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ismerősökToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ismerősFelvételeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ismerősSzerkesztéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ismerősTörléseToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripMenuItem csoportLétrehozásaToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripMenuItem kategóriaLétrehozásaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem kategóriaSzerkesztéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem kategóriaTörléseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem műveletekToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem azonnaliÜzenetKüldéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem egyébKüldéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem emailKüldéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem fájlKüldéseToolStripMenuItem1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripMenuItem ismerősSzámitógépénekFelhivásaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem videóhivásInditásaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem onlineFájlokMegtekintéseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem közösJátékToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem távsegitségKéréseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem eszközökToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mindigLegfelülToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripMenuItem hangulatjelekToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem megjelenitendőKépVáltásaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem háttérMódositásaToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripMenuItem hangokÉsVideóBeállitásaToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripMenuItem beállitásokToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem súgóToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem témakörökToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripMenuItem aSzolgáltatásÁllapotsaToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem adatvédelmiNyilatkozatToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem használatiFeltételekToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem visszaélésBejelentéseToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; + private System.Windows.Forms.ToolStripMenuItem segitsenAProgramTökéletesitésébenToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; + private System.Windows.Forms.ToolStripMenuItem névjegyToolStripMenuItem; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ImageList partnerImages; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3; + private System.Windows.Forms.ContextMenuStrip iconMenu; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator18; + public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4; + public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8; + public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9; + internal System.Windows.Forms.NotifyIcon notifyIcon1; + internal SzNPProjects.RichListView contactList; + private System.Windows.Forms.Panel MainPanel; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; + private System.Windows.Forms.StatusStrip statusStrip2; + private System.Windows.Forms.ToolStripStatusLabel servers; + private System.Windows.Forms.ToolStripStatusLabel onlineservers; + private System.Windows.Forms.ToolStripStatusLabel mainserver; + private System.Windows.Forms.ContextMenuStrip chatIconMenu; + private System.Windows.Forms.ContextMenuStrip listPartnerMenu; + internal SzNPProjects.RichListView searchListView; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; + private System.Windows.Forms.ToolStripMenuItem szkriptíróToolStripMenuItem; + } +} + diff --git a/MSGer.tk/Forms/MainForm.Events.cs b/MSGer.tk/Forms/MainForm.Events.cs new file mode 100644 index 0000000..d3df9f5 --- /dev/null +++ b/MSGer.tk/Forms/MainForm.Events.cs @@ -0,0 +1,306 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class MainForm + { + private void PopupCloseClick(object sender, EventArgs e) + { + MessageBox.Show("Close"); + } + + private void PopupClick(object sender, EventArgs e) + { + MessageBox.Show("Click"); + } + + private void LoginNewUser(object sender, EventArgs e) + { + Storage.Save(true); //2014.09.19. + Process.Start(((Program.ProcessName.Contains("vshost")) ? Program.ProcessName.Replace(".vshost", "") : Program.ProcessName) + ".exe", "multi"); + } + + public void SetOnlineState(object sender, EventArgs e) + { + int state = 0; + if (sender == elérhetőToolStripMenuItem) + state = 1; + if (sender == elfoglaltToolStripMenuItem) + state = 2; + if (sender == nincsAGépnélToolStripMenuItem) + state = 3; + if (sender == null) //2014.08.30. - Erre nagyon sokáig nem volt felkészítve, és ezt kihasználtam a kijelentkezéshez + { + string resp = Networking.SendRequest(Networking.RequestType.SetState, 0 + "", 0, true); + if (resp.Contains("Fail")) //2015.06.04. + new ErrorHandler(ErrorType.ServerError, new Exception(resp)); //2015.06.04. + new Networking.PacketSender(new Networking.PDLogoutUser()).SendAsync().ContinueWith((t) => + { + CurrentUser.SendChanges = false; //2014.12.31. + CurrentUser.State = state; //2014.08.28. + }); + } + else //else: 2015.04.03. + CurrentUser.State = state; //2014.08.28. + } + + private void SelectPartner(object sender, EventArgs e) + { + var form = new SelectPartnerForm((ToolStripMenuItem)sender); + DialogResult dr = form.ShowDialog(); + if (dr == DialogResult.OK) + { + //2014.04.25. + string[] partners = form.Partners; + List tmplist = new List(); //2015.05.15. + for (int i = 0; i < partners.Length; i++) + { + if (partners[i] != "") //2014.04.17. + { + for (int j = 0; j < UserInfo.KnownUsers.Count; j++) + { + if (!UserInfo.KnownUsers[j].IsPartner) + continue; + int tmp; //2014.04.17. + if (!Int32.TryParse(partners[i], out tmp)) + tmp = -1; + if (UserInfo.KnownUsers[j].UserName == partners[i] || UserInfo.KnownUsers[j].Email == partners[i] || UserInfo.KnownUsers[j].UserID == tmp) + { //Egyezik a név, E-mail vagy ID - UserName: 2014.04.17. + tmplist.Add(UserInfo.KnownUsers[j]); //2015.05.15. + } + } + } + } + if (tmplist.Count != 0) + { + if (sender == fájlKüldéseToolStripMenuItem) + { + ChatPanel tmpchat = ChatPanel.Create(tmplist); + tmpchat.OpenSendFile(); //2015.06.30. + } + if (sender == azonnaliÜzenetKüldéseToolStripMenuItem) + { + ChatPanel.Create(tmplist); + } + } + } + } + + private void ClearSearchBar(object sender, EventArgs e) + { + if (textBox1.Text == Language.Translate(Language.StringID.SearchBar)) + textBox1.Clear(); + } + + private void PutTextInSearchBar(object sender, EventArgs e) + { + if (textBox1.Text == "") + textBox1.Text = Language.Translate(Language.StringID.SearchBar); + } + + public static void OpenSendMessage(int uid) + { + var uinfo = UserInfo.Select(uid); + //Üzenetküldő form + int ChatNum = -1; + for (int i = 0; i < ChatPanel.ChatWindows.Count; i++) + { + if (ChatPanel.ChatWindows[i].ChatPartners.Count == 1 && ChatPanel.ChatWindows[i].ChatPartners.Contains(uinfo)) + { //Vele, és csak vele beszél + ChatNum = i; + break; + } + } + if (ChatNum == -1) + { //Nincs még chatablaka + ChatPanel.Create(new UserInfo[1] { uinfo }); + + } + else + { + ChatPanel.ChatWindows[ChatNum].Show(); + ChatPanel.ChatWindows[ChatNum].Focus(); + } + } + + private void OnMainFormLoad(object sender, EventArgs e) + { + if (CurrentUser.UserID == 0) + Program.Exit(); + + SendLoginToUsers(); //2015.06.16. - Áthelyezve + + LoadPartnerList(); //Be kell töltenie a MainForm-nak, hogy hivatkozhasson rá + + CurrentUser.SendChanges = true; //2014.08.30. + } + + private void InvitePartner(object sender, EventArgs e) + { + (new InvitePartner()).ShowDialog(); + } + + private void BeforeExit(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void toolStripMenuItem4_Click(object sender, EventArgs e) + { + if (CurrentUser.UserID != 0) //2014.04.18. + { + this.Show(); + this.Focus(); + } + } + + private void ExitProgram(object sender, EventArgs e) + { + Program.Exit(); + } + + private void ismerősFelvételeToolStripMenuItem_Click(object sender, EventArgs e) + { + (new AddPartner()).ShowDialog(); + } + + private void névjegyToolStripMenuItem_Click(object sender, EventArgs e) + { + (new AboutBox1()).ShowDialog(); + } + + private void mindigLegfelülToolStripMenuItem_Click(object sender, EventArgs e) + { + this.TopMost = mindigLegfelülToolStripMenuItem.Checked; + } + + private void beállitásokToolStripMenuItem_Click(object sender, EventArgs e) + { + if (Program.SettingsF == null) + { + Program.SettingsF = new SettingsForm(); + Program.SettingsF.Show(); + } + } + + private void contactList_ItemDoubleClicked(object sender, int e) + { + int uid = UserInfo.GetUserIDFromListID(e); + OpenSendMessage(uid); + } + + private void bezárásToolStripMenuItem_Click(object sender, EventArgs e) + { + this.Hide(); + } + + private void információToolStripMenuItem_Click(object sender, EventArgs e) + { + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].TMPListID != (int)((ToolStripMenuItem)sender).GetCurrentParent().Tag) + continue; + (new PartnerInformation(UserInfo.KnownUsers[i])).ShowDialog(); + break; + } + } + + private void contactList_ItemRightClicked(object sender, int e) + { + contactList.Items[e].Selected = true; + listPartnerMenu.Tag = e; + listPartnerMenu.Show(Cursor.Position); + } + + private void PartnerMenu_SendMessage(object sender, EventArgs e) + { + int uid = UserInfo.GetUserIDFromListID((int)((ToolStripMenuItem)sender).GetCurrentParent().Tag); //Erre kattintott jobb gombbal + OpenSendMessage(uid); + } + + private void panel2_Click(object sender, EventArgs e) + { //2014.10.31. + textBox1.Focus(); + } + + private System.Windows.Forms.Timer searchbartimer = new System.Windows.Forms.Timer(); + private void textBox1_TextChanged(object sender, EventArgs e) + { //2014.11.30. 1:33 + var searchlist = searchListView; //2014.12.14. 1:46 + if (searchbartimer.Enabled) + return; + searchbartimer.Interval = 1000; + searchbartimer.Tick += delegate + { + searchbartimer.Stop(); + if (textBox1.Text.Length == 0 || textBox1.Text == Language.Translate(Language.StringID.SearchBar)) //text==translate...: 2014.12.05. + { + searchlist.Visible = false; + contactList.Visible = true; + return; + } + contactList.Visible = false; + searchlist.Parent = contactList.Parent; //2014.12.05. + searchlist.Bounds = contactList.Bounds; + searchlist.Items.Clear(); //2014.12.05. + searchlist.AutoUpdate = false; + foreach (var item in UserInfo.KnownUsers) + { + if (!item.IsPartner) + continue; + if (item.Name.ToLower().Contains(textBox1.Text.ToLower()) || item.Email.ToLower().Contains(textBox1.Text.ToLower()) || item.UserName.ToLower().Contains(textBox1.Text.ToLower())) //ToLower: 2014.12.14. 1:53 + { + item.CreateListItem(searchlist, searchlist.Items.Count); + } + } + searchlist.AutoUpdate = true; + searchlist.Visible = true; + }; + searchbartimer.Start(); + } + + private void flowLayoutPanel1_Click(object sender, EventArgs e) + { + foreach (var item in ChatPanel.ChatWindows) + { + item.Hide(); + } + } + + private void szkriptíróToolStripMenuItem_Click(object sender, EventArgs e) + { + new ScripterWindow().Show(); + } + + private void beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem_Click(object sender, EventArgs e) + { + string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + Path.DirectorySeparatorChar + Language.Translate(Language.StringID.ReceivedFiles); + if (Directory.Exists(path)) + Process.Start(path); + } + + private void megjelenitendőKépVáltásaToolStripMenuItem_Click(object sender, EventArgs e) + { + new SelectShownImage().ShowDialog(); //2015.06.06. + } + + private void hangulatjelekToolStripMenuItem_Click(object sender, EventArgs e) + { + new Emoticons().ShowDialog(); + } + } +} diff --git a/MSGer.tk/Forms/MainForm.cs b/MSGer.tk/Forms/MainForm.cs new file mode 100644 index 0000000..e5a8eaf --- /dev/null +++ b/MSGer.tk/Forms/MainForm.cs @@ -0,0 +1,462 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Net; +using System.IO; +using GlacialComponents.Controls; +using Khendys.Controls; +using System.Threading; +using System.Reflection; +using SzNPProjects; +using System.Net.Sockets; +using System.Diagnostics; +using System.Net.NetworkInformation; + +namespace MSGer.tk +{ + public partial class MainForm : ThemedForms + { + public static Thread PartnerListUpdateThread; //2015.05.15. + public static Notifier taskbarNotifier; + public MainForm() + { + InitializeComponent(); + toolStripMenuItem4.Enabled = false; //2014.04.12. + toolStripMenuItem8.Enabled = false; //2014.04.12. + contactList.Enabled = false; //2014.03.05. + + BeforeLogin.SetText(Language.Translate(Language.StringID.BeforeLogin_TranslateMainF)); + #region Helyi beállitás + fájlToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File); + Language.ReloadEvent += delegate { fájlToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File); }; + kijelentkezésToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Logout); + Language.ReloadEvent += delegate { kijelentkezésToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Logout); }; + toolStripMenuItem1.Text = Language.Translate(Language.StringID.Menu_File_LoginNewUser); + Language.ReloadEvent += delegate { toolStripMenuItem1.Text = Language.Translate(Language.StringID.Menu_File_LoginNewUser); }; + állapotToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status); + Language.ReloadEvent += delegate { állapotToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status); }; + elérhetőToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Online); + Language.ReloadEvent += delegate { elérhetőToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Online); }; + elfoglaltToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Busy); + Language.ReloadEvent += delegate { elfoglaltToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Busy); }; + nincsAGépnélToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Away); + Language.ReloadEvent += delegate { nincsAGépnélToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Away); }; + rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Hidden); + Language.ReloadEvent += delegate { rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Status_Hidden); }; + fájlKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_SendFile); + Language.ReloadEvent += delegate { fájlKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_SendFile); }; + beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_OpenReceivedFiles); + Language.ReloadEvent += delegate { beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_OpenReceivedFiles); }; + üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_OpenRecentmsgs); + Language.ReloadEvent += delegate { üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_OpenRecentmsgs); }; + bezárásToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Close); + Language.ReloadEvent += delegate { bezárásToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Close); }; + kilépésToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Exit); + Language.ReloadEvent += delegate { kilépésToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_File_Exit); }; + + ismerősökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts); + Language.ReloadEvent += delegate { ismerősökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts); }; + ismerősFelvételeToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Add); + Language.ReloadEvent += delegate { ismerősFelvételeToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Add); }; + ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Edit); + Language.ReloadEvent += delegate { ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Edit); }; + ismerősTörléseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Remove); + Language.ReloadEvent += delegate { ismerősTörléseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_Remove); }; + toolStripMenuItem3.Text = Language.Translate(Language.StringID.Menu_Contacts_Invite); + Language.ReloadEvent += delegate { toolStripMenuItem3.Text = Language.Translate(Language.StringID.Menu_Contacts_Invite); }; + csoportLétrehozásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_MakeGroup); + Language.ReloadEvent += delegate { csoportLétrehozásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_MakeGroup); }; + kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_MakeCategory); + Language.ReloadEvent += delegate { kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_MakeCategory); }; + kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_EditCategory); + Language.ReloadEvent += delegate { kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_EditCategory); }; + kategóriaTörléseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_RemoveCategory); + Language.ReloadEvent += delegate { kategóriaTörléseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Contacts_RemoveCategory); }; + + műveletekToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations); + Language.ReloadEvent += delegate { műveletekToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations); }; + azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Sendmsg) + "..."; + Language.ReloadEvent += delegate { azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Sendmsg) + "..."; }; + egyébKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_SendOther); + Language.ReloadEvent += delegate { egyébKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_SendOther); }; + emailKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_SendMail); + Language.ReloadEvent += delegate { emailKüldéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_SendMail); }; + fájlKüldéseToolStripMenuItem1.Text = Language.Translate(Language.StringID.Menu_File_SendFile); //Ugyanaz a szöveg + Language.ReloadEvent += delegate { fájlKüldéseToolStripMenuItem1.Text = Language.Translate(Language.StringID.Menu_File_SendFile); }; + ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_CallContact); + Language.ReloadEvent += delegate { ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_CallContact); }; + videóhivásInditásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_VideoCall); + Language.ReloadEvent += delegate { videóhivásInditásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_VideoCall); }; + onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_ShowOnlineFiles); + Language.ReloadEvent += delegate { onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_ShowOnlineFiles); }; + közösJátékToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_PlayGame); + Language.ReloadEvent += delegate { közösJátékToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_PlayGame); }; + távsegitségKéréseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_AskForHelp); + Language.ReloadEvent += delegate { távsegitségKéréseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Operations_AskForHelp); }; + + eszközökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools); + Language.ReloadEvent += delegate { eszközökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools); }; + mindigLegfelülToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_AlwaysOnTop); + Language.ReloadEvent += delegate { mindigLegfelülToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_AlwaysOnTop); }; + hangulatjelekToolStripMenuItem.Text = Language.Translate(Language.StringID.Emoticons) + "..."; + Language.ReloadEvent += delegate { hangulatjelekToolStripMenuItem.Text = Language.Translate(Language.StringID.Emoticons) + "..."; }; + megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_ChangeImage); + Language.ReloadEvent += delegate { megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_ChangeImage); }; + háttérMódositásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_ChangeBackground); + Language.ReloadEvent += delegate { háttérMódositásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_ChangeBackground); }; + hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_VoiceVideoSettings); + Language.ReloadEvent += delegate { hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_VoiceVideoSettings); }; + beállitásokToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_Settings); + Language.ReloadEvent += delegate { beállitásokToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Tools_Settings); }; + szkriptíróToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter); + Language.ReloadEvent += delegate { szkriptíróToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter); }; + + súgóToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help); + Language.ReloadEvent += delegate { súgóToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help); }; + témakörökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Contents); + Language.ReloadEvent += delegate { témakörökToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Contents); }; + aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Status); + Language.ReloadEvent += delegate { aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Status); }; + adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_PrivacyPolicy); + Language.ReloadEvent += delegate { adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_PrivacyPolicy); }; + használatiFeltételekToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_TermsOfUse); + Language.ReloadEvent += delegate { használatiFeltételekToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_TermsOfUse); }; + visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Report); + Language.ReloadEvent += delegate { visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_Report); }; + segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_ImproveProgram); + Language.ReloadEvent += delegate { segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_ImproveProgram); }; + névjegyToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_About); + Language.ReloadEvent += delegate { névjegyToolStripMenuItem.Text = Language.Translate(Language.StringID.Menu_Help_About); }; + + textBox1.Text = Language.Translate(Language.StringID.SearchBar, textBox1); + + toolStripMenuItem4.Text = Language.Translate(Language.StringID.IconMenu_Show); + Language.ReloadEvent += delegate { toolStripMenuItem4.Text = Language.Translate(Language.StringID.IconMenu_Show); }; + toolStripMenuItem8.Text = Language.Translate(Language.StringID.Menu_File_Logout); + Language.ReloadEvent += delegate { toolStripMenuItem8.Text = Language.Translate(Language.StringID.Menu_File_Logout); }; + toolStripMenuItem9.Text = Language.Translate(Language.StringID.Menu_File_Exit); + Language.ReloadEvent += delegate { toolStripMenuItem9.Text = Language.Translate(Language.StringID.Menu_File_Exit); }; + + LoadMenu(MenuType.ChatIconMenu); //2014.12.12. + LoadMenu(MenuType.PartnerMenu); //2014.12.13. + #endregion + + //this.WindowState = FormWindowState.Minimized; //2014.04.19. + //A betöltő kód áthelyezve a Load()-ba: 2015.05.23. + + // Create the thread object, passing in the Alpha.Beta method + // via a ThreadStart delegate. This does not start the thread. + PartnerListUpdateThread = new Thread(new ThreadStart(new Networking.UpdateListAndChat().Run)); + PartnerListUpdateThread.Name = "Update Partnerlist and Chat"; + + if (Storage.Settings[SettingType.WindowState] == "1") //2014.04.18. - 2014.08.08. + this.WindowState = FormWindowState.Maximized; + else if (Storage.Settings[SettingType.WindowState] == "2") + this.WindowState = FormWindowState.Minimized; + else if (Storage.Settings[SettingType.WindowState] == "3") + this.WindowState = FormWindowState.Normal; + + //taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000); + //TODO: Notifier + + //taskbarNotifier.Click += PopupClick; + //taskbarNotifier.CloseClick += PopupCloseClick; + + toolStripMenuItem4.Enabled = true; //2014.04.12. + toolStripMenuItem8.Enabled = true; //2014.04.12. + + ChangeChatWindowLayout(false); + + notifyIcon1.Visible = true; //2014.09.22. + //taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor"); + + Language.ReloadEvent += delegate { textBox1.Text = Language.Translate(Language.StringID.SearchBar); }; //2014.12.22. - Nyelvváltáskor törölni fogja a beírt szöveget + } + + public void ChangeChatWindowLayout(bool changed) + { //2015.06.14. + if (Storage.Settings[SettingType.ChatWindow] == "1") + { //2015.06.14. + flowLayoutPanel1.Hide(); + flowLayoutPanel2.Hide(); + MainPanel.Anchor = AnchorStyles.None; + MainPanel.Location = new Point(0, MainPanel.Location.Y); + MainPanel.Width = this.Width; + MainPanel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top; + this.Width -= flowLayoutPanel1.Width + flowLayoutPanel2.Width; + this.SetDesktopLocation(this.DesktopLocation.X + flowLayoutPanel1.Width, this.DesktopLocation.Y); + } + else + { + if (changed) + { + this.SetDesktopLocation(this.DesktopLocation.X - flowLayoutPanel1.Width, this.DesktopLocation.Y); + this.Width += flowLayoutPanel1.Width + flowLayoutPanel2.Width; + MainPanel.Anchor = AnchorStyles.None; + MainPanel.Location = new Point(flowLayoutPanel1.Width + 1, MainPanel.Location.Y); + MainPanel.Width = this.Width - flowLayoutPanel1.Width - flowLayoutPanel2.Width; + MainPanel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top; + flowLayoutPanel1.Show(); + flowLayoutPanel2.Show(); + } + } + } + + private void SendLoginToUsers() + { //2014.12.18. + new Networking.PacketSender(new Networking.PDLoginUser(UserInfo.KnownUsers.Select(entry => new KeyValuePair(entry.UserID, entry.LastUpdate)))) + .SendAsync().ContinueWith(new Action>( + (t) => Networking.ParseUpdateInfo(t.Result.Select(entry => ((Networking.PDLoginUser)entry.EData).RStrings)))); + } + + enum MenuType + { + ChatIconMenu, + PartnerMenu + } + private void LoadMenu(MenuType mt) + { + switch (mt) //2014.12.13. + { + case MenuType.ChatIconMenu: + chatIconMenu.Items.Add(Language.Translate(Language.StringID.Close), null, + new EventHandler((sender, e) => ((ChatPanel)chatIconMenu.Tag).Close())); //Tag: A chatikon + chatIconMenu.Items[chatIconMenu.Items.Count - 1].Name = "close"; //2014.12.22. + Language.ReloadEvent += delegate { chatIconMenu.Items["close"].Text = Language.Translate(Language.StringID.Close); }; //2014.12.22. + chatIconMenu.Items.Add(new ToolStripSeparator()); + LoadMenuPrep(chatIconMenu); + break; + case MenuType.PartnerMenu: + listPartnerMenu.Items.Add(Language.Translate(Language.StringID.Sendmsg) + "...", null, PartnerMenu_SendMessage); + listPartnerMenu.Items[listPartnerMenu.Items.Count - 1].Name = "menu_operations_sendmsg"; //2014.12.22. + Language.ReloadEvent += delegate { listPartnerMenu.Items["menu_operations_sendmsg"].Text = Language.Translate(Language.StringID.Sendmsg) + ".."; }; //2014.12.22. + listPartnerMenu.Items.Add(new ToolStripSeparator()); + LoadMenuPrep(listPartnerMenu); + break; + default: + throw new NotImplementedException("Menu type not implemented."); + } + } + private void LoadMenuPrep(ContextMenuStrip menu) //Csak a menüelemeket készíti elő + { //2014.12.13. + menu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { //A dizájnerből, átalakítva, hogy rögtön le is fordítsa + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_SendEmail)), //Ide jönnek majd az event handlerek is + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_CopyEmail)), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_Info)), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_Block)), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_Remove)), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_EditName)), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_EventNotifications)), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate(Language.StringID.Contact_OpenChatLog))}); + Language.ReloadEvent += delegate + { + int i = menu.Items.Count - 1; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_OpenChatLog); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_EventNotifications); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_EditName); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_Remove); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_Block); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_Info); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_CopyEmail); + i--; + menu.Items[i].Text = Language.Translate(Language.StringID.Contact_SendEmail); + }; + } + + public void LoadPartnerList() //2014.08.28. + { + contactList.AutoUpdate = false; + UserInfo.AutoUpdate = false; //2014.09.26. + string[] list = Networking.SendRequest(Networking.RequestType.GetList, "", 0, true).Split(new char[] { 'ͦ' }, StringSplitOptions.RemoveEmptyEntries); //2014.09.26. + if (list[0].Contains("Fail")) + MessageBox.Show(list[0]); + + if (!UserInfo.KnownUsers.Any(entry => entry.UserID == CurrentUser.UserID)) + { + var tmpc = new UserInfo(); //2015.05.15. + tmpc.UserID = CurrentUser.UserID; //2015.05.15. + tmpc.UserName = CurrentUser.UserName; //2015.05.15. + tmpc.LastUpdate = 0; //2015.05.15. + tmpc.Name = CurrentUser.Name; //2015.05.15. + tmpc.IsPartner = false; //2015.05.15. + tmpc.Image = CurrentUser.Image; //2015.06.06. + UserInfo.KnownUsers.Add(tmpc); //2015.05.15. + } + + UserInfo.KnownUsers = UserInfo.KnownUsers.Select(entry => { entry.IsPartner = false; return entry; }).ToList(); //2014.09.26. + for (int i = 0; i + 1 < list.Length; i += 2) + { + string username = list[i]; + int uid = Int32.Parse(list[i + 1]); + if (!UserInfo.IDIsInList(UserInfo.KnownUsers, uid)) + { //Ha nem tud róla semmit, akkor töltse le a felhasználónevét, és jelenítse meg azt + var tmp = new UserInfo(); + tmp.UserID = uid; + tmp.UserName = username; + tmp.LastUpdate = 0; //Lényegében nem tud róla túl sokat, ezért ha lehet, frissítse + tmp.Name = username; + tmp.IsPartner = true; + UserInfo.KnownUsers.Add(tmp); + } + else + { + UserInfo.Select(uid).IsPartner = true; //2014.09.26. + UserInfo.Select(uid).UserName = username; //2014.09.26. - Nem megváltoztatható, ha egy felhasználó megpróbálja, nem foglalkozik vele + UserInfo.Select(uid).State = 0; //2015.06.25. + } + } + CurrentUser.State = 1; //2014.08.31. 0:48 + + UserInfo.AutoUpdate = true; + foreach (var entry in UserInfo.KnownUsers) + { + entry.Update(); //Áthelyeztem, mert az értékek frissítésekor is szükség van rá + } + contactList.AutoUpdate = true; + contactList.Enabled = true; + contactList.Refresh(); + } + + private void LogoutUser(object sender, EventArgs e) + { + this.Hide(); + toolStripMenuItem4.Enabled = false; //2014.04.12. + toolStripMenuItem8.Enabled = false; //2014.04.12. + Storage.Save(true); //2014.08.28. + SetOnlineState(null, null); //2014.04.11. - Erre nincs beállitva, ezért automatikusan 0-ra, azaz kijelentkeztetettre állítja az állapotát + contactList.Items.Clear(); //2014.09.19. + UserInfo.KnownUsers.Clear(); //2014.09.19. + Storage.Dispose(); + PartnerListUpdateThread.Abort();//2015.06.16. + PartnerListUpdateThread = null; + CurrentUser.SendChanges = false; //2014.08.30. + while (ChatPanel.ChatWindows.Count > 0) + { //2014.09.06. - A Close() hatására törli a gyűjteményből, ezért sorra végig fog haladni rajta + ChatPanel.ChatWindows[0].Close(); + } + //LoginDialog = new LoginForm(); //2014.04.04. + var LoginDialog = new LoginForm(); //2015.05.23. + LoginDialog.ShowDialog(); + //Nézzük, sikerült-e + if (CurrentUser.UserID == 0) + Close(); + Storage.Load(true); //2014.08.07. + toolStripMenuItem4.Enabled = true; //2014.04.12. + toolStripMenuItem8.Enabled = true; //2014.04.12. + CurrentUser.SendChanges = true; //2014.08.30. + contactList.Items.Clear(); //2014.10.09. - Kijelentkezéskor hozzáad egy üres listelemet egy (Nem elérhető) felirattal, ezt tünteti el + // Create the thread object, passing in the Alpha.Beta method + // via a ThreadStart delegate. This does not start the thread. + PartnerListUpdateThread = new Thread(new ThreadStart(new Networking.UpdateListAndChat().Run)); + //PartnerListUpdateThread.Name = "Update Partner List"; + PartnerListUpdateThread.Name = "Update Partnerlist and Chat"; //2015.06.30. + + // Start the thread + PartnerListUpdateThread.Start(); + + SendLoginToUsers(); //2014.12.18. + + LoadPartnerList(); + this.Show(); + } + + public void PlaceChatIcon(ChatPanel cp) + { + var newicon = new PictureBox(); + if (cp.ChatPartners[0].Image == null) + newicon.Image = UserInfo.NoImage; //2015.05.30. + else + newicon.Image = cp.ChatPartners[0].Image; //2015.05.30. + newicon.Size = new Size(100, 100); + newicon.SizeMode = PictureBoxSizeMode.Zoom; + newicon.Click += new EventHandler((a, b) => cp.Show()); + newicon.MouseClick += new MouseEventHandler((s, e) => + { + if (e.Button == MouseButtons.Middle) + cp.Close(); + else if (e.Button == MouseButtons.Right) //Chat menü + { //2014.12.13. + chatIconMenu.Tag = cp; + chatIconMenu.Show(Cursor.Position); + } + }); + cp.ChatIcon = newicon; + //--------------------------------------------------------------------- + int size = 0; + bool putright = false; + foreach (Control item in flowLayoutPanel1.Controls) + { + size += item.Size.Height; + } + size += newicon.Size.Height; + if (size > flowLayoutPanel1.Size.Height) + putright = true; //Ha nem fér el bal oldalt, rakja jobbra + //--------------------------------------------------------------------- + size = 0; + foreach (Control item in flowLayoutPanel2.Controls) + { + size += item.Size.Height; + } + size += newicon.Size.Height; + if (size > flowLayoutPanel2.Size.Height) + putright = false; //Ha jobbra sem fér el, csak rakja balra + //--------------------------------------------------------------------- + if (!putright) + flowLayoutPanel1.Controls.Add(newicon); + else + flowLayoutPanel2.Controls.Add(newicon); + } + + public enum StatType + { + MainServer, + Servers, + OnlineServers + } + public void UpdateStats(StatType type, int value) + { //Elvileg ha van forgalom, gyorsan frissíti a nyelvet is + switch (type) + { + case StatType.MainServer: + if (value == 0) + { + mainserver.Text = Language.Translate(Language.StringID.Stats_MainServer) + ": " + Language.Translate(Language.StringID.Stats_NoNetwork); + mainserver.ForeColor = Color.Red; + } + else if (value == 1) + { + mainserver.Text = Language.Translate(Language.StringID.Stats_MainServer) + ": " + Language.Translate(Language.StringID.Stats_Retrying); + mainserver.ForeColor = Color.Orange; + } + else if (value == 2) + { + mainserver.Text = Language.Translate(Language.StringID.Stats_MainServer) + ": " + Language.Translate(Language.StringID.Stats_Connected); + mainserver.ForeColor = Color.Green; + } + break; + case StatType.Servers: + servers.Text = Language.Translate(Language.StringID.Stats_Servers) + ": " + value; + break; + case StatType.OnlineServers: + onlineservers.Text = Language.Translate(Language.StringID.Stats_OnlineServers) + ": " + value; + break; + } + } + } +} diff --git a/MSGer.tk/Forms/MainForm.resx b/MSGer.tk/Forms/MainForm.resx new file mode 100644 index 0000000..03d879b --- /dev/null +++ b/MSGer.tk/Forms/MainForm.resx @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 530, 17 + + + + WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command + + + 130, 17 + + + 245, 17 + + + 791, 17 + + + 636, 17 + + + 907, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/Notifier.Designer.cs b/MSGer.tk/Forms/Notifier.Designer.cs new file mode 100644 index 0000000..cff2ac5 --- /dev/null +++ b/MSGer.tk/Forms/Notifier.Designer.cs @@ -0,0 +1,99 @@ +namespace MSGer.tk +{ + partial class Notifier + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.CloseButton = new System.Windows.Forms.PictureBox(); + this.Title = new System.Windows.Forms.Label(); + this.Content = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).BeginInit(); + this.SuspendLayout(); + // + // CloseButton + // + this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CloseButton.Location = new System.Drawing.Point(241, 12); + this.CloseButton.Name = "CloseButton"; + this.CloseButton.Size = new System.Drawing.Size(31, 28); + this.CloseButton.TabIndex = 0; + this.CloseButton.TabStop = false; + this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); + // + // Title + // + this.Title.AutoSize = true; + this.Title.BackColor = System.Drawing.Color.Transparent; + this.Title.Location = new System.Drawing.Point(35, 26); + this.Title.Name = "Title"; + this.Title.Size = new System.Drawing.Size(33, 13); + this.Title.TabIndex = 1; + this.Title.Text = "Teszt"; + // + // Content + // + this.Content.AutoSize = true; + this.Content.BackColor = System.Drawing.Color.Transparent; + this.Content.Location = new System.Drawing.Point(12, 58); + this.Content.Name = "Content"; + this.Content.Size = new System.Drawing.Size(33, 26); + this.Content.TabIndex = 2; + this.Content.Text = "Teszt\r\nAsd"; + // + // Notifier + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(284, 262); + this.ControlBox = false; + this.Controls.Add(this.Content); + this.Controls.Add(this.Title); + this.Controls.Add(this.CloseButton); + this.Cursor = System.Windows.Forms.Cursors.Hand; + this.ForeColor = System.Drawing.Color.Black; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Notifier"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.TopMost = true; + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox CloseButton; + private System.Windows.Forms.Label Title; + private System.Windows.Forms.Label Content; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/Notifier.cs b/MSGer.tk/Forms/Notifier.cs new file mode 100644 index 0000000..467ded7 --- /dev/null +++ b/MSGer.tk/Forms/Notifier.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class Notifier : Form + { //2014.04.15. + private Rectangle WorkAreaRectangle; + private Timer NotifierTimer; + + public event EventHandler CloseClick; //2014.08.29. + public Notifier(string background, Color TransparentColor, string closebutton, int waittime) //waittime: 2014.04.17. + { + if (!File.Exists(background)) + throw new FileNotFoundException("A megadott háttér nem található."); + if (!File.Exists(closebutton)) + throw new FileNotFoundException("A megadott bezáró ikon nem található."); + InitializeComponent(); + this.BackgroundImage = Program.LoadImageFromFile(background); //2015.06.06. + this.TransparencyKey = TransparentColor; + CloseButton.Image = Program.LoadImageFromFile(background); //2015.06.06. + var size = CloseButton.Image.Size; //2015.06.06. + CloseButton.Left = CloseButton.Right - size.Width; //2014.08.29. + CloseButton.Width = size.Width; //2014.08.29. + CloseButton.Height = size.Height; //2014.08.29. + NotifierTimer = new Timer(); + NotifierTimer.Interval = waittime; + NotifierTimer.Tick += NotifierTimer_Tick; + } + + void NotifierTimer_Tick(object sender, EventArgs e) + { + NotifierTimer.Stop(); + this.Hide(); + } + + public Notifier(Image background, Color TransparentColor, Image closebutton, int waittime) //waittime: 2014.08.28. + { + InitializeComponent(); + this.BackgroundImage = background; + this.TransparencyKey = TransparentColor; + CloseButton.Image = closebutton; + } + public void Show(string title, string content) //(kép) - 2014.04.15. + { + WorkAreaRectangle = Screen.GetWorkingArea(WorkAreaRectangle); //2014.04.17. + Title.Text = title; + Content.Text = content; + this.WindowState = FormWindowState.Normal; + SetBounds(WorkAreaRectangle.Right - BackgroundImage.Width - 17, WorkAreaRectangle.Bottom - 100, BackgroundImage.Width, 100); + this.Show(); + NotifierTimer.Start(); + } + + private void CloseButton_Click(object sender, EventArgs e) + { //2014.08.29. + CloseClick(sender, e); + } + } +} diff --git a/MSGer.tk/Forms/Notifier.resx b/MSGer.tk/Forms/Notifier.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/Notifier.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/PartnerInformation.Designer.cs b/MSGer.tk/Forms/PartnerInformation.Designer.cs new file mode 100644 index 0000000..bca1828 --- /dev/null +++ b/MSGer.tk/Forms/PartnerInformation.Designer.cs @@ -0,0 +1,182 @@ +namespace MSGer.tk +{ + partial class PartnerInformation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.nameTextBox = new Khendys.Controls.ExRichTextBox(); + this.messageTextBox = new Khendys.Controls.ExRichTextBox(); + this.statusLabel = new System.Windows.Forms.Label(); + this.userName1 = new System.Windows.Forms.Label(); + this.userName2 = new System.Windows.Forms.Label(); + this.userID1 = new System.Windows.Forms.Label(); + this.userID2 = new System.Windows.Forms.Label(); + this.email2 = new System.Windows.Forms.Label(); + this.email1 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.Location = new System.Drawing.Point(12, 12); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(100, 100); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // nameTextBox + // + this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nameTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.nameTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.nameTextBox.HiglightColor = Khendys.Controls.RtfColor.White; + this.nameTextBox.Location = new System.Drawing.Point(119, 12); + this.nameTextBox.Multiline = false; + this.nameTextBox.Name = "nameTextBox"; + this.nameTextBox.ReadOnly = true; + this.nameTextBox.Size = new System.Drawing.Size(445, 30); + this.nameTextBox.TabIndex = 1; + this.nameTextBox.Text = "ShownName"; + this.nameTextBox.TextColor = Khendys.Controls.RtfColor.Black; + // + // messageTextBox + // + this.messageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messageTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.messageTextBox.HiglightColor = Khendys.Controls.RtfColor.White; + this.messageTextBox.Location = new System.Drawing.Point(119, 57); + this.messageTextBox.Name = "messageTextBox"; + this.messageTextBox.ReadOnly = true; + this.messageTextBox.Size = new System.Drawing.Size(445, 55); + this.messageTextBox.TabIndex = 2; + this.messageTextBox.Text = "User Message\nLine"; + this.messageTextBox.TextColor = Khendys.Controls.RtfColor.Black; + // + // statusLabel + // + this.statusLabel.AutoSize = true; + this.statusLabel.Location = new System.Drawing.Point(119, 38); + this.statusLabel.Name = "statusLabel"; + this.statusLabel.Size = new System.Drawing.Size(63, 13); + this.statusLabel.TabIndex = 3; + this.statusLabel.Text = "StatusLabel"; + // + // userName1 + // + this.userName1.AutoSize = true; + this.userName1.Location = new System.Drawing.Point(12, 120); + this.userName1.Name = "userName1"; + this.userName1.Size = new System.Drawing.Size(63, 13); + this.userName1.TabIndex = 4; + this.userName1.Text = "UserName1"; + // + // userName2 + // + this.userName2.AutoSize = true; + this.userName2.Location = new System.Drawing.Point(119, 120); + this.userName2.Name = "userName2"; + this.userName2.Size = new System.Drawing.Size(63, 13); + this.userName2.TabIndex = 5; + this.userName2.Text = "UserName2"; + // + // userID1 + // + this.userID1.AutoSize = true; + this.userID1.Location = new System.Drawing.Point(12, 135); + this.userID1.Name = "userID1"; + this.userID1.Size = new System.Drawing.Size(46, 13); + this.userID1.TabIndex = 6; + this.userID1.Text = "UserID1"; + // + // userID2 + // + this.userID2.AutoSize = true; + this.userID2.Location = new System.Drawing.Point(119, 135); + this.userID2.Name = "userID2"; + this.userID2.Size = new System.Drawing.Size(46, 13); + this.userID2.TabIndex = 7; + this.userID2.Text = "UserID2"; + // + // email2 + // + this.email2.AutoSize = true; + this.email2.Location = new System.Drawing.Point(119, 150); + this.email2.Name = "email2"; + this.email2.Size = new System.Drawing.Size(38, 13); + this.email2.TabIndex = 9; + this.email2.Text = "Email2"; + // + // email1 + // + this.email1.AutoSize = true; + this.email1.Location = new System.Drawing.Point(12, 150); + this.email1.Name = "email1"; + this.email1.Size = new System.Drawing.Size(38, 13); + this.email1.TabIndex = 8; + this.email1.Text = "Email1"; + // + // PartnerInformation + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(576, 273); + this.Controls.Add(this.email2); + this.Controls.Add(this.email1); + this.Controls.Add(this.userID2); + this.Controls.Add(this.userID1); + this.Controls.Add(this.userName2); + this.Controls.Add(this.userName1); + this.Controls.Add(this.statusLabel); + this.Controls.Add(this.messageTextBox); + this.Controls.Add(this.nameTextBox); + this.Controls.Add(this.pictureBox1); + this.Name = "PartnerInformation"; + this.Text = "PartnerInformation"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + private Khendys.Controls.ExRichTextBox nameTextBox; + private Khendys.Controls.ExRichTextBox messageTextBox; + private System.Windows.Forms.Label statusLabel; + private System.Windows.Forms.Label userName1; + private System.Windows.Forms.Label userName2; + private System.Windows.Forms.Label userID1; + private System.Windows.Forms.Label userID2; + private System.Windows.Forms.Label email2; + private System.Windows.Forms.Label email1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/PartnerInformation.cs b/MSGer.tk/Forms/PartnerInformation.cs new file mode 100644 index 0000000..36cd02b --- /dev/null +++ b/MSGer.tk/Forms/PartnerInformation.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class PartnerInformation : ThemedForms + { + public PartnerInformation(UserInfo uinfo) + { + InitializeComponent(); + + nameTextBox.BackColor = this.BackColor; + messageTextBox.BackColor = this.BackColor; + pictureBox1.Image = uinfo.Image; //2015.05.30. + nameTextBox.Text = uinfo.Name; + if (uinfo.State == 1) + statusLabel.Text = Language.Translate(Language.StringID.Menu_File_Status_Online); + else if (uinfo.State == 2) + statusLabel.Text = Language.Translate(Language.StringID.Menu_File_Status_Busy); + else if (uinfo.State == 3) + statusLabel.Text = Language.Translate(Language.StringID.Menu_File_Status_Away); + else + statusLabel.Text = ""; + messageTextBox.Text = uinfo.Message; + userName1.Text = Language.Translate(Language.StringID.UserName) + ":"; + userName2.Text = uinfo.UserName; + userID1.Text = Language.Translate(Language.StringID.UserID); + userID2.Text = uinfo.UserID.ToString(); + email1.Text = "E-mail:"; + email2.Text = uinfo.Email; + } + } +} diff --git a/MSGer.tk/Forms/PartnerInformation.resx b/MSGer.tk/Forms/PartnerInformation.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/PartnerInformation.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/ScripterWindow.Designer.cs b/MSGer.tk/Forms/ScripterWindow.Designer.cs new file mode 100644 index 0000000..3a72bf9 --- /dev/null +++ b/MSGer.tk/Forms/ScripterWindow.Designer.cs @@ -0,0 +1,169 @@ +namespace MSGer.tk +{ + partial class ScripterWindow + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.codeTextBox = new System.Windows.Forms.RichTextBox(); + this.compilerResultTextBox = new System.Windows.Forms.RichTextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // codeTextBox + // + this.codeTextBox.AcceptsTab = true; + this.codeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.codeTextBox.BackColor = System.Drawing.Color.White; + this.codeTextBox.Location = new System.Drawing.Point(12, 36); + this.codeTextBox.Name = "codeTextBox"; + this.codeTextBox.Size = new System.Drawing.Size(502, 229); + this.codeTextBox.TabIndex = 0; + this.codeTextBox.Text = ""; + this.codeTextBox.TextChanged += new System.EventHandler(this.codeTextBox_TextChanged); + // + // compilerResultTextBox + // + this.compilerResultTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.compilerResultTextBox.BackColor = System.Drawing.Color.White; + this.compilerResultTextBox.Location = new System.Drawing.Point(12, 296); + this.compilerResultTextBox.Name = "compilerResultTextBox"; + this.compilerResultTextBox.ReadOnly = true; + this.compilerResultTextBox.Size = new System.Drawing.Size(502, 93); + this.compilerResultTextBox.TabIndex = 1; + this.compilerResultTextBox.Text = ""; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(526, 24); + this.menuStrip1.TabIndex = 2; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newToolStripMenuItem, + this.openToolStripMenuItem, + this.saveToolStripMenuItem, + this.toolStripSeparator1, + this.exitToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // newToolStripMenuItem + // + this.newToolStripMenuItem.Name = "newToolStripMenuItem"; + this.newToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.newToolStripMenuItem.Text = "New"; + this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); + // + // openToolStripMenuItem + // + this.openToolStripMenuItem.Name = "openToolStripMenuItem"; + this.openToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.openToolStripMenuItem.Text = "Open"; + this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(100, 6); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.exitToolStripMenuItem.Text = "Exit"; + // + // saveFileDialog1 + // + this.saveFileDialog1.RestoreDirectory = true; + // + // openFileDialog1 + // + this.openFileDialog1.Filter = "C# files|*.cs|All files|*.*"; + this.openFileDialog1.RestoreDirectory = true; + // + // ScripterWindow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(526, 401); + this.Controls.Add(this.compilerResultTextBox); + this.Controls.Add(this.codeTextBox); + this.Controls.Add(this.menuStrip1); + this.MainMenuStrip = this.menuStrip1; + this.Name = "ScripterWindow"; + this.Text = "ScripterWindow"; + this.Controls.SetChildIndex(this.menuStrip1, 0); + this.Controls.SetChildIndex(this.codeTextBox, 0); + this.Controls.SetChildIndex(this.compilerResultTextBox, 0); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.RichTextBox codeTextBox; + private System.Windows.Forms.RichTextBox compilerResultTextBox; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/ScripterWindow.cs b/MSGer.tk/Forms/ScripterWindow.cs new file mode 100644 index 0000000..48a4d29 --- /dev/null +++ b/MSGer.tk/Forms/ScripterWindow.cs @@ -0,0 +1,108 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class ScripterWindow : ThemedForms + { + public ScripterWindow() + { + InitializeComponent(); + newToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_New); + Language.ReloadEvent += delegate { newToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_New); }; + openToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Open); + Language.ReloadEvent += delegate { openToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Open); }; + saveToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Save); + Language.ReloadEvent += delegate { saveToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Save); }; + exitToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Exit); + Language.ReloadEvent += delegate { exitToolStripMenuItem.Text = Language.Translate(Language.StringID.Scripter_Exit); }; + + timer.Tick += timer_Tick; //2015.04.10. + } + public string Path; + public void LoadScript(string path) + { + if (!File.Exists(path)) + { //2015.04.06. + MessageBox.Show(Language.Translate(Language.StringID.ScriptNotFound), Language.Translate(Language.StringID.Error)); + return; + } + Path = path; + } + public void UpdateMessages() + { //2015.04.06. + if (Path == null) + return; + File.WriteAllText(Path, codeTextBox.Text); //2015.04.10. + ScriptLoader script = new ScriptLoader(Path); + var messages = script.JustCompile(); + if (messages == null) + { + MessageBox.Show(Language.Translate(Language.StringID.ScriptUnloadRequired), Language.Translate(Language.StringID.Error)); + return; + } + compilerResultTextBox.SuspendLayout(); //2015.04.10. + compilerResultTextBox.Clear(); //2015.04.10. + foreach (CompilerError message in messages) + { + Color color; //2015.04.10. + if (message.IsWarning) + color = Color.DarkOrange; //2015.04.10. + else + color = Color.Red; + compilerResultTextBox.AppendText("(Col:" + message.Column + ",Line:" + message.Line + ") " + message.ErrorNumber + ": " + message.ErrorText + "\n", color); //2015.04.10. + } + compilerResultTextBox.ResumeLayout(true); //2015.04.10. + } + + private void newToolStripMenuItem_Click(object sender, EventArgs e) + { //2015.04.06. + if (saveFileDialog1.ShowDialog() == DialogResult.OK) + { + saveFileDialog1.OpenFile().Dispose(); + Path = saveFileDialog1.FileName; + } + } + + private void openToolStripMenuItem_Click(object sender, EventArgs e) + { //2015.04.06. + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + if (!File.Exists(openFileDialog1.FileName)) + return; + Path = openFileDialog1.FileName; + codeTextBox.Text = File.ReadAllText(Path); + } + } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { //2015.04.06. + File.WriteAllText(Path, codeTextBox.Text); + } + + private Timer timer = new Timer { Enabled = false, Interval = 1000 }; //2015.04.10. + private void codeTextBox_TextChanged(object sender, EventArgs e) + { //2015.04.06. + if (!timer.Enabled) + { + UpdateMessages(); + timer.Start(); + } + } + + void timer_Tick(object sender, EventArgs e) + { + timer.Stop(); + UpdateMessages(); + } + } +} diff --git a/MSGer.tk/Forms/ScripterWindow.resx b/MSGer.tk/Forms/ScripterWindow.resx new file mode 100644 index 0000000..d09025b --- /dev/null +++ b/MSGer.tk/Forms/ScripterWindow.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 132, 17 + + + 268, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SelectPartnerForm.Designer.cs b/MSGer.tk/Forms/SelectPartnerForm.Designer.cs new file mode 100644 index 0000000..578fd72 --- /dev/null +++ b/MSGer.tk/Forms/SelectPartnerForm.Designer.cs @@ -0,0 +1,180 @@ +namespace MSGer.tk +{ + partial class SelectPartnerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn(); + GlacialComponents.Controls.GLItem glItem1 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem1 = new GlacialComponents.Controls.GLSubItem(); + this.partnerList = new GlacialComponents.Controls.GlacialList(); + this.selectedPartners = new System.Windows.Forms.TextBox(); + this.okbtn = new System.Windows.Forms.Button(); + this.cancelbtn = new System.Windows.Forms.Button(); + this.titleText = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // partnerList + // + this.partnerList.AllowColumnResize = false; + this.partnerList.AllowMultiselect = true; + this.partnerList.AlternateBackground = System.Drawing.Color.DarkGreen; + this.partnerList.AlternatingColors = false; + this.partnerList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.partnerList.AutoHeight = true; + this.partnerList.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.partnerList.BackgroundStretchToFit = true; + glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None; + glColumn1.CheckBoxes = true; + glColumn1.ImageIndex = -1; + glColumn1.Name = "PartnerName"; + glColumn1.NumericSort = false; + glColumn1.Text = ""; + glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + glColumn1.Width = 100; + this.partnerList.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] { + glColumn1}); + this.partnerList.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal; + this.partnerList.ForeColor = System.Drawing.Color.Black; + this.partnerList.FullRowSelect = true; + this.partnerList.GridColor = System.Drawing.Color.LightGray; + this.partnerList.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth; + this.partnerList.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridNone; + this.partnerList.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists; + this.partnerList.HeaderHeight = 0; + this.partnerList.HeaderVisible = false; + this.partnerList.HeaderWordWrap = false; + this.partnerList.HotColumnTracking = false; + this.partnerList.HotItemTracking = true; + this.partnerList.HotTrackingColor = System.Drawing.Color.LightGray; + this.partnerList.HoverEvents = false; + this.partnerList.HoverTime = 1; + this.partnerList.ImageList = null; + this.partnerList.ItemHeight = 17; + glItem1.BackColor = System.Drawing.Color.White; + glItem1.ForeColor = System.Drawing.Color.Black; + glItem1.RowBorderColor = System.Drawing.Color.Black; + glItem1.RowBorderSize = 0; + glSubItem1.BackColor = System.Drawing.Color.Empty; + glSubItem1.Checked = false; + glSubItem1.ForceText = false; + glSubItem1.ForeColor = System.Drawing.Color.Black; + glSubItem1.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left; + glSubItem1.ImageIndex = -1; + glSubItem1.Text = "Test"; + glItem1.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem1}); + glItem1.Text = "Test"; + this.partnerList.Items.AddRange(new GlacialComponents.Controls.GLItem[] { + glItem1}); + this.partnerList.ItemWordWrap = false; + this.partnerList.Location = new System.Drawing.Point(13, 26); + this.partnerList.Name = "partnerList"; + this.partnerList.Selectable = true; + this.partnerList.SelectedTextColor = System.Drawing.Color.White; + this.partnerList.SelectionColor = System.Drawing.Color.DarkBlue; + this.partnerList.ShowBorder = true; + this.partnerList.ShowFocusRect = true; + this.partnerList.Size = new System.Drawing.Size(359, 286); + this.partnerList.SortType = GlacialComponents.Controls.SortTypes.InsertionSort; + this.partnerList.SuperFlatHeaderColor = System.Drawing.Color.White; + this.partnerList.TabIndex = 0; + this.partnerList.Click += new System.EventHandler(this.ItemClicked); + this.partnerList.DoubleClick += new System.EventHandler(this.ItemDoubleClick); + // + // selectedPartners + // + this.selectedPartners.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.selectedPartners.Location = new System.Drawing.Point(13, 319); + this.selectedPartners.Multiline = true; + this.selectedPartners.Name = "selectedPartners"; + this.selectedPartners.Size = new System.Drawing.Size(359, 103); + this.selectedPartners.TabIndex = 1; + // + // okbtn + // + this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okbtn.DialogResult = System.Windows.Forms.DialogResult.OK; + this.okbtn.Location = new System.Drawing.Point(215, 428); + this.okbtn.Name = "okbtn"; + this.okbtn.Size = new System.Drawing.Size(75, 23); + this.okbtn.TabIndex = 2; + this.okbtn.Text = "OK"; + this.okbtn.UseVisualStyleBackColor = true; + this.okbtn.Click += new System.EventHandler(this.okbtn_Click); + // + // cancelbtn + // + this.cancelbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelbtn.Location = new System.Drawing.Point(297, 429); + this.cancelbtn.Name = "cancelbtn"; + this.cancelbtn.Size = new System.Drawing.Size(75, 23); + this.cancelbtn.TabIndex = 3; + this.cancelbtn.Text = "Mégse"; + this.cancelbtn.UseVisualStyleBackColor = true; + // + // titleText + // + this.titleText.AutoSize = true; + this.titleText.Location = new System.Drawing.Point(13, 7); + this.titleText.Name = "titleText"; + this.titleText.Size = new System.Drawing.Size(53, 13); + this.titleText.TabIndex = 4; + this.titleText.Text = "Unknown"; + // + // SelectPartnerForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.LightSkyBlue; + this.ClientSize = new System.Drawing.Size(384, 462); + this.Controls.Add(this.titleText); + this.Controls.Add(this.cancelbtn); + this.Controls.Add(this.okbtn); + this.Controls.Add(this.selectedPartners); + this.Controls.Add(this.partnerList); + this.Name = "SelectPartnerForm"; + this.Text = "Partnerválasztás"; + this.ResizeEnd += new System.EventHandler(this.FormResizeFinish); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private GlacialComponents.Controls.GlacialList partnerList; + private System.Windows.Forms.TextBox selectedPartners; + private System.Windows.Forms.Button okbtn; + private System.Windows.Forms.Button cancelbtn; + private System.Windows.Forms.Label titleText; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/SelectPartnerForm.cs b/MSGer.tk/Forms/SelectPartnerForm.cs new file mode 100644 index 0000000..27094ae --- /dev/null +++ b/MSGer.tk/Forms/SelectPartnerForm.cs @@ -0,0 +1,93 @@ +using GlacialComponents.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SelectPartnerForm : ThemedForms + { + public SelectPartnerForm(ToolStripMenuItem SelectPartnerSender) //paraméter: 2014.09.06. + { + InitializeComponent(); + this.Text = SelectPartnerSender.Text; //2014.02.28. + titleText.Text = SelectPartnerSender.Text; + + cancelbtn.Text = Language.Translate(Language.StringID.Button_Cancel); + + partnerList.Items.Clear(); + for (int x = 0; x < UserInfo.KnownUsers.Count; x++) //Partners + { + if (!UserInfo.KnownUsers[x].IsPartner) + continue; + try + { + partnerList.Items.Add(UserInfo.KnownUsers[x].UserName); + } + catch (NullReferenceException) + { + break; + } + catch (Exception e) + { + MessageBox.Show(e.Message); + break; + } + } + partnerList.Columns[0].Width = partnerList.ClientSize.Width - 5; + } + + private void FormResizeFinish(object sender, EventArgs e) + { + partnerList.Columns[0].Width = partnerList.ClientSize.Width - 5; + } + + private void ItemClicked(object sender, EventArgs e) + { + for (int i = 0; i < partnerList.Items.Count; i++) + { + if (partnerList.Items[i].SubItems[0].Checked) + { + int p = selectedPartners.Text.IndexOf(partnerList.Items[i].SubItems[0].Text + ";"); + if (p == -1) + { + selectedPartners.Text += partnerList.Items[i].SubItems[0].Text + ";"; + } + } + else + { + int p = selectedPartners.Text.IndexOf(partnerList.Items[i].SubItems[0].Text + ";"); + if (p != -1) //Eltávolitja a nem kiválasztott partner előfordulását a listából - Megcsinálom visszafelé is + selectedPartners.Text = selectedPartners.Text.Remove(p, partnerList.Items[i].SubItems[0].Text.Length + 1); //Eltávolitja a ;-t is + } + } + } + + private void ItemDoubleClick(object sender, EventArgs e) + { + int a = partnerList.HotItemIndex; + if (partnerList.Items[a].SubItems[0].Checked) + partnerList.Items[a].SubItems[0].Checked = false; + else + partnerList.Items[a].SubItems[0].Checked = true; + ItemClicked(sender, e); + } + + public string[] Partners; + private void okbtn_Click(object sender, EventArgs e) + { + while (selectedPartners.Text.Contains(' ')) + { //Eltávolitja a szóközöket + int x = selectedPartners.Text.IndexOf(' '); + selectedPartners.Text.Remove(x, 1); + } + Partners = selectedPartners.Text.Split(';'); + } + } +} diff --git a/MSGer.tk/Forms/SelectPartnerForm.resx b/MSGer.tk/Forms/SelectPartnerForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SelectPartnerForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SelectShownImage.Designer.cs b/MSGer.tk/Forms/SelectShownImage.Designer.cs new file mode 100644 index 0000000..34330db --- /dev/null +++ b/MSGer.tk/Forms/SelectShownImage.Designer.cs @@ -0,0 +1,136 @@ +namespace MSGer.tk +{ + partial class SelectShownImage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.button1 = new System.Windows.Forms.Button(); + this.cancelbtn = new System.Windows.Forms.Button(); + this.okbtn = new System.Windows.Forms.Button(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(191, 29); + this.label1.TabIndex = 0; + this.label1.Text = "Kép kiválasztása"; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Location = new System.Drawing.Point(18, 59); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(164, 164); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 1; + this.pictureBox1.TabStop = false; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(197, 59); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "Módosítás..."; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // cancelbtn + // + this.cancelbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelbtn.Location = new System.Drawing.Point(197, 269); + this.cancelbtn.Name = "cancelbtn"; + this.cancelbtn.Size = new System.Drawing.Size(75, 23); + this.cancelbtn.TabIndex = 3; + this.cancelbtn.Text = "Mégse"; + this.cancelbtn.UseVisualStyleBackColor = true; + // + // okbtn + // + this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okbtn.Location = new System.Drawing.Point(116, 269); + this.okbtn.Name = "okbtn"; + this.okbtn.Size = new System.Drawing.Size(75, 23); + this.okbtn.TabIndex = 4; + this.okbtn.Text = "OK"; + this.okbtn.UseVisualStyleBackColor = true; + this.okbtn.Click += new System.EventHandler(this.okbtn_Click); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + this.openFileDialog1.Filter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff|All Image Types|" + + "*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff"; + this.openFileDialog1.RestoreDirectory = true; + // + // SelectShownImage + // + this.AcceptButton = this.okbtn; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelbtn; + this.ClientSize = new System.Drawing.Size(284, 304); + this.Controls.Add(this.okbtn); + this.Controls.Add(this.cancelbtn); + this.Controls.Add(this.button1); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SelectShownImage"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SelectShownImage"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button cancelbtn; + private System.Windows.Forms.Button okbtn; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/SelectShownImage.cs b/MSGer.tk/Forms/SelectShownImage.cs new file mode 100644 index 0000000..2a0ae89 --- /dev/null +++ b/MSGer.tk/Forms/SelectShownImage.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SelectShownImage : ThemedForms + { //2015.05.24. + public SelectShownImage() + { + InitializeComponent(); + label1.Text = Language.Translate(Language.StringID.SelectImage); //2015.06.06. + button1.Text = Language.Translate(Language.StringID.Modify); //2015.06.06. + this.Text = label1.Text; //2015.06.06. + cancelbtn.Text = Language.Translate(Language.StringID.Button_Cancel); //2015.06.06. + pictureBox1.Image = CurrentUser.Image.Clone() as Image; //2015.06.06. + openFileDialog1.Filter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff|" + + "All Graphics Types|*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff"; //2015.06.06. + } + + private void button1_Click(object sender, EventArgs e) + { //2015.06.06. + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + pictureBox1.Image = Program.LoadImageFromFile(openFileDialog1.FileName); + } + } + + private void okbtn_Click(object sender, EventArgs e) + { //2015.06.06. + CurrentUser.Image = pictureBox1.Image; + this.Close(); + } + } +} diff --git a/MSGer.tk/Forms/SelectShownImage.resx b/MSGer.tk/Forms/SelectShownImage.resx new file mode 100644 index 0000000..3a7d671 --- /dev/null +++ b/MSGer.tk/Forms/SelectShownImage.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsForm.Designer.cs b/MSGer.tk/Forms/SettingsForm.Designer.cs new file mode 100644 index 0000000..d55bf8c --- /dev/null +++ b/MSGer.tk/Forms/SettingsForm.Designer.cs @@ -0,0 +1,155 @@ +namespace MSGer.tk +{ + partial class SettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn(); + this.glacialList1 = new GlacialComponents.Controls.GlacialList(); + this.panel1 = new System.Windows.Forms.Panel(); + this.okbtn = new System.Windows.Forms.Button(); + this.cancelbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // glacialList1 + // + this.glacialList1.AllowColumnResize = true; + this.glacialList1.AllowMultiselect = false; + this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen; + this.glacialList1.AlternatingColors = false; + this.glacialList1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.glacialList1.AutoHeight = true; + this.glacialList1.BackColor = System.Drawing.Color.White; + this.glacialList1.BackgroundStretchToFit = true; + glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None; + glColumn1.CheckBoxes = false; + glColumn1.ImageIndex = -1; + glColumn1.Name = "Column1"; + glColumn1.NumericSort = false; + glColumn1.Text = "Column"; + glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + glColumn1.Width = 115; + this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] { + glColumn1}); + this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal; + this.glacialList1.ForeColor = System.Drawing.Color.Black; + this.glacialList1.FullRowSelect = true; + this.glacialList1.GridColor = System.Drawing.Color.LightGray; + this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth; + this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid; + this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists; + this.glacialList1.HeaderHeight = 0; + this.glacialList1.HeaderVisible = false; + this.glacialList1.HeaderWordWrap = false; + this.glacialList1.HotColumnTracking = false; + this.glacialList1.HotItemTracking = true; + this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray; + this.glacialList1.HoverEvents = false; + this.glacialList1.HoverTime = 1; + this.glacialList1.ImageList = null; + this.glacialList1.ItemHeight = 17; + this.glacialList1.ItemWordWrap = false; + this.glacialList1.Location = new System.Drawing.Point(12, 12); + this.glacialList1.Name = "glacialList1"; + this.glacialList1.Selectable = true; + this.glacialList1.SelectedTextColor = System.Drawing.Color.White; + this.glacialList1.SelectionColor = System.Drawing.Color.DarkBlue; + this.glacialList1.ShowBorder = true; + this.glacialList1.ShowFocusRect = false; + this.glacialList1.Size = new System.Drawing.Size(120, 418); + this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort; + this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White; + this.glacialList1.TabIndex = 0; + this.glacialList1.Text = "glacialList1"; + this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.AutoScroll = true; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Location = new System.Drawing.Point(139, 13); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(385, 391); + this.panel1.TabIndex = 1; + // + // okbtn + // + this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okbtn.DialogResult = System.Windows.Forms.DialogResult.OK; + this.okbtn.Location = new System.Drawing.Point(368, 410); + this.okbtn.Name = "okbtn"; + this.okbtn.Size = new System.Drawing.Size(75, 23); + this.okbtn.TabIndex = 2; + this.okbtn.Text = "OK"; + this.okbtn.UseVisualStyleBackColor = true; + this.okbtn.Click += new System.EventHandler(this.okbtn_Click); + // + // cancelbtn + // + this.cancelbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelbtn.Location = new System.Drawing.Point(449, 410); + this.cancelbtn.Name = "cancelbtn"; + this.cancelbtn.Size = new System.Drawing.Size(75, 23); + this.cancelbtn.TabIndex = 3; + this.cancelbtn.Text = "Mégse"; + this.cancelbtn.UseVisualStyleBackColor = true; + this.cancelbtn.Click += new System.EventHandler(this.cancelbtn_Click); + // + // SettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(536, 442); + this.Controls.Add(this.cancelbtn); + this.Controls.Add(this.okbtn); + this.Controls.Add(this.panel1); + this.Controls.Add(this.glacialList1); + this.Name = "SettingsForm"; + this.Text = "SettingsForm"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SettingsForm_FormClosed); + this.Controls.SetChildIndex(this.glacialList1, 0); + this.Controls.SetChildIndex(this.panel1, 0); + this.Controls.SetChildIndex(this.okbtn, 0); + this.Controls.SetChildIndex(this.cancelbtn, 0); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private GlacialComponents.Controls.GlacialList glacialList1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button okbtn; + private System.Windows.Forms.Button cancelbtn; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsForm.cs b/MSGer.tk/Forms/SettingsForm.cs new file mode 100644 index 0000000..56a7ff3 --- /dev/null +++ b/MSGer.tk/Forms/SettingsForm.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SettingsForm : ThemedForms + { + public static bool ApplyingSettings = false; + public SettingsForm() + { + InitializeComponent(); + this.Text = Language.Translate(Language.StringID.Settings); + + ActivePanel = new SettingsPanelPersonal(); //2015.05.23. + ShownPanels.Add(ActivePanel); //2015.05.23. + glacialList1.Items.Add(Language.Translate(Language.StringID.Settings_Personal)); + glacialList1.Items.Add(Language.Translate(Language.StringID.Settings_Layout)); + glacialList1.Items.Add(Language.Translate(Language.StringID.Settings_Packs)); + glacialList1.Items.Add(Language.Translate(Language.StringID.Settings_Network)); + } + + private List ShownPanels = new List(); + private void glacialList1_Click(object sender, EventArgs e) + { + int tmp = glacialList1.HotItemIndex; + if (tmp > glacialList1.Items.Count) + return; + switch (tmp) + { + case 0: + //Személyes + SetActivePanel(); //2015.05.23. + break; + case 1: + //Kinézet + SetActivePanel(); //2015.05.23. + break; + case 2: + //Csomagok + SetActivePanel(); //2015.05.23. + break; + case 3: + //Hálózat + SetActivePanel(); //2015.05.24. + break; + } + } + + private void SetActivePanel() where T : SettingsPanel + { + T panel = null; //2015.05.23. + panel = ShownPanels.FirstOrDefault(entry => entry.GetType() == typeof(T)) as T; //Single-->FirstOrDefault: 2015.06.06. + if (panel == null) + { //2015.05.23. + ActivePanel = Activator.CreateInstance(); + ShownPanels.Add(ActivePanel); + } + else + ActivePanel = panel; + } + + private SettingsPanel activepanel; + private SettingsPanel ActivePanel + { //2015.05.23. + get + { + return activepanel; + } + set + { + if (activepanel != null) + activepanel.Hide(); + activepanel = value; + panel1.Controls.Add(activepanel); + activepanel.Dock = DockStyle.Fill; + activepanel.Show(); + } + } + private void okbtn_Click(object sender, EventArgs e) + { + ApplyingSettings = true; + bool reopen = false; + foreach (SettingsPanel panel in ShownPanels) //2015.05.23. + if (panel.SaveSettings()) //2015.05.23. + reopen = true; //2015.05.23. + if (reopen) + { + ChatPanel.ReopenChatWindows(true); + Program.MainF.ChangeChatWindowLayout(true); //2015.06.14. + } + ApplyingSettings = false; + this.Close(); + } + + private void cancelbtn_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e) + { + Program.SettingsF = null; + } + } +} diff --git a/MSGer.tk/Forms/SettingsForm.resx b/MSGer.tk/Forms/SettingsForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SettingsForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsPanels/.justforgithub b/MSGer.tk/Forms/SettingsPanels/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs new file mode 100644 index 0000000..c995cba --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public class SettingsPanel : UserControl + { + /// + /// SaveSettings + /// + /// Reopen + public virtual bool SaveSettings() + { + throw new InvalidOperationException("SaveSettings is not overriden."); //2015.05.23. + } + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs new file mode 100644 index 0000000..76d0a5c --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.Designer.cs @@ -0,0 +1,87 @@ +namespace MSGer.tk +{ + partial class SettingsPanelLayout + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.chatwindowTabs = new System.Windows.Forms.CheckBox(); + this.chatwindow = new System.Windows.Forms.CheckBox(); + this.layout = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // chatwindowTabs + // + this.chatwindowTabs.AutoSize = true; + this.chatwindowTabs.Enabled = false; + this.chatwindowTabs.Location = new System.Drawing.Point(51, 69); + this.chatwindowTabs.Name = "chatwindowTabs"; + this.chatwindowTabs.Size = new System.Drawing.Size(194, 17); + this.chatwindowTabs.TabIndex = 12; + this.chatwindowTabs.Text = "A beszélgetések fülekbe rendezése"; + this.chatwindowTabs.UseVisualStyleBackColor = true; + // + // chatwindow + // + this.chatwindow.AutoSize = true; + this.chatwindow.Location = new System.Drawing.Point(13, 45); + this.chatwindow.Name = "chatwindow"; + this.chatwindow.Size = new System.Drawing.Size(272, 17); + this.chatwindow.TabIndex = 11; + this.chatwindow.Text = "A beszélgetések jelenjenek meg külön ablak(ok)ban"; + this.chatwindow.UseVisualStyleBackColor = true; + // + // layout + // + this.layout.AutoSize = true; + this.layout.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.layout.Location = new System.Drawing.Point(7, 10); + this.layout.Name = "layout"; + this.layout.Size = new System.Drawing.Size(105, 31); + this.layout.TabIndex = 10; + this.layout.Text = "Kinézet"; + // + // SettingsPanelLayout + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.chatwindowTabs); + this.Controls.Add(this.chatwindow); + this.Controls.Add(this.layout); + this.Name = "SettingsPanelLayout"; + this.Size = new System.Drawing.Size(346, 122); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox chatwindowTabs; + private System.Windows.Forms.CheckBox chatwindow; + private System.Windows.Forms.Label layout; + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs new file mode 100644 index 0000000..3d590f1 --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SettingsPanelLayout : SettingsPanel + { //2015.05.23. + public SettingsPanelLayout() + { + InitializeComponent(); + + layout.Text = Language.Translate(Language.StringID.Settings_Layout); + chatwindow.Text = Language.Translate(Language.StringID.Settings_ChatWindow); + chatwindowTabs.Text = Language.Translate(Language.StringID.Settings_ChatWindowTabs); + chatwindow.Checked = (Storage.Settings[SettingType.ChatWindow] == "1"); + } + + /// + /// SaveSettings + /// + /// reopen + public override bool SaveSettings() + { + if (chatwindow.Checked && Storage.Settings[SettingType.ChatWindow] == "0") + { + Storage.Settings[SettingType.ChatWindow] = "1"; + return true; + } + else if (!chatwindow.Checked && Storage.Settings[SettingType.ChatWindow] == "1") + { + Storage.Settings[SettingType.ChatWindow] = "0"; + return true; + } + return false; + } + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelLayout.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs new file mode 100644 index 0000000..3a96cf2 --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.Designer.cs @@ -0,0 +1,99 @@ +namespace MSGer.tk +{ + partial class SettingsPanelNetwork + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.network = new System.Windows.Forms.Label(); + this.portLabel = new System.Windows.Forms.Label(); + this.portNum = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.portNum)).BeginInit(); + this.SuspendLayout(); + // + // network + // + this.network.AutoSize = true; + this.network.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.network.Location = new System.Drawing.Point(9, 8); + this.network.Name = "network"; + this.network.Size = new System.Drawing.Size(115, 31); + this.network.TabIndex = 13; + this.network.Text = "Network"; + // + // portLabel + // + this.portLabel.AutoSize = true; + this.portLabel.Location = new System.Drawing.Point(12, 51); + this.portLabel.Name = "portLabel"; + this.portLabel.Size = new System.Drawing.Size(29, 13); + this.portLabel.TabIndex = 14; + this.portLabel.Text = "Port:"; + // + // portNum + // + this.portNum.Location = new System.Drawing.Point(47, 49); + this.portNum.Maximum = new decimal(new int[] { + 20000, + 0, + 0, + 0}); + this.portNum.Minimum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.portNum.Name = "portNum"; + this.portNum.Size = new System.Drawing.Size(77, 20); + this.portNum.TabIndex = 15; + this.portNum.Value = new decimal(new int[] { + 4510, + 0, + 0, + 0}); + // + // SettingsPanelNetwork + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.portNum); + this.Controls.Add(this.portLabel); + this.Controls.Add(this.network); + this.Name = "SettingsPanelNetwork"; + this.Size = new System.Drawing.Size(450, 108); + ((System.ComponentModel.ISupportInitialize)(this.portNum)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label network; + private System.Windows.Forms.Label portLabel; + private System.Windows.Forms.NumericUpDown portNum; + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs new file mode 100644 index 0000000..bb477f6 --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SettingsPanelNetwork : SettingsPanel + { //2015.05.24. + public SettingsPanelNetwork() + { + InitializeComponent(); + network.Text = Language.Translate(Language.StringID.Settings_Network); + portNum.Value = CurrentUser.Port; + } + + public override bool SaveSettings() + { + CurrentUser.Port = (int)portNum.Value; + return false; + } + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelNetwork.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs new file mode 100644 index 0000000..f890c5f --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.Designer.cs @@ -0,0 +1,86 @@ +namespace MSGer.tk +{ + partial class SettingsPanelPacks + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.Scripterbtn = new System.Windows.Forms.Button(); + this.packs = new System.Windows.Forms.Label(); + this.themedesignerbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // Scripterbtn + // + this.Scripterbtn.Location = new System.Drawing.Point(12, 41); + this.Scripterbtn.Name = "Scripterbtn"; + this.Scripterbtn.Size = new System.Drawing.Size(83, 23); + this.Scripterbtn.TabIndex = 13; + this.Scripterbtn.Text = "Szkriptíró"; + this.Scripterbtn.UseVisualStyleBackColor = true; + this.Scripterbtn.Click += new System.EventHandler(this.Scripterbtn_Click); + // + // packs + // + this.packs.AutoSize = true; + this.packs.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.packs.Location = new System.Drawing.Point(6, 7); + this.packs.Name = "packs"; + this.packs.Size = new System.Drawing.Size(89, 31); + this.packs.TabIndex = 12; + this.packs.Text = "Packs"; + // + // themedesignerbtn + // + this.themedesignerbtn.Location = new System.Drawing.Point(12, 70); + this.themedesignerbtn.Name = "themedesignerbtn"; + this.themedesignerbtn.Size = new System.Drawing.Size(83, 23); + this.themedesignerbtn.TabIndex = 14; + this.themedesignerbtn.Text = "Tématervező"; + this.themedesignerbtn.UseVisualStyleBackColor = true; + this.themedesignerbtn.Click += new System.EventHandler(this.themedesignerbtn_Click); + // + // SettingsPanelPacks + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.themedesignerbtn); + this.Controls.Add(this.Scripterbtn); + this.Controls.Add(this.packs); + this.Name = "SettingsPanelPacks"; + this.Size = new System.Drawing.Size(189, 138); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button Scripterbtn; + private System.Windows.Forms.Label packs; + private System.Windows.Forms.Button themedesignerbtn; + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs new file mode 100644 index 0000000..eae7a1f --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SettingsPanelPacks : SettingsPanel + { + public SettingsPanelPacks() + { + InitializeComponent(); + + packs.Text = Language.Translate(Language.StringID.Settings_Packs); + Scripterbtn.Text = Language.Translate(Language.StringID.Scripter); + } + + public override bool SaveSettings() + { + return false; + } + + private void Scripterbtn_Click(object sender, EventArgs e) + { + new ScripterWindow().Show(); + } + + private void themedesignerbtn_Click(object sender, EventArgs e) + { //2015.05.23. + new ThemeDesigner().Show(); + } + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPacks.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs new file mode 100644 index 0000000..e1c8ca4 --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.Designer.cs @@ -0,0 +1,152 @@ +namespace MSGer.tk +{ + partial class SettingsPanelPersonal + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.languageList = new System.Windows.Forms.ListView(); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.languageLabel = new System.Windows.Forms.Label(); + this.messageText = new System.Windows.Forms.TextBox(); + this.messageLabel = new System.Windows.Forms.Label(); + this.nameText = new System.Windows.Forms.TextBox(); + this.nameLabel = new System.Windows.Forms.Label(); + this.personal = new System.Windows.Forms.Label(); + this.selectimgbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // languageList + // + this.languageList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.languageList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader2}); + this.languageList.LabelWrap = false; + this.languageList.Location = new System.Drawing.Point(12, 191); + this.languageList.MultiSelect = false; + this.languageList.Name = "languageList"; + this.languageList.Size = new System.Drawing.Size(347, 78); + this.languageList.TabIndex = 13; + this.languageList.UseCompatibleStateImageBehavior = false; + // + // languageLabel + // + this.languageLabel.AutoSize = true; + this.languageLabel.Location = new System.Drawing.Point(9, 175); + this.languageLabel.Name = "languageLabel"; + this.languageLabel.Size = new System.Drawing.Size(34, 13); + this.languageLabel.TabIndex = 12; + this.languageLabel.Text = "Nyelv"; + // + // messageText + // + this.messageText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messageText.Location = new System.Drawing.Point(12, 99); + this.messageText.Name = "messageText"; + this.messageText.Size = new System.Drawing.Size(347, 20); + this.messageText.TabIndex = 11; + // + // messageLabel + // + this.messageLabel.AutoSize = true; + this.messageLabel.Location = new System.Drawing.Point(9, 82); + this.messageLabel.Name = "messageLabel"; + this.messageLabel.Size = new System.Drawing.Size(41, 13); + this.messageLabel.TabIndex = 10; + this.messageLabel.Text = "Üzenet"; + // + // nameText + // + this.nameText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nameText.Location = new System.Drawing.Point(12, 52); + this.nameText.Name = "nameText"; + this.nameText.Size = new System.Drawing.Size(347, 20); + this.nameText.TabIndex = 9; + // + // nameLabel + // + this.nameLabel.AutoSize = true; + this.nameLabel.Location = new System.Drawing.Point(9, 35); + this.nameLabel.Name = "nameLabel"; + this.nameLabel.Size = new System.Drawing.Size(27, 13); + this.nameLabel.TabIndex = 8; + this.nameLabel.Text = "Név"; + // + // personal + // + this.personal.AutoSize = true; + this.personal.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.personal.Location = new System.Drawing.Point(3, 0); + this.personal.Name = "personal"; + this.personal.Size = new System.Drawing.Size(147, 31); + this.personal.TabIndex = 7; + this.personal.Text = "Személyes"; + // + // selectimgbtn + // + this.selectimgbtn.Location = new System.Drawing.Point(12, 135); + this.selectimgbtn.Name = "selectimgbtn"; + this.selectimgbtn.Size = new System.Drawing.Size(138, 23); + this.selectimgbtn.TabIndex = 14; + this.selectimgbtn.Text = "Kép kiválasztása..."; + this.selectimgbtn.UseVisualStyleBackColor = true; + this.selectimgbtn.Click += new System.EventHandler(this.selectimgbtn_Click); + // + // SettingsPanelPersonal + // + this.Controls.Add(this.selectimgbtn); + this.Controls.Add(this.languageList); + this.Controls.Add(this.languageLabel); + this.Controls.Add(this.messageText); + this.Controls.Add(this.messageLabel); + this.Controls.Add(this.nameText); + this.Controls.Add(this.nameLabel); + this.Controls.Add(this.personal); + this.Name = "SettingsPanelPersonal"; + this.Size = new System.Drawing.Size(376, 284); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView languageList; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.Label languageLabel; + private System.Windows.Forms.TextBox messageText; + private System.Windows.Forms.Label messageLabel; + private System.Windows.Forms.TextBox nameText; + private System.Windows.Forms.Label nameLabel; + private System.Windows.Forms.Label personal; + private System.Windows.Forms.Button selectimgbtn; + + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs new file mode 100644 index 0000000..e48ccee --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class SettingsPanelPersonal : SettingsPanel + { + public static bool ApplyingSettings = false; + public SettingsPanelPersonal() + { + InitializeComponent(); + languageList.Columns[0].Width = languageList.Width; + this.Text = Language.Translate(Language.StringID.Settings); + personal.Text = Language.Translate(Language.StringID.Settings_Personal); + + nameLabel.Text = Language.Translate(Language.StringID.Name); + messageLabel.Text = Language.Translate(Language.StringID.Message); + languageLabel.Text = Language.Translate(Language.StringID.Language); + nameText.Text = CurrentUser.Name; + messageText.Text = CurrentUser.Message; + + selectimgbtn.Text = Language.Translate(Language.StringID.Menu_Tools_ChangeImage); //2015.06.06. + + foreach (var entry in Language.Languages) + { + languageList.Items.Add(entry.Strings["currentlang"], entry.Strings["currentlang"], 0); //2015.05.16. + if (entry == Language.CurrentLanguage) //2015.05.16. + languageList.Items[languageList.Items.Count - 1].Selected = true; + } + } + + public override bool SaveSettings() + { + CurrentUser.Name = nameText.Text; + CurrentUser.Message = messageText.Text; + var langs = Language.Languages; + Language lang = Language.CurrentLanguage; + if (languageList.SelectedItems.Count != 0) + { + foreach (var lng in langs) + { + if (lng.Strings.ContainsKey("currentlang") && languageList.SelectedItems[0].Text == lng.Strings["currentlang"]) + { + lang = lng; + break; + } + } + if (Language.CurrentLanguage != lang) + { + Language.CurrentLanguage = lang; + Language.ReloadLangs(); + } + } + return false; + } + + private void selectimgbtn_Click(object sender, EventArgs e) + { //2015.06.06. + new SelectShownImage().ShowDialog(); + } + } +} diff --git a/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Forms/SettingsPanels/SettingsPanelPersonal.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/Forms/ThemeDesigner.Designer.cs b/MSGer.tk/Forms/ThemeDesigner.Designer.cs new file mode 100644 index 0000000..3bb65f5 --- /dev/null +++ b/MSGer.tk/Forms/ThemeDesigner.Designer.cs @@ -0,0 +1,217 @@ +namespace MSGer.tk +{ + partial class ThemeDesigner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.okbtn = new System.Windows.Forms.Button(); + this.cancelbtn = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.colorRadiobtn = new System.Windows.Forms.RadioButton(); + this.imageRadiobtn = new System.Windows.Forms.RadioButton(); + this.scriptRadiobtn = new System.Windows.Forms.RadioButton(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.panel1 = new System.Windows.Forms.Panel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.scriptLocation = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.domainUpDown1 = new System.Windows.Forms.DomainUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // okbtn + // + this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okbtn.Location = new System.Drawing.Point(21, 292); + this.okbtn.Name = "okbtn"; + this.okbtn.Size = new System.Drawing.Size(75, 23); + this.okbtn.TabIndex = 1; + this.okbtn.Text = "OK"; + this.okbtn.UseVisualStyleBackColor = true; + this.okbtn.Click += new System.EventHandler(this.okbtn_Click); + // + // cancelbtn + // + this.cancelbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelbtn.Location = new System.Drawing.Point(102, 292); + this.cancelbtn.Name = "cancelbtn"; + this.cancelbtn.Size = new System.Drawing.Size(75, 23); + this.cancelbtn.TabIndex = 2; + this.cancelbtn.Text = "Mégse"; + this.cancelbtn.UseVisualStyleBackColor = true; + this.cancelbtn.Click += new System.EventHandler(this.cancelbtn_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 25); + this.label1.TabIndex = 3; + this.label1.Text = "Tervezés"; + // + // colorRadiobtn + // + this.colorRadiobtn.AutoSize = true; + this.colorRadiobtn.Location = new System.Drawing.Point(12, 67); + this.colorRadiobtn.Name = "colorRadiobtn"; + this.colorRadiobtn.Size = new System.Drawing.Size(91, 17); + this.colorRadiobtn.TabIndex = 4; + this.colorRadiobtn.TabStop = true; + this.colorRadiobtn.Text = "colorRadiobtn"; + this.colorRadiobtn.UseVisualStyleBackColor = true; + this.colorRadiobtn.CheckedChanged += new System.EventHandler(this.colorRadiobtn_CheckedChanged); + // + // imageRadiobtn + // + this.imageRadiobtn.AutoSize = true; + this.imageRadiobtn.Location = new System.Drawing.Point(12, 120); + this.imageRadiobtn.Name = "imageRadiobtn"; + this.imageRadiobtn.Size = new System.Drawing.Size(96, 17); + this.imageRadiobtn.TabIndex = 5; + this.imageRadiobtn.TabStop = true; + this.imageRadiobtn.Text = "imageRadiobtn"; + this.imageRadiobtn.UseVisualStyleBackColor = true; + this.imageRadiobtn.CheckedChanged += new System.EventHandler(this.imageRadiobtn_CheckedChanged); + // + // scriptRadiobtn + // + this.scriptRadiobtn.AutoSize = true; + this.scriptRadiobtn.Location = new System.Drawing.Point(12, 222); + this.scriptRadiobtn.Name = "scriptRadiobtn"; + this.scriptRadiobtn.Size = new System.Drawing.Size(93, 17); + this.scriptRadiobtn.TabIndex = 6; + this.scriptRadiobtn.TabStop = true; + this.scriptRadiobtn.Text = "scriptRadiobtn"; + this.scriptRadiobtn.UseVisualStyleBackColor = true; + this.scriptRadiobtn.CheckedChanged += new System.EventHandler(this.scriptRadiobtn_CheckedChanged); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Black; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Location = new System.Drawing.Point(12, 90); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(166, 24); + this.panel1.TabIndex = 7; + this.panel1.Click += new System.EventHandler(this.panel1_Click); + // + // pictureBox1 + // + this.pictureBox1.Location = new System.Drawing.Point(12, 143); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(165, 73); + this.pictureBox1.TabIndex = 8; + this.pictureBox1.TabStop = false; + // + // scriptLocation + // + this.scriptLocation.Location = new System.Drawing.Point(12, 258); + this.scriptLocation.Name = "scriptLocation"; + this.scriptLocation.Size = new System.Drawing.Size(166, 20); + this.scriptLocation.TabIndex = 9; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 242); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(70, 13); + this.label2.TabIndex = 10; + this.label2.Text = "Szkript helye:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(9, 44); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(64, 13); + this.label3.TabIndex = 12; + this.label3.Text = "Téma neve:"; + // + // domainUpDown1 + // + this.domainUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.domainUpDown1.Location = new System.Drawing.Point(90, 41); + this.domainUpDown1.Name = "domainUpDown1"; + this.domainUpDown1.Size = new System.Drawing.Size(87, 20); + this.domainUpDown1.TabIndex = 13; + this.domainUpDown1.Text = "New theme"; + this.domainUpDown1.SelectedItemChanged += new System.EventHandler(this.domainUpDown1_SelectedItemChanged); + this.domainUpDown1.TextChanged += new System.EventHandler(this.domainUpDown1_TextChanged); + // + // ThemeDesigner + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(189, 327); + this.Controls.Add(this.domainUpDown1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.scriptLocation); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.scriptRadiobtn); + this.Controls.Add(this.imageRadiobtn); + this.Controls.Add(this.colorRadiobtn); + this.Controls.Add(this.label1); + this.Controls.Add(this.cancelbtn); + this.Controls.Add(this.okbtn); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "ThemeDesigner"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ThemeDesigner"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ThemeDesigner_FormClosing); + this.Load += new System.EventHandler(this.ThemeDesigner_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button okbtn; + private System.Windows.Forms.Button cancelbtn; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.RadioButton colorRadiobtn; + private System.Windows.Forms.RadioButton imageRadiobtn; + private System.Windows.Forms.RadioButton scriptRadiobtn; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.TextBox scriptLocation; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.DomainUpDown domainUpDown1; + } +} \ No newline at end of file diff --git a/MSGer.tk/Forms/ThemeDesigner.cs b/MSGer.tk/Forms/ThemeDesigner.cs new file mode 100644 index 0000000..2273827 --- /dev/null +++ b/MSGer.tk/Forms/ThemeDesigner.cs @@ -0,0 +1,185 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class ThemeDesigner : Form + { //2015.05.23. + private bool Stop = false; //2015.07.03. + public ThemeDesigner() + { + InitializeComponent(); + if (ThemedForms.ThemeDesignerRunning != null) + { //2015.07.03. + ThemedForms.ThemeDesignerRunning.Focus(); + Stop = true; + return; + } + domainUpDown1.Items.Clear(); //2015.07.03. + domainUpDown1.Items.AddRange(Theme.Themes); //2015.07.03. + if (domainUpDown1.Items.Count > 0) + domainUpDown1.SelectedIndex = 0; //2015.07.03. + if (domainUpDown1.SelectedItem != null) //2015.07.03. + SelectedTheme = (Theme)domainUpDown1.SelectedItem; + SelectedType = null; //2015.07.03. - Reset + } + + public Theme SelectedTheme { get; set; } //2015.07.03. + private Type selectedtype; //2015.07.03. + public Type SelectedType + { //2015.07.03. + get + { + return selectedtype; + } + set + { + if (SelectedTheme == null) + { + SelectedTheme = PackManager.Add(domainUpDown1.Text); + } + if (value == null) + { + colorRadiobtn.Enabled = false; + panel1.Enabled = false; + panel1.BackColor = Color.Black; + imageRadiobtn.Enabled = false; + pictureBox1.Enabled = false; + pictureBox1.Image = null; + scriptRadiobtn.Enabled = false; + label2.Enabled = false; + scriptLocation.Enabled = false; + scriptLocation.Text = ""; + } + else + { + if (!SelectedTheme.Controls.ContainsKey(value)) + { + SelectedTheme.Controls.Add(value, new ThemeControl(Color.Black, Color.Black)); //2015.07.05. + } + colorRadiobtn.Enabled = true; //2015.07.05. + imageRadiobtn.Enabled = true; //2015.07.05. + scriptRadiobtn.Enabled = true; //2015.07.05. + SetThemeControl(SelectedTheme.Controls[value].ControlType, value); //2015.07.04. + } + selectedtype = value; + } + } + private void ThemeDesigner_Load(object sender, EventArgs e) + { + if (Stop) //2015.07.03. + this.Close(); + ThemedForms.ThemeDesignerRunning = this; //2015.07.03. + } + + private bool InternalCheck = false; //2015.07.05. + private void SetThemeControl(ThemeControlTypes controltype, Type selectedtype = null) //<-- 2015.07.04. - Áthelyezve ide a SelectedType.set()-ből + { + InternalCheck = true; //2015.07.05. + if (selectedtype == null) + selectedtype = SelectedType; //2015.07.04. + switch (controltype) + { + case ThemeControlTypes.Colors: + colorRadiobtn.Checked = true; //2015.07.05. + panel1.Enabled = true; + panel1.BackColor = SelectedTheme.Controls[selectedtype].Color; //2015.07.05. + pictureBox1.Enabled = false; + pictureBox1.Image = null; + label2.Enabled = false; + scriptLocation.Enabled = false; + scriptLocation.Text = ""; + break; + case ThemeControlTypes.Dynamic: + panel1.Enabled = false; + panel1.BackColor = Color.Black; + pictureBox1.Enabled = false; + pictureBox1.Image = null; + scriptRadiobtn.Checked = true; //2015.07.05. + label2.Enabled = true; + scriptLocation.Enabled = true; + scriptLocation.Text = SelectedTheme.Controls[selectedtype].Script; + break; + case ThemeControlTypes.Image: + panel1.Enabled = false; + panel1.BackColor = Color.Black; + imageRadiobtn.Checked = true; //2015.07.05. + pictureBox1.Enabled = true; + pictureBox1.Image = SelectedTheme.Controls[selectedtype].Image; + label2.Enabled = false; + scriptLocation.Enabled = false; + scriptLocation.Text = ""; + break; + } + InternalCheck = false; //2015.07.05. + } + + private void okbtn_Click(object sender, EventArgs e) + { + //TO!DO + Language.ReloadLangs(); //2015.07.05. - Lényegében csak az ablakokat frissíti + PackManager.Save(SelectedTheme); //2015.07.03. + this.Close(); //2015.05.24. + } + + private void cancelbtn_Click(object sender, EventArgs e) + { + this.Close(); //2015.05.24. + } + + private void ThemeDesigner_FormClosing(object sender, FormClosingEventArgs e) + { + if (ThemedForms.ThemeDesignerRunning == this) + ThemedForms.ThemeDesignerRunning = null; //2015.07.03. + } + + private void panel1_Click(object sender, EventArgs e) + { + colorDialog1.Color = panel1.BackColor; //2015.07.03. + if (colorDialog1.ShowDialog() == DialogResult.OK) //2015.07.05. + panel1.BackColor = colorDialog1.Color; //2015.07.05. + } + + private void domainUpDown1_TextChanged(object sender, EventArgs e) + { //2015.07.03. + if (domainUpDown1.SelectedIndex == -1) + { + SelectedType = null; + SelectedTheme = null; + Theme theme = domainUpDown1.Items.ToArray().Cast().FirstOrDefault(entry => entry.ToString() == domainUpDown1.Text); + if (theme != default(Theme)) + domainUpDown1.SelectedItem = theme; + } + } + + private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e) + { + SelectedTheme = (Theme)domainUpDown1.SelectedItem; //2015.07.03. + } + + private void colorRadiobtn_CheckedChanged(object sender, EventArgs e) + { //2015.07.04. + if (!InternalCheck) //<-- 2015.07.05. + SetThemeControl(ThemeControlTypes.Colors); + } + + private void imageRadiobtn_CheckedChanged(object sender, EventArgs e) + { //2015.07.04. + if (!InternalCheck) //<-- 2015.07.05. + SetThemeControl(ThemeControlTypes.Image); + } + + private void scriptRadiobtn_CheckedChanged(object sender, EventArgs e) + { //2015.07.04. + if (!InternalCheck) //<-- 2015.07.05. + SetThemeControl(ThemeControlTypes.Dynamic); + } + } +} diff --git a/MSGer.tk/Forms/ThemeDesigner.resx b/MSGer.tk/Forms/ThemeDesigner.resx new file mode 100644 index 0000000..a480212 --- /dev/null +++ b/MSGer.tk/Forms/ThemeDesigner.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/MSGer.tk/Language.cs b/MSGer.tk/Language.cs index ca28fd2..d310c1b 100644 --- a/MSGer.tk/Language.cs +++ b/MSGer.tk/Language.cs @@ -8,92 +8,73 @@ using System.Windows.Forms; namespace MSGer.tk { - public class Language + public class Language : IPackable, IEquatable, IPackWithDefaults { //2014.04.19. - - public static Dictionary UsedLangs = new Dictionary(); - public Dictionary Strings = new Dictionary(); private static Dictionary Controls = new Dictionary(); - - private Language(string lang) + private Language() { - UsedLangs.Add(lang, this); } - public Language() //2014.09.06. - { - if (!Directory.Exists("languages")) - Directory.CreateDirectory("languages"); - string[] files = Directory.GetFiles("languages"); - if (files.Length == 0) - { - MessageBox.Show("Error: No languages found."); - return; //Még nem jelentkezett be, ezért ki fog lépni - } - for (int x = 0; x < files.Length; x++) - { - string[] lines = File.ReadAllLines(files[x]); - var dict = lines.Select(l => l.Split('=')).ToDictionary(a => a[0], a => a[1]); - var finaldict = new Dictionary(); - foreach(var item in dict) - { - var spl = item.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - foreach(var key in spl) - { - finaldict.Add(key, item.Value); //Hozzáadja az összes felsorolt keyt külön, ugyanazzal az értékkel - } - } - new Language(new FileInfo(files[x]).Name.Split('.')[0]).Strings = finaldict; //(FileInfo: 2014.09.01.) - Eltárol egy új nyelvet, majd a szövegeket hozzátársítja - } - /*if (Language.FromString(Storage.Settings["lang"]) == null) - { - MessageBox.Show("Error: Could not find language: " + Storage.Settings["lang"]); - return; - }*/ - CurrentUser.Language = Language.FromString(Storage.Settings["lang"]); - if (CurrentUser.Language == null) - { - if (Language.UsedLangs.ContainsKey("en")) - { - MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + ") is not found.\nThe program will use english that you can change later."); - Storage.Settings["lang"] = "en"; - } - else - { - MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + "), nor enlish are found.\nPlease download translations."); - return; - } - } - } + public static List Languages = new List(); //2015.05.16. + + private string LanguageKey = ""; //2015.04.03. public override string ToString() { - return UsedLangs.FirstOrDefault(x => x.Value == this).Key; + return LanguageKey; } public static Language FromString(string value) { Language tmp = null; - UsedLangs.TryGetValue(value, out tmp); + tmp = Languages.FirstOrDefault(entry => entry.LanguageKey == value); //Single-->FirstOrDefault: 2015.06.06. return tmp; } - public static Language GetCurrentLanguage() //Javítva Cuurent-ről Current-re: 2014.12.13. - Már régóta ki akartam javítani - { - return Language.FromString(Storage.Settings["lang"]); + private static Language currentlanguage; + public static Language CurrentLanguage + { //2015.04.03. + get + { + if (currentlanguage == null) //2015.05.16. + { + if (Storage.Settings[SettingType.Lang] == "") + Storage.Settings[SettingType.Lang] = "en"; //2015.05.21. + currentlanguage = Language.FromString(Storage.Settings[SettingType.Lang]); //2015.05.16. + } + return currentlanguage; //2015.05.16. + } + set + { + Storage.Settings[SettingType.Lang] = value.ToString(); + currentlanguage = value; //2015.05.16. + value.LoadAllStrings(); //2015.05.21. + } } - public static string Translate(string id, Control defaultevent = null) //Csak akkor kell az event, ha látszódik az adott ablak, amikor átállítódik - Tehát csak MainForm és ChatForm + public static string Translate(StringID id, Control defaultevent = null) //Csak akkor kell az event, ha látszódik az adott ablak, amikor átállítódik - Tehát csak MainForm és ChatForm { //2014.08.19. - Language lang = GetCurrentLanguage(); - if (lang.Strings.ContainsKey(id)) + if (CurrentLanguage == null) + { //2015.05.22. + if (Language.Languages.Any(entry => entry.LanguageKey == "en")) + { + MessageBox.Show("Error: The specified language (" + Storage.Settings[SettingType.Lang] + ") is not found.\nThe program will use english that you can change later."); + CurrentLanguage = Languages.FirstOrDefault(entry => entry.LanguageKey == "en"); //Single-->FirstOrDefault: 2015.06.06. + } + else + { + throw new FileNotFoundException("This is just so it will use English when downloading languages..."); + } + } + string strid = id.ToString().ToLower(); + if (CurrentLanguage.Strings.ContainsKey(strid)) { if (defaultevent != null) //2014.12.22. - ReloadEvent += delegate { defaultevent.Text = lang.Strings[id]; }; //2014.12.22. - return lang.Strings[id]; + ReloadEvent += delegate { defaultevent.Text = CurrentLanguage.Strings[strid]; }; //2014.12.22. + return CurrentLanguage.Strings[strid]; } else { - MessageBox.Show("Translation string not found: " + id + "\nIn file: " + lang + ".txt"); - return "Str not found"; + MessageBox.Show("Translation string not found: " + strid + "\nIn file: " + CurrentLanguage.FileName); //CurrentLanguage.FileName: 2015.05.22. + return "Str not found (" + strid + ")"; //id: 2015.04.03. } } public static event EventHandler ReloadEvent; @@ -104,5 +85,242 @@ namespace MSGer.tk Program.MainF.contactList.Items.Clear(); Program.MainF.LoadPartnerList(); } + #region StringID + public enum StringID + { //2015.04.05. + About, + About_Version, + About_Programmer, + About_SpecialThanks, + About_SpecThanks1, + About_SpecThanks2, + About_SpecThanks3, + About_SpecThanks4, + AddContact, + AddContact_NameEmail, + AddContact_Search, + UserName, + Chat_Title, + Sendbtn_Send, + Chat_NoWindow, + Networking_Alone, + Login, + Password, + Registration, + ForgotPassword, + Login_Desc1, + Login_Desc2, + Button_Cancel, + ConnectError, + Reg_Code, + Reg_EmptyField, + Reg_CodeErr, + Reg_NameErr, + Reg_NameLen, + Reg_PassLen, + Reg_Email, + Reg_Success, + Menu_Contacts_MakeCategory, + Menu_Contacts_EditCategory, + Menu_Contacts_RemoveCategory, + Menu_Operations, + Sendmsg, + Menu_Operations_SendOther, + Menu_Operations_SendMail, + Menu_File_SendFile, + Menu_Operations_CallContact, + Menu_Operations_VideoCall, + Menu_Operations_ShowOnlineFiles, + Menu_Operations_PlayGame, + Menu_Operations_AskForHelp, + Menu_Tools, + Menu_Tools_AlwaysOnTop, + Menu_Tools_ChangeImage, + Menu_Tools_ChangeBackground, + Menu_Tools_VoiceVideoSettings, + Menu_Tools_Settings, + Menu_Help, + Menu_Help_Contents, + Menu_Help_Status, + Menu_Help_PrivacyPolicy, + Menu_Help_TermsOfUse, + Menu_Help_Report, + Menu_Help_ImproveProgram, + Menu_Help_About, + SearchBar, + IconMenu_Show, + Menu_File_Logout, + Menu_File_Exit, + BeforeLogin_CheckForUpdates, + OutOfDate, + OutOfDate_Caption, + Updater, + Error, + BeforeLogin_LoginForm, + Close, + Contact_SendEmail, + Contact_Info, + Contact_Block, + Contact_Remove, + Contact_EditName, + Contact_EventNotifications, + Contact_OpenChatLog, + Stats_MainServer, + Stats_NoNetwork, + Stats_Retrying, + Stats_Connected, + Stats_Servers, + Stats_OnlineServers, + BeforeLogin_TranslateMainF, + Menu_File, + Menu_File_LoginNewUser, + Menu_File_Status, + Menu_File_Status_Online, + Menu_File_Status_Busy, + Menu_File_Status_Away, + Menu_File_Status_Hidden, + Menu_File_OpenReceivedFiles, + Menu_File_OpenRecentmsgs, + Menu_File_Close, + Menu_Contacts, + Menu_Contacts_Add, + Menu_Contacts_Edit, + Menu_Contacts_Remove, + Menu_Contacts_Invite, + Menu_Contacts_MakeGroup, + Error_No_Network, + UserID, + Settings, + Settings_Personal, + Settings_Layout, + Name, + Message, + Language, + Settings_ChatWindow, + Settings_ChatWindowTabs, + Offline, + Contact_CopyEmail, + Login_BadNamePass, + Said, + CurrentLang, + ScriptNotFound, + ScriptError, + ScriptUnloadRequired, + Scripter, + Scripter_New, + Scripter_Open, + Scripter_Save, + Scripter_Exit, + Error_Network_NoInternet, + ReceivedFiles, + Settings_Packs, + Settings_Network, + Error_Unknown1, + Error_Unknown2, + Error_ServerError, + FatalError, + RestartButton, + SelectImage, + Modify, + Emoticons, + Add, + Remove, + Text, + AreYouSure, + Handwriting, + FileReceived + } //TODO: Egyszerűsíteni az azonosítókat, nagyjából jelentsék azt, amit, és semmi több (pl. ne Menu_File_...) + #endregion + + private string FileName; + public bool LoadFromPack(string filename) //2015.05.16. + { + FileName = filename; //2015.05.21. + LanguageKey = Path.GetFileNameWithoutExtension(filename); + if (this != CurrentLanguage) //<-- Ellenőrzés: 2015.05.21. + { + foreach (string line in File.ReadLines(filename)) + { + string[] strs = line.Split('='); + if (strs.Length != 2) + continue; + if (strs[0] == "currentlang") + { + Strings.Add(strs[0], strs[1]); + break; + } + } + } + Languages.Add(this); + + if (this == CurrentLanguage) + { + LoadAllStrings(); //2015.05.21. + } + return true; //2015.05.24. + } + + private void LoadAllStrings() //Külön metódus: 2015.05.21. + { + string filename = FileName; + string[] stringids = Enum.GetNames(typeof(StringID)).Select(entry => entry.ToLower()).ToArray(); + bool[] stringidsused = new bool[stringids.Length]; + string[] lines = File.ReadAllLines(filename); + var split = lines.Select(l => l.Split('=')); //2015.06.06. + List duplicates = split.GroupBy(x => x[0]) //2015.06.06. + .Where(g => g.Count() > 1) //2015.06.06. + .Select(g => g.Key) //2015.06.06. + .ToList(); //2015.06.06. + if (duplicates.Count > 0) + { //2015.06.06. + MessageBox.Show("Duplicate found (in a different line) in \"" + filename + "\":\n" + duplicates.Aggregate((entry1, entry2) => entry1 += ", " + entry2)); + return; + } + var dict = split.ToDictionary(a => a[0], a => a[1]); + var finaldict = new Dictionary(); + foreach (var item in dict) + { + var spl = item.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + duplicates = spl.GroupBy(x => x) //2015.06.06. + .Where(g => g.Count() > 1) //2015.06.06. + .Select(g => g.Key) //2015.06.06. + .ToList(); //2015.06.06. + if (duplicates.Count > 0) + { //2015.06.06. + MessageBox.Show("Duplicate found (in the same line) in \"" + filename + "\":\n" + duplicates.Aggregate((entry1, entry2) => entry1 += ", " + entry2)); + return; + } + foreach (var key in spl) + { + finaldict.Add(key, item.Value); //Hozzáadja az összes felsorolt keyt külön, ugyanazzal az értékkel + int pos = Array.IndexOf(stringids, key); + if (pos == -1) + { + MessageBox.Show("Warning: The translation ID \"" + key + "\" in " + filename + " is not in use. Please remove it or correct the ID."); + } + else + stringidsused[pos] = true; + } + } + for (int i = 0; i < stringids.Length; i++) + { + if (!stringidsused[i]) + { + MessageBox.Show("Warning: The translation for ID \"" + stringids[i] + "\" in " + filename + " is missing. Please add it to the file."); + } + } + this.LanguageKey = Path.GetFileNameWithoutExtension(filename); + this.Strings = finaldict; + } + + public void UnloadFromPack() //2015.05.16. + { + + } + + public bool Equals(Language other) + { //2015.05.16. + return this.LanguageKey == other.LanguageKey; + } } } diff --git a/MSGer.tk/Logging.cs b/MSGer.tk/Logging.cs index 982b180..6643c92 100644 --- a/MSGer.tk/Logging.cs +++ b/MSGer.tk/Logging.cs @@ -30,14 +30,14 @@ namespace MSGer.tk } string finaltext = "[" + Process.GetCurrentProcess().Id + ": " + Thread.CurrentThread.Name + " | " + DateTime.Now.ToString("yyyy.MM.dd. HH:mm:ss") + "] " + message + Environment.NewLine; Console.WriteLine(logtype.ToString() + " - " + finaltext); - while(true) + while (true) { bool retry = false; try { File.AppendAllText("logs\\" + path + ".txt", finaltext); } - catch(IOException) + catch (IOException) { retry = true; } diff --git a/MSGer.tk/MSGer.tk.csproj b/MSGer.tk/MSGer.tk.csproj index 96fdef3..b663c50 100644 --- a/MSGer.tk/MSGer.tk.csproj +++ b/MSGer.tk/MSGer.tk.csproj @@ -51,6 +51,9 @@ true + + packages\FCTB.2.16.11.0\lib\FastColoredTextBox.dll + D:\Downloads\GlacialListSource13\ListView\bin\Debug\GlacialList.dll @@ -71,102 +74,174 @@ - + Form - + + Emoticons.cs + + + Form + + + ErrorHandler.cs + + + Form + + AboutBox1.cs - + Form - + AddPartner.cs - + Form - + BeforeLogin.cs - + Form - + ChatForm.cs - + UserControl - + ChatPanel.cs - - - + + Form - + InvitePartner.cs + + Form + + + FloatingChatIcon.cs + + + Form + + + SelectShownImage.cs + + + UserControl + + + UserControl + + + SettingsPanelLayout.cs + + + UserControl + + + SettingsPanelNetwork.cs + + + UserControl + + + SettingsPanelPacks.cs + + + UserControl + + + SettingsPanelPersonal.cs + + + + Form + + + ThemeDesigner.cs + + + + - + Form - + LoginForm.RegistrationForm.cs - + Form - + MainForm.cs - + Form - + LoginForm.cs - + Form - - - - + + + + + Form - + Notifier.cs - + + + Form - + PartnerInformation.cs + - + Form - + + ScripterWindow.cs + + + + Form + + SettingsForm.cs - - + + + + Form - + ThemedForms.cs - - + @@ -174,65 +249,97 @@ True Resources.resx - + Form - + SelectPartnerForm.cs - + AboutBox1.cs - + AddPartner.cs - + BeforeLogin.cs - + ChatForm.cs - + ChatPanel.cs - + + Emoticons.cs + + + ErrorHandler.cs + + InvitePartner.cs - + LoginForm.RegistrationForm.cs - + MainForm.cs - + LoginForm.cs - + Notifier.cs - + PartnerInformation.cs + + FloatingChatIcon.cs + + + SelectShownImage.cs + + + SettingsPanelLayout.cs + + + SettingsPanelNetwork.cs + + + SettingsPanelPacks.cs + + + SettingsPanelPersonal.cs + + + ThemeDesigner.cs + ResXFileCodeGenerator Resources.Designer.cs Designer - + + ScripterWindow.cs + + SelectPartnerForm.cs - + SettingsForm.cs - + ThemedForms.cs - + Form - - + + + + SettingsSingleFileGenerator Settings.Designer.cs @@ -308,6 +415,9 @@ True + + + 10 mp + { //2014.08.19. - Ret.Count == tmp.Length + if (MainForm.LThread != null) //2014.09.06. + { + while (DataBuffer == null && Environment.TickCount - 1000 * count * 2 < lasttick) ; //Várakozik, amíg a másik thread át nem adja a választ - 2014.10.09. - 10 mp --> 2 mp + } + if (DataBuffer == null) //2014.08.30. - Az idő telt le + { + Console.WriteLine("Didn't get a response in time. Retrying..."); + foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs).Except(ResponsedIPs)) //2014.09.22. + { //Elküldi az összes ismert címre + try + { + SenderConnection.Send(senddata, senddata.Length, item); + } + catch (ObjectDisposedException) + { + return null; + } + } + count++; + continue; + } + if (!(!UserInfo.IPs.Any(entry => entry.Address.Equals(RemoteEP.Address)) + && ut != Networking.UpdateType.LoginUser)) + { + foreach (var item in UserInfo.IPs.Where(entry => entry == RemoteEP)) + ResponsedIPs.Add(item); + Debug.WriteLine("Received response. (" + packet.PacketType + ")"); + //var pparts = ParsePacket(DataBuffer); + var rpacket = PacketFormat.FromBytes(DataBuffer); + //if (pparts.KeyVersion != CurrentUser.KeyIndex && pparts.UpdateType != UpdateType.SetKey) + if (rpacket.KeyIndex != CurrentUser.KeyIndex && rpacket.PacketType != UpdateType.SetKey) + { + DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa + continue; + } + + int i; + for (i = 0; i < Ret.Count; i++) + { + if (DataBuffer.SequenceEqual(Ret[i])) + break; + } + if (i == Ret.Count) + Ret.Add(DataBuffer); + } //(2014.08.17. -->) Várja meg, amíg az összes online(!) ismerőse válaszol - Vagy letelik az egy perc + DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa + } + DataBuffer = null; + RemoteEP = null; + WaitingOnResponse = false; + WaitingOnPacket = 0x00; + return Ret.Select(entry => PacketFormat.FromBytes(entry)).ToArray(); + } + return null; + } + }*/ + } +} diff --git a/MSGer.tk/Networking/Networking.Threads.cs b/MSGer.tk/Networking/Networking.Threads.cs new file mode 100644 index 0000000..5874b9c --- /dev/null +++ b/MSGer.tk/Networking/Networking.Threads.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + partial class Networking + { + + public static void KeepUpThread() //TODO: KeepUpThread + { //2014.08.28. + while (true) //while: 2014.12.19. + { + Thread.Sleep(59 * 60 * 1000); //59 percenként frissíti a jelenlétét, így biztosan nem jelenti offline-nak a PHP (elvileg) + Console.WriteLine("KeepUpThread: " + Networking.SendRequest(Networking.RequestType.KeepActive, "", 0, true)); + } + } + } +} diff --git a/MSGer.tk/Networking/Networking.UpdateListAndChat.cs b/MSGer.tk/Networking/Networking.UpdateListAndChat.cs new file mode 100644 index 0000000..72e5c50 --- /dev/null +++ b/MSGer.tk/Networking/Networking.UpdateListAndChat.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class Networking + { + public class UpdateListAndChat + { + public void Run() + { + while (MainForm.PartnerListUpdateThread != null && Program.MainThread.IsAlive) + { + do + { + PacketFormat pf; + IPEndPoint remoteEP; + if (!Networking.ReceiveUpdates(out pf, out remoteEP)) + break; + IPEndPoint SendBackEP = new IPEndPoint(remoteEP.Address, pf.Port); //2015.05.10. + bool Break = false; + switch (pf.PacketType) + { + case UpdateType.ListUpdate: + { + Networking.ParseUpdateInfo(new string[1][] { ((PDListUpdate)pf.EData).Strings }); + new PacketSender(new PDListUpdate(true), pf.ID).Send(SendBackEP); + break; + } + case UpdateType.LoginUser: + { + PDLoginUser data = (PDLoginUser)pf.EData; + string tmpresp = Networking.SendRequest(Networking.RequestType.CheckUser, pf.EUserID.ToString(), 0, true); //2014.09.19. + if (tmpresp == "Fail") + { + Break = true; + break; //Nem küld el neki semmit, hanem újra várja a packet-eket + } + else if (tmpresp != "Success") + { + MessageBox.Show("LoginUser:\n" + tmpresp); + Break = true; + break; + } + + if (!UserInfo.IPs.Any(entry => entry == SendBackEP)) + UserInfo.IPs.Add(SendBackEP); + List strs = new List(); + foreach (var uinfo in data.UserInfos) + { + int uid = uinfo.Key; + int updatetime = uinfo.Value; + UserInfo user = UserInfo.Select(uid); + if (user == null) + continue; + strs.Add(user.ToString()); //Egybe rakja felhasználónként, de amikor megkapja, ugyanúgy szétválogatja majd + } + new PacketSender(new PDLoginUser(strs.ToArray()), pf.ID).Send(SendBackEP); + break; + } + case UpdateType.LogoutUser: + { //2015.05.10. - Felesleges elküldenie az IP-címeket, mint a bejelentkezésnél + UserInfo.Select(pf.EUserID).State = 0; + new PacketSender(new PDLogoutUser(), pf.ID).Send(SendBackEP); + break; + } + case UpdateType.GetImage: + { + PDGetImage data = (PDGetImage)pf.EData; + UserInfo user = UserInfo.Select(data.UserID); + bool success; + byte[] imagedata; + if (user.PicUpdateTime > data.PicUpdateTime) + { + success = true; + var ms = new MemoryStream(); + if (user.Image != null) + { + user.Image.Save(ms, ImageFormat.Tiff); //2015.05.30. + imagedata = ms.ToArray(); //2015.05.30. + } + else + { + success = false; + imagedata = new byte[0]; + } + } + else + { + success = false; + imagedata = new byte[0]; + } + new PacketSender(new PDGetImage(success, user.PicUpdateTime, imagedata), pf.ID).Send(SendBackEP); + } + break; + case UpdateType.UpdateMessages: + { + PDUpdateMessages data = (PDUpdateMessages)pf.EData; + bool success = true; + var userinfos = data.Users.Select(entry => UserInfo.Select(entry)); //2015.06.16. + if (userinfos.Except(UserInfo.KnownUsers.Where(entry => entry.IsPartner && entry.UserID != CurrentUser.UserID)).Count() == 0) + { //2015.06.16. - Leellenőrzi, hogy van-e ismerőse a listában + success = false; //2015.06.25. + } + else + { + ChatPanel cp = ChatPanel.GetChatPanelByUsers(userinfos); + if (cp == null) //2015.05.16. + cp = ChatPanel.Create(data.Users.Select(entry => UserInfo.Select(entry))); //2015.05.16. + cp.ShowReceivedMessageT(UserInfo.Select(pf.EUserID), data.Message, data.Time); + } + new PacketSender(new PDUpdateMessages(success), pf.ID).Send(SendBackEP); + } + break; + case UpdateType.SetKey: + break; //TODO + case UpdateType.SendImage: //2015.06.25. + { + PDSendImage data = (PDSendImage)pf.EData; + bool success = true; + var userinfos = data.Users.Select(entry => UserInfo.Select(entry)); + if (userinfos.Except(UserInfo.KnownUsers.Where(entry => entry.IsPartner && entry.UserID != CurrentUser.UserID)).Count() == 0) + { + success = false; + } + ChatPanel cp = ChatPanel.GetChatPanelByUsers(userinfos); + if (cp == null) + cp = ChatPanel.Create(data.Users.Select(entry => UserInfo.Select(entry))); + cp.ShowReceivedImageT(UserInfo.Select(pf.EUserID), data.Image, data.Time); + new PacketSender(new PDSendImage(success), pf.ID).Send(SendBackEP); + } + break; + case UpdateType.SendFile: //2015.06.30. + { + PDSendFile data = (PDSendFile)pf.EData; + bool success = true; + var userinfos = data.Users.Select(entry => UserInfo.Select(entry)); + if (userinfos.Except(UserInfo.KnownUsers.Where(entry => entry.IsPartner && entry.UserID != CurrentUser.UserID)).Count() == 0) + { + success = false; + } + ChatPanel cp = ChatPanel.GetChatPanelByUsers(userinfos); + if (cp == null) + cp = ChatPanel.Create(data.Users.Select(entry => UserInfo.Select(entry))); + long rprogress = cp.ShowReceivedFileT(UserInfo.Select(pf.EUserID), data.File, data.Time, data.Progress); + new PacketSender(new PDSendFile(success, rprogress, CurrentUser.IPs, CurrentUser.Port), pf.ID).Send(SendBackEP); + } + break; + default: //2015.06.25. + throw new NotImplementedException("This type (" + pf.PacketType + ") is not handled in code."); //2015.06.25. + } + if (Break) + break; + } while (false); + } + } + } + } +} diff --git a/MSGer.tk/Networking/Networking.cs b/MSGer.tk/Networking/Networking.cs new file mode 100644 index 0000000..64ed0f7 --- /dev/null +++ b/MSGer.tk/Networking/Networking.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + static partial class Networking + { + public static UdpClient SenderConnection = new UdpClient(AddressFamily.InterNetworkV6); + public static UdpClient ReceiverConnection; + public static Dictionary Senders = new Dictionary(); + + public enum UpdateType : byte + { + ListUpdate = 0x01, //0x01: OK + UpdateMessages, //0x01: OK + GetImage, //(int)0: Hiba, egyébként a kép hossza, majd a kép + LoginUser, //0x00: Hiba - Egyébként minden fontos információ, amiről "lemaradt" + LogoutUser, //0x01: OK + SetKey, //0x01: OK + SendImage, + SendFile, + }; + + private static void Log(string message) //2014.12.31. + { + Logging.Log(message, Logging.LogType.Network); + } + + public static async Task SendChatMessage(ChatPanel chat, string message, double time) + { //2014.09.22. + var tmp1 = chat.ChatPartners.Select(entry => entry.UserID).ToArray(); + int[] tmp2 = new int[tmp1.Length + 1]; + tmp1.CopyTo(tmp2, 0); + tmp2[tmp2.Length - 1] = CurrentUser.UserID; + var resp = await new PacketSender(new PDUpdateMessages(tmp2, message, time)).SendAsync(); //2015.05.15. + if (resp == null || resp.Length == 0 || resp.All(entry => !((PDUpdateMessages)entry.EData).RSuccess)) + return false; + else //Ha válaszoltak, és senki sem válaszolt nem oké jelzéssel, akkor rendben van + return true; + } + public static bool ReceiveUpdates(out PacketFormat packet, out IPEndPoint remoteep) + { + //buffer = null; //2015.03.28. + packet = null; + remoteep = null; //2015.03.28. + + IPEndPoint remoteEP; + remoteEP = new IPEndPoint(IPAddress.Any, CurrentUser.Port); //2015.05.24. + byte[] buf; + try + { + buf = ReceiverConnection.Receive(ref remoteEP); + } + catch + { + return false; //2015.03.28. + } + PacketFormat pf = PacketFormat.FromBytes(buf); + if (pf.Response) + { + if (Senders.ContainsKey(pf.ID)) + Senders[pf.ID].OnReceiveResponse(pf, remoteEP); + return false; + } + else + { + packet = pf; + remoteep = remoteEP; + return true; + } + } + } +} diff --git a/MSGer.tk/Packer/.justforgithub b/MSGer.tk/Packer/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Packer/IPackable.cs b/MSGer.tk/Packer/IPackable.cs new file mode 100644 index 0000000..a389790 --- /dev/null +++ b/MSGer.tk/Packer/IPackable.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public interface IPackable + { + bool LoadFromPack(string filename); + void UnloadFromPack(); + } + public interface IPackWithSave + { + void AddPack(string filename); + void SavePack(string filename); + string FileName { get; set; } + } + public interface IPackWithDefaults + { //2015.06.14. + } +} diff --git a/MSGer.tk/Packer/PackManager.cs b/MSGer.tk/Packer/PackManager.cs new file mode 100644 index 0000000..a3e374a --- /dev/null +++ b/MSGer.tk/Packer/PackManager.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public static class PackManager + { + private static List PackableThings = new List(); //2015.04.11. + public static void LoadAll() + { //2015.04.11. + var types = Assembly.GetExecutingAssembly().GetTypes(); + foreach (var type in types) + { + if (!typeof(IPackable).IsAssignableFrom(type) || type.IsInterface) + continue; + if (!Directory.Exists(GetName(type))) + //continue; + Directory.CreateDirectory(GetName(type)); //2015.05.16. + string[] files = Directory.GetFiles(GetName(type)); + if (files.Length == 0) + DownloadDefaults(type); //2015.06.14. + foreach (string file in files) + { + IPackable packable = Activator.CreateInstance(type, true) as IPackable; + PackableThings.Add(packable); + if (typeof(IPackWithSave).IsAssignableFrom(type) && !type.IsInterface) + (packable as IPackWithSave).FileName = file; //2015.06.06. + if (!packable.LoadFromPack(file)) + PackableThings.Remove(packable); //2015.05.24. - Ezzel elvileg előbb-utóbb törli + } + } + } + + private static void DownloadDefaults(Type type) + { //2015.06.14. +#if not_for_now + if (typeof(IPackWithDefaults).IsAssignableFrom(type) && !type.IsInterface) + { + IPackable packable = Activator.CreateInstance(type, true) as IPackable; + WebClient client = new WebClient(); + client.DownloadFile(Networking.WebAddress + "/" + GetName(type) + ".npack", GetName(type) + "\\default.npack"); + string line; + using (var sr = File.OpenText(GetName(type) + "\\default.npack")) + { + line = sr.ReadLine(); + } + if (line.StartsWith("")) + { + File.Delete(GetName(type) + "\\default.npack"); + throw new WebException("Network error while downloading default pack for " + GetName(type) + ".\n" + line); + } + PackableThings.Add(packable); + } + */ +#endif + //TODO: Az összes IPackable-t *.npack-ként mentse, az elején egy azonosítóval (GetName) + } + public static void UnloadAll() + { //2015.04.11. + foreach (var packable in PackableThings) + { + packable.UnloadFromPack(); + } + PackableThings.Clear(); + } + private static string GetName(Type type) + { //2015.05.16. + return type.Name.ToLower(); + } + public static T Add(string name) where T : class, IPackable, IPackWithSave + { //2015.06.06. + var type = typeof(T); + T packable = Activator.CreateInstance(type, true) as T; + PackableThings.Add(packable); + packable.AddPack(GetName(type) + Path.DirectorySeparatorChar + name); + return packable; + } + public static void Save(T packable) where T : class, IPackable, IPackWithSave + { + packable.SavePack(packable.FileName); + } + + internal static void Remove(T packable) where T : class, IPackable, IPackWithSave + { //2015.06.14. + File.Delete(packable.FileName); //2015.06.14. + } + } +} diff --git a/MSGer.tk/Program.cs b/MSGer.tk/Program.cs index 4aba586..f78f4f2 100644 --- a/MSGer.tk/Program.cs +++ b/MSGer.tk/Program.cs @@ -4,11 +4,15 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; using System.Globalization; using System.IO; using System.Linq; using System.Net; +using System.Net.NetworkInformation; using System.Net.Sockets; +using System.Reflection; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading; @@ -39,24 +43,14 @@ namespace MSGer.tk Console.WriteLine("Starting MSGer.tk..."); AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - try - { - //MainF = new MainForm(); - 2014.11.21. - A létrehozáskor hozzárendeli, így már akkor hozzáférhető ezen a néven - //Application.Run(MainF); - Application.Run(new MainForm()); //2014.11.21. - } - catch (FileNotFoundException e) - { - MessageBox.Show("Egy fájl nem található.\nA fájl neve:\n" + e.FileName + "\nEnnél a műveletnél: " + e.TargetSite); - - } + Load(); //2015.05.23. + Application.Run(MainF); //2015.05.23. } public static readonly bool ShowFirstChangeExceptions = false; static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { - if (MessageBox.Show("An unhandled error occured\n" + ((Exception)e.ExceptionObject).Message + "\nHere: " + ((Exception)e.ExceptionObject).TargetSite + ((e.IsTerminating) ? "\nThe program will exit(?)." : "") + "\n\nExit?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) - Program.Exit(CurrentUser.UserID != 0); //2014.09.26. - Ha be van jelentkezve, elmenti a beállításokat - Csak mert így tán a legegyszerűbb + new ErrorHandler(ErrorType.Unknown, e.ExceptionObject as Exception); //2015.05.04. } static void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e) @@ -68,21 +62,21 @@ namespace MSGer.tk private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - public static DateTime UnixTimeToDateTime(string text) + public static DateTime UnixTimeToDateTime(double seconds) { - double seconds = double.Parse(text, CultureInfo.InvariantCulture); //2014.04.25. DateTime time = Epoch.AddSeconds(seconds); time = DateTime.SpecifyKind(time, DateTimeKind.Utc); return time.ToLocalTime(); } - public static string DateTimeToUnixTime(DateTime time) //2014.08.28. + public static double DateTimeToUnixTime(DateTime time) { - return ((time.Ticks - 621355968000000000) / 10000000).ToString(); + time = time.ToUniversalTime(); //2015.07.04. + return ((time.Ticks - 621355968000000000) / 10000000); } - private static void BeforeExit(bool savesettings) + private static void BeforeExit() { //2014.09.01. if (MainF != null) { @@ -95,41 +89,118 @@ namespace MSGer.tk CurrentUser.SendChanges = false; //2014.08.30. MainF.SetOnlineState(null, null); //2014.04.12.) if (MainF.WindowState == FormWindowState.Maximized) //2014.04.18. - 2014.08.08. - Storage.Settings["windowstate"] = "1"; + Storage.Settings[SettingType.WindowState] = "1"; else if (MainF.WindowState == FormWindowState.Minimized) - Storage.Settings["windowstate"] = "2"; + Storage.Settings[SettingType.WindowState] = "2"; else if (MainF.WindowState == FormWindowState.Normal) - Storage.Settings["windowstate"] = "3"; + Storage.Settings[SettingType.WindowState] = "3"; Storage.Save(true); //2014.08.07. } } - if (savesettings) //2014.08.28. - Storage.Save(false); //2014.08.08. + if (Storage.IsLoaded) + Storage.Save(false); if (Networking.ReceiverConnection != null) Networking.ReceiverConnection.Close(); if (Networking.SenderConnection != null) Networking.SenderConnection.Close(); } - public static void Exit(bool savesettings) + public static void Exit() //2015.06.04. { //2014.04.12. - BeforeExit(savesettings); + BeforeExit(); Environment.Exit(0); //Hatásosabb MessageBox.Show("Hiba: Nem sikerült leállítani a programot."); } - public static void Exit() - { //2014.08.28. - Csak akkor ne mentse el a beállításokat, ha nem is töltötte még be őket - Exit(true); - } - public static void Restart(bool savesettings) + public static void Restart() { //2014.09.01. - BeforeExit(savesettings); + BeforeExit(); Process.Start(((ProcessName.Contains("vshost")) ? ProcessName.Replace(".vshost", "") : ProcessName) + ".exe"); Environment.Exit(0); MessageBox.Show("Hiba: Nem sikerült leállítani a programot."); } + public static Thread MainThread = null; + public static void Load() + { + BeforeLogin.SetText("Starting..."); + Thread.CurrentThread.Name = "Main Thread"; + + BeforeLogin.SetText("Loading program settings..."); + Storage.Load(false); //Töltse be a nyelvet, legutóbb használt E-mail-t... + + BeforeLogin.SetText("Checking available ports..."); + SetPort(); + + BeforeLogin.SetText("Loading packs..."); + PackManager.LoadAll(); //2015.05.16. + + MainThread = Thread.CurrentThread; //2015.05.23. + MainF = new MainForm(); //2015.05.23. + + BeforeLogin.SetText(Language.Translate(Language.StringID.BeforeLogin_CheckForUpdates)); + //2014.04.25. + string response = Networking.SendRequest(Networking.RequestType.CheckForUpdates, + Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""), + 0, false); + if (response == "outofdate") + { + var res = MessageBox.Show(Language.Translate(Language.StringID.OutOfDate), Language.Translate(Language.StringID.OutOfDate_Caption), MessageBoxButtons.YesNo); + if (res == DialogResult.Yes) + { //2014.12.13. + Process.Start("Updater.exe", "\"" + Language.Translate(Language.StringID.Updater) + "\""); //2015.06.14. + Program.Exit(); + } + } + else if (response != "fine") + new ErrorHandler(ErrorType.ServerError, new Exception(response)); //2015.06.04. + + BeforeLogin.SetText(Language.Translate(Language.StringID.BeforeLogin_LoginForm)); + var LoginDialog = new LoginForm(); //2015.05.23. + BeforeLogin.Destroy(); + LoginDialog.ShowDialog(); + //Nézzük, sikerült-e + if (CurrentUser.UserID == 0) + return; //2014.09.06. + + // Start the thread + MainForm.PartnerListUpdateThread.Start(); //Áthelyezve: 2015.06.30. + + Storage.Load(true); //2014.08.07. + } + + /// + /// Beállítja a portot a Storage.Settings-ben található értéktől kezdve a legelső elérhető portra + /// + public static void SetPort() + { + if (Storage.Settings[SettingType.Port] == "") + Storage.Settings[SettingType.Port] = "4510"; //2015.05.21. + CurrentUser.Port = int.Parse(Storage.Settings[SettingType.Port]); //2015.05.24. + while (true) + { + if (IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Select(entry => entry.Port).Contains(CurrentUser.Port)) //2015.05.24. + CurrentUser.Port++; //2015.05.24. + else + break; + } + Networking.ReceiverConnection = new UdpClient(CurrentUser.Port, AddressFamily.InterNetworkV6); //2015.05.24. + Networking.SenderConnection.AllowNatTraversal(true); //2014.09.04. + } + + public static Image LoadImageFromFile(string path) + { //2015.06.06. + //TODO: Ellenőrizni és használni mindenhol, ahol kell - http://stackoverflow.com/questions/12680618/exception-parameter-is-not-valid-on-passing-new-image-to-picturebox + using (Image sourceImg = Image.FromFile(path)) + { + Image clonedImg = new Bitmap(sourceImg.Width, sourceImg.Height, PixelFormat.Format32bppArgb); + using (var copy = Graphics.FromImage(clonedImg)) + { + copy.DrawImage(sourceImg, 0, 0); + } + return clonedImg; + } + } } - static class EnumerableExtensions + static class Extensions { public static bool HasSameElementsAs( this IEnumerable first, @@ -177,13 +248,18 @@ namespace MSGer.tk public static IEnumerable GetAll(this Control control, Type type = null) { //2015.02.26. var controls = control.Controls.Cast(); - - /*return controls.SelectMany(ctrl => GetAll(ctrl, type)) - .Concat(controls) - .Where(c => c.GetType() == type);*/ var ret = controls.SelectMany(ctrl => GetAll(ctrl, type)) .Concat(controls); return (type == null) ? ret : ret.Where(c => c.GetType() == type); } + public static void AppendText(this RichTextBox box, string text, Color color) + { + box.SelectionStart = box.TextLength; + box.SelectionLength = 0; + + box.SelectionColor = color; + box.AppendText(text); + box.SelectionColor = box.ForeColor; + } } } diff --git a/MSGer.tk/Properties/.justforgithub b/MSGer.tk/Properties/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Properties/AssemblyInfo.cs b/MSGer.tk/Properties/AssemblyInfo.cs index 0d583f3..8c6aa49 100644 --- a/MSGer.tk/Properties/AssemblyInfo.cs +++ b/MSGer.tk/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.0.0")] -[assembly: AssemblyFileVersion("3.0.0.0")] +[assembly: AssemblyVersion("2.5.0.0")] +[assembly: AssemblyFileVersion("2.5.0.0")] diff --git a/MSGer.tk/Properties/Resources.Designer.cs b/MSGer.tk/Properties/Resources.Designer.cs index fa972d7..5e9641f 100644 --- a/MSGer.tk/Properties/Resources.Designer.cs +++ b/MSGer.tk/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -89,5 +89,15 @@ namespace MSGer.tk.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap noimage { + get { + object obj = ResourceManager.GetObject("noimage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/MSGer.tk/Properties/Resources.resx b/MSGer.tk/Properties/Resources.resx index 23a4950..ab2f697 100644 --- a/MSGer.tk/Properties/Resources.resx +++ b/MSGer.tk/Properties/Resources.resx @@ -127,4 +127,7 @@ ..\Resources\Menü 2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\resources\noimage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/MSGer.tk/Resources/.justforgithub b/MSGer.tk/Resources/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Resources/noimage.png b/MSGer.tk/Resources/noimage.png new file mode 100644 index 0000000000000000000000000000000000000000..7519e198fe9e577d829ab9ab98a7bd6e04c92f9a GIT binary patch literal 5023 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 l;-Afzzkg4PU$?p Settings = new Dictionary(); + public static Dictionary Settings = new Dictionary(); //2015.05.21. + /// + /// Csak betöltéskor (2015.05.24.) + /// public static Dictionary LoggedInSettings = new Dictionary(); public static readonly string PasswordHash = "PWPassword"; public static string SaltKey; //Bejelentkezéskor kapja meg @@ -28,14 +31,10 @@ namespace MSGer.tk { if (!loggedin) { - Settings.Add("email", ""); - Settings.Add("windowstate", "3"); - Settings.Add("lang", CultureInfo.InstalledUICulture.TwoLetterISOLanguageName); - Settings.Add("port", "4510"); //Use this to connect to different users <-- És fogalmam sincs, miért angolul írtam... - Settings.Add("lastusedemail", "0"); - Settings.Add("filelen", "-1"); //(long) Maximum fájlméret, ameddig bemásolhatja a memóriába - //Settings.Add("isserver", ""); - Settings.Add("chatwindow", "0"); + var settings = typeof(SettingType).GetEnumValues(); + foreach (SettingType setting in settings) + Settings.Add(setting, ""); //TO!DO: Az alapértelmezett értékeket állítsa be + IsLoaded = true; //2015.06.04. } } else @@ -43,11 +42,15 @@ namespace MSGer.tk Parse(Decrypt(Read(loggedin)), loggedin); if (loggedin) UserInfo.Load(); + if (!loggedin) + IsLoaded = true; //2015.06.14. } } public static void Save(bool loggedin) { + if (!IsLoaded && !loggedin) //!loggedin: 2015.06.14. + return; //2015.06.04. if (!loggedin) SaltKey = "nologinnologinnologinnologin"; Write(Encrypt(GetString(loggedin)), loggedin); @@ -70,7 +73,7 @@ namespace MSGer.tk { foreach (var entry in Settings) { - s += entry.Key; + s += (int)entry.Key; //2015.05.21. s += "="; s += entry.Value; s += "\n"; @@ -82,43 +85,42 @@ namespace MSGer.tk private static void Parse(string filecontent, bool loggedin) { string[] splitCache = filecontent.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); - var tmp = splitCache.ToDictionary( - entry => entry.Substring(0, entry.IndexOf("=")), - entry => entry.Substring(entry.IndexOf("=") + 1)); if (loggedin) - LoggedInSettings = tmp; + { + LoggedInSettings = splitCache.ToDictionary( + entry => entry.Substring(0, entry.IndexOf("=")), + entry => entry.Substring(entry.IndexOf("=") + 1)); + } else - Settings = tmp; + { + Settings = splitCache.ToDictionary( + entry => (SettingType)int.Parse(entry.Substring(0, entry.IndexOf("="))), //string --> SettingType: 2015.05.21. + entry => entry.Substring(entry.IndexOf("=") + 1)); + } } public static void Parse(string filecontent) //Publikus metódus { string[] splitCache = filecontent.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); var tmp = splitCache.ToDictionary( - entry => "userinfo_" + entry.Substring(0, entry.IndexOf("=")), + //entry => "userinfo_" + entry.Substring(0, entry.IndexOf("=")), - 2015.05.10. + entry => entry.Substring(0, entry.IndexOf("=")), entry => entry.Substring(entry.IndexOf("=") + 1)); LoggedInSettings = LoggedInSettings.Concat(tmp) .ToLookup(pair => pair.Key, pair => pair.Value) .ToDictionary(group => group.Key, group => group.Last()); } - + public static byte[] Encrypt(byte[] content, string code) { - //byte[] plainTextBytes = content; byte[] keyBytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(code)).GetBytes(256 / 8); var symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.None }; var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey)); byte[] plainTextBytes; - //if (content.Length + 4 > keyBytes.Length) - /*plainTextBytes = new byte[content.Length + 4]; - else - plainTextBytes = new byte[content.Length + 4];*/ int targetsize = content.Length + 16 - content.Length % 16; //Hozzáadja a hosszához a hossz 16-tal való osztásának maradékát - Tehát 16-tal osztható lesz plainTextBytes = new byte[targetsize]; - /*Array.Copy(BitConverter.GetBytes(content.Length), plainTextBytes, 4); - Array.Copy(content, 0, plainTextBytes, 4, content.Length);*/ Array.Copy(content, plainTextBytes, content.Length); byte[] cipherTextBytes; @@ -150,9 +152,8 @@ namespace MSGer.tk public static byte[] Decrypt(byte[] b, bool tr, string code) { - //byte[] cipherTextBytes = b; int len = BitConverter.ToInt32(b, 0); - byte[] cipherTextBytes = new byte[len]; + byte[] cipherTextBytes = new byte[b.Length - 4]; //b.Length: 2015.04.03. Array.Copy(b, 4, cipherTextBytes, 0, b.Length - 4); //Itt még az eredeti, feltöltött hosszal számol byte[] keyBytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(code)).GetBytes(256 / 8); var symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.None }; @@ -160,15 +161,9 @@ namespace MSGer.tk var decryptor = symmetricKey.CreateDecryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey)); var memoryStream = new MemoryStream(cipherTextBytes); var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read); - byte[] plainTextBytes = new byte[cipherTextBytes.Length]; - //List plainTextBytes = new List(); //2014.12.18. + byte[] plainTextBytes = new byte[len]; //2015.04.03. int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length); - /*int r=0; //2014.12.18. - while ((r = cryptoStream.ReadByte()) != -1) - { //2014.12.18. - plainTextBytes.Add((byte)r); - }*/ memoryStream.Close(); cryptoStream.Close(); byte[] ret = new byte[len]; @@ -218,5 +213,18 @@ namespace MSGer.tk { LoggedInSettings = new Dictionary(); } + + public static bool IsLoaded { get; private set; } + } + public enum SettingType + { + Email, + WindowState, + Lang, + Port, + LastUsedEmail, + FileLen, + ChatWindow, + Theme } } diff --git a/MSGer.tk/TextBoxHelpers.cs b/MSGer.tk/TextBoxHelpers.cs new file mode 100644 index 0000000..0a4e057 --- /dev/null +++ b/MSGer.tk/TextBoxHelpers.cs @@ -0,0 +1,116 @@ +using FastColoredTextBoxNS; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public static class TextBoxHelpers + { + /// + /// This class is used as text renderer for smiles + /// + public class GifImageStyle : TextStyle + { + public Dictionary ImagesByText { get; private set; } + public Dictionary SentImagesByText { get; private set; } + FastColoredTextBox parent; + System.Windows.Forms.Timer timer; + + public GifImageStyle(FastColoredTextBox parent) + : base(null, null, FontStyle.Regular) + { + ImagesByText = new Dictionary(); + SentImagesByText = new Dictionary(); //2015.06.26. + this.parent = parent; + + //create timer + timer = new System.Windows.Forms.Timer(); + timer.Interval = 100; + timer.Tick += (EventHandler)delegate + { + ImageAnimator.UpdateFrames(); + parent.Invalidate(); + }; + timer.Start(); + } + + private int counter = 0; + public string AddImage(Image image) + { + string str = "//!img" + counter++; + //ImagesByText.Add(str, image); + SentImagesByText.Add(str, image); //2015.04.07. + return str; + } + + public void StartAnimation() + { + foreach (var image in ImagesByText.Values) + if (ImageAnimator.CanAnimate(image)) + ImageAnimator.Animate(image, new EventHandler(OnFrameChanged)); + } + + void OnFrameChanged(object sender, EventArgs args) + { + } + + public override void Draw(Graphics gr, Point position, Range range) + { + string text = range.Text; + int iChar = range.Start.iChar; + + while (text != "") + { + bool replaced = false; + foreach (var pair in ImagesByText) + { + if (text.StartsWith(pair.Key)) + { + float k = (float)(pair.Key.Length * range.tb.CharWidth) / pair.Value.Width; + if (k > 1) + k = 1f; + // + text = text.Substring(pair.Key.Length); + RectangleF rect = new RectangleF(position.X + range.tb.CharWidth * pair.Key.Length / 2 - pair.Value.Width * k / 2, position.Y, pair.Value.Width * k, pair.Value.Height * k); + gr.DrawImage(pair.Value, rect); + position.Offset(range.tb.CharWidth * pair.Key.Length, 0); + replaced = true; + iChar += pair.Key.Length; + break; + } + } + + //Képküldés + + foreach (var pair in SentImagesByText) + { + if (!pair.Key.StartsWith("//!img")) + throw new InvalidOperationException("An invalid text got set as image placeholder."); //2015.06.26. + if (text.StartsWith(pair.Key)) + { + text = text.Substring(pair.Key.Length); + RectangleF rect = new RectangleF(0, position.Y, pair.Value.Width, pair.Value.Height); + gr.DrawImage(pair.Value, rect); + position.Offset(range.tb.CharWidth * pair.Key.Length, 0); + //position.Offset(-position.X, pair.Value.Height); //2015.07.04. + replaced = true; + iChar += pair.Key.Length; + break; + } + } + if (!replaced && text.Length > 0) + { + Range r = new Range(range.tb, iChar, range.Start.iLine, iChar + 1, range.Start.iLine); + base.Draw(gr, position, r); + position.Offset(range.tb.CharWidth, 0); + text = text.Substring(1); + } + } + } + } + } +} diff --git a/MSGer.tk/TextFormat.cs b/MSGer.tk/TextFormat.cs index 70404f4..33683db 100644 --- a/MSGer.tk/TextFormat.cs +++ b/MSGer.tk/TextFormat.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; +using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -10,67 +11,103 @@ using System.Threading.Tasks; namespace MSGer.tk { - class TextFormat + class TextFormat : IPackable, IPackWithSave { - public TextFormat() + private TextFormat() { - var img = Image.FromFile("emoticons\\iconbase.png"); - var bitmap = new Bitmap(img); - int x = 0; - Bitmap bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); - x += 19; - new TextFormat(":)", bitmap1); - new TextFormat(":-)", bitmap1); - bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); - x += 19; - new TextFormat(":D", bitmap1); - new TextFormat(":-D", bitmap1); - new TextFormat(":d", bitmap1); - new TextFormat(":-d", bitmap1); - bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); - x += 19; - new TextFormat(";)", bitmap1); - new TextFormat(";-)", bitmap1); - bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); - x += 19; - new TextFormat(":O", bitmap1); - new TextFormat(":o", bitmap1); - new TextFormat(":-O", bitmap1); - new TextFormat(":-o", bitmap1); - bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); - x += 19; - new TextFormat(":P", bitmap1); - new TextFormat(":-P", bitmap1); - new TextFormat(":p", bitmap1); - new TextFormat(":-p", bitmap1); + } - bitmap.Dispose(); + public static List TextFormats = new List(); //2015.06.06. + private static IEnumerable GetEmoticons() + { //2015.06.06. + return TextFormats.SelectMany(entry => entry.Emoticons); } - private TextFormat(string text, Image image) - { - var tmp = new ImgReplaceStrs(); - tmp.Text = text; - tmp.Image = image; - ImgReplaceStrings.Add(tmp); - } - public static List ImgReplaceStrings = new List(); - public static ExRichTextBox Parse(ExRichTextBox textbox) - { - for (int i = 0; i < ImgReplaceStrings.Count; i++) - { //2014.10.12. - int index=0; - while((index=textbox.Text.IndexOf(ImgReplaceStrings[i].Text))!=-1) - { - textbox.Select(index, ImgReplaceStrings[i].Text.Length); - textbox.InsertImage(ImgReplaceStrings[i].Image); - } + + public List Emoticons = new List(); //2015.06.06. + public bool LoadFromPack(string filename) //2015.05.03. + { //2015.05.24. + if (Path.GetExtension(filename) != ".npack") + return false; //2015.06.06. + var fs = File.Open(filename, FileMode.Open); //2015.06.06. + if (fs.Length <= 10) + { + fs.Dispose(); + return false; //2015.06.06. - TODO: Hasonló ellenőrzéseket a többi packhoz is } - return textbox; + var br = new BinaryReader(fs); //2015.06.06. + int count = br.ReadInt32(); //2015.06.06. + for (int i = 0; i < count; i++) + { + string id = br.ReadString(); //2015.06.06. + int len = br.ReadInt32(); //2015.06.06. + byte[] buf = new byte[len]; //2015.06.06. + fs.Read(buf, 0, len); //2015.06.06. + var ms = new MemoryStream(buf); //2015.06.06. + ms.Seek(0, SeekOrigin.Begin); //2015.06.06. + var bitmap = new Bitmap(ms); + ms.Dispose(); //2015.06.06. + Emoticon emoticon = new Emoticon(id); //2015.06.06. + bitmap.MakeTransparent(Color.White); //2015.06.06. + emoticon.Image = (Bitmap)bitmap.Clone(); //2015.07.05. + bitmap.Dispose(); //2015.07.05. + Emoticons.Add(emoticon); //2015.06.06. + } + Name = Path.GetFileNameWithoutExtension(filename); //2015.06.06. + TextFormats.Add(this); //2015.06.06. + fs.Dispose(); //2015.06.06. + br.Dispose(); //2015.06.06. + return true; + } + + public void UnloadFromPack() //2015.05.03. + { //2015.05.24. + foreach (var entry in Emoticons) //<-- 2015.06.06. + entry.Image.Dispose(); //2015.07.05. + } + + private string Name; + + public override string ToString() + { //2015.06.06. + return Name; + } + + public void AddPack(string filename) + { + FileName = filename; + } + + public void SavePack(string filename) + { //2015.06.06. + var fs = File.Open(filename, FileMode.Create); + var bw = new BinaryWriter(fs); + bw.Write(Emoticons.Count); + for (int i = 0; i < Emoticons.Count; i++) + { + bw.Write(Emoticons[i].Value); + var ms = new MemoryStream(); + Emoticons[i].Image.Save(ms, ImageFormat.Gif); //2015.07.05. + bw.Write((int)ms.Length); + ms.Seek(0, SeekOrigin.Begin); + ms.CopyTo(fs); + ms.Dispose(); + } + fs.Dispose(); + } + + public string FileName + { + get; + set; } } - class ImgReplaceStrs - { - public string Text; - public Image Image; + public class Emoticon + { //2015.06.06. + public Bitmap Image; //2015.07.05. + public string Value; + public Emoticon(string value) + { + Value = value; + } } } diff --git a/MSGer.tk/Theme/.justforgithub b/MSGer.tk/Theme/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/Theme/MSGerToolStripRenderer.cs b/MSGer.tk/Theme/MSGerToolStripRenderer.cs new file mode 100644 index 0000000..327dab0 --- /dev/null +++ b/MSGer.tk/Theme/MSGerToolStripRenderer.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + /*class MSGerToolStripRenderer : ToolStripRenderer + { //TO!DO + protected override void Initialize(ToolStrip toolStrip) + { + base.Initialize(toolStrip); + toolStrip.ForeColor = Color.Blue; //2015.05.16. + } + protected override void InitializeContentPanel(ToolStripContentPanel contentPanel) + { + base.InitializeContentPanel(contentPanel); + } + protected override void InitializeItem(ToolStripItem item) + { + base.InitializeItem(item); + item.ForeColor = Color.Blue; //2015.05.16. + } + protected override void InitializePanel(ToolStripPanel toolStripPanel) + { + base.InitializePanel(toolStripPanel); + } + protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) + { + base.OnRenderArrow(e); + } + protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderButtonBackground(e); + } + protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderDropDownButtonBackground(e); + } + protected override void OnRenderGrip(ToolStripGripRenderEventArgs e) + { + base.OnRenderGrip(e); + } + protected override void OnRenderImageMargin(ToolStripRenderEventArgs e) + { + base.OnRenderImageMargin(e); + // + } + protected override void OnRenderItemBackground(ToolStripItemRenderEventArgs e) + { + //base.OnRenderItemBackground(e); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(0, 0, e.Item.Width, e.Item.Height)); + e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), e.Item.Bounds); + } + protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e) + { + base.OnRenderItemCheck(e); + } + protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e) + { + base.OnRenderItemImage(e); + } + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + base.OnRenderItemText(e); + // + } + protected override void OnRenderLabelBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderLabelBackground(e); + } + protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderMenuItemBackground(e); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(0, 0, e.Item.Width, e.Item.Height)); + e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), e.Item.Bounds); + } + protected override void OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderOverflowButtonBackground(e); + } + protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e) + { + base.OnRenderSeparator(e); + // + } + protected override void OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderSplitButtonBackground(e); + } + protected override void OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs e) + { + base.OnRenderStatusStripSizingGrip(e); + } + protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) + { + base.OnRenderToolStripBackground(e); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(0, 0, e.ToolStrip.Width, e.ToolStrip.Height)); + //e.Graphics.DrawRectangle(new Pen(Brushes.Blue), e.AffectedBounds); + //e.Graphics.FillRectangle(Brushes.DarkBlue, e.AffectedBounds); //2015.05.16. + //e.Graphics.DrawImage(Properties.Resources.Blue_Wallpaper_HD_2, new Point()); //2015.05.16. + //Theme.SkinThis(Theme.ThemePart.MenuBackground, e.Graphics); //2015.05.22. + } + protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) + { + base.OnRenderToolStripBorder(e); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.LightBlue)), new Rectangle(0, 0, e.ToolStrip.Width, e.ToolStrip.Height)); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.LightBlue)), e.AffectedBounds); + //e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.LightBlue)), e.AffectedBounds); //2015.05.16. + } + protected override void OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs e) + { + base.OnRenderToolStripContentPanelBackground(e); + } + protected override void OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs e) + { + base.OnRenderToolStripPanelBackground(e); + } + protected override void OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs e) + { + base.OnRenderToolStripStatusLabelBackground(e); + } + }*/ +} diff --git a/MSGer.tk/Theme/NoImage.cs b/MSGer.tk/Theme/NoImage.cs new file mode 100644 index 0000000..677679d --- /dev/null +++ b/MSGer.tk/Theme/NoImage.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public class NoImage //TODO: Kiválasztható legyen az összes típus egy listából + { //2015.07.03. + public Image NoImg = new Bitmap(200, 200); + } +} diff --git a/MSGer.tk/Theme/Theme.cs b/MSGer.tk/Theme/Theme.cs new file mode 100644 index 0000000..56ed6c0 --- /dev/null +++ b/MSGer.tk/Theme/Theme.cs @@ -0,0 +1,165 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public class Theme : IPackable, IPackWithDefaults, IPackWithSave + { + public void Save(string themepath) + { + //2015.05.03. + var fs = File.Open(themepath, FileMode.Create); + var bw = new BinaryWriter(fs); + bw.Write(Name); //Név + bw.Write(Description); //Leírás + bw.Write(Creators); //Készítő(k) + bw.Write(Controls.Count); + foreach (var pair in Controls) //2015.07.03. + { //2015.07.03. + bw.Write(pair.Key.AssemblyQualifiedName); //2015.07.05. + pair.Value.Save(bw); + } + } + private Theme() + { //2015.04.11. + + } + public Dictionary> ControlsByType = new Dictionary>(); //2015.07.03. + public static void ApplyTheme(Type onlythis = null) + { //2015.07.03. + var action = new Action>((type, list) => + { + foreach (Control control in list) + SkinControl(control); + }); + if (onlythis == null) + { + foreach (var item in CurrentTheme.ControlsByType) + action(item.Key, item.Value); + } + else + action(onlythis, CurrentTheme.ControlsByType[onlythis]); + } + + public static void SkinControl(Control control) + { + using (var gr = control.CreateGraphics()) //2015.07.03. + SkinThis(control.GetType(), gr); //2015.07.03. + + } + + //TODO: (2015.04.11.) Ne csak képeket tudjon kezelni, háttérszíneket, előtérszíneket, akár betűméretet/típust is + //TODO: (2015.04.11.) Egyedi betűtípusokat is - Talán + public Dictionary Controls = new Dictionary(); //2015.07.03. + public static List Themes = new List(); + private static Theme currenttheme; //2015.05.22. + public static Theme CurrentTheme + { + get + { //2015.05.22. + if (currenttheme == null) + { + currenttheme = Themes.FirstOrDefault(entry => entry.Name == Storage.Settings[SettingType.Theme]); //Single-->FirstOrDefault: 2015.06.06. + } + return currenttheme; + } + set + { //2015.05.22. + currenttheme = value; + Storage.Settings[SettingType.Theme] = currenttheme.Name; + } + } + + public string Name; + public string Description; + public string Creators; + + public bool LoadFromPack(string filename) + { + var fs = File.Open(filename, FileMode.Open); + var br = new BinaryReader(fs); + if (fs.Length < 5) + return false; //2015.07.05. + Name = br.ReadString(); //Név + Description = br.ReadString(); //Leírás + Creators = br.ReadString(); //Készítő(k) + int count = br.ReadInt32(); //2015.05.03. + for (int i = 0; i < count; i++) + { + string tmp = br.ReadString(); + Type type = Type.GetType(tmp); + ThemeControl control = new ThemeControl(br); + Controls.Add(type, control); //2015.07.03. + } + Themes.Add(this); + if (CurrentTheme == null) //TODO: TMP + CurrentTheme = this; //2015.07.05. + return true; + } + + public void UnloadFromPack() + { + //Ha törli az egységes listából, törli az egész rendszerből + } + + public static void SkinThis(Type controltype, Graphics graphics) //controltype: 2015.07.03. + { //2015.05.22. + if (CurrentTheme == null) + return; + if(!CurrentTheme.Controls.ContainsKey(controltype)) + { //2015.07.03. + //MessageBox.Show("Cannot theme this control type: " + controltype); //TODO: Több téma támogatása egyszerre (Minecraft resource pack) + return; + } + ThemeControl control = CurrentTheme.Controls[controltype]; + switch (control.ControlType) + { + case ThemeControlTypes.Colors: + graphics.FillRectangle(new SolidBrush(control.Color), graphics.ClipBounds); //2015.07.05. + break; + case ThemeControlTypes.Dynamic: //2015.07.05. + IScriptTheme script = null; //TODO + script.SkinThis(controltype, control, graphics); + break; + case ThemeControlTypes.Image: //2015.07.05. + graphics.DrawImage(control.Image, new Rectangle(new Point(), graphics.ClipBounds.Size.ToSize())); + break; + } + } + public static void SetRenderer(ToolStrip toolstrip) //2015.07.05. + { //TODO + + } + public override string ToString() + { //2015.07.03. + return Name; + } + + public void AddPack(string filename) + { + FileName = filename; + Name = Path.GetFileNameWithoutExtension(filename); //2015.07.05. + Description = ""; //TODO - 2015.07.05. + Creators = ""; //2015.07.05. + } + + public void SavePack(string filename) + { //2015.07.03. + Save(filename); + } + + public string FileName + { //2015.07.03. + get; + set; + } + } +} diff --git a/MSGer.tk/Theme/ThemeControl.cs b/MSGer.tk/Theme/ThemeControl.cs new file mode 100644 index 0000000..3c2f206 --- /dev/null +++ b/MSGer.tk/Theme/ThemeControl.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; + +namespace MSGer.tk +{ + public class ThemeControl + { //2015.04.11. + public ThemeControlTypes ControlType { get; private set; } //2015.05.03. + public Image Image { get; private set; } //2015.05.03. + public string Script { get; private set; } //2015.05.03. + public Color Color { get; private set; } //2015.07.05. + public Color ForeColor { get; private set; } //2015.05.16. + + public ThemeControl(BinaryReader br) + { + var type = (ThemeControlTypes)br.ReadInt32(); + ControlType = type; //2015.05.16. + ForeColor = Color.FromArgb(br.ReadInt32()); //2015.05.16. + switch (type) + { + case ThemeControlTypes.Dynamic: + { //2015.05.16. + Script = br.ReadString(); + break; + } + case ThemeControlTypes.Image: + { //2015.05.16. + int len = br.ReadInt32(); + byte[] imgdata = br.ReadBytes(len); + MemoryStream ms = new MemoryStream(imgdata); + Image = Image.FromStream(ms); + break; + } + case ThemeControlTypes.Colors: + { //2015.05.22. + ForeColor = Color.FromArgb(br.ReadInt32()); + Color = Color.FromArgb(br.ReadInt32()); //2015.07.05. + break; + } + } + } + + public ThemeControl(Color forecolor, Image image) + { //2015.07.04. + ControlType = ThemeControlTypes.Image; //2015.07.05. + ForeColor = forecolor; + Image = image; + } + + public ThemeControl(Color forecolor, Color color) + { //2015.07.04. + ControlType = ThemeControlTypes.Colors; //2015.07.05. + ForeColor = forecolor; + Color = color; //2015.07.05. + } + + public ThemeControl(Color forecolor, string script) + { //2015.07.04. + ControlType = ThemeControlTypes.Dynamic; //2015.07.05. + ForeColor = forecolor; + Script = script; + } + + public void Save(BinaryWriter bw) + { //2015.05.16. + bw.Write((int)ControlType); + bw.Write(ForeColor.ToArgb()); + switch (ControlType) + { + case ThemeControlTypes.Dynamic: + { + bw.Write(Script); + break; + } + case ThemeControlTypes.Image: + { + MemoryStream ms = new MemoryStream(); + Image.Save(ms, ImageFormat.Tiff); + bw.Write(ms.Length); + bw.Write(ms.ToArray()); + break; + } + case ThemeControlTypes.Colors: + { //2015.05.22. + bw.Write(ForeColor.ToArgb()); + bw.Write(Color.ToArgb()); //2015.07.05. + break; + } + } + } + } + public enum ThemeControlTypes + { //2015.04.11. + Dynamic, + Image, + Colors + } +} diff --git a/MSGer.tk/Theme/ThemedForms.Designer.cs b/MSGer.tk/Theme/ThemedForms.Designer.cs new file mode 100644 index 0000000..074a872 --- /dev/null +++ b/MSGer.tk/Theme/ThemedForms.Designer.cs @@ -0,0 +1,120 @@ +namespace MSGer.tk +{ + partial class ThemedForms + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.containerPanel = new System.Windows.Forms.Panel(); + this.titleLabel = new System.Windows.Forms.Label(); + this.CloseButton = new System.Windows.Forms.PictureBox(); + this.MaximizeButton = new System.Windows.Forms.PictureBox(); + this.MinimizeButton = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).BeginInit(); + this.SuspendLayout(); + // + // containerPanel + // + this.containerPanel.Location = new System.Drawing.Point(12, 30); + this.containerPanel.Name = "containerPanel"; + this.containerPanel.Size = new System.Drawing.Size(123, 51); + this.containerPanel.TabIndex = 0; + // + // titleLabel + // + this.titleLabel.AutoSize = true; + this.titleLabel.Location = new System.Drawing.Point(13, 11); + this.titleLabel.Name = "titleLabel"; + this.titleLabel.Size = new System.Drawing.Size(27, 13); + this.titleLabel.TabIndex = 1; + this.titleLabel.Text = "Title"; + // + // CloseButton + // + this.CloseButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.CloseButton.Location = new System.Drawing.Point(122, 1); + this.CloseButton.Name = "CloseButton"; + this.CloseButton.Size = new System.Drawing.Size(24, 23); + this.CloseButton.TabIndex = 2; + this.CloseButton.TabStop = false; + this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); + // + // MaximizeButton + // + this.MaximizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MaximizeButton.Location = new System.Drawing.Point(92, 1); + this.MaximizeButton.Name = "MaximizeButton"; + this.MaximizeButton.Size = new System.Drawing.Size(24, 23); + this.MaximizeButton.TabIndex = 3; + this.MaximizeButton.TabStop = false; + this.MaximizeButton.Click += new System.EventHandler(this.MaximizeButton_Click); + // + // MinimizeButton + // + this.MinimizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MinimizeButton.Location = new System.Drawing.Point(62, 1); + this.MinimizeButton.Name = "MinimizeButton"; + this.MinimizeButton.Size = new System.Drawing.Size(24, 23); + this.MinimizeButton.TabIndex = 4; + this.MinimizeButton.TabStop = false; + this.MinimizeButton.Click += new System.EventHandler(this.MinimizeButton_Click); + // + // ThemedForms + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(147, 93); + this.Controls.Add(this.MinimizeButton); + this.Controls.Add(this.MaximizeButton); + this.Controls.Add(this.CloseButton); + this.Controls.Add(this.titleLabel); + this.Controls.Add(this.containerPanel); + this.Name = "ThemedForms"; + this.Text = "ThemedForms"; + this.DoubleClick += new System.EventHandler(this.ThemedForms_DoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseDown); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseUp); + this.Resize += new System.EventHandler(this.ThemedForms_Resize); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + + private System.Windows.Forms.Panel containerPanel; + private System.Windows.Forms.Label titleLabel; + private System.Windows.Forms.PictureBox CloseButton; + private System.Windows.Forms.PictureBox MaximizeButton; + private System.Windows.Forms.PictureBox MinimizeButton; + } +} \ No newline at end of file diff --git a/MSGer.tk/Theme/ThemedForms.cs b/MSGer.tk/Theme/ThemedForms.cs new file mode 100644 index 0000000..053f126 --- /dev/null +++ b/MSGer.tk/Theme/ThemedForms.cs @@ -0,0 +1,258 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public partial class ThemedForms : Form + { //2014.12.21. + public const int BorderSize = 3; + + private bool overridecontrols = false; + public ThemedForms() + { + InitializeComponent(); + this.Load += ThemedForms_Load; + overridecontrols = true; + } + + public void ThemedForms_Load(object sender, EventArgs e) + { + List anchors = new List(); + foreach (Control control in containerPanel.Controls) + { + anchors.Add(control.Anchor); + control.Anchor = AnchorStyles.Top | AnchorStyles.Left; + } + this.SuspendLayout(); + base.FormBorderStyle = FormBorderStyle.None; + this.Size = base.Size; + CloseButton.Location = new Point(this.Size.Width - CloseButton.Size.Width, 0); + MaximizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width, 0); + MinimizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width - MinimizeButton.Size.Width, 0); + titleLabel.Location = new Point(BorderSize, titleLabel.Location.Y); + containerPanel.Location = new Point(BorderSize, titleLabel.Location.Y + titleLabel.Size.Height); + int i = 0; + this.ResumeLayout(true); + foreach (var anchor in anchors) + { + containerPanel.Controls[i].Anchor = anchor; + i++; + } + titleLabel.Anchor = AnchorStyles.Top | AnchorStyles.Left; + CloseButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MaximizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MinimizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + containerPanel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + PrepControl(this); + foreach (Control control in this.Controls) + { + PrepControl(control); //TODO: Controls.ControlAdded-nél is az új control-ra alkalmazza + if (control is ToolStrip) + Theme.SetRenderer((ToolStrip)control); //2015.07.05. + foreach (Control ctrl in control.GetAll()) + { //2015.07.03. + PrepControl(ctrl); + } + var controls = control.GetAll(typeof(ToolStrip)); + foreach (ToolStrip toolstrip in controls) + { + Theme.SetRenderer(toolstrip); //2015.07.05. + } + } + } + private void PrepControl(Control control) + { //2015.07.03. + Theme.SkinControl(control); + control.Click += control_Click; + } + + public static ThemeDesigner ThemeDesignerRunning; //2015.07.03. + void control_Click(object sender, EventArgs e) + { + if (ThemeDesignerRunning != null) + { //2015.07.03. + ThemeDesignerRunning.SelectedType = sender.GetType(); + } + } + public new Control.ControlCollection Controls + { + get + { + if (overridecontrols) + return containerPanel.Controls; + else + return base.Controls; + } + } + private FormBorderStyle borderstyle = FormBorderStyle.Sizable; + public new FormBorderStyle FormBorderStyle + { + get + { + return borderstyle; + } + set + { + borderstyle = value; + base.FormBorderStyle = FormBorderStyle.None; + } + } + public override string Text + { + get + { + return base.Text; + } + set + { + titleLabel.Text = value; + base.Text = value; + } + } + public new Size Size + { + get + { + return base.Size; + } + set + { + base.Size = new Size(value.Width + containerPanel.Location.X + BorderSize, value.Height + containerPanel.Location.Y + BorderSize); + containerPanel.Size = value; + } + } + + private void CloseButton_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void MaximizeButton_Click(object sender, EventArgs e) + { + if (!MaximizeBox) + return; + FormWindowState ws; //Anti-virus program miatt + if (WindowState == FormWindowState.Normal) + ws = FormWindowState.Maximized; + else + ws = FormWindowState.Normal; + + Timer t = new Timer(); + t.Interval = 10; + t.Tick += delegate + { + t.Stop(); + base.FormBorderStyle = FormBorderStyle.Sizable; //Látszik egy kis időre, de tán így a legkönnyebb + WindowState = ws; + base.FormBorderStyle = FormBorderStyle.None; + }; + t.Start(); + } + + private void MinimizeButton_Click(object sender, EventArgs e) + { + if (!MinimizeBox) + return; + WindowState = FormWindowState.Minimized; + } + + private FormWindowState wstate; + private void ThemedForms_Resize(object sender, EventArgs e) + { + if (this.WindowState == wstate) + return; + if (this.WindowState == FormWindowState.Maximized && wstate == FormWindowState.Minimized) //minimized-ről váltott maximized-re + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + wstate = this.WindowState; + } + + private bool moving = false; + private int resizing = 0; + private Timer moveresizetimer = new Timer(); + private Point moveresizecursor; + private void ThemedForms_MouseDown(object sender, MouseEventArgs e) + { + Point cursorpos = this.PointToClient(Cursor.Position); + moveresizecursor = this.PointToClient(Cursor.Position); //Mindig ehhez igazítsa + if (cursorpos.X > containerPanel.Location.X + containerPanel.Size.Width) + resizing = 1; //right + else if (cursorpos.X < containerPanel.Location.X) + resizing = 2; //left + else if (cursorpos.Y > containerPanel.Location.Y + containerPanel.Size.Height) + resizing = 3; //bottom + else if (cursorpos.Y < containerPanel.Location.Y) + moving = true; //top + if (!moveresizetimer.Enabled) + { + moveresizetimer.Interval = 10; + moveresizetimer.Tick += moveresizetimer_Tick; + moveresizetimer.Start(); + } + } + + void moveresizetimer_Tick(object sender, EventArgs e) + { + if (moving) + { + int diffx = this.PointToClient(Cursor.Position).X - moveresizecursor.X; + int diffy = this.PointToClient(Cursor.Position).Y - moveresizecursor.Y; + this.Location = new Point(this.Location.X + diffx, this.Location.Y + diffy); + } + if (resizing > 0 && borderstyle == FormBorderStyle.Sizable) + { + if (resizing == 1) + base.Size = new Size(Cursor.Position.X - base.Location.X, base.Size.Height); + else if (resizing == 2) + { + int diff = base.Location.X - Cursor.Position.X; + base.Location = new Point(Cursor.Position.X, base.Location.Y); + base.Size = new Size(base.Size.Width + diff, base.Size.Height); + } + else if (resizing == 3) + base.Size = new Size(base.Size.Width, Cursor.Position.Y - base.Location.Y); + } + } + + private void ThemedForms_MouseUp(object sender, MouseEventArgs e) + { + moving = false; + resizing = 0; + moveresizetimer.Stop(); + } + + private void ThemedForms_DoubleClick(object sender, EventArgs e) + { + if (this.PointToClient(Cursor.Position).Y < containerPanel.Location.Y) + { + if (!MaximizeBox) + return; //2015.04.08. + if (this.WindowState == FormWindowState.Normal) + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + else + this.WindowState = FormWindowState.Normal; + } + } + + public Control.ControlCollection GetOriginalControls() + { + return base.Controls; + } + } +} diff --git a/MSGer.tk/Theme/ThemedForms.resx b/MSGer.tk/Theme/ThemedForms.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/Theme/ThemedForms.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MSGer.tk/UserInfo.cs b/MSGer.tk/UserInfo.cs index f5a9e11..81d00cb 100644 --- a/MSGer.tk/UserInfo.cs +++ b/MSGer.tk/UserInfo.cs @@ -8,6 +8,9 @@ using System.Windows.Forms; using Khendys.Controls; using SzNPProjects; using System.Net; +using System.Drawing; +using FastColoredTextBoxNS; +using System.Text.RegularExpressions; namespace MSGer.tk { @@ -167,7 +170,7 @@ namespace MSGer.tk Update(); } } - public int PicUpdateTime + public double PicUpdateTime //int-->double: 2015.06.06. { get { @@ -183,22 +186,10 @@ namespace MSGer.tk Update(); } } - public string ImagePath = "noimage.png"; - /*public struct IPEndPoint - Nincs már szükség az IsServer beállításra - { - public IPEndPoint IP; - public bool IsServer;*/ - /*public IPEndPoint(IPEndPoint ip) - { - IP = ip; - IsServer = false; - }*/ - /*public IPEndPoint(IPEndPoint ip, bool isserver) - { - IP = ip; - IsServer = isserver; - } - }*/ + /// + /// Ha null, akkor NoImage--et jelenítsen meg + /// + public Image Image; //2015.05.30. private static HashSet ips = new HashSet(); public static HashSet IPs @@ -233,54 +224,46 @@ namespace MSGer.tk ~UserInfo() //2014.10.09. { } - //public int PicUpdateTime = 0; - //public string GetImage() - public void GetImage(int receivedupdate) + public void GetImageFromNetwork(int receivedupdate) { //Most már elvileg csak akkor hívja meg, amikor feldolgozza a kapott adatokat, tehát nem a Main Thread-ban - string tmp = Path.GetTempPath(); - if (!Directory.Exists(tmp + "\\MSGer.tk\\pictures")) //2014.08.16. - Áthelyezve, hogy mindig létrehozza, ha kell, és letöltse a képeket - Directory.CreateDirectory(tmp + "\\MSGer.tk\\pictures"); - - if (this.PicUpdateTime > receivedupdate) - { - if (File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) - this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; - else - this.ImagePath = "noimage.png"; + if (this.PicUpdateTime >= receivedupdate) + { //2015.06.06. + LoadImageFromFile(); + return; } //2014.08.16. - A képeket azért nem menti felhasználónként, mert úgyis le tudja tölteni mindenkinek a képét szinte bárki, és amúgy is UserID-val van azonosítva - List sendb = new List(); - //sendb.AddRange(BitConverter.GetBytes(CurrentUser.UserID)); - sendb.AddRange(BitConverter.GetBytes(UserID)); - sendb.AddRange(BitConverter.GetBytes((File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) ? PicUpdateTime : 0)); - byte[][] bytesb = Networking.SendUpdate(Networking.UpdateType.GetImage, sendb.ToArray(), false); - if (bytesb == null || bytesb.All(entry => entry.Length == 0)) //bytesb.All(...): 2014.09.01. + var pfs = new Networking.PacketSender( + new Networking.PDGetImage(UserID, (Image != null ? PicUpdateTime : 0))).Send(); //Image!=null: 2015.06.06. + if (pfs == null || pfs.All(entry => !((Networking.PDGetImage)entry.EData).RSuccess)) { - if (File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) - this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; - else - this.ImagePath = "noimage.png"; + LoadImageFromFile(); //2015.06.06. + return; } - bytesb = bytesb.Select(entry => Networking.ParsePacket(entry).Data).ToArray(); - int[] picupdatetimes = bytesb.Select(b => BitConverter.ToInt32(b, 0)).ToArray(); - int maxIndex = Array.IndexOf(picupdatetimes, picupdatetimes.Max()); - //byte[] bytes = bytesb[maxIndex]; //Attól tölti le a képet, akinek a legfrissebb - byte[] bytes = new byte[bytesb[maxIndex].Length]; - Array.Copy(bytesb[maxIndex], 4, bytes, 0, bytes.Length); //Hagyja ki a PicUpdateTime-ot - - if (bytes[0] == 0x00) //Nincs kép, vagy hiba történt + IEnumerable picupdatetimes = pfs.Select(entry => ((Networking.PDGetImage)entry.EData).RPicUpdateTime); + byte[] bytes = null; + double max = picupdatetimes.Max(); //2015.06.06. + foreach (var entry in pfs) { - this.ImagePath = "noimage.png"; + if (((Networking.PDGetImage)entry.EData).RPicUpdateTime == max) + { + bytes = ((Networking.PDGetImage)entry.EData).RImageData; + break; + } + } + + if (bytes == null || bytes[0] == 0x00) //Nincs kép, vagy hiba történt + { + this.Image = null; //2015.05.30. } else if (bytes[0] == 0x01) { - this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + LoadImageFromFile(); //2015.06.06. } else { //Mentse el a képet - File.WriteAllBytes(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png", bytes); - this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16. + File.WriteAllBytes("pictures\\" + UserID + ".png", bytes); //2015.06.06. - Először a fogadott formátumban menti el, majd legközelebb már PNG-ként + LoadImageFromFile(); //2015.06.06. } } public List GetChatWindows() @@ -295,17 +278,41 @@ namespace MSGer.tk } return retlist; } + private void LoadImageFromFile() + { //2015.06.06. + //2015.06.14. + if (!Directory.Exists("pictures")) + Directory.CreateDirectory("pictures"); + string[] files = Directory.GetFiles("pictures", UserID + ".*"); + if (files.Length > 0) + this.Image = Program.LoadImageFromFile(files[0]); + else + this.Image = null; + } + /// + /// Csak a megjelenítéshez, ellenőrzéshez null-check + /// + public static Image NoImage = Properties.Resources.noimage; //2015.05.30. public static void Load() { + using (var gr = Graphics.FromImage(NoImage)) + Theme.SkinThis(typeof(NoImage), gr); //2015.07.03. foreach (var entry in Storage.LoggedInSettings) { - string[] tmp = entry.Key.Split('_'); - if (tmp[0] != "userinfo") - continue; - var tmp2 = new UserInfo(); - tmp2.UserID = Int32.Parse(tmp[1]); - if (!IDIsInList(KnownUsers, tmp2.UserID)) - KnownUsers.Add(tmp2); + try + { + string[] tmp = entry.Key.Split('_'); + if (tmp[0] != "userinfo") + continue; + var tmp2 = new UserInfo(); + tmp2.UserID = Int32.Parse(tmp[1]); + tmp2.LoadImageFromFile(); //2015.06.14. + if (!IDIsInList(KnownUsers, tmp2.UserID)) + KnownUsers.Add(tmp2); + } + catch + { + } } } public static bool IDIsInList(List list, int userid) @@ -314,14 +321,7 @@ namespace MSGer.tk } public static UserInfo Select(int userid) { - try - { - return KnownUsers.Single(entry => entry.UserID == userid); //2014.09.19. - } - catch - { - return null; - } + return KnownUsers.FirstOrDefault(entry => entry.UserID == userid); //Single-->FirstOrDefault: 2015.06.06. } public static int GetUserIDFromListID(int ListID) { @@ -340,34 +340,22 @@ namespace MSGer.tk return; if (!UpdateTimer.Enabled) { - UpdateTimer.Interval = 500; - UpdateTimer.Tick += UpdateTimerTick; - UpdateTimer.Start(); + if (UpdateTimer.Tag == null || !(bool)UpdateTimer.Tag) + { + UpdateTimer.Interval = 500; + UpdateTimer.Tick += UpdateTimerTick; + UpdateTimer.Tag = true; + } + if (Program.MainF.InvokeRequired) + Program.MainF.Invoke(new Action(() => UpdateTimer.Start())); + else + UpdateTimer.Start(); } } private void UpdateTimerTick(object sender, EventArgs e) { UpdateTimer.Stop(); - //Partnerlista frissítése - //2014.10.09. - /*string imgpath = this.GetImage(); - if (!(imgpath != "noimage.png" || File.Exists("noimage.png"))) //2014.03.13. - 2014.10.09. - { - imgpath = ""; - MessageBox.Show(Language.Translate("noimage_notfound"), Language.Translate("error")); - } - string state = ""; - if (this.State == 1) - state = " (" + Language.Translate("menu_file_status_online") + ")"; - else if (this.State == 2) - state = " (" + Language.Translate("menu_file_status_busy") + ")"; - else if (this.State == 3) - state = " (" + Language.Translate("menu_file_status_away") + ")"; - else - state = " (" + Language.Translate("offline") + ")"; - string text = this.Name + state + "\n" + this.Message; - */ if (ListID == -1) { int i; @@ -380,51 +368,20 @@ namespace MSGer.tk } ListID = i; } - //2014.10.09. - /*bool tmp = Program.MainF.contactList.AutoUpdate; - Program.MainF.contactList.AutoUpdate = false; - while (Program.MainF.contactList.Items.Count <= ListID) //Azt is adja hozzá, ami a kész listaelem lesz - { - var pictb = new PictureBox(); - pictb.SizeMode = PictureBoxSizeMode.Zoom; - pictb.ImageLocation = imgpath; - var listtext = new ExRichTextBox(); - listtext.Text = text; - listtext = TextFormat.Parse(listtext); - Program.MainF.contactList.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); - } - ((PictureBox)Program.MainF.contactList.Items[ListID].SubItems[0]).ImageLocation = imgpath; - Program.MainF.contactList.Items[ListID].SubItems[1].Text = text; - Program.MainF.contactList.Items[ListID].SubItems[1] = TextFormat.Parse((ExRichTextBox)Program.MainF.contactList.Items[ListID].SubItems[1]); - Program.MainF.contactList.AutoUpdate = tmp;*/ - CreateListItem(Program.MainF.contactList, ListID); } - /*internal static int GetPortForIP(IPAddress iPAddress) - Elküldi - { - throw new NotImplementedException(); //TODO - }*/ - public void CreateListItem(RichListView listView, int pos) { - //TO!DO: A fenti kódot átrakni ide, hogy itt létrehozza az item-et - //string imgpath = this.GetImage(); - string imgpath = this.ImagePath; //2014.12.31. - if (!(imgpath != "noimage.png" || File.Exists("noimage.png"))) //2014.03.13. - 2014.10.09. - { - imgpath = ""; - MessageBox.Show(Language.Translate("noimage_notfound"), Language.Translate("error")); - } string state = ""; if (this.State == 1) - state = " (" + Language.Translate("menu_file_status_online") + ")"; + state = " (" + Language.Translate(Language.StringID.Menu_File_Status_Online) + ")"; else if (this.State == 2) - state = " (" + Language.Translate("menu_file_status_busy") + ")"; + state = " (" + Language.Translate(Language.StringID.Menu_File_Status_Busy) + ")"; else if (this.State == 3) - state = " (" + Language.Translate("menu_file_status_away") + ")"; + state = " (" + Language.Translate(Language.StringID.Menu_File_Status_Away) + ")"; else - state = " (" + Language.Translate("offline") + ")"; + state = " (" + Language.Translate(Language.StringID.Offline) + ")"; string text = this.Name + state + "\n" + this.Message; TMPListID = pos; @@ -436,17 +393,51 @@ namespace MSGer.tk { var pictb = new PictureBox(); pictb.SizeMode = PictureBoxSizeMode.Zoom; - pictb.ImageLocation = imgpath; - var listtext = new ExRichTextBox(); - listtext.Text = text; - listtext = TextFormat.Parse(listtext); - listView.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); + pictb.Image = Image; //2015.05.30. + var listtext = new FastColoredTextBox(); //2015.07.05. + listtext.ShowLineNumbers = false; //2015.07.05. + var style = new TextBoxHelpers.GifImageStyle(listtext); //2015.07.05. + foreach (var item in TextFormat.TextFormats) + { //2015.07.05. + foreach (var item2 in item.Emoticons) + { + style.ImagesByText.Add(item2.Value, item2.Image); + } + } + listtext.Text = text; //2015.07.05. + listtext.TextChanged += delegate(object sender, TextChangedEventArgs e) + { + if (style == null) + return; + e.ChangedRange.ClearStyle(StyleIndex.All); + foreach (var key in style.ImagesByText.Keys) + { + string pattern = Regex.Replace(key, RegexSpecSymbolsPattern, "\\$0"); + e.ChangedRange.SetStyle(style, pattern); + } + }; + style.StartAnimation(); //2015.07.05. + listtext.OnTextChanged(); //2015.07.05. + listView.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); //2015.07.05. } - ((PictureBox)listView.Items[TMPListID].SubItems[0]).ImageLocation = imgpath; + if (Image == null) //2015.05.30. + ((PictureBox)listView.Items[TMPListID].SubItems[0]).Image = UserInfo.NoImage; //2015.05.30. + else + ((PictureBox)listView.Items[TMPListID].SubItems[0]).Image = Image; //2015.05.30. listView.Items[TMPListID].SubItems[1].Text = text; - listView.Items[TMPListID].SubItems[1] = TextFormat.Parse((ExRichTextBox)listView.Items[TMPListID].SubItems[1]); listView.AutoUpdate = tmp; listView.ResumeLayout(true); //2014.12.21. } + const string RegexSpecSymbolsPattern = @"[\^\$\[\]\(\)\.\\\*\+\|\?\{\}]"; + + public override string ToString() + { //2015.04.03. + string str = ""; + foreach (var setting in Storage.LoggedInSettings) + if (setting.Key.StartsWith("userinfo_" + UserID + "_")) + str += setting.Key.Substring(setting.Key.IndexOf(UserID.ToString())) + "=" + setting.Value + "\n"; + str = str.Remove(str.Length - 1); + return str; + } } } diff --git a/MSGer.tk/bin/.justforgithub b/MSGer.tk/bin/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/bin/Debug/.justforgithub b/MSGer.tk/bin/Debug/.justforgithub new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/bin/Debug/1.db b/MSGer.tk/bin/Debug/1.db index 4257df22b0b6d0e720283d9de9d2c5a3c29c2b57..612226d0982d349a40ab3c6d5256eb9bbdba5142 100644 GIT binary patch literal 856 zcmV-e1E>5{0{{R}0{{Rrj-_YmZ8CeBn^ez0OqGZyq&$Bvu(w%&AKP|81p?jqGzV)4 zZvfwi%cZ@5kzBkg+6y|E>`>Cg0M%CMB}*fYmPy7_OYGwmX?}eQgD9+6@^pMX+Zy$! z$PjiA1iTiUn|jZAm12pEd+T*EO~kW4!ocB8Y}1pw(3I3b)jlZi0}A`DVCO2O`)DZ_BqNZGI{UP5U0 z!;gvL)%BqAr9m?a*4VXPfNzKFh%qOsIv!q#_9trN9^;3$J3|whr&p+B2Ps516pnHU zcR1j6UUqAQ9DxoIX6^{{tT1nyiUXB!6%P=iMFd^wU#&49n)JES0?v}CFDD#lY~)x0 zl6Uu1mAvdYswhSKIY_6k&+^XO8vf3yKh0iQ^= zmiyIFV^S*Zo_BfQu=a1B4bjiQyqT(WLXv{;ZN0nizI})d$Fyx%$Rzrb0uM*!xM^8#{autpJaa%A}#v~@23 zEn@AmCO)|ve~+t;aUmh1csylMnFTp2+As!@mYnvW_~0Hc04KKgJS(84tM&1`*&?U# z*3^z}LcQTGu3hs3pM^DmNkI&y_7bI$<0aiG=Z)t;zU8BRplu|(VK5_QsE*)66<2=7 z`SSVQ#s9mg!BI@vhTEHMtuh7Ds`S%UBvza_oWRZtC&S++%i8ij7Jw$>`d_B8?|XJD z5KTuDRM+w(*VxH2-~{3yW-`7}ni@X~8{+L5||+1F8c6 literal 760 zcmVLq!NCtHAd z%q4`F1T*Qrp)-PLY} zr)(1Q+IPz1hYGX%R$B{3er!wgtI>I0vn`W)e~R)%0?#NzV+0Gb9|TXP3KC&2c!;2-W@nYX|q<3EGgRQn$}<%NkET6y_9tG#iEvy!2j9xpw11y-2cCA0(|L zTO~Km%C6&&Coik}dExAp3xb#{vp8(V7*}XVIdvw(L`1eZY`4TCS*(>EZS|8+M`*Kl zMdmvoX*xZhf4^#?)|xFFhIjl)Uvfu-3*v~JS;!fudX1!aH;BHmg5^~<=jG#HQ9qyYc`ppgYre_)kC>UzJsd6C344W2Rch1|THzaG9+6K2+qi+GdV ztAfd=gq`J6xJC~Y{KS&6Y-49R>PAh+T1*(x5YamDJ|q`ltx)TSzj%%F;gZQJa^nR9 zj*#4q$-f*S@0MgJbt?4>na;M+5CXMj=SAheE+*&nxu#F`ZvOA&qiXE!e>#aP(}l7x zw6t@`vgd}3R=%F^<>2I6JXEz2ENnKsVIWChb6LB^3ot_`-}nSQM=q)G1rlCR4)|Gy zkxkWrd9Qa(Ez`D%nsmU}8{%~dlrT^h(X2k`9bAKz@)l`{+YFw)m};G*2*r$}ascob z7K^9L*VFD!Nl delta 368 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

(%RSYd&|u_D)3^kOqo}Ok#fwOwI-4bbC~ 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º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