2013-06-27  Werner Koch  <wk@gnupg.org>

	* client.cc (call_assuan): Distinguish between connection and and
	server errors.

2013-06-26  Werner Koch  <wk@gnupg.org>

	* client.cc (default_uiserver_cmdline): Replace code with code
	from gpgol so that gpgol will also be tried.   Use the
	installation root to find the default UI server.
	(call_assuan): Print the name of teh UI-server if it has been
	launched by this instance.
	* main.h (gpgex_server): New.

	* gpgex.cc (get_lang_name): Rewrite using gettext.
	(start_help): Improve language detection.  Remove fallback to an
	external URL.
	* main.h (gpgex_server): Add root_dir.
	(utf8_to_wchar): Add prototype.

	* main.cc (gpgex_server::root_dir): New.
	(get_locale_dir): Pass then instance to GetModuleFileNameW.  Store
	the root dir.
	(utf8_to_wchar): New.
	(DllMain): Run i18n_init after debug_init.

2010-07-21  Werner Koch  <wk@g10code.com>

	* main.cc (DllMain): Add explicit init and deinit of libgpg-error.

2010-04-20  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (getinfo_pid_cb): Return gpg_error_t.
	(uiserver_connect): Port to new assuan interface.
	* main.cc (DllMain): Likewise.

2010-02-10  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (gpgex_t::Initialize): Default to sign/encrypt if a
	file or directory name has no suffix.

2010-01-08  Marcus Brinkmann  <marcus@g10code.de>

	* icon-lock-12.bmp, icon-lock-16.bmp: Update.

2009-12-26  Marcus Brinkmann  <marcus@g10code.de>

	* icon-lock-12.bmp, icon-lock-16.bmp: New files.
	* Makefile.am (ICON_NAMES): Add lock.
	* icons.rc: Add lock icons.
	* gpgex.h (class gpgex_t): Use "Lock" icon instead of "Key".

2009-07-17  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (start_help): Do not cripple the browser window.

2009-03-10  Marcus Brinkmann  <marcus@g10code.de>

	* client.h, client.cc, gpgex.cc: Change encrypt&sign to
	sign&encrypt everywhere (except in the protocol, of course).

2009-02-11  Marcus Brinkmann  <marcus@g10code.de>

	* bitmaps.cc (load_bitmap): Change minus to underscore.
	* icons.rc: Likewise in identifiers.

2008-09-01  Marcus Brinkmann  <marcus@g10code.com>

	* gpgex.cc (Initialize): Also pay attention to endings pem, p7m
	and p7s.

2008-03-26  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (default_uiserver_cmdline): Fall back to GPA if
	Kleopatra is not installed.

2008-02-19  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (default_uiserver_cmdline): Change default uiserver
	path and remove work-around.

2008-02-05  Marcus Brinkmann  <marcus@g10code.de>

	* debug.h: Include <stdio.h>.
	(debug_file, debug_flags): New prototypes.
	* main.cc (debug_file, debug_flags): Make not static.
	* client.cc (uiserver_connect): Fix last change.  Set debug log
	stream.

2008-02-04  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (send_one_option, getinfo_pid_cb, send_options): New
	functions.
	(uiserver_connect): Take new argument HWND.  Call send_options.
	(client_t::call_assuan): Pass window handle to uiserver_connect.

2008-01-07  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (default_uiserver_cmdline): Invoke GUI server with
	--daemon.
	(replace_dollar_s): Remove obsolete function.

2007-11-30  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (start_help): Fix URL string format.

2007-11-16  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (start_help): Fix URL for Windows Exploder.

2007-11-12  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (get_lang_name): Fix last change.

	* gpgex.cc (get_lang_name): Get preferred language.
	(start_help): Invoke language specific help.

2007-11-08  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc: Include registry.h.
	(start_help): Launch gpgex help from install directory.
	* client.cc (client_t::call_assuan): Fix bug in last change.

	* client.cc (client_t::call_assuan): Fix FILE command and rename
	all commands to the protocol version.
	(client_t::call_assuan): Report the actual error and remove log
	file reference.

2007-11-02  Werner Koch  <wk@g10code.com>

	* w32-gettext.c (SUBLANG_BENGALI_BANGLADESH): Fix to 2 as per MSDN.
	(SUBLANG_PUNJABI_PAKISTAN): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_MOLDOVA): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_ROMANIA): Change to value 1 as per MSDN.

	* client.cc (call_assuan): Now use "FILE" instead of "INPUT FILE".

