mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-10 07:50:19 +00:00
Merge pull request #20 from ZoiteChat/theme-integration-in-preferences
Theme integration in preferences
This commit is contained in:
1
.github/workflows/appimage-build.yml
vendored
1
.github/workflows/appimage-build.yml
vendored
@@ -36,7 +36,6 @@ jobs:
|
||||
meson setup build \
|
||||
--prefix=/usr \
|
||||
-Dtext-frontend=true \
|
||||
-Dtheme-manager=true \
|
||||
-Dauto_features=enabled
|
||||
|
||||
- name: Build
|
||||
|
||||
1
.github/workflows/debian-build.yml
vendored
1
.github/workflows/debian-build.yml
vendored
@@ -35,7 +35,6 @@ jobs:
|
||||
rm -rf build
|
||||
meson setup build \
|
||||
-Dtext-frontend=true \
|
||||
-Dtheme-manager=true \
|
||||
-Dauto_features=enabled
|
||||
# If configure fails, show the project's actual option names in the log.
|
||||
- name: Show Meson options (on failure)
|
||||
|
||||
1
.github/workflows/openbsd-build.yml
vendored
1
.github/workflows/openbsd-build.yml
vendored
@@ -45,7 +45,6 @@ jobs:
|
||||
meson setup build \
|
||||
--prefix=/usr/local \
|
||||
-Dtext-frontend=true \
|
||||
-Dtheme-manager=true \
|
||||
-Dplugin=false \
|
||||
-Dauto_features=enabled
|
||||
|
||||
|
||||
@@ -6,6 +6,4 @@ if get_option('gtk-frontend')
|
||||
subdir('icons')
|
||||
subdir('misc')
|
||||
subdir('man')
|
||||
elif get_option('theme-manager')
|
||||
subdir('misc')
|
||||
endif
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
appdir = join_paths(get_option('datadir'), 'applications')
|
||||
metainfodir = join_paths(get_option('datadir'), 'metainfo')
|
||||
mimedir = join_paths(get_option('datadir'), 'mime', 'packages')
|
||||
desktop_utils = find_program('desktop-file-validate', required: false)
|
||||
|
||||
if get_option('gtk-frontend')
|
||||
@@ -42,6 +43,10 @@ if get_option('gtk-frontend')
|
||||
install_dir: appdir
|
||||
)
|
||||
|
||||
install_data('net.zoite.Zoitechat.mime.xml',
|
||||
install_dir: mimedir
|
||||
)
|
||||
|
||||
if desktop_utils.found()
|
||||
test('Validate net.zoite.Zoitechat.desktop', desktop_utils,
|
||||
args: [zoitechat_desktop]
|
||||
@@ -49,27 +54,6 @@ if get_option('gtk-frontend')
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_option('theme-manager')
|
||||
htm_desktop = i18n.merge_file(
|
||||
input: 'net.zoite.Zoitechat.ThemeManager.desktop.in',
|
||||
output: 'net.zoite.Zoitechat.ThemeManager.desktop',
|
||||
po_dir: '../../po',
|
||||
type: 'desktop',
|
||||
install: true,
|
||||
install_dir: appdir
|
||||
)
|
||||
|
||||
if desktop_utils.found()
|
||||
test('Validate net.zoite.Zoitechat.ThemeManager.desktop', desktop_utils,
|
||||
args: [htm_desktop]
|
||||
)
|
||||
endif
|
||||
|
||||
install_data('net.zoite.Zoitechat.ThemeManager.xml',
|
||||
install_dir: join_paths(get_option('datadir'), 'mime/packages')
|
||||
)
|
||||
endif
|
||||
|
||||
if get_option('plugin')
|
||||
plugin_metainfo = []
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=ZoiteChat Theme Manager
|
||||
Comment=A simple theme manager for ZoiteChat
|
||||
Exec=thememan %f
|
||||
Icon=zoitechat
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=application/x-hct;
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
||||
<mime-type type="application/x-hct">
|
||||
<comment>ZoiteChat theme archives</comment>
|
||||
<icon name="zoitechat" />
|
||||
<glob pattern="*.hct" weight="100" />
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
@@ -11,7 +11,7 @@ Categories=GTK;Network;IRCClient;
|
||||
StartupNotify=true
|
||||
StartupWMClass=Zoitechat
|
||||
X-GNOME-UsesNotifications=true
|
||||
MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;
|
||||
MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;application/x-zoitechat-theme;application/x-hexchat-theme;
|
||||
Actions=SafeMode;
|
||||
|
||||
[Desktop Action SafeMode]
|
||||
|
||||
11
data/misc/net.zoite.Zoitechat.mime.xml
Normal file
11
data/misc/net.zoite.Zoitechat.mime.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-zoitechat-theme">
|
||||
<comment>ZoiteChat Theme</comment>
|
||||
<glob pattern="*.zct"/>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-hexchat-theme">
|
||||
<comment>HexChat Theme</comment>
|
||||
<glob pattern="*.hct"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
@@ -165,9 +165,7 @@ if cc.get_id() != 'msvc'
|
||||
subdir('data')
|
||||
subdir('po') # FIXME: build xgettext
|
||||
|
||||
meson.add_install_script('meson_post_install.py',
|
||||
'@0@'.format(get_option('theme-manager'))
|
||||
)
|
||||
meson.add_install_script('meson_post_install.py')
|
||||
endif
|
||||
|
||||
if meson.version().version_compare('>= 0.53.0')
|
||||
|
||||
@@ -5,9 +5,6 @@ option('gtk-frontend', type: 'boolean',
|
||||
option('text-frontend', type: 'boolean', value: false,
|
||||
description: 'Text interface (not generally useful)'
|
||||
)
|
||||
option('theme-manager', type: 'boolean', value: false,
|
||||
description: 'Utility to help manage themes, requires mono/.net'
|
||||
)
|
||||
|
||||
# Features
|
||||
option('tls', type: 'feature', value: 'enabled',
|
||||
|
||||
@@ -6,7 +6,6 @@ import subprocess
|
||||
|
||||
prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local')
|
||||
datadir = os.path.join(prefix, 'share')
|
||||
with_thememan = sys.argv[1] == 'true'
|
||||
|
||||
# Packaging tools define DESTDIR and this isn't needed for them
|
||||
if 'DESTDIR' not in os.environ:
|
||||
@@ -17,8 +16,3 @@ if 'DESTDIR' not in os.environ:
|
||||
print('Updating desktop database...')
|
||||
subprocess.call(['update-desktop-database', '-q',
|
||||
os.path.join(datadir, 'applications')])
|
||||
|
||||
if with_thememan:
|
||||
print('Updating mime database...')
|
||||
subprocess.call(['update-mime-database',
|
||||
os.path.join(datadir, 'mime')])
|
||||
|
||||
@@ -22,6 +22,22 @@
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@VERSION@</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>zct</string>
|
||||
<string>hct</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>zoitechat.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>ZoiteChat Theme</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
@@ -53,6 +53,33 @@ new_param_variant (const char *arg)
|
||||
return g_variant_new_tuple (args, 1);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
has_theme_argument (void)
|
||||
{
|
||||
char *theme_path = NULL;
|
||||
guint i;
|
||||
|
||||
if (arg_url && zoitechat_theme_path_from_arg (arg_url, &theme_path))
|
||||
{
|
||||
g_free (theme_path);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (arg_urls)
|
||||
{
|
||||
for (i = 0; i < g_strv_length (arg_urls); i++)
|
||||
{
|
||||
if (zoitechat_theme_path_from_arg (arg_urls[i], &theme_path))
|
||||
{
|
||||
g_free (theme_path);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
zoitechat_remote (void)
|
||||
/* TODO: dbus_g_connection_unref (connection) are commented because it makes
|
||||
@@ -68,12 +95,17 @@ zoitechat_remote (void)
|
||||
GError *error = NULL;
|
||||
char *command = NULL;
|
||||
guint i;
|
||||
gboolean allow_remote;
|
||||
|
||||
/* if there is nothing to do, return now. */
|
||||
if (!arg_existing || !(arg_url || arg_urls || arg_command)) {
|
||||
if (!(arg_url || arg_urls || arg_command)) {
|
||||
return;
|
||||
}
|
||||
|
||||
allow_remote = arg_existing || has_theme_argument ();
|
||||
if (!allow_remote)
|
||||
return;
|
||||
|
||||
arg_dont_autoconnect = TRUE;
|
||||
|
||||
connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
|
||||
|
||||
@@ -3770,6 +3770,35 @@ cmd_url (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
||||
{
|
||||
if (word[2][0])
|
||||
{
|
||||
char *theme_path = NULL;
|
||||
if (zoitechat_theme_path_from_arg (word[2], &theme_path))
|
||||
{
|
||||
GError *error = NULL;
|
||||
char *basename = g_path_get_basename (theme_path);
|
||||
char *dot = strrchr (basename, '.');
|
||||
char *message;
|
||||
|
||||
if (dot)
|
||||
*dot = '\0';
|
||||
|
||||
if (zoitechat_import_theme (theme_path, &error))
|
||||
{
|
||||
message = g_strdup_printf (_("Theme \"%s\" imported."), basename);
|
||||
fe_message (message, FE_MSG_INFO);
|
||||
g_free (message);
|
||||
}
|
||||
else
|
||||
{
|
||||
fe_message (error ? error->message : _("Failed to import theme."),
|
||||
FE_MSG_ERROR);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
g_free (basename);
|
||||
g_free (theme_path);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
char *server_name = NULL;
|
||||
char *port = NULL;
|
||||
char *channel = NULL;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
@@ -107,6 +108,298 @@ struct session *current_tab;
|
||||
struct session *current_sess = 0;
|
||||
struct zoitechatprefs prefs;
|
||||
|
||||
gboolean
|
||||
zoitechat_theme_path_from_arg (const char *arg, char **path_out)
|
||||
{
|
||||
char *path = NULL;
|
||||
const char *ext;
|
||||
|
||||
if (!arg)
|
||||
return FALSE;
|
||||
|
||||
if (g_str_has_prefix (arg, "file://"))
|
||||
path = g_filename_from_uri (arg, NULL, NULL);
|
||||
else
|
||||
path = g_strdup (arg);
|
||||
|
||||
if (!path)
|
||||
return FALSE;
|
||||
|
||||
ext = strrchr (path, '.');
|
||||
if (!g_file_test (path, G_FILE_TEST_IS_REGULAR) ||
|
||||
!ext ||
|
||||
(g_ascii_strcasecmp (ext, ".zct") != 0 &&
|
||||
g_ascii_strcasecmp (ext, ".hct") != 0))
|
||||
{
|
||||
g_free (path);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (path_out)
|
||||
*path_out = path;
|
||||
else
|
||||
g_free (path);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
static gboolean
|
||||
zoitechat_has_theme_argument (void)
|
||||
{
|
||||
char *theme_path = NULL;
|
||||
guint i;
|
||||
|
||||
if (arg_url && zoitechat_theme_path_from_arg (arg_url, &theme_path))
|
||||
{
|
||||
g_free (theme_path);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (arg_urls)
|
||||
{
|
||||
for (i = 0; i < g_strv_length (arg_urls); i++)
|
||||
{
|
||||
if (zoitechat_theme_path_from_arg (arg_urls[i], &theme_path))
|
||||
{
|
||||
g_free (theme_path);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static HWND
|
||||
zoitechat_find_running_window (void)
|
||||
{
|
||||
HWND hwnd = FindWindowA ("ZoiteChat", NULL);
|
||||
|
||||
if (!hwnd)
|
||||
hwnd = FindWindowA ("zoitechat", NULL);
|
||||
if (!hwnd)
|
||||
hwnd = FindWindowA (NULL, "ZoiteChat");
|
||||
|
||||
return hwnd;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
zoitechat_send_command_to_existing (HWND hwnd, const char *command)
|
||||
{
|
||||
COPYDATASTRUCT copy_data;
|
||||
DWORD_PTR send_result = 0;
|
||||
|
||||
if (!hwnd || !command || !*command)
|
||||
return FALSE;
|
||||
|
||||
copy_data.dwData = 0;
|
||||
copy_data.cbData = (DWORD)strlen (command) + 1;
|
||||
copy_data.lpData = (void *)command;
|
||||
|
||||
return SendMessageTimeoutA (hwnd, WM_COPYDATA, (WPARAM)NULL,
|
||||
(LPARAM)©_data,
|
||||
SMTO_ABORTIFHUNG | SMTO_BLOCK,
|
||||
5000, &send_result) != 0;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
zoitechat_remote_win32 (void)
|
||||
{
|
||||
HWND hwnd;
|
||||
gboolean allow_remote;
|
||||
gboolean sent = FALSE;
|
||||
|
||||
allow_remote = arg_existing || zoitechat_has_theme_argument ();
|
||||
if (!allow_remote)
|
||||
return FALSE;
|
||||
|
||||
hwnd = zoitechat_find_running_window ();
|
||||
if (!hwnd)
|
||||
return FALSE;
|
||||
|
||||
if (arg_url)
|
||||
{
|
||||
char *command = g_strdup_printf ("url %s", arg_url);
|
||||
sent = zoitechat_send_command_to_existing (hwnd, command) || sent;
|
||||
g_free (command);
|
||||
}
|
||||
else if (arg_command)
|
||||
{
|
||||
sent = zoitechat_send_command_to_existing (hwnd, arg_command) || sent;
|
||||
}
|
||||
|
||||
if (arg_urls)
|
||||
{
|
||||
guint i;
|
||||
for (i = 0; i < g_strv_length (arg_urls); i++)
|
||||
{
|
||||
char *command = g_strdup_printf ("url %s", arg_urls[i]);
|
||||
sent = zoitechat_send_command_to_existing (hwnd, command) || sent;
|
||||
g_free (command);
|
||||
}
|
||||
g_strfreev (arg_urls);
|
||||
arg_urls = NULL;
|
||||
}
|
||||
|
||||
return sent;
|
||||
}
|
||||
#endif
|
||||
|
||||
gboolean
|
||||
zoitechat_import_theme (const char *path, GError **error)
|
||||
{
|
||||
char *themes_dir;
|
||||
char *basename;
|
||||
char *dot;
|
||||
char *theme_dir;
|
||||
char *argv[] = {"unzip", "-o", (char *)path, "-d", NULL, NULL};
|
||||
int status = 0;
|
||||
gboolean ok;
|
||||
#ifdef WIN32
|
||||
char *command = NULL;
|
||||
char *powershell = NULL;
|
||||
#endif
|
||||
|
||||
if (!path)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
|
||||
_("No theme file specified."));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
themes_dir = g_build_filename (get_xdir (), "themes", NULL);
|
||||
basename = g_path_get_basename (path);
|
||||
if (!basename || basename[0] == '\0')
|
||||
{
|
||||
g_free (themes_dir);
|
||||
g_free (basename);
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
|
||||
_("Failed to determine theme name."));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
dot = strrchr (basename, '.');
|
||||
if (dot)
|
||||
*dot = '\0';
|
||||
|
||||
theme_dir = g_build_filename (themes_dir, basename, NULL);
|
||||
if (g_mkdir_with_parents (theme_dir, 0700) != 0)
|
||||
{
|
||||
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
|
||||
_("Failed to create theme directory."));
|
||||
g_free (theme_dir);
|
||||
g_free (basename);
|
||||
g_free (themes_dir);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
powershell = g_find_program_in_path ("powershell.exe");
|
||||
if (!powershell)
|
||||
powershell = g_find_program_in_path ("powershell");
|
||||
|
||||
if (!powershell)
|
||||
{
|
||||
g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_NOENT,
|
||||
_("No archive extractor was found."));
|
||||
ok = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
GString *escaped_path = g_string_new ("'");
|
||||
GString *escaped_dir = g_string_new ("'");
|
||||
const char *cursor;
|
||||
|
||||
for (cursor = path; *cursor != '\0'; cursor++)
|
||||
{
|
||||
if (*cursor == '\'')
|
||||
g_string_append (escaped_path, "''");
|
||||
else
|
||||
g_string_append_c (escaped_path, *cursor);
|
||||
}
|
||||
g_string_append_c (escaped_path, '\'');
|
||||
|
||||
for (cursor = theme_dir; *cursor != '\0'; cursor++)
|
||||
{
|
||||
if (*cursor == '\'')
|
||||
g_string_append (escaped_dir, "''");
|
||||
else
|
||||
g_string_append_c (escaped_dir, *cursor);
|
||||
}
|
||||
g_string_append_c (escaped_dir, '\'');
|
||||
|
||||
command = g_strdup_printf (
|
||||
"Add-Type -AssemblyName WindowsBase; "
|
||||
"$ErrorActionPreference='Stop'; "
|
||||
"$package=[System.IO.Packaging.Package]::Open(%s); "
|
||||
"try { "
|
||||
"foreach ($part in $package.GetParts()) { "
|
||||
"$relative=$part.Uri.OriginalString.TrimStart('/'); "
|
||||
"if ([string]::IsNullOrEmpty($relative)) { continue }; "
|
||||
"$destPath=[System.IO.Path]::Combine(%s, $relative); "
|
||||
"$destDir=[System.IO.Path]::GetDirectoryName($destPath); "
|
||||
"if ($destDir -and -not (Test-Path -LiteralPath $destDir)) { "
|
||||
"[System.IO.Directory]::CreateDirectory($destDir) | Out-Null "
|
||||
"}; "
|
||||
"$partStream=$part.GetStream(); "
|
||||
"$fileStream=[System.IO.File]::Open($destPath,[System.IO.FileMode]::Create,[System.IO.FileAccess]::Write); "
|
||||
"$partStream.CopyTo($fileStream); "
|
||||
"$fileStream.Dispose(); "
|
||||
"$partStream.Dispose(); "
|
||||
"} "
|
||||
"} finally { $package.Close(); }",
|
||||
escaped_path->str,
|
||||
escaped_dir->str);
|
||||
g_string_free (escaped_path, TRUE);
|
||||
g_string_free (escaped_dir, TRUE);
|
||||
|
||||
{
|
||||
char *ps_argv[] = {powershell, "-NoProfile", "-NonInteractive", "-Command", command, NULL};
|
||||
ok = g_spawn_sync (NULL, ps_argv, NULL, 0, NULL, NULL,
|
||||
NULL, NULL, &status, error);
|
||||
}
|
||||
}
|
||||
#else
|
||||
argv[4] = theme_dir;
|
||||
ok = g_spawn_sync (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||
NULL, NULL, &status, error);
|
||||
#endif
|
||||
if (!ok)
|
||||
{
|
||||
#ifdef WIN32
|
||||
g_free (command);
|
||||
g_free (powershell);
|
||||
#endif
|
||||
g_free (theme_dir);
|
||||
g_free (basename);
|
||||
g_free (themes_dir);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!g_spawn_check_exit_status (status, error))
|
||||
{
|
||||
#ifdef WIN32
|
||||
g_free (command);
|
||||
g_free (powershell);
|
||||
#endif
|
||||
g_free (theme_dir);
|
||||
g_free (basename);
|
||||
g_free (themes_dir);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
g_free (command);
|
||||
g_free (powershell);
|
||||
#endif
|
||||
|
||||
g_free (theme_dir);
|
||||
g_free (basename);
|
||||
g_free (themes_dir);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the priority queue of the "interesting sessions"
|
||||
* (sess_list_by_lastact).
|
||||
@@ -424,6 +717,7 @@ irc_init (session *sess)
|
||||
{
|
||||
static int done_init = FALSE;
|
||||
char *buf;
|
||||
char *theme_path;
|
||||
|
||||
if (done_init)
|
||||
return;
|
||||
@@ -446,10 +740,41 @@ irc_init (session *sess)
|
||||
|
||||
if (arg_url != NULL)
|
||||
{
|
||||
buf = g_strdup_printf ("server %s", arg_url);
|
||||
theme_path = NULL;
|
||||
if (zoitechat_theme_path_from_arg (arg_url, &theme_path))
|
||||
{
|
||||
GError *error = NULL;
|
||||
char *basename = g_path_get_basename (theme_path);
|
||||
char *dot = strrchr (basename, '.');
|
||||
char *message;
|
||||
|
||||
if (dot)
|
||||
*dot = '\0';
|
||||
|
||||
if (zoitechat_import_theme (theme_path, &error))
|
||||
{
|
||||
message = g_strdup_printf (_("Theme \"%s\" imported."), basename);
|
||||
fe_message (message, FE_MSG_INFO);
|
||||
g_free (message);
|
||||
}
|
||||
else
|
||||
{
|
||||
fe_message (error ? error->message : _("Failed to import theme."),
|
||||
FE_MSG_ERROR);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
g_free (basename);
|
||||
}
|
||||
else
|
||||
{
|
||||
buf = g_strdup_printf ("server %s", arg_url);
|
||||
handle_command (sess, buf, FALSE);
|
||||
g_free (buf);
|
||||
}
|
||||
|
||||
g_free (theme_path);
|
||||
g_free (arg_url); /* from GOption */
|
||||
handle_command (sess, buf, FALSE);
|
||||
g_free (buf);
|
||||
}
|
||||
|
||||
if (arg_urls != NULL)
|
||||
@@ -457,9 +782,40 @@ irc_init (session *sess)
|
||||
guint i;
|
||||
for (i = 0; i < g_strv_length (arg_urls); i++)
|
||||
{
|
||||
buf = g_strdup_printf ("%s %s", i==0? "server" : "newserver", arg_urls[i]);
|
||||
handle_command (sess, buf, FALSE);
|
||||
g_free (buf);
|
||||
theme_path = NULL;
|
||||
if (zoitechat_theme_path_from_arg (arg_urls[i], &theme_path))
|
||||
{
|
||||
GError *error = NULL;
|
||||
char *basename = g_path_get_basename (theme_path);
|
||||
char *dot = strrchr (basename, '.');
|
||||
char *message;
|
||||
|
||||
if (dot)
|
||||
*dot = '\0';
|
||||
|
||||
if (zoitechat_import_theme (theme_path, &error))
|
||||
{
|
||||
message = g_strdup_printf (_("Theme \"%s\" imported."), basename);
|
||||
fe_message (message, FE_MSG_INFO);
|
||||
g_free (message);
|
||||
}
|
||||
else
|
||||
{
|
||||
fe_message (error ? error->message : _("Failed to import theme."),
|
||||
FE_MSG_ERROR);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
g_free (basename);
|
||||
}
|
||||
else
|
||||
{
|
||||
buf = g_strdup_printf ("%s %s", i==0? "server" : "newserver", arg_urls[i]);
|
||||
handle_command (sess, buf, FALSE);
|
||||
g_free (buf);
|
||||
}
|
||||
|
||||
g_free (theme_path);
|
||||
}
|
||||
g_strfreev (arg_urls);
|
||||
}
|
||||
@@ -1089,7 +1445,12 @@ main (int argc, char *argv[])
|
||||
ret = fe_args (argc, argv);
|
||||
if (ret != -1)
|
||||
return ret;
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
if (zoitechat_remote_win32 ())
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
#ifdef USE_DBUS
|
||||
zoitechat_remote ();
|
||||
#endif
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
#ifndef HEXCHAT_H
|
||||
#define HEXCHAT_H
|
||||
|
||||
gboolean zoitechat_theme_path_from_arg (const char *arg, char **path_out);
|
||||
gboolean zoitechat_import_theme (const char *path, GError **error);
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
#ifdef __APPLE__
|
||||
#define __AVAILABILITYMACROS__
|
||||
|
||||
@@ -84,6 +84,9 @@ static void mg_emoji_insert_cb (GtkMenuItem *item, session_gui *gui);
|
||||
|
||||
static void mg_create_entry (session *sess, GtkWidget *box);
|
||||
static void mg_create_search (session *sess, GtkWidget *box);
|
||||
#ifdef G_OS_WIN32
|
||||
static GdkFilterReturn mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data);
|
||||
#endif
|
||||
static void mg_link_irctab (session *sess, int focus);
|
||||
|
||||
static session_gui static_mg_gui;
|
||||
@@ -3358,8 +3361,11 @@ mg_create_irctab (session *sess, GtkWidget *table)
|
||||
static void
|
||||
mg_create_topwindow (session *sess)
|
||||
{
|
||||
GtkWidget *win;
|
||||
GtkWidget *table;
|
||||
GtkWidget *win;
|
||||
GtkWidget *table;
|
||||
#ifdef G_OS_WIN32
|
||||
GdkWindow *parent_win;
|
||||
#endif
|
||||
|
||||
if (sess->type == SESS_DIALOG)
|
||||
win = gtkutil_window_new ("ZoiteChat", NULL,
|
||||
@@ -3434,7 +3440,12 @@ mg_create_topwindow (session *sess)
|
||||
|
||||
mg_place_userlist_and_chanview (sess->gui);
|
||||
|
||||
gtk_widget_show (win);
|
||||
gtk_widget_show (win);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
parent_win = gtk_widget_get_window (win);
|
||||
gdk_window_add_filter (parent_win, mg_win32_filter, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -3463,14 +3474,35 @@ mg_tabwindow_de_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
static GdkFilterReturn
|
||||
mg_time_change (GdkXEvent *xevent, GdkEvent *event, gpointer data)
|
||||
mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data)
|
||||
{
|
||||
MSG *msg = (MSG*)xevent;
|
||||
|
||||
if (msg->message == WM_TIMECHANGE)
|
||||
{
|
||||
_tzset();
|
||||
}
|
||||
if (!msg)
|
||||
return GDK_FILTER_CONTINUE;
|
||||
|
||||
if (msg->message == WM_TIMECHANGE)
|
||||
{
|
||||
_tzset();
|
||||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
if (msg->message == WM_COPYDATA)
|
||||
{
|
||||
COPYDATASTRUCT *copy_data = (COPYDATASTRUCT *)msg->lParam;
|
||||
|
||||
if (copy_data && copy_data->lpData && copy_data->cbData > 0 && current_sess)
|
||||
{
|
||||
char *command = g_strndup ((const char *)copy_data->lpData, copy_data->cbData);
|
||||
|
||||
if (command)
|
||||
{
|
||||
handle_command (current_sess, command, FALSE);
|
||||
g_free (command);
|
||||
return GDK_FILTER_REMOVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
@@ -3550,8 +3582,8 @@ mg_create_tabwindow (session *sess)
|
||||
gtk_widget_show (win);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
parent_win = gtk_widget_get_window (win);
|
||||
gdk_window_add_filter (parent_win, mg_time_change, NULL);
|
||||
parent_win = gtk_widget_get_window (win);
|
||||
gdk_window_add_filter (parent_win, mg_win32_filter, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
3406
src/fe-gtk/setup.c
3406
src/fe-gtk/setup.c
File diff suppressed because it is too large
Load Diff
337
src/htm/Main.Designer.cs
generated
337
src/htm/Main.Designer.cs
generated
@@ -1,337 +0,0 @@
|
||||
/**
|
||||
* ZoiteChat Theme Manager
|
||||
*
|
||||
* Copyright (C) 2012 Patrick Griffs
|
||||
* Copyright (C) 2012 Berke Viktor
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
namespace thememan
|
||||
{
|
||||
partial class HTM
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HTM));
|
||||
this.themelist = new System.Windows.Forms.ListBox();
|
||||
this.themecolor0 = new System.Windows.Forms.Label();
|
||||
this.themecolor1 = new System.Windows.Forms.Label();
|
||||
this.themecolor2 = new System.Windows.Forms.Label();
|
||||
this.themecolor3 = new System.Windows.Forms.Label();
|
||||
this.themecolor4 = new System.Windows.Forms.Label();
|
||||
this.themecolor5 = new System.Windows.Forms.Label();
|
||||
this.themecolor6 = new System.Windows.Forms.Label();
|
||||
this.themecolor7 = new System.Windows.Forms.Label();
|
||||
this.themecolor8 = new System.Windows.Forms.Label();
|
||||
this.themecolor9 = new System.Windows.Forms.Label();
|
||||
this.themecolora = new System.Windows.Forms.Label();
|
||||
this.themecolorb = new System.Windows.Forms.Label();
|
||||
this.themecolorc = new System.Windows.Forms.Label();
|
||||
this.themecolord = new System.Windows.Forms.Label();
|
||||
this.themecolore = new System.Windows.Forms.Label();
|
||||
this.themecolorf = new System.Windows.Forms.Label();
|
||||
this.themecolorfg = new System.Windows.Forms.Label();
|
||||
this.themecolortextbg = new System.Windows.Forms.Label();
|
||||
this.importbutton = new System.Windows.Forms.Button();
|
||||
this.applybutton = new System.Windows.Forms.Button();
|
||||
this.themecolorfgmarked = new System.Windows.Forms.Label();
|
||||
this.deleteButton = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// themelist
|
||||
//
|
||||
this.themelist.FormattingEnabled = true;
|
||||
this.themelist.Location = new System.Drawing.Point(12, 12);
|
||||
this.themelist.Name = "themelist";
|
||||
this.themelist.Size = new System.Drawing.Size(160, 199);
|
||||
this.themelist.TabIndex = 0;
|
||||
this.themelist.SelectedIndexChanged += new System.EventHandler(this.theme_selected);
|
||||
//
|
||||
// themecolor0
|
||||
//
|
||||
this.themecolor0.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor0.Location = new System.Drawing.Point(189, 36);
|
||||
this.themecolor0.Name = "themecolor0";
|
||||
this.themecolor0.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor0.TabIndex = 6;
|
||||
//
|
||||
// themecolor1
|
||||
//
|
||||
this.themecolor1.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor1.Location = new System.Drawing.Point(239, 36);
|
||||
this.themecolor1.Name = "themecolor1";
|
||||
this.themecolor1.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor1.TabIndex = 10;
|
||||
//
|
||||
// themecolor2
|
||||
//
|
||||
this.themecolor2.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor2.Location = new System.Drawing.Point(289, 36);
|
||||
this.themecolor2.Name = "themecolor2";
|
||||
this.themecolor2.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor2.TabIndex = 14;
|
||||
//
|
||||
// themecolor3
|
||||
//
|
||||
this.themecolor3.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor3.Location = new System.Drawing.Point(339, 36);
|
||||
this.themecolor3.Name = "themecolor3";
|
||||
this.themecolor3.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor3.TabIndex = 18;
|
||||
//
|
||||
// themecolor4
|
||||
//
|
||||
this.themecolor4.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor4.Location = new System.Drawing.Point(189, 87);
|
||||
this.themecolor4.Name = "themecolor4";
|
||||
this.themecolor4.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor4.TabIndex = 4;
|
||||
//
|
||||
// themecolor5
|
||||
//
|
||||
this.themecolor5.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor5.Location = new System.Drawing.Point(239, 87);
|
||||
this.themecolor5.Name = "themecolor5";
|
||||
this.themecolor5.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor5.TabIndex = 8;
|
||||
//
|
||||
// themecolor6
|
||||
//
|
||||
this.themecolor6.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor6.Location = new System.Drawing.Point(289, 87);
|
||||
this.themecolor6.Name = "themecolor6";
|
||||
this.themecolor6.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor6.TabIndex = 12;
|
||||
//
|
||||
// themecolor7
|
||||
//
|
||||
this.themecolor7.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor7.Location = new System.Drawing.Point(339, 87);
|
||||
this.themecolor7.Name = "themecolor7";
|
||||
this.themecolor7.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor7.TabIndex = 16;
|
||||
//
|
||||
// themecolor8
|
||||
//
|
||||
this.themecolor8.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor8.Location = new System.Drawing.Point(189, 138);
|
||||
this.themecolor8.Name = "themecolor8";
|
||||
this.themecolor8.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor8.TabIndex = 5;
|
||||
//
|
||||
// themecolor9
|
||||
//
|
||||
this.themecolor9.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolor9.Location = new System.Drawing.Point(239, 138);
|
||||
this.themecolor9.Name = "themecolor9";
|
||||
this.themecolor9.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolor9.TabIndex = 9;
|
||||
//
|
||||
// themecolora
|
||||
//
|
||||
this.themecolora.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolora.Location = new System.Drawing.Point(289, 138);
|
||||
this.themecolora.Name = "themecolora";
|
||||
this.themecolora.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolora.TabIndex = 13;
|
||||
//
|
||||
// themecolorb
|
||||
//
|
||||
this.themecolorb.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolorb.Location = new System.Drawing.Point(339, 138);
|
||||
this.themecolorb.Name = "themecolorb";
|
||||
this.themecolorb.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolorb.TabIndex = 17;
|
||||
//
|
||||
// themecolorc
|
||||
//
|
||||
this.themecolorc.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolorc.Location = new System.Drawing.Point(189, 189);
|
||||
this.themecolorc.Name = "themecolorc";
|
||||
this.themecolorc.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolorc.TabIndex = 7;
|
||||
//
|
||||
// themecolord
|
||||
//
|
||||
this.themecolord.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolord.Location = new System.Drawing.Point(239, 189);
|
||||
this.themecolord.Name = "themecolord";
|
||||
this.themecolord.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolord.TabIndex = 11;
|
||||
//
|
||||
// themecolore
|
||||
//
|
||||
this.themecolore.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolore.Location = new System.Drawing.Point(289, 189);
|
||||
this.themecolore.Name = "themecolore";
|
||||
this.themecolore.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolore.TabIndex = 15;
|
||||
//
|
||||
// themecolorf
|
||||
//
|
||||
this.themecolorf.BackColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.themecolorf.Location = new System.Drawing.Point(339, 189);
|
||||
this.themecolorf.Name = "themecolorf";
|
||||
this.themecolorf.Size = new System.Drawing.Size(40, 40);
|
||||
this.themecolorf.TabIndex = 19;
|
||||
//
|
||||
// themecolorfg
|
||||
//
|
||||
this.themecolorfg.AutoSize = true;
|
||||
this.themecolorfg.BackColor = System.Drawing.Color.Transparent;
|
||||
this.themecolorfg.Location = new System.Drawing.Point(190, 18);
|
||||
this.themecolorfg.Name = "themecolorfg";
|
||||
this.themecolorfg.Size = new System.Drawing.Size(66, 13);
|
||||
this.themecolorfg.TabIndex = 21;
|
||||
this.themecolorfg.Text = "Sample Text";
|
||||
//
|
||||
// themecolortextbg
|
||||
//
|
||||
this.themecolortextbg.Location = new System.Drawing.Point(180, 15);
|
||||
this.themecolortextbg.Name = "themecolortextbg";
|
||||
this.themecolortextbg.Size = new System.Drawing.Size(208, 223);
|
||||
this.themecolortextbg.TabIndex = 20;
|
||||
//
|
||||
// importbutton
|
||||
//
|
||||
this.importbutton.Location = new System.Drawing.Point(12, 217);
|
||||
this.importbutton.Name = "importbutton";
|
||||
this.importbutton.Size = new System.Drawing.Size(52, 23);
|
||||
this.importbutton.TabIndex = 1;
|
||||
this.importbutton.Text = "Add...";
|
||||
this.importbutton.UseVisualStyleBackColor = true;
|
||||
this.importbutton.Click += new System.EventHandler(this.importbutton_Click_1);
|
||||
//
|
||||
// applybutton
|
||||
//
|
||||
this.applybutton.Location = new System.Drawing.Point(120, 217);
|
||||
this.applybutton.Name = "applybutton";
|
||||
this.applybutton.Size = new System.Drawing.Size(52, 23);
|
||||
this.applybutton.TabIndex = 3;
|
||||
this.applybutton.Text = "Apply";
|
||||
this.applybutton.UseVisualStyleBackColor = true;
|
||||
this.applybutton.Click += new System.EventHandler(this.applybutton_Click_1);
|
||||
//
|
||||
// themecolorfgmarked
|
||||
//
|
||||
this.themecolorfgmarked.AutoSize = true;
|
||||
this.themecolorfgmarked.Location = new System.Drawing.Point(313, 18);
|
||||
this.themecolorfgmarked.Name = "themecolorfgmarked";
|
||||
this.themecolorfgmarked.Size = new System.Drawing.Size(67, 13);
|
||||
this.themecolorfgmarked.TabIndex = 22;
|
||||
this.themecolorfgmarked.Text = "Marked Text";
|
||||
//
|
||||
// deleteButton
|
||||
//
|
||||
this.deleteButton.Location = new System.Drawing.Point(66, 217);
|
||||
this.deleteButton.Name = "deleteButton";
|
||||
this.deleteButton.Size = new System.Drawing.Size(52, 23);
|
||||
this.deleteButton.TabIndex = 2;
|
||||
this.deleteButton.Text = "Delete";
|
||||
this.deleteButton.UseVisualStyleBackColor = true;
|
||||
this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click);
|
||||
//
|
||||
// HTM
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(397, 248);
|
||||
this.Controls.Add(this.deleteButton);
|
||||
this.Controls.Add(this.themecolorfgmarked);
|
||||
this.Controls.Add(this.themecolorfg);
|
||||
this.Controls.Add(this.themecolorf);
|
||||
this.Controls.Add(this.themecolor3);
|
||||
this.Controls.Add(this.themecolorb);
|
||||
this.Controls.Add(this.themecolor7);
|
||||
this.Controls.Add(this.themecolore);
|
||||
this.Controls.Add(this.themecolor2);
|
||||
this.Controls.Add(this.themecolora);
|
||||
this.Controls.Add(this.themecolor6);
|
||||
this.Controls.Add(this.themecolord);
|
||||
this.Controls.Add(this.themecolor1);
|
||||
this.Controls.Add(this.themecolor9);
|
||||
this.Controls.Add(this.themecolor5);
|
||||
this.Controls.Add(this.themecolorc);
|
||||
this.Controls.Add(this.themecolor0);
|
||||
this.Controls.Add(this.themecolor8);
|
||||
this.Controls.Add(this.themecolor4);
|
||||
this.Controls.Add(this.importbutton);
|
||||
this.Controls.Add(this.applybutton);
|
||||
this.Controls.Add(this.themelist);
|
||||
this.Controls.Add(this.themecolortextbg);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "HTM";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.Text = "ZoiteChat Theme Manager";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListBox themelist;
|
||||
private System.Windows.Forms.Label themecolor0;
|
||||
private System.Windows.Forms.Label themecolor1;
|
||||
private System.Windows.Forms.Label themecolor2;
|
||||
private System.Windows.Forms.Label themecolor3;
|
||||
private System.Windows.Forms.Label themecolor4;
|
||||
private System.Windows.Forms.Label themecolor5;
|
||||
private System.Windows.Forms.Label themecolor6;
|
||||
private System.Windows.Forms.Label themecolor7;
|
||||
private System.Windows.Forms.Label themecolor8;
|
||||
private System.Windows.Forms.Label themecolor9;
|
||||
private System.Windows.Forms.Label themecolora;
|
||||
private System.Windows.Forms.Label themecolorb;
|
||||
private System.Windows.Forms.Label themecolorc;
|
||||
private System.Windows.Forms.Label themecolord;
|
||||
private System.Windows.Forms.Label themecolore;
|
||||
private System.Windows.Forms.Label themecolorf;
|
||||
private System.Windows.Forms.Label themecolorfg;
|
||||
private System.Windows.Forms.Label themecolortextbg;
|
||||
private System.Windows.Forms.Button importbutton;
|
||||
private System.Windows.Forms.Button applybutton;
|
||||
private System.Windows.Forms.Label themecolorfgmarked;
|
||||
private System.Windows.Forms.Button deleteButton;
|
||||
}
|
||||
}
|
||||
|
||||
381
src/htm/Main.cs
381
src/htm/Main.cs
@@ -1,381 +0,0 @@
|
||||
/**
|
||||
* ZoiteChat Theme Manager
|
||||
*
|
||||
* Copyright (C) 2012 Patrick Griffs
|
||||
* Copyright (C) 2012 Berke Viktor
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
/* using System.IO.Compression; */
|
||||
using System.IO.Packaging;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Net;
|
||||
|
||||
namespace thememan
|
||||
{
|
||||
public partial class HTM : Form
|
||||
{
|
||||
public string zoitechatdir;
|
||||
public string themedir;
|
||||
|
||||
OpenFileDialog importDialog;
|
||||
|
||||
static bool IsPortable(out string directory)
|
||||
{
|
||||
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
|
||||
directory = asm != null ? asm.Location : string.Empty;
|
||||
if (string.IsNullOrEmpty(directory))
|
||||
{
|
||||
directory = string.Empty;
|
||||
return File.Exists("portable-mode");
|
||||
}
|
||||
directory = Path.GetDirectoryName(directory);
|
||||
return File.Exists(Path.Combine(directory, "portable-mode"));
|
||||
}
|
||||
|
||||
public HTM ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
string portableDir;
|
||||
|
||||
if (RunningOnWindows() && IsPortable(out portableDir))
|
||||
{
|
||||
zoitechatdir = Path.Combine(portableDir, "config\\");
|
||||
|
||||
if (!Directory.Exists(zoitechatdir))
|
||||
{
|
||||
MessageBox.Show("ZoiteChat installation not found!\nCheck your .\\config folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Environment.SpecialFolder.ApplicationData
|
||||
* Windows: %APPDATA%
|
||||
* Unix: ~/.config
|
||||
* Windows is case-insensitive so 'zoitechat' should be fine for both
|
||||
*/
|
||||
zoitechatdir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "zoitechat");
|
||||
|
||||
if (!Directory.Exists(zoitechatdir))
|
||||
{
|
||||
if (RunningOnWindows())
|
||||
{
|
||||
MessageBox.Show("ZoiteChat installation not found!\nCheck your %APPDATA%\\ZoiteChat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("ZoiteChat installation not found!\nCheck your ~/.config/zoitechat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
themedir = Path.Combine(zoitechatdir, "themes");
|
||||
ListThemes();
|
||||
|
||||
String[] arguments = Environment.GetCommandLineArgs();
|
||||
if (arguments.Length > 1)
|
||||
{
|
||||
FileInfo fi = new FileInfo(arguments[1]);
|
||||
attemptImport(fi);
|
||||
}
|
||||
}
|
||||
|
||||
private bool RunningOnWindows()
|
||||
{
|
||||
if (Environment.OSVersion.ToString().ToLower().Contains("windows"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ListThemes()
|
||||
{
|
||||
themelist.Items.Clear();
|
||||
|
||||
if (Directory.Exists(themedir))
|
||||
{
|
||||
foreach (string theme in Directory.GetDirectories(themedir))
|
||||
{
|
||||
themelist.Items.Add(theme.Remove(0, themedir.Length + 1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(themedir);
|
||||
}
|
||||
|
||||
if (themelist.Items.Count == 0)
|
||||
{
|
||||
applybutton.Enabled = false;
|
||||
deleteButton.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
themelist.SetSelected(0, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowColors(List<List<string>> themecolors)
|
||||
{
|
||||
List<Control> labels = this.Controls.OfType<Label>().Cast<Control>().OrderBy(label => label.Name).ToList();
|
||||
for (byte themecolor = 0; themecolor < themecolors.Count; themecolor++)
|
||||
{
|
||||
byte rval = Convert.ToByte(int.Parse(themecolors[themecolor][0].ToString(), System.Globalization.NumberStyles.HexNumber) / 257);
|
||||
byte gval = Convert.ToByte(int.Parse(themecolors[themecolor][1].ToString(), System.Globalization.NumberStyles.HexNumber) / 257);
|
||||
byte bval = Convert.ToByte(int.Parse(themecolors[themecolor][2].ToString(), System.Globalization.NumberStyles.HexNumber) / 257);
|
||||
|
||||
if (themecolor <= 15)
|
||||
labels[themecolor].BackColor = Color.FromArgb(rval, gval, bval);
|
||||
else if (themecolor == 16)
|
||||
themecolorfgmarked.ForeColor = Color.FromArgb(rval, gval, bval);
|
||||
else if (themecolor == 17)
|
||||
themecolorfgmarked.BackColor = Color.FromArgb(rval, gval, bval);
|
||||
else if (themecolor == 18)
|
||||
themecolorfg.ForeColor = Color.FromArgb(rval, gval, bval);
|
||||
else if (themecolor == 19)
|
||||
{
|
||||
themecolortextbg.BackColor = Color.FromArgb(rval, gval, bval);
|
||||
themecolorfg.BackColor = themecolortextbg.BackColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<List<string>> ReadTheme(string theme)
|
||||
{
|
||||
List<List<string>> themecolors = new List<List<string>>();
|
||||
foreach (string line in File.ReadLines(Path.Combine(themedir, theme, "colors.conf")))
|
||||
{
|
||||
List<string> colors = new List<string>();
|
||||
List<string> colorlist = new List<string>();
|
||||
string[] possiblecolors = { "color_256", "color_257", "color_258", "color_259" };
|
||||
|
||||
for (byte num = 16; num <=31; num++)
|
||||
colorlist.Add("color_" + num);
|
||||
colorlist.AddRange(possiblecolors);
|
||||
|
||||
string[] config = line.Split(new char[] { ' ' });
|
||||
if(colorlist.Contains(config[0]) == true)
|
||||
{
|
||||
colors.Add(config[2]);
|
||||
colors.Add(config[3]);
|
||||
colors.Add(config[4]);
|
||||
themecolors.Add(colors);
|
||||
}
|
||||
}
|
||||
return themecolors;
|
||||
}
|
||||
|
||||
private void applybutton_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult result = MessageBox.Show("ZoiteChat must be closed and this will overwrite your current theme!\n\nDo you wish to continue?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "colors.conf"), Path.Combine(zoitechatdir, "colors.conf"), true);
|
||||
if (File.Exists(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf")))
|
||||
{
|
||||
File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf"), Path.Combine(zoitechatdir, "pevents.conf"), true);
|
||||
}
|
||||
else if (File.Exists(Path.Combine(zoitechatdir, "pevents.conf")))
|
||||
{
|
||||
File.Delete(Path.Combine(zoitechatdir, "pevents.conf"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void theme_selected(object sender, EventArgs e)
|
||||
{
|
||||
if (themelist.SelectedItem != null)
|
||||
{
|
||||
ShowColors(ReadTheme(themelist.SelectedItem.ToString()));
|
||||
applybutton.Enabled = true;
|
||||
deleteButton.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void importbutton_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
importDialog = new OpenFileDialog();
|
||||
importDialog.Filter = "ZoiteChat Theme Files|*.hct";
|
||||
importDialog.FilterIndex = 1;
|
||||
importDialog.FileOk += new CancelEventHandler(importdialog_FileOk);
|
||||
importDialog.ShowDialog();
|
||||
}
|
||||
|
||||
private void importdialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
FileInfo fi = new FileInfo(importDialog.FileName);
|
||||
attemptImport(fi);
|
||||
}
|
||||
|
||||
private void attemptImport(FileInfo fi)
|
||||
{
|
||||
string themeName = fi.Name.Remove(fi.Name.Length - fi.Extension.Length);
|
||||
int result = extractTheme(fi);
|
||||
ListThemes();
|
||||
/* although a check is added to ListThemes(), this would still fail if the theme file was invalid or the theme is already installed */
|
||||
switch (result)
|
||||
{
|
||||
case 0:
|
||||
themelist.SetSelected(themelist.FindStringExact(themeName), true);
|
||||
/* required for command line invoking */
|
||||
ShowColors(ReadTheme(themeName));
|
||||
break;
|
||||
case 1:
|
||||
MessageBox.Show("This theme is already installed!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
themelist.SetSelected(themelist.FindStringExact(themeName), true);
|
||||
/* required for command line invoking */
|
||||
ShowColors(ReadTheme(themeName));
|
||||
break;
|
||||
case 2:
|
||||
MessageBox.Show("Invalid theme file!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* gzip solution, not good enough coz we need multiple files
|
||||
*
|
||||
public string extractTheme(FileInfo fi)
|
||||
{
|
||||
using (FileStream inFile = fi.OpenRead())
|
||||
{
|
||||
string themeName = fi.Name.Remove(fi.Name.Length - fi.Extension.Length);
|
||||
string destFolder = xchatdir + themedir + themeName;
|
||||
|
||||
if (!Directory.Exists(destFolder))
|
||||
{
|
||||
Directory.CreateDirectory(destFolder);
|
||||
}
|
||||
|
||||
using (FileStream outFile = File.Create(destFolder + "\\colors.conf"))
|
||||
{
|
||||
using (GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress))
|
||||
{
|
||||
Decompress.CopyTo(outFile);
|
||||
}
|
||||
}
|
||||
return themeName;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/* using System.IO.Package:
|
||||
* http://weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip-archives-in-net-without-an-external-library-like-sharpziplib.aspx
|
||||
* [Content_Types].xml must be present for every zip file
|
||||
*/
|
||||
|
||||
private const long BUFFER_SIZE = 4096;
|
||||
|
||||
private int extractTheme(FileInfo zipFile)
|
||||
{
|
||||
string themeName = zipFile.Name.Remove(zipFile.Name.Length - zipFile.Extension.Length);
|
||||
string destFolder = Path.Combine(themedir, themeName);
|
||||
|
||||
try
|
||||
{
|
||||
using (Package zip = Package.Open(zipFile.FullName, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
PackagePartCollection parts = zip.GetParts();
|
||||
|
||||
if (Directory.Exists(destFolder))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(destFolder);
|
||||
}
|
||||
|
||||
foreach (PackagePart part in parts)
|
||||
{
|
||||
/* not sure what's this good for */
|
||||
/* String archive = part.Uri.ToString().Replace(@"/", @"\"); */
|
||||
String destFile = destFolder + part.Uri.ToString();
|
||||
|
||||
using (FileStream outFileStream = new FileStream(destFile, FileMode.CreateNew, FileAccess.ReadWrite))
|
||||
{
|
||||
using (Stream inStream = part.GetStream())
|
||||
{
|
||||
long bufferSize = inStream.Length < BUFFER_SIZE ? inStream.Length : BUFFER_SIZE;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
int bytesRead = 0;
|
||||
long bytesWritten = 0;
|
||||
|
||||
while ((bytesRead = inStream.Read(buffer, 0, buffer.Length)) != 0)
|
||||
{
|
||||
outFileStream.Write(buffer, 0, bytesRead);
|
||||
bytesWritten += bufferSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (System.IO.FileFormatException)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (IsDirectoryEmpty(destFolder))
|
||||
{
|
||||
Directory.Delete(destFolder);
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDirectoryEmpty(string path)
|
||||
{
|
||||
return !Directory.EnumerateFileSystemEntries(path).Any();
|
||||
}
|
||||
|
||||
private void deleteButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult result = MessageBox.Show("Are you sure you want to delete this theme from the theme repo?\n\nYour currently applied theme won't be affected.", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
Directory.Delete(Path.Combine(themedir, themelist.SelectedItem.ToString()), true);
|
||||
ListThemes();
|
||||
if (themelist.Items.Count == 0)
|
||||
{
|
||||
deleteButton.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,287 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAHAAAACQAAAAgAAAAFAAAAAgAAAAEAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABEBAQEbBAQEIQICAh4AAAAVAAAACwAA
|
||||
AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFwMDAywDAwM/AwMDSQUF
|
||||
BUUEBAQ1AQEBHwAAAA0AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAZAgICRQMD
|
||||
A3IBAQGDAQEBegICA20EBARYBAQEOgEBARsAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA
|
||||
ABQEBARjGhsZricnJcsXFxbYBgYGzgAAAJwCAgJwBQUFTwICAioAAAANAAAAAgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAA
|
||||
AAEAAAABAAAABQMDAlM8Pjqcp6ug17O3rPiFiID3NTcz6QEBAdMBAQGPBAQEWgICAjQAAAATAAAABAAA
|
||||
AAEAAAABAAAAAgAAAAUAAAAHAAAACAAAAAcAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAADAAA
|
||||
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
|
||||
DYcCAgJCAQEBFgAAAAgAAAAUAAAAJAAAADkAAABTAgICdiMjI7iHh4f25eXl/v7+/v/+/v//oaHs/62t
|
||||
vP/4+Pj/////////////////5OTk/25ubv4iIiL9CwwL+wwNDPgMDQzvDAwM1wgIB7AFBQWHAQEBhHN2
|
||||
b7enraTzjJKN/3SCgv90goP/mqKc/77Dt/+Tl473YGNd7ImNhfG/xLj55evd+OTq3Pjb4dP40NXJ+MXK
|
||||
vuutsaa9RkhDiQUFBWQAAAAiAAAACQAAAAMAAAAYAAAAKwAAAEQDAwNrKCgot5iYmPb39/f/////////
|
||||
////////oqL3/1pauv/k5OT//////////////////////+fn5/+np6f/T09P+QsLC+gAAADMAAAArwAA
|
||||
AI8AAAByAQEBhllbVqXKz8Pi2+HT/9zi1P/f5df/5evd/+Pp2/+us6j1MTMw2BUVFMInKCW1Ojs4p0FC
|
||||
PqxAQj2qNDYyqC0uK54gIB6JBwcGXgAAACIAAAAHAAAAAgAAAAAAAAAaAAAAMAEBAVQjIyOrm5ub9Pf3
|
||||
9///////////////////////vr76/0FBzv/S0tT///////z8/P/o6On/2tra//Pz8//9/f3/2dnZ/3Nz
|
||||
c/gRERHbAAAAtgAAAJkAAAB9AAAAhRQUE5KorKHE3uTW+O3z5P/x9+j/6O7g/97k1v+vs6juLi8tzAAA
|
||||
AJICAgJPAgICPgQEBEcDAwNNAQEBPgAAACYAAAATAAAACwAAAAMAAAABAAAAAAAAAAAAAAAcAAAANQwM
|
||||
DH5zc3Pm6urq////////////////////////////6Oj9/0ND3v+ysrn/3Nzj/5OTx/87O83/Li63/39/
|
||||
nP/o6Oj//////97e3v9WVlb0BQUFywAAAKcAAACKAAAAeQICApdGSESVxMm9zOju4Pru9OX/5Orc/97j
|
||||
1f+WmZDfHh8dwAEBAX0CAgIyAAAAFAAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAcAAAARDo6Ora8vLz9///////////////////////////+/v7/7e31/0JC5v9KSqb/LS3T/wYG
|
||||
8/8AAP7/AQH9/yoqz//Ly9b//v7+//7+/v+np6f+ISEh4gAAALQAAACTAAAAdAAAAIgFBQWjV1lUpMvQ
|
||||
xNHr8eP85evd/9ne0fdrbWfQCgoJpgEBAVEAAAAdAAAACQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAaAAAAU1lZWeDp6en//////////////////v7+//Ly8//BwdT/ZmbI/xMR
|
||||
6P8KBfL/AAD//wAA/v8SEvX/V1ft/8DA7v/4+Pv////////////f39//Ozs78QAAALsAAACYAAAAeAAA
|
||||
AGMAAAByBgYFm0NFQcO1uq/Z3ePV6qqupM4pKii4AAAAcQAAACMAAAALAAAAAwAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAWGRkZPP9/f3////////////s7O//s7PQ/1pa
|
||||
xf8TE+j/AgL6/wAA/v8ZDOf/Dw7w/2lp6f/IyPL/+fn8///////////////////////39/f/R0dH+AAA
|
||||
AL0AAACYAAAAeAAAAFcAAAA8AAAARAkJCHM0NjKdUVNOuDM0MZcEBQRkAAAAJgAAAAkAAAADAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAUWJiYu35+fn///////j4
|
||||
/v9ycuv/ERHp/wEB/f8AAP//AwP8/yws8P9DQe7/Wlq8/+rq7P//////////////////////////////
|
||||
///z8/P/RERE9QAAALgAAACSAAAAcgAAAFEAAAAyAAAAGwAAABcAAAAmAAAANwAAAC8AAAASAAAABAAA
|
||||
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAPlJS
|
||||
Uszb29v+//////7+//+4uPz/JSX8/w0N+v82NvL/nJzr/+jo9/+2tvn/Tk7C/9ra2///////////////
|
||||
///////////////////Nzc3+NDQ05wAAAKsAAACHAAAAZwAAAEUAAAApAAAAFQAAAAgAAAAEAAAABAAA
|
||||
AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAKAAAAIi4uLo6lpaX1/Pz8////////////6Oj+/9DQ+f/z8/v//v7+///////R0fv/OzvY/8LC
|
||||
yP/+/v7///////////////////////n5+f+MjIz5FxcXygAAAJcAAAB2AAAAVwAAADkAAAAgAAAADgAA
|
||||
AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAGAAAADgQEBEBWVlbA0dHR/P7+/v//////////////////////////////
|
||||
///x8f7/S0vn/6mpuf/8/Pz//////////////////f39/8DAwP05OTndAQEBoAAAAH4AAABhAAAARAAA
|
||||
ACkAAAAVAAAACAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACAEBARUXFxdYWVlZyby8vPj19fX/////////
|
||||
///////////////////7+///c3P1/5iYyP/5+fn///////7+/v/x8fH/rKys+kRERN0ICAiiAAAAfAAA
|
||||
AGMAAABIAAAALwAAABoAAAALAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABQAAAAoBAQEXDw8PRjs7
|
||||
O6h9fX3ox8fH+ubm5v/19fX//Pz8////////////4uL+/9zc9P/y8vL/5OTk/76+vvpvb2/tKSkpwgUF
|
||||
BYwAAABvAAAAWgAAAEUAAAAwAAAAHAAAAA4AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
|
||||
AAUAAAAJAAAAEgcHBysWFhZqKysrsFlZWdaHh4fppaWl9re3t/y5ubn+tra2/KGhofWAgIDrUFBQ2yMj
|
||||
I70ODg6NAgICZwAAAFcAAABLAAAAPAAAACwAAAAcAAAADwAAAAYAAAACAAAAAQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAQAAAAIAAAAEAAAACAAAAA0AAAAVAwMDJwkJCUwLCwt0DAwMjwwMDJ8MDAylDAwMoQsL
|
||||
C5UJCQl/BgYGYQEBAUkAAABAAAAAOwAAADUAAAAsAAAAIgAAABcAAAANAAAABgAAAAIAAAABAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAUAAAAIAAAADAAAABEAAAAVAAAAGgAA
|
||||
AB0AAAAgAAAAIwAAACQAAAAkAAAAJAAAACMAAAAhAAAAHgAAABoAAAAVAAAADwAAAAoAAAAFAAAAAgAA
|
||||
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABQAA
|
||||
AAcAAAAJAAAACwAAAA4AAAAPAAAAEAAAABAAAAARAAAAEAAAAA8AAAAOAAAADQAAAAsAAAAIAAAABQAA
|
||||
AAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABgAAAAYAAAAGAAAABQAAAAQAAAAEAAAAAwAA
|
||||
AAMAAAACAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAQAA
|
||||
AAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////
|
||||
AAD///////8AAP///////wAA/////f//AAD////wf/8AAP///+A//wAA////4D//AAD////AP/8AAP//
|
||||
/8A/nwAA//+DgDwHAAD//gAAAAcAAP/8AAAABwAA//wAAAAHAAD//AAAAA8AAP/+AAAAHwAA//4AAAA/
|
||||
AAD//wAAAD8AAP/+AAAAfwAA//gAAAAfAAD/4AAAAA8AAP/AAAAABwAA/wAAAAAHAAD+AAAAAAcAAPwA
|
||||
AAAABwAA+AAAAAAPAADwAACAAB8AAOAAAIAP/wAA4AAAQB//AADAAABAH/8AAMAAAHA//wAAwAAAfH//
|
||||
AADAAAB///8AAMAAAH///wAAwAAA////AADgAAH///8AAPAAA////wAA+AAH////AAD+AB////8AAP/B
|
||||
/////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,42 +0,0 @@
|
||||
/**
|
||||
* ZoiteChat Theme Manager
|
||||
*
|
||||
* Copyright (C) 2012 Patrick Griffs
|
||||
* Copyright (C) 2012 Berke Viktor
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace thememan
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new HTM());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
/**
|
||||
* ZoiteChat Theme Manager
|
||||
*
|
||||
* Copyright (C) 2012 Patrick Griffs
|
||||
* Copyright (C) 2012 Berke Viktor
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Resources;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ZoiteChat Theme Manager")]
|
||||
[assembly: AssemblyDescription("Manages ZoiteChat Themes.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("thememan")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("adb04fa6-faee-4dcc-be53-7ba67e74c2a0")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// 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("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: NeutralResourcesLanguageAttribute("en-US")]
|
||||
63
src/htm/Properties/Resources.Designer.cs
generated
63
src/htm/Properties/Resources.Designer.cs
generated
@@ -1,63 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace thememan.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("thememan.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
src/htm/Properties/Settings.Designer.cs
generated
26
src/htm/Properties/Settings.Designer.cs
generated
@@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace thememan.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -1,7 +0,0 @@
|
||||
zoitechat-theme-manager
|
||||
------------------
|
||||
|
||||
- Shows previews of and can load/save themes
|
||||
- Will run on windows/linux (still wip)
|
||||
|
||||

|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.4 KiB |
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup></configuration>
|
||||
@@ -1,155 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{DE87FFCA-9606-4116-B747-062D88A56A28}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>thememan</RootNamespace>
|
||||
<AssemblyName>thememan</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<AutorunEnabled>true</AutorunEnabled>
|
||||
<ApplicationRevision>1</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\..\zoitechat-build\Win32\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisIgnoreGeneratedCode>false</CodeAnalysisIgnoreGeneratedCode>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\htm.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>25412E3EF25458D894050F8209E4D9DCCDF432D7</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>htm_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>false</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>false</SignManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetZone>LocalIntranet</TargetZone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\..\zoitechat-build\x64\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreGeneratedCode>false</CodeAnalysisIgnoreGeneratedCode>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Main.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Main.Designer.cs">
|
||||
<DependentUpon>Main.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Main.resx">
|
||||
<DependentUpon>Main.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\htm.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,33 +0,0 @@
|
||||
add_languages('cs')
|
||||
|
||||
executable('thememan',
|
||||
sources: [
|
||||
'Program.cs',
|
||||
'Main.cs',
|
||||
'Main.Designer.cs',
|
||||
],
|
||||
resources: [
|
||||
# 'Main.resx', # FIXME: Allow setting resource id
|
||||
'thememan.HTM.resources',
|
||||
],
|
||||
cs_args: [
|
||||
'-r:WindowsBase',
|
||||
'-r:System.Data',
|
||||
'-r:System.Drawing',
|
||||
'-r:System.Windows.Forms',
|
||||
'-win32icon:' + meson.current_source_dir() + '/Resources/htm.ico'
|
||||
],
|
||||
install: true,
|
||||
)
|
||||
|
||||
thememan_conf = configuration_data()
|
||||
thememan_conf.set('exec_prefix', get_option('prefix'))
|
||||
thememan_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
|
||||
|
||||
configure_file(
|
||||
input: 'thememan.in',
|
||||
output: 'thememan',
|
||||
configuration: thememan_conf,
|
||||
install: true,
|
||||
install_dir: get_option('bindir'),
|
||||
)
|
||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
exec_prefix="@exec_prefix@"
|
||||
exec mono "@bindir@/thememan.exe" "$@"
|
||||
@@ -7,7 +7,3 @@ endif
|
||||
if get_option('text-frontend')
|
||||
subdir('fe-text')
|
||||
endif
|
||||
|
||||
if get_option('theme-manager')
|
||||
subdir('htm')
|
||||
endif
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
<None Include="$(DepsRoot)\bin\pangowin32-1.0-0.dll" />
|
||||
<None Include="$(DepsRoot)\bin\zlib1.dll" />
|
||||
<None Include="$(WinSparklePath)\WinSparkle.dll" />
|
||||
<None Include="$(ZoiteChatBin)thememan.exe" />
|
||||
<None Include="changelog.url" />
|
||||
<None Include="readme.url" />
|
||||
|
||||
@@ -101,3 +100,4 @@
|
||||
<Copy SourceFiles="@(DepsRootDocs)" DestinationFiles="@(DepsRootDocs->'$(ZoiteChatRel)\share\doc\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
||||
|
||||
@@ -70,7 +70,6 @@ Name: "custom"; Description: "Custom Installation"; Flags: iscustom
|
||||
[Components]
|
||||
Name: "libs"; Description: "ZoiteChat"; Types: normal minimal custom; Flags: fixed
|
||||
Name: "xctext"; Description: "ZoiteChat-Text"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "xtm"; Description: "ZoiteChat Theme Manager"; Types: normal custom; Flags: disablenouninstallwarning
|
||||
Name: "icons"; Description: "Create Shortcuts"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "icons\desktopicon"; Description: "Create Desktop Shortcut"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "icons\quicklaunchicon"; Description: "Create Quick Launch Shortcut"; Types: custom; Flags: disablenouninstallwarning
|
||||
@@ -100,13 +99,11 @@ Root: HKCR; Subkey: "irc"; ValueType: string; ValueName: "URL Protocol"; ValueDa
|
||||
Root: HKCR; Subkey: "irc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe,0"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "irc\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "irc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe --url=""%1"""; Flags: uninsdeletevalue; Tasks: not portable
|
||||
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: none; ValueName: ""; ValueData: ""; Flags: deletekey uninsdeletekey; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat Theme File"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: "ZoiteChat Theme File"; ValueData: ""; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\thememan.exe,0"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\thememan.exe ""%1"""; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".zct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat.Theme"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat.Theme"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat Theme"; Flags: uninsdeletekey; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe,0"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\zoitechat.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: not portable
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\zoitechat.exe"; Description: "Run ZoiteChat after closing the Wizard"; Flags: nowait postinstall skipifsilent
|
||||
@@ -131,7 +128,6 @@ Source: "cert.pem"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexi
|
||||
; We install bin\ contents into {app} to match the non-ARM installer layout.
|
||||
Source: "bin\zoitechat.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "bin\zoitechat-text.exe"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: xctext
|
||||
Source: "bin\thememan.exe"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: xtm
|
||||
|
||||
; All staged DLLs/helpers shipped alongside the EXE (your CI harvest step should have copied deps into bin\)
|
||||
Source: "bin\*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
|
||||
@@ -168,7 +164,6 @@ Name: "{group}\ZoiteChat ChangeLog"; Filename: "{app}\changelog.url"; IconFilena
|
||||
Name: "{group}\ZoiteChat ReadMe"; Filename: "{app}\readme.url"; IconFilename: "{sys}\shell32.dll"; IconIndex: 23; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat Config Folder"; Filename: "%APPDATA%\ZoiteChat\"; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat-Text"; Filename: "{app}\zoitechat-text.exe"; Components: xctext; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat Theme Manager"; Filename: "{app}\thememan.exe"; Components: xtm; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\Uninstall ZoiteChat"; Filename: "{uninstallexe}"; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{commondesktop}\ZoiteChat"; Filename: "{app}\zoitechat.exe"; AppUserModelID: "ZoiteChat.Desktop.Notify"; Components: icons\desktopicon; Tasks: not portable
|
||||
Name: "{commonappdata}\Microsoft\Internet Explorer\Quick Launch\ZoiteChat"; Filename: "{app}\zoitechat.exe"; Components: icons\quicklaunchicon; Tasks: not portable
|
||||
|
||||
@@ -59,7 +59,6 @@ Name: "custom"; Description: "Custom Installation"; Flags: iscustom
|
||||
[Components]
|
||||
Name: "libs"; Description: "ZoiteChat"; Types: normal minimal custom; Flags: fixed
|
||||
Name: "xctext"; Description: "ZoiteChat-Text"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "xtm"; Description: "ZoiteChat Theme Manager"; Types: normal custom; Flags: disablenouninstallwarning
|
||||
Name: "icons"; Description: "Create Shortcuts"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "icons\desktopicon"; Description: "Create Desktop Shortcut"; Types: custom; Flags: disablenouninstallwarning
|
||||
Name: "icons\quicklaunchicon"; Description: "Create Quick Launch Shortcut"; Types: custom; Flags: disablenouninstallwarning
|
||||
@@ -87,20 +86,17 @@ Root: HKCR; Subkey: "irc"; ValueType: string; ValueName: "URL Protocol"; ValueDa
|
||||
Root: HKCR; Subkey: "irc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe,0"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "irc\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "irc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe --url=""%1"""; Flags: uninsdeletevalue; Tasks: not portable
|
||||
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: none; ValueName: ""; ValueData: ""; Flags: deletekey uninsdeletekey; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat Theme File"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: "ZoiteChat Theme File"; ValueData: ""; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\thememan.exe,0"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\thememan.exe ""%1"""; Flags: uninsdeletevalue; Components:xtm; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".zct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat.Theme"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: ".hct"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat.Theme"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme"; ValueType: string; ValueName: ""; ValueData: "ZoiteChat Theme"; Flags: uninsdeletekey; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zoitechat.exe,0"; Flags: uninsdeletevalue; Tasks: not portable
|
||||
Root: HKCR; Subkey: "ZoiteChat.Theme\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\zoitechat.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: not portable
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\zoitechat.exe"; Description: "Run ZoiteChat after closing the Wizard"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "http://docs.zoitechat.org/en/latest/changelog.html"; Description: "See what's changed"; Flags: shellexec runasoriginaluser postinstall skipifsilent unchecked
|
||||
Filename: "{tmp}\vcredist.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "Installing Visual C++ Redistributable"; Flags: skipifdoesntexist; Tasks: not portable
|
||||
Filename: "{tmp}\vcredist2013.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "Installing Visual C++ Redistributable"; Flags: skipifdoesntexist; Tasks: not portable
|
||||
Filename: "{tmp}\dotnet4.exe"; Parameters: "/q /norestart"; StatusMsg: "Installing .NET"; Components: xtm; Flags: skipifdoesntexist; Tasks: not portable
|
||||
Filename: "{tmp}\perl.msi"; StatusMsg: "Installing Perl"; Components: langs\perl; Flags: shellexec skipifdoesntexist; Tasks: not portable
|
||||
Filename: "{tmp}\python.msi"; StatusMsg: "Installing Python"; Components: langs\python; Flags: shellexec skipifdoesntexist; Tasks: not portable
|
||||
Filename: "{tmp}\python.exe"; Parameters: "InstallAllUsers=1 PrependPath=1"; StatusMsg: "Installing Python"; Components: langs\python; Flags: shellexec skipifdoesntexist; Tasks: not portable
|
||||
@@ -191,7 +187,6 @@ Source: "_cffi_backend.cp3*.pyd"; DestDir: "{app}"; Flags: ignoreversion; Compon
|
||||
|
||||
Source: "zoitechat.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
|
||||
Source: "zoitechat-text.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: xctext
|
||||
Source: "thememan.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: xtm
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\ZoiteChat"; Filename: "{app}\zoitechat.exe"; AppUserModelID: "ZoiteChat.Desktop.Notify"; Tasks: not portable; Check: not WizardNoIcons
|
||||
@@ -200,7 +195,6 @@ Name: "{group}\ZoiteChat ChangeLog"; Filename: "{app}\changelog.url"; IconFilena
|
||||
Name: "{group}\ZoiteChat ReadMe"; Filename: "{app}\readme.url"; IconFilename: "{sys}\shell32.dll"; IconIndex: 23; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat Config Folder"; Filename: "%APPDATA%\ZoiteChat\"; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat-Text"; Filename: "{app}\zoitechat-text.exe"; Components: xctext; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\ZoiteChat Theme Manager"; Filename: "{app}\thememan.exe"; Components: xtm; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{group}\Uninstall ZoiteChat"; Filename: "{uninstallexe}"; Tasks: not portable; Check: not WizardNoIcons
|
||||
Name: "{commondesktop}\ZoiteChat"; Filename: "{app}\zoitechat.exe"; AppUserModelID: "ZoiteChat.Desktop.Notify"; Components: icons\desktopicon; Tasks: not portable
|
||||
Name: "{commonappdata}\Microsoft\Internet Explorer\Quick Launch\ZoiteChat"; Filename: "{app}\zoitechat.exe"; Components: icons\quicklaunchicon; Tasks: not portable
|
||||
@@ -268,12 +262,6 @@ begin
|
||||
Result := DirExists(ExpandConstant('{localappdata}') + '\enchant\myspell');
|
||||
end;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
function CheckDotNetInstall(): Boolean;
|
||||
begin
|
||||
Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4');
|
||||
end;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Sets up the automatic downloads
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
@@ -284,7 +272,6 @@ var
|
||||
PERL: String;
|
||||
PY2: String;
|
||||
PY3: String;
|
||||
DOTNET: String;
|
||||
SPELL: String;
|
||||
begin
|
||||
if(CurPageID = wpReady) then
|
||||
@@ -305,15 +292,11 @@ begin
|
||||
PERL := 'https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.16.2/Perl.5.20.0.x86.msi';
|
||||
PY3 := 'https://www.python.org/ftp/python/3.14.2/python-3.14.2.exe';
|
||||
#endif
|
||||
DOTNET := 'https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.16.2/dotnet_40.exe';
|
||||
SPELL := 'https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.16.2/ZoiteChat.Spelling.Dictionaries.r2.exe';
|
||||
|
||||
if not CheckVCInstall() then
|
||||
idpAddFile(REDIST, ExpandConstant('{tmp}\vcredist.exe'));
|
||||
|
||||
if IsComponentSelected('xtm') and not CheckDotNetInstall() then
|
||||
idpAddFile(DOTNET, ExpandConstant('{tmp}\dotnet4.exe'));
|
||||
|
||||
if IsComponentSelected('spell') and not CheckSpellInstall() then
|
||||
idpAddFile(SPELL, ExpandConstant('{tmp}\spelling-dicts.exe'));
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "copy", "copy\copy.vcxproj", "{C9B735E4-75BC-45AC-A5E3-39A6D076F912}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{B10A2C41-344C-43E0-A32D-B9587C198D8B} = {B10A2C41-344C-43E0-A32D-B9587C198D8B}
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28} = {DE87FFCA-9606-4116-B747-062D88A56A28}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer\installer.vcxproj", "{5A0F4962-E670-4DA2-9E45-52CC47F26E2F}"
|
||||
@@ -77,18 +76,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer\inst
|
||||
{6C0CA980-97C5-427A-BE61-5BCECAFABBDA} = {6C0CA980-97C5-427A-BE61-5BCECAFABBDA}
|
||||
{E78C0D9A-798E-4BF6-B0CC-6FECB8CA2FCE} = {E78C0D9A-798E-4BF6-B0CC-6FECB8CA2FCE}
|
||||
{E4BDB4C8-2335-415A-ACEE-BA88B19BFE82} = {E4BDB4C8-2335-415A-ACEE-BA88B19BFE82}
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28} = {DE87FFCA-9606-4116-B747-062D88A56A28}
|
||||
{C53145CC-D021-40C9-B97C-0249AB9A43C9} = {C53145CC-D021-40C9-B97C-0249AB9A43C9}
|
||||
{D90BC3E3-1341-4849-9354-5F40489D39D1} = {D90BC3E3-1341-4849-9354-5F40489D39D1}
|
||||
{C9B735E4-75BC-45AC-A5E3-39A6D076F912} = {C9B735E4-75BC-45AC-A5E3-39A6D076F912}
|
||||
{3C4F42FC-292A-420B-B63D-C03DFBDD8E4E} = {3C4F42FC-292A-420B-B63D-C03DFBDD8E4E}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "htm", "..\src\htm\htm.csproj", "{DE87FFCA-9606-4116-B747-062D88A56A28}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{87554B59-006C-4D94-9714-897B27067BA3} = {87554B59-006C-4D94-9714-897B27067BA3}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perl", "..\plugins\perl\perl.vcxproj", "{D90BC3E3-1341-4849-9354-5F40489D39D1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{87554B59-006C-4D94-9714-897B27067BA3} = {87554B59-006C-4D94-9714-897B27067BA3}
|
||||
@@ -164,10 +157,6 @@ Global
|
||||
{5A0F4962-E670-4DA2-9E45-52CC47F26E2F}.Release|Win32.Build.0 = Release|Win32
|
||||
{5A0F4962-E670-4DA2-9E45-52CC47F26E2F}.Release|x64.ActiveCfg = Release|x64
|
||||
{5A0F4962-E670-4DA2-9E45-52CC47F26E2F}.Release|x64.Build.0 = Release|x64
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28}.Release|Win32.ActiveCfg = Release|x86
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28}.Release|Win32.Build.0 = Release|x86
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28}.Release|x64.ActiveCfg = Release|x64
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28}.Release|x64.Build.0 = Release|x64
|
||||
{D90BC3E3-1341-4849-9354-5F40489D39D1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D90BC3E3-1341-4849-9354-5F40489D39D1}.Release|Win32.Build.0 = Release|Win32
|
||||
{D90BC3E3-1341-4849-9354-5F40489D39D1}.Release|x64.ActiveCfg = Release|x64
|
||||
@@ -205,7 +194,6 @@ Global
|
||||
{B10A2C41-344C-43E0-A32D-B9587C198D8B} = {0FD996A7-464F-4981-8380-3DCA3A244A13}
|
||||
{C9B735E4-75BC-45AC-A5E3-39A6D076F912} = {0FD996A7-464F-4981-8380-3DCA3A244A13}
|
||||
{5A0F4962-E670-4DA2-9E45-52CC47F26E2F} = {0FD996A7-464F-4981-8380-3DCA3A244A13}
|
||||
{DE87FFCA-9606-4116-B747-062D88A56A28} = {AAACEB12-9475-410E-AF5A-FDFF907E9043}
|
||||
{D90BC3E3-1341-4849-9354-5F40489D39D1} = {D237DA6B-BD5F-46C0-8BEA-50E9A1340240}
|
||||
{C2321A03-0BA7-45B3-8740-ABD82B36B0BF} = {D237DA6B-BD5F-46C0-8BEA-50E9A1340240}
|
||||
{C53145CC-D021-40C9-B97C-0249AB9A43C9} = {561126F4-FA18-45FC-A2BF-8F858F161D6D}
|
||||
@@ -213,3 +201,5 @@ Global
|
||||
{4C0F3940-2EEE-4646-82F7-6CE75B9A72F4} = {D237DA6B-BD5F-46C0-8BEA-50E9A1340240}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user