2007-10-22  Marcus Brinkmann  <marcus@g10code.de>

	* exechelp.h (gpgex_spawn_detached): Change signature to just a
	command line.
	* exechelp.c: Rewritten.
	* client.cc (replace_dollar_s): New function.
	(default_uiserver_cmdline): Use it.
	(uiserver_connect): Change caller of gpgex_spawn_detached.

2007-10-17  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (default_uiserver_name): Fix check for dirty hack.

2007-10-16  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (default_uiserver_name): Fall back to HKLM for UI Server.

	* client.cc (default_uiserver_name): Get UI Server from HKCU.

2007-10-15  Marcus Brinkmann  <marcus@g10code.de>

	(client_t::call_assuan): Call uiserver_connect.
	* registry.c: Include assert.h.  Check return value of malloc.
	* exechelp.h, exechelp.c: New files.
	* Makefile.am (gpgex_SOURCES): Add exechelp.h and exechelp.c.
	* main.h (REGKEY): Move to ...
	* registry.h (REGKEY): ... here.
	* main.cc (_gpgme_debug): Put into extern C.
	* main.h: Move debug stuff into ...
	* debug.h: ... this new file.
	* client.cc (default_uiserver_name, uiserver_connect): New functions.

2007-10-05  Marcus Brinkmann  <marcus@g10code.de>

	* main.cc (DllMain): Call WSACleanup.

	* main.cc (DllMain): Initialize winsock.

	* client.cc (percent_escape): Also escape ':' again.
	* gpgex.cc (start_help): Do not sleep.

	* client.h (class client_t): Two new member functions
	create_checksums and verify_checksums.
	* client.cc (client_t::create_checksums, client_t::verify_checksums): New functions.
	(client_t::encrypt_sign, client_t::encrypt): Fix spelling.
	* gpgex.cc (ID_CMD_CREATE_CHECKSUMS, ID_CMD_VERIFY_CHECKSUMS,
	ID_CMD_STR_CREATE_CHECKSUMS, ID_CMD_STR_VERIFY_CHECKSUMS): New macros.
	(gpgex_t::QueryContextMenu): Add create and verify checksums menu entries.
	(gpgex_t::GetCommandString): Support these here as well.  Translate all strings.

2007-10-03  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (percent_escape, escape): New functions.
	(client_t::call_assuan): Fix INPUT command.

2007-09-21  Werner Koch  <wk@g10code.com>

	* registry.c (default_homedir): Make registry works.  Reported by
	Marc Mutz.

2007-09-16  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (gpgex_t::QueryContextMenu): Implement popup menu
	correctly, such that the explorer can clean up correctly (in the
	file dialog).
	(gpgex_t::GetCommandString): Implement help texts.
	(start_help): New function.
	(gpgex_t::InvokeCommand): Call start_help.
	* Makefile.am (gpgex_LDADD): Add -loleaut32.

2007-09-11  Marcus Brinkmann  <marcus@g10code.de>

	* client.cc (client_t::call_assuan): Send --nohup as argument to
	command.

	* client.h (class client_t): New members decrypt, verify, encrypt,
	and sign.
	* client.cc: Add implementations for these.
	* gpgex.h: Move all ID_CMD_* macros to ...
	* gpgex.cc: ... here.  Add new macros for new commands.
	(gpgex_t::InvokeCommand, gpgex_t::QueryContextMenu): Implement new
	commands.

	* Makefile.am (libgpg-error.a, libassuan.a): Use -f flag with ln.
	* registry.h (default_dir): New prototype.
	* registry.c (default_dir, standard_homedir): New functions.
	* client.cc (default_socket_name): Use default home dir instead
	install directory.

2007-09-05  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.h (class gpgex_t): Make destructor virtual to silence
	compiler warning.

	* Makefile.am (ICON_NAMES, ICON_SIZES, ICONS): New variables.
	(gpgex_SOURCES): Add $(ICONS).

	* Makefile.am (gpgex_LDADD): More -lws2_32 after ./libassuan.a.


2007-09-04  Marcus Brinkmann  <marcus@g10code.de>

	* Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Remove $(GPGME_CFLAGS),
	add $(LIBASSUAN_CFLAGS) and $(GPG_ERROR_CFLAGS).
	(gpgex_SOURCES): Add client.h and client.cc.
	(libgpg-error.a, libassuan.a, clean-local): New targets.
	(gpgex_LDADD): Add ./libassuan.a and ./libgpg-error.a.
	* client.h, client.cc: New files.
	* gpgex.cc: Include client.h.
	(gpgex_t::InvokeCommand): Use client class to implement bunch of
	functionality.
	* main.h: Include <gpg-error.h>.
	(DEBUG_ASSUAN, REGKEY, TRACE_GPGERR): New macros.
	* main.cc: Include <gpg-error.h> and <assuan.h>.
	(REGKEY): Deleted.
	(debug_init): Free filename and add DEBUG_ASSUAN to debug flags.
	(DllMain): Set assuan log stream and prefix, and the error source.

2007-09-03  Marcus Brinkmann  <marcus@g10code.de>

	* bitmaps.h, bitmaps.cc, icons.rc, icon-key-12.bmp,
	icon-key-16.bmp: New files.
	* Makefile.am (gpgex_SOURCES): Add icons.rc, bitmaps.h and
	bitmaps.cc.
	(noinst_gpgex_SOURCES): Add versioninfo.rc.
	(gpgex_LDADD): Add -lgdi32.
	(resource.o): Remove target.
	* gpgex.h: Include bitmaps.h.
	(class gpgex_t): New member key_bitmap.
	(gpgex_t::gpgex_t, gpgex_t::~gpgex_t): Initialize and deinitialize
	it.
	* gpgex.cc (gpgex_t::QueryContextMenu): Add dummy bitmap for menu.

2007-08-31  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.cc (gpgex_t::QueryContextMenu): Fix menu separators.

2007-08-30  Marcus Brinkmann  <marcus@g10code.de>

	* gpgex.h (ID_CMD_HELP, ID_CMD_VERIFY_DECRYPT)
	(ID_CMD_SIGN_ENCRYPT, ID_CMD_IMPORT, ID_CMD_MAX)
	(ID_CMD_STR_HELP, ID_CMD_STR_VERIFY_DECRYPT)
	(ID_CMD_STR_SIGN_ENCRYPT, ID_CMD_STR_IMPORT): New macros.
	(class gpgex_t): New member ALL_FILES_GPG.
	* gpgex.cc (gpgex_t::reset): Initialize THIS->all_files_gpg.
	(gpgex_t::Initialize): Check ending of added files.
	(gpgex_t::QueryContextMenu): Create a more involved dummy menu.
	(gpgex_t::InvokeCommand): Show different commands being invoked.

	* gpgex-class.cc (gpgex_class::init): Also register the shell
	extension for directories.
	(gpgex_class::deinit): Unregister shell extension for directories.

2007-08-28  Marcus Brinkmann  <marcus@g10code.de>

	* main.cc (DllRegisterServer): Do not trash gpgex_server::instance.
	* gpgex-class.cc (gpgex_class::init): Now that DllMain loads, we
	can access the DLL file name.

	* main.cc (DllMain): Change return type to "STADPI" to get an
	extern "C" declaration.
	(_gpgex_debug): Remove lazy initialization cruft.  DllMain is
	called now, and initialization works properly.

	* Makefile.am (gpgex_LDADD): Add -lole32.
	* gpgex.def: Rename functions to not carry the @NR thingie.
	* main.h: Many TRACE macros added.
	(DEBUG_INIT, DEBUG_CONTEXT_MENU, STRINGIFY, GUID_FMT, GUID_ARG):
	New macros.
	(_gpgex_debug): New prototype.
	* main.cc: Include <stdarg.h>, <stdio.h> and <shlobj.h>.  Add
	debugging traces.
	(debug_lock, debug_flags, debug_file): New statics.
	(get_debug_file, debug_init, debug_deinit): New static functions.
	(_gpgex_debug): New function.
	(DllMain): Call debug_init.
	(DllRegisterServer, DllUnregisterServer): Call SHChangeNotify.
	* gpgex.h: Include <vector> and <string>.  Use std::vector and
	std::string namespaces.
	(class gpgex_t): New member filenames, and new method reset.
	* gpgex.cc: Include <vector>, <string>, <stdexcept> and use
	std::vector and std::string namespaces.  Add debugging traces.
	(gpgex_t::reset): New function.
	(gpgex_t::Initialize): Implement dummy function.
	(gpgex_t::QueryContextMenu): Implement dummy function.
	(gpgex_t::GetCommandString): Implement dummy function.
	(gpgex_t::InvokeCommand): Implement dummy function.
	* gpgex-factory.cc: Add debugging traces.
	* gpgex-class.cc (gpgex_class::init): Implement registration of
	shell extension.
	(gpgex_class::deinit): Implement corresponding unregistration.

2007-08-23  Marcus Brinkmann  <marcus@g10code.de>

	* Initial commit.

