linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #03094
[Merge] lp:~linuxdcpp-team/linuxdcpp/linuxdcpp-i18n into lp:linuxdcpp
Steven Sheehy has proposed merging lp:~linuxdcpp-team/linuxdcpp/linuxdcpp-i18n into lp:linuxdcpp.
Requested reviews:
LinuxDC++ Team (linuxdcpp-team)
Related bugs:
#311482 i18n support
https://bugs.launchpad.net/bugs/311482
For more details, see:
https://code.launchpad.net/~linuxdcpp-team/linuxdcpp/linuxdcpp-i18n/+merge/47355
--
https://code.launchpad.net/~linuxdcpp-team/linuxdcpp/linuxdcpp-i18n/+merge/47355
Your team LinuxDC++ Team is requested to review the proposed merge of lp:~linuxdcpp-team/linuxdcpp/linuxdcpp-i18n into lp:linuxdcpp.
=== modified file '.bzrignore'
--- .bzrignore 2010-03-24 00:41:52 +0000
+++ .bzrignore 2011-01-25 05:11:20 +0000
@@ -2,3 +2,4 @@
tags
core
linuxdcpp
+po
=== modified file 'Readme.txt'
--- Readme.txt 2010-11-05 13:09:29 +0000
+++ Readme.txt 2011-01-25 05:11:20 +0000
@@ -20,7 +20,7 @@
scons >= 0.96
pkg-config
g++ >= 4.1
-gtk+-2.0 >= 2.10
+gtk+-2.0 >= 2.12
gthread-2.0 >= 2.4
libglade-2.0 >= 2.4
pthread
=== modified file 'SConstruct'
--- SConstruct 2011-01-18 15:02:04 +0000
+++ SConstruct 2011-01-25 05:11:20 +0000
@@ -12,13 +12,14 @@
EnsureSConsVersion(0, 98, 1)
-APP_NAME = 'linuxdcpp'
+PACKAGE = 'linuxdcpp'
+CORE_PACKAGE = 'libdcpp'
BUILD_PATH = '#/build/'
+BUILD_LOCALE_PATH = BUILD_PATH + 'locale/'
-# todo: remove -fpermissive and fix the errors
BUILD_FLAGS = {
- 'common': ['-I#', '-fpermissive', '-D_GNU_SOURCE', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_REENTRANT'],
- 'debug': ['-g', '-ggdb', '-Wall', '-D_DEBUG'],
+ 'common' : ['-I#', '-D_GNU_SOURCE', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_REENTRANT'],
+ 'debug' : ['-g', '-ggdb', '-Wall', '-D_DEBUG'],
'release' : ['-O3', '-fomit-frame-pointer', '-DNDEBUG']
}
@@ -67,21 +68,29 @@
context.Result(revision)
return revision
-# Install app icons to share/icons and all others to share/linuxdcpp/icons
-def install_icons(env, icons_dir):
- prefix = env['FAKE_ROOT'] + os.path.join(env['PREFIX'], 'share')
-
- for root, dirs, files in os.walk(icons_dir):
- for file in files:
- (filename, ext) = file.rsplit('.', 1)
-
- if (filename == APP_NAME):
- target = os.path.join(prefix, root)
- else:
- target = os.path.join(prefix, APP_NAME, root)
-
- src = os.path.join(root, file)
- env.Alias('install', env.Install(dir = target, source = src))
+# Recursively installs all files within the source folder to target. Optionally,
+# a filter function can be provided to prevent installation of certain files.
+def recursive_install(env, source, target, filter = None):
+ nodes = env.Glob(os.path.join(source, '*'))
+ target = os.path.join(target, os.path.basename(source))
+
+ for node in nodes:
+ if node.isdir():
+ env.RecursiveInstall(str(node), target, filter)
+ elif filter == None or filter(node.name):
+ env.Alias('install', env.Install(target, node))
+
+def generate_message_catalogs(env):
+ mo_path = os.path.join(BUILD_LOCALE_PATH, '%s', 'LC_MESSAGES', env['package'] + '.mo')
+ po_files = env.Glob('po/*.po', strings = True)
+
+ for po_file in po_files:
+ basename = os.path.basename(po_file)
+ lang = os.path.splitext(basename)[0]
+ mo_file = mo_path % lang
+ env.MoBuild(source = po_file, target = mo_file)
+
+ return None
# ----------------------------------------------------------------------
@@ -107,7 +116,7 @@
# Initialization
# ----------------------------------------------------------------------
-env = Environment(ENV = os.environ, options = vars)
+env = Environment(ENV = os.environ, variables = vars, package = PACKAGE)
env['mode'] = 'debug' if env.get('debug') else 'release'
env['build_path'] = BUILD_PATH + env['mode'] + '/'
@@ -136,7 +145,26 @@
vars.Save('build/sconf/scache.conf', env)
Help(vars.GenerateHelpText(env))
-env.AddMethod(install_icons, 'InstallIcons')
+pot_args = ['xgettext', '--default-domain=$PACKAGE', '--package-name=$PACKAGE',
+ '--msgid-bugs-address=https://translations.launchpad.net/linuxdcpp',
+ '--copyright-holder=LinuxDC++ Team', '--add-comments=TRANSLATORS',
+ '--keyword=_', '--keyword=N_', '--keyword=C_:1c,2', '--keyword=F_',
+ '--keyword=P_:1,2', '--from-code=UTF-8', '--foreign-user',
+ '--no-wrap', '--boost', '--sort-output', '--language=$LANGUAGE',
+ '--output=$TARGET', '$SOURCES']
+pot_build = Builder(action = Action([pot_args], 'Extracting messages to $TARGET from $SOURCES'))
+env.Append(BUILDERS = {'PotBuild' : pot_build})
+
+merge_pot_args = ['msgcat', '$SOURCES', '--output-file=$TARGET']
+merge_pot_builder = Builder(action = Action([merge_pot_args], 'Merging pot files $SOURCES to $TARGET'))
+env.Append(BUILDERS = {'MergePotFiles' : merge_pot_builder})
+
+mo_args = ['msgfmt', '-c', '-o', '$TARGET', '$SOURCE']
+mo_build = Builder(action = Action([mo_args], 'Compiling message catalog $TARGET from $SOURCES'))
+env.Append(BUILDERS = {'MoBuild' : mo_build})
+
+env.AddMethod(generate_message_catalogs, 'GenerateMessageCatalogs')
+env.AddMethod(recursive_install, 'RecursiveInstall')
conf = env.Configure(
custom_tests =
@@ -164,8 +192,8 @@
print '\tpkg-config not found.'
Exit(1)
- if not conf.CheckPKG('gtk+-2.0 >= 2.10'):
- print '\tgtk+ >= 2.10 not found.'
+ if not conf.CheckPKG('gtk+-2.0 >= 2.12'):
+ print '\tgtk+ >= 2.12 not found.'
print '\tNote: You might have the lib but not the headers'
Exit(1)
@@ -255,7 +283,7 @@
env.ParseConfig('pkg-config --libs libglade-2.0')
env.ParseConfig('pkg-config --libs gthread-2.0')
- env.Append(LIBPATH = env['build_path'] + 'dcpp')
+ env.Append(LIBPATH = env['build_path'] + CORE_PACKAGE)
env.Prepend(LIBS = 'dcpp')
if os.sys.platform == 'linux2':
@@ -281,17 +309,22 @@
# Build
# ----------------------------------------------------------------------
- Export('env')
-
# Build the dcpp library
- libdcpp = SConscript(dirs = 'dcpp', variant_dir = env['build_path'] + 'dcpp', duplicate = 0)
+ dcpp_env = env.Clone(package = CORE_PACKAGE)
+ libdcpp = SConscript(dirs = 'dcpp', variant_dir = env['build_path'] + CORE_PACKAGE, duplicate = 0, exports = {'env': dcpp_env})
# Build the GUI
- obj_files = SConscript(dirs = 'linux', variant_dir = env['build_path'] + 'gui', duplicate = 0)
+ ui_env = env.Clone()
+ glade_pot_file = SConscript(dirs = 'glade', variant_dir = env['build_path'] + 'glade', duplicate = 0, exports = {'env': ui_env})
+
+ (linux_pot_file, obj_files) = SConscript(dirs = 'linux', variant_dir = env['build_path'] + 'gui', duplicate = 0, exports = {'env': ui_env})
# Create the executable
- env.Program(target = APP_NAME, source = [libdcpp, obj_files])
- Default(APP_NAME)
+ env.Program(target = PACKAGE, source = [libdcpp, obj_files])
+
+ # i18n
+ env.MergePotFiles(source = [glade_pot_file, linux_pot_file], target = 'po/%s.pot' % PACKAGE)
+ env.GenerateMessageCatalogs()
# ----------------------------------------------------------------------
@@ -303,11 +336,16 @@
glade_files = env.Glob('glade/*.glade')
text_files = env.Glob('*.txt')
prefix = env['FAKE_ROOT'] + env['PREFIX']
- desktop_file = os.path.join('data', APP_NAME + '.desktop')
-
- env.InstallIcons('icons/hicolor/')
- env.Alias('install', env.Install(dir = os.path.join(prefix, 'share', APP_NAME, 'glade'), source = glade_files))
- env.Alias('install', env.Install(dir = os.path.join(prefix, 'share', 'doc', APP_NAME), source = text_files))
+ desktop_file = os.path.join('data', PACKAGE + '.desktop')
+ app_icon_filter = lambda icon: os.path.splitext(icon)[0] == PACKAGE
+ regular_icon_filter = lambda icon: os.path.splitext(icon)[0] != PACKAGE
+
+ env.RecursiveInstall('icons/hicolor', os.path.join(prefix, 'share', 'icons'), app_icon_filter)
+ env.RecursiveInstall('icons/hicolor', os.path.join(prefix, 'share', PACKAGE, 'icons'), regular_icon_filter)
+ env.RecursiveInstall(BUILD_LOCALE_PATH, os.path.join(prefix, 'share', 'locale'))
+
+ env.Alias('install', env.Install(dir = os.path.join(prefix, 'share', PACKAGE, 'glade'), source = glade_files))
+ env.Alias('install', env.Install(dir = os.path.join(prefix, 'share', 'doc', PACKAGE), source = text_files))
env.Alias('install', env.Install(dir = os.path.join(prefix, 'share', 'applications'), source = desktop_file))
- env.Alias('install', env.Install(dir = os.path.join(prefix, 'bin'), source = APP_NAME))
+ env.Alias('install', env.Install(dir = os.path.join(prefix, 'bin'), source = PACKAGE))
=== modified file 'dcpp/DCPlusPlus.cpp'
--- dcpp/DCPlusPlus.cpp 2009-08-15 04:40:26 +0000
+++ dcpp/DCPlusPlus.cpp 2011-01-25 05:11:20 +0000
@@ -59,9 +59,8 @@
WSAStartup(MAKEWORD(2, 2), &wsaData);
#endif
- Util::initialize();
-
bindtextdomain(PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
ResourceManager::newInstance();
SettingsManager::newInstance();
@@ -83,16 +82,15 @@
SettingsManager::getInstance()->load();
+#ifdef _WIN32
if(!SETTING(LANGUAGE).empty()) {
-#ifdef _WIN32
string language = "LANGUAGE=" + SETTING(LANGUAGE);
putenv(language.c_str());
-#else
- setenv("LANGUAGE", SETTING(LANGUAGE).c_str(), true);
-#endif
- // Apparently this is supposted to make gettext reload the message catalog...
+
+ // Apparently this is supposed to make gettext reload the message catalog...
_nl_msg_cat_cntr++;
}
+#endif
FavoriteManager::getInstance()->load();
CryptoManager::getInstance()->loadCertificates();
=== modified file 'dcpp/SConscript'
--- dcpp/SConscript 2010-10-07 04:32:15 +0000
+++ dcpp/SConscript 2011-01-25 05:11:20 +0000
@@ -2,14 +2,14 @@
Import('env')
-# We don't want to add this CXXFLAG globally so we copy the env
-env = env.Clone()
+dcpp_files = env.Glob('*.cpp')
+
env.Append(CPPDEFINES = 'BUILDING_DCPP')
-dcpp_files = env.Glob('*.cpp')
-
# Build the dcpp files and create the library
libdcpp = env.StaticLibrary(target = 'dcpp', source = dcpp_files)
+env.GenerateMessageCatalogs()
+
Return('libdcpp')
=== modified file 'dcpp/Util.cpp'
--- dcpp/Util.cpp 2010-04-18 04:11:04 +0000
+++ dcpp/Util.cpp 2011-01-25 05:11:20 +0000
@@ -105,7 +105,7 @@
#endif
-void Util::initialize() {
+void Util::initialize(PathsMap pathOverrides) {
Text::initialize();
sgenrand((unsigned long)time(NULL));
@@ -170,10 +170,8 @@
}
paths[PATH_USER_LOCAL] = paths[PATH_USER_CONFIG];
-
- // @todo paths[PATH_RESOURCES] = <replace from sconscript?>;
- // @todo paths[PATH_LOCALE] = <replace from sconscript?>;
-
+ paths[PATH_RESOURCES] = "/usr/share/";
+ paths[PATH_LOCALE] = paths[PATH_RESOURCES] + "locale/";
paths[PATH_DOWNLOADS] = home + "/Downloads/";
#endif
@@ -181,6 +179,13 @@
paths[PATH_HUB_LISTS] = paths[PATH_USER_LOCAL] + "HubLists" PATH_SEPARATOR_STR;
paths[PATH_NOTEPAD] = paths[PATH_USER_CONFIG] + "Notepad.txt";
+ // Override core generated paths
+ for (PathsMap::const_iterator it = pathOverrides.begin(); it != pathOverrides.end(); ++it)
+ {
+ if (!it->second.empty())
+ paths[it->first] = it->second;
+ }
+
File::ensureDirectory(paths[PATH_USER_CONFIG]);
File::ensureDirectory(paths[PATH_USER_LOCAL]);
=== modified file 'dcpp/Util.h'
--- dcpp/Util.h 2009-08-15 04:40:26 +0000
+++ dcpp/Util.h 2011-01-25 05:11:20 +0000
@@ -118,7 +118,8 @@
PATH_LAST
};
- static void initialize();
+ typedef std::map<Util::Paths, std::string> PathsMap;
+ static void initialize(PathsMap pathOverrides = PathsMap());
/** Path of temporary storage */
static string getTempPath() {
=== added file 'glade/SConscript'
--- glade/SConscript 1970-01-01 00:00:00 +0000
+++ glade/SConscript 2011-01-25 05:11:20 +0000
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+
+Import('env')
+
+glade_files = env.Glob('*.glade')
+
+pot_file = env.PotBuild(source=glade_files, target='po/glade.pot', LANGUAGE='glade')
+
+Return('pot_file')
+
=== modified file 'glade/favoritehubs.glade'
--- glade/favoritehubs.glade 2009-10-11 04:40:31 +0000
+++ glade/favoritehubs.glade 2011-01-25 05:11:20 +0000
@@ -170,7 +170,7 @@
<widget class="GtkLabel" id="labelAddress">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">_Address:</property>
+ <property name="label" translatable="yes">_Hub address:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">entryAddress</property>
</widget>
@@ -419,6 +419,15 @@
</widget>
</child>
</widget>
+ <widget class="GtkMessageDialog" id="confirmDeletionDialog">
+ <property name="border_width">5</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="message_type">warning</property>
+ <property name="buttons">ok-cancel</property>
+ <property name="text" translatable="yes">Are you sure you want to delete the selected favorite hub?</property>
+ </widget>
<widget class="GtkMenu" id="menu">
<child>
<widget class="GtkImageMenuItem" id="addMenuItem">
=== modified file 'glade/favoriteusers.glade'
--- glade/favoriteusers.glade 2010-05-22 14:23:56 +0000
+++ glade/favoriteusers.glade 2011-01-25 05:11:20 +0000
@@ -71,14 +71,14 @@
<child>
<widget class="GtkMenuItem" id="connectItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Connect to hub</property>
+ <property name="label" translatable="yes">_Connect to hub</property>
<property name="use_underline">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="descriptionItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Description</property>
+ <property name="label" translatable="yes">_Edit description...</property>
<property name="use_underline">True</property>
</widget>
</child>
@@ -130,8 +130,9 @@
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Description</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">_Description:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">descriptionEntry</property>
</widget>
<packing>
<property name="type">label_item</property>
=== modified file 'glade/hash.glade'
--- glade/hash.glade 2008-02-29 04:39:28 +0000
+++ glade/hash.glade 2011-01-25 05:11:20 +0000
@@ -94,7 +94,7 @@
<widget class="GtkProgressBar" id="progressbar">
<property name="visible">True</property>
<property name="pulse_step">0.10000000149011612</property>
- <property name="text" translatable="yes">0%</property>
+ <property name="text" translatable="no">0%</property>
</widget>
<packing>
<property name="expand">False</property>
=== modified file 'glade/hub.glade'
--- glade/hub.glade 2010-09-05 00:10:54 +0000
+++ glade/hub.glade 2011-01-25 05:11:20 +0000
@@ -106,7 +106,7 @@
</child>
</widget>
<widget class="GtkDialog" id="passwordDialog">
- <property name="title" translatable="yes">Enter hub password</property>
+ <property name="title" translatable="yes">Hub Password</property>
<property name="resizable">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
@@ -139,8 +139,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Enter your password</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Enter your password:</property>
</widget>
<packing>
<property name="type">label_item</property>
=== modified file 'glade/mainwindow.glade'
--- glade/mainwindow.glade 2010-10-14 03:51:12 +0000
+++ glade/mainwindow.glade 2011-01-25 05:11:20 +0000
@@ -65,7 +65,7 @@
<child>
<widget class="GtkImageMenuItem" id="quickConnectMenuItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">_Quick connect</property>
+ <property name="label" translatable="yes">_Quick connect...</property>
<property name="use_underline">True</property>
<accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
@@ -693,66 +693,19 @@
</widget>
</child>
</widget>
- <widget class="GtkDialog" id="exitDialog">
- <property name="title" translatable="yes">Exit LinuxDC++?</property>
- <property name="resizable">False</property>
+ <widget class="GtkMessageDialog" id="exitDialog">
+ <property name="border_width">5</property>
<property name="destroy_with_parent">True</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Do you really want to exit?</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="cancelbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="response_id">-6</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="okbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="response_id">-5</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- </child>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="message_type">warning</property>
+ <property name="buttons">ok-cancel</property>
+ <property name="text" translatable="yes">Are you sure you want to exit the application?</property>
</widget>
<widget class="GtkDialog" id="connectDialog">
- <property name="title" translatable="yes">Connect to a hub</property>
+ <property name="title" translatable="yes">Quick Connect</property>
<property name="destroy_with_parent">True</property>
+ <property name="default_width">400</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox2">
@@ -785,8 +738,9 @@
<child>
<widget class="GtkLabel" id="label4">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Connect to address:</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">_Hub address:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">connectEntry</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -839,7 +793,7 @@
<property name="logo_icon_name">linuxdcpp</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="copyright" translatable="yes">Copyright © 2004-2009 Jens Oknelid</property>
+ <property name="copyright" translatable="yes">Copyright © 2004-2011 Jens Oknelid</property>
<property name="comments" translatable="yes">A DC++ port for Linux
LinuxDC++ version: %s
@@ -968,7 +922,7 @@
</child>
</widget>
<widget class="GtkDialog" id="ucLineDialog">
- <property name="title" translatable="yes">Enter line for user command</property>
+ <property name="title" translatable="yes">User Command Argument</property>
<property name="default_width">300</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
@@ -1003,7 +957,6 @@
<child>
<widget class="GtkLabel" id="ucLabel">
<property name="visible">True</property>
- <property name="use_markup">True</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -1076,7 +1029,7 @@
</child>
</widget>
<widget class="GtkDialog" id="magnetDialog">
- <property name="title" translatable="yes">Magnet properties</property>
+ <property name="title" translatable="yes">Magnet Properties</property>
<property name="modal">True</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
@@ -1095,7 +1048,9 @@
<widget class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Magnet</property>
+ <property name="label" translatable="yes">_Magnet:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">magnetEntry</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1106,7 +1061,9 @@
<widget class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">File name</property>
+ <property name="label" translatable="yes">_Filename</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">magnetNameEntry</property>
</widget>
<packing>
<property name="top_attach">1</property>
@@ -1119,7 +1076,9 @@
<widget class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Size</property>
+ <property name="label" translatable="yes">_Size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">magnetSizeEntry</property>
</widget>
<packing>
<property name="top_attach">2</property>
@@ -1132,7 +1091,9 @@
<widget class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">TTH</property>
+ <property name="label" translatable="yes">_TTH:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">tthEntry</property>
</widget>
<packing>
<property name="top_attach">4</property>
@@ -1201,7 +1162,9 @@
<widget class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Exact size</property>
+ <property name="label" translatable="yes">_Exact size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">exactSizeEntry</property>
</widget>
<packing>
<property name="top_attach">3</property>
=== modified file 'glade/publichubs.glade'
--- glade/publichubs.glade 2008-05-27 00:23:19 +0000
+++ glade/publichubs.glade 2011-01-25 05:11:20 +0000
@@ -323,7 +323,7 @@
<child>
<widget class="GtkImageMenuItem" id="favMenuItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Add to favorites</property>
+ <property name="label" translatable="yes">_Add to favorites</property>
<property name="use_underline">True</property>
</widget>
</child>
=== modified file 'glade/search.glade'
--- glade/search.glade 2010-09-05 00:10:54 +0000
+++ glade/search.glade 2011-01-25 05:11:20 +0000
@@ -22,7 +22,9 @@
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Search for</property>
+ <property name="label" translatable="yes">_Search text:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">comboboxentrySearch</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -442,7 +444,7 @@
<child>
<widget class="GtkMenuItem" id="downloadToItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download _to...</property>
+ <property name="label" translatable="yes">Download _to</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="downloadMenu">
@@ -453,14 +455,14 @@
<child>
<widget class="GtkMenuItem" id="downloadWholeDirItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download _whole directory</property>
+ <property name="label" translatable="yes">Do_wnload directory</property>
<property name="use_underline">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="downloadWholeDirToItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download whole director_y to...</property>
+ <property name="label" translatable="yes">Download director_y to</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="downloadDirMenu">
=== modified file 'glade/settingsdialog.glade'
--- glade/settingsdialog.glade 2010-09-05 00:10:54 +0000
+++ glade/settingsdialog.glade 2011-01-25 05:11:20 +0000
@@ -30,13 +30,31 @@
<property name="border_width">8</property>
<property name="n_rows">5</property>
<property name="n_columns">2</property>
- <property name="column_spacing">4</property>
+ <property name="column_spacing">10</property>
<property name="row_spacing">4</property>
<child>
- <widget class="GtkVBox" id="connectionBox">
+ <widget class="GtkHBox" id="connectionBox">
<property name="visible">True</property>
<child>
- <placeholder/>
+ <widget class="GtkComboBox" id="speedComboBox">
+ <property name="visible">True</property>
+ <property name="items" translatable="no"/>
+ </widget>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="speedLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Mb/s</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
</child>
</widget>
<packing>
@@ -88,8 +106,10 @@
<child>
<widget class="GtkLabel" id="label12">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Max upload speed (MiB/s)</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Max upload _speed:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic_widget">speedComboBox</property>
</widget>
<packing>
<property name="top_attach">3</property>
@@ -101,8 +121,10 @@
<child>
<widget class="GtkLabel" id="label11">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Description</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Description:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic_widget">descriptionEntry</property>
</widget>
<packing>
<property name="top_attach">2</property>
@@ -114,8 +136,10 @@
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">E-Mail</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Email:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic_widget">emailEntry</property>
</widget>
<packing>
<property name="top_attach">1</property>
@@ -127,8 +151,10 @@
<child>
<widget class="GtkLabel" id="label9">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Username</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Username:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic_widget">nickEntry</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -138,8 +164,10 @@
<child>
<widget class="GtkLabel" id="label15">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Default hub encoding</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Default _hub encoding:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic_widget">comboboxCharset</property>
</widget>
<packing>
<property name="top_attach">4</property>
@@ -272,8 +300,10 @@
<child>
<widget class="GtkLabel" id="tlsLabel">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">TLS</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">T_LS:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">tlsEntry</property>
</widget>
<packing>
<property name="left_attach">2</property>
@@ -352,8 +382,10 @@
<child>
<widget class="GtkLabel" id="udpLabel">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">UDP</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_UDP:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">udpEntry</property>
</widget>
<packing>
<property name="left_attach">2</property>
@@ -367,9 +399,10 @@
<child>
<widget class="GtkLabel" id="tcpLabel">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">TCP</property>
- <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_TCP:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">tcpEntry</property>
</widget>
<packing>
<property name="left_attach">2</property>
@@ -384,7 +417,8 @@
<widget class="GtkLabel" id="label149">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Ports</property>
+ <property name="label" translatable="yes"><b>Ports</b></property>
+ <property name="use_markup">True</property>
</widget>
<packing>
<property name="left_attach">3</property>
@@ -397,7 +431,7 @@
<widget class="GtkRadioButton" id="activeRadioButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Active</property>
+ <property name="label" translatable="yes">_Active</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -412,7 +446,7 @@
<widget class="GtkRadioButton" id="passiveRadioButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Firewall (passive, last resort)</property>
+ <property name="label" translatable="yes">_Passive</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -428,8 +462,10 @@
<child>
<widget class="GtkLabel" id="ipLabel">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">External / WAN IP</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Public _IP Address:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">ipComboboxEntry</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -444,7 +480,7 @@
<widget class="GtkCheckButton" id="forceIPCheckButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Don't allow hub/UPnP to override</property>
+ <property name="label" translatable="yes">Don't allow hu_b / UPnP to override</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -462,7 +498,7 @@
<widget class="GtkRadioButton" id="portForwardRadioButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Firewall with manual port forward</property>
+ <property name="label" translatable="yes">_Manual port forwarding</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -479,7 +515,7 @@
<child>
<widget class="GtkLabel" id="label139">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Incoming connection settings</b></property>
+ <property name="label" translatable="yes"><b>Incoming Connection Settings</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -569,7 +605,9 @@
<widget class="GtkLabel" id="socksUserLabel">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Username</property>
+ <property name="label" translatable="yes">User_name:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socksUserEntry</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -584,7 +622,7 @@
<widget class="GtkCheckButton" id="socksCheckButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Use SOCKS5 server to resolve hostnames</property>
+ <property name="label" translatable="yes">Use SOCKS5 server to resolve _hostnames</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -616,7 +654,9 @@
<widget class="GtkLabel" id="socksPassLabel">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Password</property>
+ <property name="label" translatable="yes">Pass_word:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socksPassEntry</property>
</widget>
<packing>
<property name="left_attach">2</property>
@@ -645,7 +685,9 @@
<widget class="GtkLabel" id="socksPortLabel">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Port</property>
+ <property name="label" translatable="yes">Po_rt:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socksPortEntry</property>
</widget>
<packing>
<property name="left_attach">2</property>
@@ -660,7 +702,9 @@
<widget class="GtkLabel" id="socksIPLabel">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Socks IP</property>
+ <property name="label" translatable="yes">Soc_ks IP</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socksIPEntry</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -675,7 +719,7 @@
<widget class="GtkRadioButton" id="socksRadioButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">SOCKS5</property>
+ <property name="label" translatable="yes">_SOCKS5</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -692,7 +736,7 @@
<widget class="GtkRadioButton" id="outDirectRadioButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Direct connection</property>
+ <property name="label" translatable="yes">_Direct connection</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -712,7 +756,7 @@
<child>
<widget class="GtkLabel" id="label8">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Outgoing connection settings</b></property>
+ <property name="label" translatable="yes"><b>Outgoing Connection Settings</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -756,90 +800,64 @@
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
- <widget class="GtkVBox" id="vbox5">
+ <widget class="GtkTable" id="table3">
<property name="visible">True</property>
- <property name="border_width">8</property>
- <child>
- <widget class="GtkLabel" id="label21">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Default download directory</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkEntry" id="finishedDownloadsEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="finishedDownloadsButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label22">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Unfinished downloads directory</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkEntry" id="unfinishedDownloadsEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="unfinishedDownloadsButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">15</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="finishedDownloadsLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">8</property>
+ <property name="label" translatable="yes">_Finished downloads:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">finishedDownloadsFileChooserButton</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="unfinishedDownloadsLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">8</property>
+ <property name="label" translatable="yes">Unfin_ished downloads:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">unfinishedDownloadsFileChooserButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="unfinishedDownloadsFileChooserButton">
+ <property name="visible">True</property>
+ <property name="local_only">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select a Folder</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="finishedDownloadsFileChooserButton">
+ <property name="visible">True</property>
+ <property name="local_only">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select a Folder</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
</packing>
</child>
</widget>
@@ -864,86 +882,87 @@
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
- <widget class="GtkVBox" id="vbox6">
+ <widget class="GtkTable" id="table5">
<property name="visible">True</property>
- <property name="border_width">8</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkTable" id="table5">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">4</property>
- <property name="row_spacing">4</property>
- <child>
- <widget class="GtkLabel" id="label25">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">No new downloads if speed exceeds (KiB/s, 0 = disable)</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Maximum simultaneous downloads (0 = infinite)</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="newDownloadsSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">1 0 10000 1 10 0</property>
- <property name="climb_rate">1</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="maxDownloadsSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 100 1 10 0</property>
- <property name="climb_rate">1</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Note; because of changing download speeds, this is not 100% accurate...</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">10</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">8</property>
+ <property name="label" translatable="yes">_No new downloads if speed exceeds:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">newDownloadsSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">8</property>
+ <property name="label" translatable="yes">_Maximum simultaneous downloads:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">maxDownloadsSpinButton</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="newDownloadsSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">0 0 10000 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="tooltip_text" translatable="yes">A value of '0' will disable this option</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="maxDownloadsSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">0 0 100 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="tooltip_text" translatable="yes">A value of '0' will disable this option</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="kiBpsLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">KiB/s</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
</widget>
@@ -974,58 +993,92 @@
<property name="border_width">8</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkVBox" id="vbox8">
+ <widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
+ <property name="spacing">4</property>
<child>
- <widget class="GtkLabel" id="label28">
+ <widget class="GtkTreeView" id="publicHubsTreeView">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Public Hubs list URL</property>
+ <property name="can_focus">True</property>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox3">
+ <widget class="GtkVBox" id="vbox6">
<property name="visible">True</property>
- <child>
- <widget class="GtkButton" id="publicHubsButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Configure Public Hub Lists</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <placeholder/>
+ <property name="spacing">0</property>
+ <child>
+ <widget class="GtkButton" id="publicHubsAddButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="publicHubsUpButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-go-up</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="publicHubsDownButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-go-down</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="publicHubsRemoveButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
- <packing>
- <property name="expand">False</property>
- </packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox9">
+ <widget class="GtkHBox" id="httpProxyHBox">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="label29">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">HTTP Proxy (for hublist only)</property>
+ <property name="label" translatable="yes">_HTTP proxy:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxyEntry</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -1038,9 +1091,10 @@
<property name="can_focus">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
+ <property name="padding">15</property>
</packing>
</child>
</widget>
@@ -1053,7 +1107,7 @@
<child>
<widget class="GtkLabel" id="label27">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Public Hubs list</b></property>
+ <property name="label" translatable="yes"><b>Public Hubs List</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -1159,8 +1213,10 @@
<child>
<widget class="GtkLabel" id="label32">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Favorite download to directories</b></property>
+ <property name="label" translatable="yes"><b>_Favorite Download Directories</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">favoriteTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -1174,7 +1230,7 @@
<child>
<widget class="GtkLabel" id="label30">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download to</property>
+ <property name="label" translatable="yes">Favorite Downloads</property>
</widget>
<packing>
<property name="type">tab</property>
@@ -1195,16 +1251,10 @@
<property name="visible">True</property>
<property name="border_width">4</property>
<property name="n_rows">2</property>
- <property name="n_columns">7</property>
- <property name="column_spacing">4</property>
+ <property name="n_columns">6</property>
+ <property name="column_spacing">10</property>
<property name="row_spacing">4</property>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
<widget class="GtkSpinButton" id="priorityHighestSpinButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -1226,8 +1276,8 @@
<property name="climb_rate">1</property>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options"></property>
@@ -1242,8 +1292,8 @@
<property name="climb_rate">1</property>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
@@ -1252,11 +1302,13 @@
<widget class="GtkLabel" id="label183">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">High priority max size</property>
+ <property name="label" translatable="yes">_High priority max size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">priorityHighSpinButton</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1265,11 +1317,13 @@
<widget class="GtkLabel" id="label184">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Low priority size</property>
+ <property name="label" translatable="yes">_Low priority max size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">priorityLowSpinButton</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -1283,8 +1337,8 @@
<property name="label" translatable="yes">KiB</property>
</widget>
<packing>
- <property name="left_attach">6</property>
- <property name="right_attach">7</property>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -1298,8 +1352,8 @@
<property name="label" translatable="yes">KiB</property>
</widget>
<packing>
- <property name="left_attach">6</property>
- <property name="right_attach">7</property>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1352,7 +1406,9 @@
<widget class="GtkLabel" id="label177">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Normal priority max size</property>
+ <property name="label" translatable="yes">_Normal priority max size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">priorityNormalSpinButton</property>
</widget>
<packing>
<property name="top_attach">1</property>
@@ -1365,7 +1421,9 @@
<widget class="GtkLabel" id="label176">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Highest priority max size</property>
+ <property name="label" translatable="yes">Highes_t priority max size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">priorityHighestSpinButton</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1377,7 +1435,7 @@
<child>
<widget class="GtkLabel" id="label173">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Auto-priority settings</b></property>
+ <property name="label" translatable="yes"><b>Auto-Priority</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -1399,22 +1457,10 @@
<property name="visible">True</property>
<property name="border_width">4</property>
<property name="n_rows">3</property>
- <property name="n_columns">7</property>
- <property name="column_spacing">4</property>
+ <property name="n_columns">6</property>
+ <property name="column_spacing">10</property>
<property name="row_spacing">4</property>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
<widget class="GtkSpinButton" id="dropMinSourcesSpinButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -1454,8 +1500,8 @@
<property name="climb_rate">1</property>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
@@ -1468,8 +1514,8 @@
<property name="climb_rate">1</property>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options"></property>
@@ -1484,8 +1530,8 @@
<property name="climb_rate">1</property>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options"></property>
@@ -1496,11 +1542,13 @@
<widget class="GtkLabel" id="label194">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Min filesize</property>
+ <property name="label" translatable="yes">Min _file size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropSizeSpinButton</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
@@ -1511,11 +1559,13 @@
<widget class="GtkLabel" id="label193">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Max inactivity</property>
+ <property name="label" translatable="yes">Max _inactivity:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropInactiveSpinButton</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -1526,11 +1576,13 @@
<widget class="GtkLabel" id="label192">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Check every</property>
+ <property name="label" translatable="yes">Chec_k every:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropCheckSpinButton</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1542,8 +1594,8 @@
<property name="label" translatable="yes">KiB</property>
</widget>
<packing>
- <property name="left_attach">6</property>
- <property name="right_attach">7</property>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
@@ -1557,8 +1609,8 @@
<property name="label" translatable="yes">s</property>
</widget>
<packing>
- <property name="left_attach">6</property>
- <property name="right_attach">7</property>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -1572,8 +1624,8 @@
<property name="label" translatable="yes">s</property>
</widget>
<packing>
- <property name="left_attach">6</property>
- <property name="right_attach">7</property>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1624,7 +1676,9 @@
<widget class="GtkLabel" id="label180">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Min sources online</property>
+ <property name="label" translatable="yes">Min _sources online:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropMinSourcesSpinButton</property>
</widget>
<packing>
<property name="top_attach">2</property>
@@ -1637,7 +1691,9 @@
<widget class="GtkLabel" id="label179">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Min elapsed</property>
+ <property name="label" translatable="yes">Min _elapsed:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropElapsedSpinButton</property>
</widget>
<packing>
<property name="top_attach">1</property>
@@ -1650,7 +1706,9 @@
<widget class="GtkLabel" id="label178">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Drop sources below</property>
+ <property name="label" translatable="yes">_Drop sources below:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">dropSpeedSpinButton</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1662,7 +1720,7 @@
<child>
<widget class="GtkLabel" id="label174">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Auto-drop settings</b></property>
+ <property name="label" translatable="yes"><b>Auto-Drop</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -1700,8 +1758,10 @@
<child>
<widget class="GtkLabel" id="label175">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Other queue options</b></property>
+ <property name="label" translatable="yes"><b>O_ptions</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">queueOtherTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -1775,91 +1835,53 @@
</widget>
</child>
<child>
- <widget class="GtkLabel" id="label34">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Note: New files are added to the share only once they've been hashed!</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
<widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="sharedSizeLabel">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Total size: 0 B</property>
+ <property name="label" translatable="yes">Total size: %1%</property>
</widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox6">
+ <widget class="GtkButton" id="sharedAddButton">
<property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkCheckButton" id="shareHiddenCheckButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Share hidden files</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkCheckButton" id="followLinksCheckButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Follow Links</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="sharedAddButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="sharedRemoveButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
</widget>
<packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkButton" id="sharedRemoveButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
- <property name="position">2</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
@@ -1867,7 +1889,7 @@
<child>
<widget class="GtkLabel" id="label33">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Shared directories</b></property>
+ <property name="label" translatable="yes"><b>Shared Directories</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -1879,12 +1901,39 @@
<child>
<widget class="GtkTable" id="table6">
<property name="visible">True</property>
- <property name="n_rows">2</property>
+ <property name="n_rows">4</property>
<property name="n_columns">3</property>
- <property name="column_spacing">4</property>
+ <property name="column_spacing">10</property>
<property name="row_spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkCheckButton" id="followLinksCheckButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Follow links</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="shareHiddenCheckButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Share hidden files</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
<child>
<widget class="GtkSpinButton" id="sharedUploadSlotsSpinButton">
@@ -1896,8 +1945,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1905,12 +1954,14 @@
<child>
<widget class="GtkLabel" id="label38">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Upload slots</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Upload slots:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">sharedUploadSlotsSpinButton</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1922,6 +1973,8 @@
<property name="label" translatable="yes">KiB/s</property>
</widget>
<packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="x_options">GTK_FILL</property>
@@ -1934,8 +1987,11 @@
<property name="can_focus">True</property>
<property name="adjustment">0 0 10000 1 10 0</property>
<property name="climb_rate">1</property>
+ <property name="tooltip_text" translatable="yes">A value of '0' will disable this option</property>
</widget>
<packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -1945,10 +2001,15 @@
<child>
<widget class="GtkLabel" id="label36">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Automatically open extra slot if speed is below (0 = disable)</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Automatically open _extra slot if speed is below:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">sharedExtraSlotSpinButton</property>
</widget>
<packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
@@ -2011,8 +2072,10 @@
<child>
<widget class="GtkLabel" id="label200">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Options</b></property>
+ <property name="label" translatable="yes"><b>O_ptions</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">appearanceOptionsTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -2023,184 +2086,151 @@
</widget>
</child>
<child>
- <widget class="GtkHBox" id="hbox4">
+ <widget class="GtkTable" id="table4">
<property name="visible">True</property>
- <child>
- <widget class="GtkFrame" id="frame9">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <child>
- <widget class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="bottom_padding">5</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkHBox" id="tabPositionHBox">
- <property name="visible">True</property>
- <child>
- <widget class="GtkComboBox" id="tabPositionComboBox">
- <property name="visible">True</property>
- <property name="items" translatable="yes">Top
-Left
-Right
-Bottom</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label16">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Tab Position</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkFrame" id="frame10">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <child>
- <widget class="GtkAlignment" id="alignment7">
- <property name="visible">True</property>
- <property name="bottom_padding">5</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkHBox" id="toolbarStyleHBox">
- <property name="visible">True</property>
- <child>
- <widget class="GtkComboBox" id="toolbarStyleComboBox">
- <property name="visible">True</property>
- <property name="items" translatable="yes">Icons
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">15</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Default away message:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">awayMessageEntry</property>
+ </widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="awayMessageEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Timestamp _format:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">timestampEntry</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="timestampEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Main toolbar style:</property>
+ <property name="mnemonic_widget">toolbarStyleComboBox</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Tab position:</property>
+ <property name="mnemonic_widget">tabPositionComboBox</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAspectFrame" id="aspectframe2">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <property name="xalign">0</property>
+ <child>
+ <widget class="GtkComboBox" id="toolbarStyleComboBox">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">Icons
Text
Both
Both horizontal
Hidden
System default</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
</widget>
</child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAspectFrame" id="aspectframe1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <property name="xalign">0</property>
<child>
- <widget class="GtkLabel" id="label17">
+ <widget class="GtkComboBox" id="tabPositionComboBox">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Main Toolbar Style</b></property>
- <property name="use_markup">True</property>
+ <property name="items" translatable="yes">Top
+Left
+Right
+Bottom</property>
</widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
</child>
</widget>
<packing>
- <property name="position">1</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- <child>
- <widget class="GtkHBox" id="hbox18">
- <property name="visible">True</property>
- <child>
- <widget class="GtkFrame" id="frame12">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <child>
- <widget class="GtkHBox" id="hbox8">
- <property name="visible">True</property>
- <property name="border_width">8</property>
- <child>
- <widget class="GtkEntry" id="awayMessageEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label43">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Default away message</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkFrame" id="frame13">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <child>
- <widget class="GtkHBox" id="hbox9">
- <property name="visible">True</property>
- <property name="border_width">8</property>
- <child>
- <widget class="GtkEntry" id="timestampEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label44">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Timestamps</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label45">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="label" translatable="yes">Note: Most of these options require that you restart the application</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
</widget>
</child>
<child>
@@ -2220,6 +2250,7 @@
<child>
<widget class="GtkFrame" id="frame45">
<property name="visible">True</property>
+ <property name="sensitive">False</property>
<property name="label_xalign">0</property>
<child>
<widget class="GtkTable" id="table23">
@@ -2233,7 +2264,7 @@
<widget class="GtkButton" id="upColor">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Uploads</property>
+ <property name="label" translatable="yes">_Uploads</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
</widget>
@@ -2248,7 +2279,7 @@
<widget class="GtkButton" id="downColor">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Downloads</property>
+ <property name="label" translatable="yes">_Downloads</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
</widget>
@@ -2265,7 +2296,7 @@
<widget class="GtkButton" id="textStyle">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Select text style</property>
+ <property name="label" translatable="yes">Select _text style</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
</widget>
@@ -2280,7 +2311,7 @@
<widget class="GtkButton" id="appearanceColor">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Select window color</property>
+ <property name="label" translatable="yes">Select window _color</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
</widget>
@@ -2310,6 +2341,7 @@
<child>
<widget class="GtkFrame" id="frame46">
<property name="visible">True</property>
+ <property name="sensitive">False</property>
<property name="label_xalign">0</property>
<child>
<widget class="GtkVBox" id="vbox21">
@@ -2320,7 +2352,7 @@
<widget class="GtkCheckButton" id="soundPMReceivedCheckButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Beep every time a private message is received</property>
+ <property name="label" translatable="yes">_Beep every time a private message is received</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -2334,7 +2366,7 @@
<widget class="GtkCheckButton" id="soundPMWindowCheckButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Beep when a private message window is opened</property>
+ <property name="label" translatable="yes">B_eep when a private message window is opened</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -2387,8 +2419,10 @@
<child>
<widget class="GtkLabel" id="label206">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Tab bolding on content change</b></property>
+ <property name="label" translatable="yes"><b>_Notifications</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">tabBoldingTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -2399,19 +2433,6 @@
<property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label207">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="label" translatable="yes">Note: Most of these options require that you restart the application</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
</widget>
<packing>
<property name="position">1</property>
@@ -2461,8 +2482,10 @@
<child>
<widget class="GtkLabel" id="label201">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Auto-open on startup</b></property>
+ <property name="label" translatable="yes"><b>_Auto-Open on Startup</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">windowsAutoOpenTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -2499,8 +2522,10 @@
<child>
<widget class="GtkLabel" id="label202">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Window Options</b></property>
+ <property name="label" translatable="yes"><b>_Window Behavior</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">windowsOptionsTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -2540,8 +2565,10 @@
<child>
<widget class="GtkLabel" id="label203">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Confirmation Dialog Options</b></property>
+ <property name="label" translatable="yes"><b>Confirmation _Dialog</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">windowsConfirmTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -2560,7 +2587,7 @@
<child>
<widget class="GtkLabel" id="label198">
<property name="visible">True</property>
- <property name="label" translatable="yes">Tabs</property>
+ <property name="label" translatable="yes">Window</property>
</widget>
<packing>
<property name="type">tab</property>
@@ -2594,267 +2621,224 @@
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
- <widget class="GtkVBox" id="vbox20">
+ <widget class="GtkTable" id="logTable">
<property name="visible">True</property>
- <property name="border_width">8</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkHBox" id="hbox10">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="label47">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Directory</property>
- </widget>
- </child>
- <child>
- <widget class="GtkEntry" id="logDirectoryEntry">
- <property name="width_request">226</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="logBrowseButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
+ <property name="n_rows">8</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">15</property>
+ <property name="row_spacing">20</property>
+ <child>
+ <widget class="GtkLabel" id="outputDirectoryLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Ou_tput directory:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">logDirectoryFileChooserButton</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="logDirectoryFileChooserButton">
+ <property name="visible">True</property>
+ <property name="show_hidden">True</property>
+ <property name="local_only">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select a Folder</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logMainCheckButton">
+ <property name="label" translatable="yes">_Main chat format:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log main chat</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox11">
+ <widget class="GtkEntry" id="logMainEntry">
+ <property name="width_request">270</property>
<property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="logMainLabel">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Format</property>
- </widget>
- </child>
- <child>
- <widget class="GtkEntry" id="logMainEntry">
- <property name="width_request">270</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
</widget>
<packing>
- <property name="position">2</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logPrivateCheckButton">
+ <property name="label" translatable="yes">_Private chat format:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log private chat</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox12">
+ <widget class="GtkEntry" id="logPrivateEntry">
+ <property name="width_request">270</property>
<property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="logPrivateLabel">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Format</property>
- </widget>
- </child>
- <child>
- <widget class="GtkEntry" id="logPrivateEntry">
- <property name="width_request">270</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
</widget>
<packing>
- <property name="position">4</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logDownloadsCheckButton">
+ <property name="label" translatable="yes">_Download format:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log downloads</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox13">
+ <widget class="GtkEntry" id="logDownloadsEntry">
+ <property name="width_request">270</property>
<property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="logDownloadsLabel">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Format</property>
- </widget>
- </child>
- <child>
- <widget class="GtkEntry" id="logDownloadsEntry">
- <property name="width_request">270</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
</widget>
<packing>
- <property name="position">6</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logUploadsCheckButton">
+ <property name="label" translatable="yes">_Upload format:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log uploads</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">7</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox14">
+ <widget class="GtkEntry" id="logUploadsEntry">
+ <property name="width_request">270</property>
<property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="logUploadsLabel">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Format</property>
- </widget>
- </child>
- <child>
- <widget class="GtkEntry" id="logUploadsEntry">
- <property name="width_request">270</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
</widget>
<packing>
- <property name="position">8</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logSystemCheckButton">
+ <property name="label" translatable="yes">_System messages</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log system messages</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">9</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logStatusCheckButton">
+ <property name="label" translatable="yes">St_atus messages</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log status messages</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">10</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="logFilelistTransfersCheckButton">
+ <property name="label" translatable="yes">_File list transfers</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Log filelist transfers</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">11</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</widget>
</child>
<child>
@@ -2877,7 +2861,7 @@
<child>
<widget class="GtkLabel" id="label5">
<property name="visible">True</property>
- <property name="label" translatable="yes">Logs</property>
+ <property name="label" translatable="yes">Logging</property>
</widget>
<packing>
<property name="type">tab</property>
@@ -3039,480 +3023,445 @@
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox56">
+ <widget class="GtkTable" id="expertsOnlyTable">
<property name="visible">True</property>
- <property name="border_width">8</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkHBox" id="hbox19">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkVBox" id="vbox61">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkLabel" id="label157">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Max hash speed</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label158">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">PM history</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label159">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Mini slot size</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label160">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Max filelist size</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label161">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">CID</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox62">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkSpinButton" id="hashSpeedSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 102400 1 64 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="pmHistorySpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">10 0 100 1 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="slotSizeSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">64 0 10240 1 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="maxListSizeSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 1000 1 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="CIDEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox63">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkLabel" id="label154">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">MiB/s</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label208">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label168">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">KiB</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label169">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">MiB</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label209">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox64">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkLabel" id="label156">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Write buffer size</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label166">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Search history</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label165">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Bind address</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label164">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Socket read buffer</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label163">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Socket write buffer</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label162">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Auto refresh time</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox65">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkSpinButton" id="writeBufferSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 1024 64 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="searchHistorySpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">10 0 100 1 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="bindAddressEntry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="socketReadSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 102400 1 64 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="socketWriteSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 102400 1 64 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="autoRefreshSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">1 0 100 1 10 0</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox66">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkLabel" id="label155">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">KiB</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label14">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label213">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label170">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">B</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label171">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">B</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label210">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
+ <property name="n_rows">11</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">10</property>
+ <child>
+ <widget class="GtkLabel" id="autoRefreshLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Auto refresh _time:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">autoRefreshSpinButton</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="autoRefreshSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label167">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">s</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="bindAddressLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Bind address:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">bindAddressEntry</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="bindAddressEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="cidLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">CI_D:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">CIDEntry</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="CIDEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="maxListSizeLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Maximum _file list size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">maxListSizeSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="maxListSizeSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">0 0 1000 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label169">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">MiB</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="hashSpeedLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Maximum _hash speed:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">hashSpeedSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="hashSpeedSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">0 0 102400 1 64 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label154">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">MiB/s</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="slotSizeLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Mini slot size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">slotSizeSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="slotSizeSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">64 0 10240 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label168">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">KiB</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="pmHistoryLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Private message history:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">pmHistorySpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="pmHistorySpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">10 0 100 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="searchHistoryLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Search history:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">searchHistorySpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="searchHistorySpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">10 0 100 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="socketReadLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Socket _read buffer:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socketReadSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="socketReadSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">0 0 102400 1 64 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label170">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">B</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="socketWriteLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Socket _write buffer:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socketWriteSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="socketWriteSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">0 0 102400 1 64 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label171">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">B</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="writeBufferLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Wr_ite buffer size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">writeBufferSpinButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="writeBufferSpinButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">0 0 1024 64 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label155">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">KiB</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
</child>
</widget>
<packing>
@@ -3540,124 +3489,100 @@
<child>
<widget class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
- <property name="left_padding">12</property>
+ <property name="left_padding">8</property>
<child>
<widget class="GtkTable" id="table2">
<property name="visible">True</property>
<property name="n_rows">3</property>
- <property name="n_columns">3</property>
- <child>
- <widget class="GtkButton" id="trustedCertificatesPathButton">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"></property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="certificateFileButton">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="privateKeyButton">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Browse...</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options"></property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="trustedCertificatesPathEntry">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="certificateFileEntry">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="privateKeyEntry">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">15</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <widget class="GtkLabel" id="privateKeyLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Private key file:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">privateKeyFileChooserButton</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="privateKeyFileChooserButton">
+ <property name="visible">True</property>
+ <property name="local_only">False</property>
+ <property name="action">open</property>
+ <property name="title" translatable="yes">Select a File</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL|GTK_EXPAND</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="certificateFileLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">C_ertificate file:</property>
+ <property name="mnemonic_widget">certificateFileChooserButton</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="certificateFileChooserButton">
+ <property name="visible">True</property>
+ <property name="local_only">False</property>
+ <property name="action">open</property>
+ <property name="title" translatable="yes">Select a File</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL|GTK_EXPAND</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="trustedCertificatesPathLabel">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Trusted certificates path</property>
- <property name="single_line_mode">True</property>
- </widget>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="certificateFileLabel">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Certificate file</property>
- <property name="single_line_mode">True</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="privateKeyLabel">
- <property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Private key file</property>
- <property name="justify">GTK_JUSTIFY_RIGHT</property>
- <property name="single_line_mode">True</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Trusted certificates path:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">trustedCertificatesPathFileChooserButton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="trustedCertificatesPathFileChooserButton">
+ <property name="visible">True</property>
+ <property name="local_only">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select a Folder</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL|GTK_EXPAND</property>
<property name="y_options"></property>
</packing>
</child>
@@ -3704,8 +3629,10 @@
<child>
<widget class="GtkLabel" id="otherOptionsLabel">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Other Security Options</b></property>
+ <property name="label" translatable="yes"><b>_Security Options</b></property>
<property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">certificatesTreeView</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -3722,9 +3649,10 @@
<child>
<widget class="GtkButton" id="generateCertificatesButton">
<property name="visible">True</property>
- <property name="label" translatable="yes">Generate certificates</property>
+ <property name="label" translatable="yes">_Generate certificates</property>
<property name="xalign">1</property>
<property name="response_id">0</property>
+ <property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -3749,7 +3677,7 @@
<child>
<widget class="GtkLabel" id="certificates">
<property name="visible">True</property>
- <property name="label" translatable="yes">Security Certificates</property>
+ <property name="label" translatable="yes">Security</property>
</widget>
<packing>
<property name="type">tab</property>
@@ -3815,139 +3743,8 @@
</widget>
</child>
</widget>
- <widget class="GtkDialog" id="publicHubsDialog">
- <property name="width_request">500</property>
- <property name="height_request">250</property>
- <property name="title" translatable="yes">Configure hub lists</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkVBox" id="vbox8">
- <property name="visible">True</property>
- <property name="border_width">8</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkHBox" id="hbox5">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkTreeView" id="publicHubsDialogTreeView">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkButton" id="publicHubsDialogAddButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="publicHubsDialogUpButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-go-up</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="publicHubsDialogDownButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-go-down</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="publicHubsDialogRemoveButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Note:</b> Edit urls in the list by clicking them once when selected</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="okbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="response_id">-5</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="GtkDialog" id="favoriteNameDialog">
- <property name="title" translatable="yes">Favorite name</property>
+ <property name="title" translatable="yes">Favorite Name</property>
<property name="resizable">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
@@ -3978,8 +3775,9 @@
<child>
<widget class="GtkLabel" id="label63">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Under what name you see the directory</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">_Alias for the favorite download directory:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">favoriteNameDialogEntry</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -4029,7 +3827,7 @@
</child>
</widget>
<widget class="GtkDialog" id="virtualNameDialog">
- <property name="title" translatable="yes">Virtual name</property>
+ <property name="title" translatable="yes">Virtual Name</property>
<property name="resizable">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
@@ -4044,6 +3842,7 @@
<widget class="GtkVBox" id="vbox26">
<property name="visible">True</property>
<property name="border_width">8</property>
+ <property name="spacing">10</property>
<child>
<widget class="GtkEntry" id="virtualNameDialogEntry">
<property name="visible">True</property>
@@ -4055,14 +3854,27 @@
<property name="fill">False</property>
</packing>
</child>
+ <child>
+ <widget class="GtkLabel" id="label34">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Note: New files are added to the share only once they've been hashed</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label65">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Name under which the others see the directory</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">_Alias for the shared directory:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">virtualNameDialogEntry</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -4111,7 +3923,7 @@
</child>
</widget>
<widget class="GtkFileChooserDialog" id="dirChooserDialog">
- <property name="title" translatable="yes">Choose a directory</property>
+ <property name="title" translatable="yes">Select a Folder</property>
<property name="modal">True</property>
<property name="local_only">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
@@ -4161,59 +3973,9 @@
</widget>
</child>
</widget>
- <widget class="GtkFileChooserDialog" id="fileChooserDialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Choose a File</property>
- <property name="modal">True</property>
- <property name="local_only">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox9">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
- <property name="spacing">2</property>
- <child>
- <placeholder/>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area9">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="button4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="response_id">-6</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="button3">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="label" translatable="yes">gtk-open</property>
- <property name="use_stock">True</property>
- <property name="response_id">-5</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="GtkDialog" id="commandDialog">
- <property name="title" translatable="yes">Modify User Command</property>
- <property name="resizable">False</property>
+ <property name="title" translatable="yes">Edit User Command</property>
+ <property name="default_width">500</property>
<property name="modal">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
@@ -4238,7 +4000,7 @@
<widget class="GtkRadioButton" id="commandDialogRaw">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Raw</property>
+ <property name="label" translatable="yes">_Raw</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4254,7 +4016,7 @@
<widget class="GtkRadioButton" id="commandDialogPM">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">PM</property>
+ <property name="label" translatable="yes">_Private Message</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4272,7 +4034,7 @@
<widget class="GtkRadioButton" id="commandDialogChat">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Chat</property>
+ <property name="label" translatable="yes">Ch_at</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4288,7 +4050,7 @@
<widget class="GtkRadioButton" id="commandDialogSeparator">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Separator</property>
+ <property name="label" translatable="yes">_Separator</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4325,7 +4087,7 @@
<widget class="GtkCheckButton" id="commandDialogSearchMenu">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Search Menu</property>
+ <property name="label" translatable="yes">S_earch</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4340,7 +4102,7 @@
<widget class="GtkCheckButton" id="commandDialogUserMenu">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Chat Menu</property>
+ <property name="label" translatable="yes">Ch_at</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4355,7 +4117,7 @@
<widget class="GtkCheckButton" id="commandDialogFilelistMenu">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Filelist Menu</property>
+ <property name="label" translatable="yes">_File list</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4372,7 +4134,7 @@
<widget class="GtkCheckButton" id="commandDialogHubMenu">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Hub Menu</property>
+ <property name="label" translatable="yes">_Hub</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4386,7 +4148,7 @@
<child>
<widget class="GtkLabel" id="label68">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Context</b></property>
+ <property name="label" translatable="yes"><b>Menu Context</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -4414,7 +4176,9 @@
<widget class="GtkLabel" id="label70">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Name</property>
+ <property name="label" translatable="yes">_Name:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">commandDialogName</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4442,7 +4206,9 @@
<widget class="GtkLabel" id="label71">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Command</property>
+ <property name="label" translatable="yes">Co_mmand:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">commandDialogCommand</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4473,7 +4239,9 @@
<widget class="GtkLabel" id="label72">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Hub IP / DNS (empty = All, 'op' = where operator)</property>
+ <property name="label" translatable="yes">_Hub address:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">commandDialogHub</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4485,6 +4253,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
+ <property name="tooltip_text" translatable="yes">A value of 'op' indicates only hubs in which the user is an operator. Leave empty for all hubs.</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4504,7 +4273,9 @@
<widget class="GtkLabel" id="label73">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">To (empty for selected user)</property>
+ <property name="label" translatable="yes">_Username:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">commandDialogTo</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4516,6 +4287,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
+ <property name="tooltip_text">Leave empty for selected user</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -4532,7 +4304,7 @@
<widget class="GtkCheckButton" id="commandDialogOnce">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Send once per user</property>
+ <property name="label" translatable="yes">Sen_d once per user</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
@@ -4584,7 +4356,7 @@
<child>
<widget class="GtkLabel" id="label74">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Text sent to hub</b></property>
+ <property name="label" translatable="yes"><b>Raw Command</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
=== modified file 'glade/sharebrowser.glade'
--- glade/sharebrowser.glade 2009-06-17 03:28:37 +0000
+++ glade/sharebrowser.glade 2011-01-25 05:11:20 +0000
@@ -80,7 +80,7 @@
</child>
<child>
<widget class="GtkStatusbar" id="filesStatus">
- <property name="width_request">120</property>
+ <property name="width_request">130</property>
<property name="visible">True</property>
<property name="has_resize_grip">False</property>
</widget>
@@ -92,7 +92,7 @@
</child>
<child>
<widget class="GtkStatusbar" id="totalStatus">
- <property name="width_request">120</property>
+ <property name="width_request">150</property>
<property name="visible">True</property>
<property name="has_resize_grip">False</property>
</widget>
@@ -151,7 +151,7 @@
<widget class="GtkDialog" id="findDialog">
<property name="width_request">275</property>
<property name="height_request">125</property>
- <property name="title" translatable="yes">Find files</property>
+ <property name="title" translatable="yes">Find Files</property>
<property name="modal">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
@@ -179,8 +179,9 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">Enter text to search for</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">_Search text:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">findEntry</property>
</widget>
<packing>
<property name="type">label_item</property>
@@ -232,14 +233,14 @@
<child>
<widget class="GtkMenuItem" id="dirDownloadItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download</property>
+ <property name="label" translatable="yes">_Download</property>
<property name="use_underline">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="dirDownloadToItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download to...</property>
+ <property name="label" translatable="yes">Download _to</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="dirDownloadMenu">
@@ -255,7 +256,7 @@
<child>
<widget class="GtkMenuItem" id="dirUserCommandItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">User commands</property>
+ <property name="label" translatable="yes">_User commands</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="dirUserCommandMenu">
@@ -268,14 +269,14 @@
<child>
<widget class="GtkMenuItem" id="fileDownloadItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download</property>
+ <property name="label" translatable="yes">_Download</property>
<property name="use_underline">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="fileDownloadToItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Download to...</property>
+ <property name="label" translatable="yes">Download _to</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="fileDownloadMenu">
@@ -305,7 +306,7 @@
<child>
<widget class="GtkMenuItem" id="fileUserCommandItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">User commands</property>
+ <property name="label" translatable="yes">_User commands</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="fileUserCommandMenu">
=== modified file 'glade/transfers.glade'
--- glade/transfers.glade 2009-03-18 00:50:57 +0000
+++ glade/transfers.glade 2011-01-25 05:11:20 +0000
@@ -70,7 +70,7 @@
<child>
<widget class="GtkMenuItem" id="userCommandItem">
<property name="visible">True</property>
- <property name="label" translatable="yes">User commands</property>
+ <property name="label" translatable="yes">_User commands</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="userCommandMenu">
=== added file 'linux/IntlUtil.hh'
--- linux/IntlUtil.hh 1970-01-01 00:00:00 +0000
+++ linux/IntlUtil.hh 2011-01-25 05:11:20 +0000
@@ -0,0 +1,64 @@
+/*
+ * Copyright © 2010 Jens Oknelid, paskharen@xxxxxxxxx
+ *
+ * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * In addition, as a special exception, compiling, linking, and/or
+ * using OpenSSL with this program is allowed.
+ */
+
+#ifndef LINUXDCPP_INTL_UTIL_HH
+#define LINUXDCPP_INTL_UTIL_HH
+
+#include <boost/format.hpp>
+#include <string>
+#include <exception>
+#include <glib/gi18n.h>
+#include <errno.h>
+
+class IntlUtil
+{
+ public:
+ // Initialize i18n support
+ static void initialize()
+ {
+ if (bindtextdomain(PACKAGE, _DATADIR "/locale") == NULL)
+ throw std::runtime_error(strerror(errno));
+
+ if (textdomain(PACKAGE) == NULL)
+ throw std::runtime_error(strerror(errno));
+
+ if (bind_textdomain_codeset(PACKAGE, "UTF-8") == NULL)
+ throw std::runtime_error(strerror(errno));
+ }
+
+ static inline boost::format message_format(const char *text)
+ {
+ boost::format fmt(text);
+ fmt.exceptions(boost::io::no_error_bits);
+ return fmt;
+ }
+
+ static inline boost::format message_format(const std::string &text)
+ {
+ return message_format(text.c_str());
+ }
+};
+
+#define F_(text, params) (IntlUtil::message_format(_(text)) params).str()
+#define P_(text, text_plural, params, n) (IntlUtil::message_format(g_dngettext(NULL, text, text_plural, n)) params).str()
+
+#endif /* LINUXDCPP_INTL_UTIL_HH */
+
=== modified file 'linux/SConscript'
--- linux/SConscript 2010-10-12 04:50:18 +0000
+++ linux/SConscript 2011-01-25 05:11:20 +0000
@@ -4,18 +4,19 @@
VERSION_SOURCE = 'version.cc'
-# We don't want to add these CFLAGS globally so we copy the env
-env = env.Clone()
-env.ParseConfig('pkg-config --cflags libglade-2.0')
-
+header_files = env.Glob('*.hh')
gui_files = env.Glob('*.cc')
gui_files.remove(File(VERSION_SOURCE))
obj_files = []
+env.ParseConfig('pkg-config --cflags libglade-2.0')
+env.Append(CPPDEFINES='PACKAGE=\'\"%s\"\'' % env['package'])
+
# Build the gui_files
obj_files = env.Object(gui_files)
obj_file = env.Object(VERSION_SOURCE, CPPDEFINES = 'BZR_REVISION=\\"%s\\"' % env['BZR_REVISION'])
-
obj_files.append(obj_file)
-Return('obj_files')
+pot_file = env.PotBuild(source=gui_files + header_files, target='po/linux.pot', LANGUAGE='C++')
+
+Return('pot_file', 'obj_files')
=== modified file 'linux/WulforUtil.cc'
--- linux/WulforUtil.cc 2010-05-22 14:23:56 +0000
+++ linux/WulforUtil.cc 2011-01-25 05:11:20 +0000
@@ -20,7 +20,7 @@
*/
#include "WulforUtil.hh"
-#include <glib/gi18n.h>
+#include "IntlUtil.hh"
#include <glib/gstdio.h>
#include <glib.h>
#include <dcpp/ClientManager.h>
@@ -38,7 +38,7 @@
using namespace std;
using namespace dcpp;
-const string WulforUtil::ENCODING_LOCALE = _("System default");
+const string WulforUtil::ENCODING_LOCALE = C_("Character encoding", "System default");
std::vector<std::string> WulforUtil::charsets;
const std::string WulforUtil::magnetSignature = "magnet:?xt=urn:tree:tiger:";
GtkIconFactory* WulforUtil::iconFactory = NULL;
@@ -154,7 +154,7 @@
{
StringList hubs = ClientManager::getInstance()->getHubNames(cid);
if (hubs.empty())
- return _("Offline");
+ return C_("User", "Offline");
else
return Util::toString(hubs);
}
@@ -190,22 +190,22 @@
if (charsets.size() == 0)
{
charsets.push_back(ENCODING_LOCALE);
- charsets.push_back(_("UTF-8 (Unicode)"));
- charsets.push_back(_("CP1252 (Western Europe)"));
- charsets.push_back(_("CP1250 (Central Europe)"));
- charsets.push_back(_("ISO-8859-2 (Central Europe)"));
- charsets.push_back(_("ISO-8859-7 (Greek)"));
- charsets.push_back(_("ISO-8859-8 (Hebrew)"));
- charsets.push_back(_("ISO-8859-9 (Turkish)"));
- charsets.push_back(_("ISO-2022-JP (Japanese)"));
- charsets.push_back(_("SJIS (Japanese)"));
- charsets.push_back(_("CP949 (Korean)"));
- charsets.push_back(_("KOI8-R (Cyrillic)"));
- charsets.push_back(_("CP1251 (Cyrillic)"));
- charsets.push_back(_("CP1256 (Arabic)"));
- charsets.push_back(_("CP1257 (Baltic)"));
- charsets.push_back(_("GB18030 (Chinese)"));
- charsets.push_back(_("TIS-620 (Thai)"));
+ charsets.push_back(C_("Character encoding", "UTF-8 (Unicode)"));
+ charsets.push_back(C_("Character encoding", "CP1252 (Western Europe)"));
+ charsets.push_back(C_("Character encoding", "CP1250 (Central Europe)"));
+ charsets.push_back(C_("Character encoding", "ISO-8859-2 (Central Europe)"));
+ charsets.push_back(C_("Character encoding", "ISO-8859-7 (Greek)"));
+ charsets.push_back(C_("Character encoding", "ISO-8859-8 (Hebrew)"));
+ charsets.push_back(C_("Character encoding", "ISO-8859-9 (Turkish)"));
+ charsets.push_back(C_("Character encoding", "ISO-2022-JP (Japanese)"));
+ charsets.push_back(C_("Character encoding", "SJIS (Japanese)"));
+ charsets.push_back(C_("Character encoding", "CP949 (Korean)"));
+ charsets.push_back(C_("Character encoding", "KOI8-R (Cyrillic)"));
+ charsets.push_back(C_("Character encoding", "CP1251 (Cyrillic)"));
+ charsets.push_back(C_("Character encoding", "CP1256 (Arabic)"));
+ charsets.push_back(C_("Character encoding", "CP1257 (Baltic)"));
+ charsets.push_back(C_("Character encoding", "GB18030 (Chinese)"));
+ charsets.push_back(C_("Character encoding", "TIS-620 (Thai)"));
}
return charsets;
}
@@ -248,9 +248,9 @@
bool WulforUtil::splitMagnet(const string &magnet, string &name, int64_t &size, string &tth)
{
- name = _("Unknown");
+ name = C_("Magnet", "Unknown");
size = 0;
- tth = _("Unknown");
+ tth = C_("Magnet", "Unknown");
if (!isMagnet(magnet.c_str()) || magnet.size() <= magnetSignature.length())
return FALSE;
=== modified file 'linux/bookentry.cc'
--- linux/bookentry.cc 2011-01-07 16:04:03 +0000
+++ linux/bookentry.cc 2011-01-25 05:11:20 +0000
@@ -101,6 +101,7 @@
if (len > labelSize)
{
gchar truncatedText[text.size()];
+ // TRANSLATORS: Tab label ellipsis to indicate text is longer than tab width
const string clipText = _("...");
len = labelSize - g_utf8_strlen(clipText.c_str(), -1);
g_utf8_strncpy(truncatedText, text.c_str(), len);
=== modified file 'linux/downloadqueue.cc'
--- linux/downloadqueue.cc 2009-08-15 04:40:26 +0000
+++ linux/downloadqueue.cc 2011-01-25 05:11:20 +0000
@@ -57,17 +57,17 @@
// Initialize file treeview
fileView.setView(GTK_TREE_VIEW(getWidget("fileView")), TRUE, "downloadqueue");
- fileView.insertColumn("Filename", G_TYPE_STRING, TreeView::STRING, 200);
- fileView.insertColumn("Status", G_TYPE_STRING, TreeView::STRING, 100);
- fileView.insertColumn("Size", G_TYPE_STRING, TreeView::STRING, 100);
- fileView.insertColumn("Downloaded", G_TYPE_STRING, TreeView::STRING, 150);
- fileView.insertColumn("Priority", G_TYPE_STRING, TreeView::STRING, 75);
- fileView.insertColumn("Users", G_TYPE_STRING, TreeView::STRING, 200);
- fileView.insertColumn("Path", G_TYPE_STRING, TreeView::STRING, 200);
- fileView.insertColumn("Exact Size", G_TYPE_STRING, TreeView::STRING, 100);
- fileView.insertColumn("Errors", G_TYPE_STRING, TreeView::STRING, 200);
- fileView.insertColumn("Added", G_TYPE_STRING, TreeView::STRING, 120);
- fileView.insertColumn("TTH", G_TYPE_STRING, TreeView::STRING, 125);
+ fileView.insertColumn(N_("Filename"), G_TYPE_STRING, TreeView::STRING, 200);
+ fileView.insertColumn(N_("Status"), G_TYPE_STRING, TreeView::STRING, 100);
+ fileView.insertColumn(N_("Size"), G_TYPE_STRING, TreeView::STRING, 100);
+ fileView.insertColumn(N_("Downloaded"), G_TYPE_STRING, TreeView::STRING, 150);
+ fileView.insertColumn(N_("Priority"), G_TYPE_STRING, TreeView::STRING, 75);
+ fileView.insertColumn(N_("Users"), G_TYPE_STRING, TreeView::STRING, 200);
+ fileView.insertColumn(N_("Path"), G_TYPE_STRING, TreeView::STRING, 200);
+ fileView.insertColumn(N_("Exact Size"), G_TYPE_STRING, TreeView::STRING, 100);
+ fileView.insertColumn(N_("Errors"), G_TYPE_STRING, TreeView::STRING, 200);
+ fileView.insertColumn(N_("Added"), G_TYPE_STRING, TreeView::STRING, 120);
+ fileView.insertColumn(N_("TTH"), G_TYPE_STRING, TreeView::STRING, 125);
fileView.insertHiddenColumn("Size Sort", G_TYPE_INT64);
fileView.insertHiddenColumn("Downloaded Sort", G_TYPE_INT64);
fileView.insertHiddenColumn("Target", G_TYPE_STRING);
@@ -225,10 +225,10 @@
void DownloadQueue::updateStatus_gui()
{
- setStatus_gui(_("Items: ") + Util::toString(currentItems), "statusItems");
- setStatus_gui(_("Size: ") + Util::formatBytes(currentSize), "statusFileSize");
- setStatus_gui(_("Files: ") + Util::toString(totalItems), "statusFiles");
- setStatus_gui(_("Size: ") + Util::formatBytes(totalSize), "statusTotalSize");
+ setStatus_gui(F_("Items: %1%", % currentItems), "statusItems");
+ setStatus_gui(F_("Size: %1%", % Util::formatBytes(currentSize)), "statusFileSize");
+ setStatus_gui(F_("Files: %1%", % totalItems), "statusFiles");
+ setStatus_gui(F_("Size: %1%", % Util::formatBytes(totalSize)), "statusTotalSize");
}
void DownloadQueue::addFiles_gui(vector<StringMap> files, bool firstUpdate)
@@ -1237,6 +1237,7 @@
string nick;
map<string, string> source;
int online = 0;
+ int totalSources = item->getSources().size();
params["Filename"] = item->getTargetFileName();
params["Path"] = Util::getFilePath(item->getTarget());
@@ -1261,7 +1262,7 @@
// Status
if (item->isWaiting())
- params["Status"] = Util::toString(online) + _(" of ") + Util::toString(item->getSources().size()) + _(" user(s) online");
+ params["Status"] = P_("%1% of %2% user online", "%1% of %2% users online", % online % totalSources, totalSources);
else
params["Status"] = _("Running...");
@@ -1269,8 +1270,8 @@
params["Size Sort"] = Util::toString(item->getSize());
if (item->getSize() < 0)
{
- params["Size"] = _("Unknown");
- params["Exact Size"] = _("Unknown");
+ params["Size"] = C_("Size", "Unknown");
+ params["Exact Size"] = C_("Size", "Unknown");
}
else
{
@@ -1294,22 +1295,22 @@
switch (item->getPriority())
{
case QueueItem::PAUSED:
- params["Priority"] = _("Paused");
+ params["Priority"] = C_("Priority", "Paused");
break;
case QueueItem::LOWEST:
- params["Priority"] = _("Lowest");
+ params["Priority"] = C_("Priority", "Lowest");
break;
case QueueItem::LOW:
- params["Priority"] = _("Low");
+ params["Priority"] = C_("Priority", "Low");
break;
case QueueItem::HIGH:
- params["Priority"] = _("High");
+ params["Priority"] = C_("Priority", "High");
break;
case QueueItem::HIGHEST:
- params["Priority"] = _("Highest");
+ params["Priority"] = C_("Priority", "Highest");
break;
default:
- params["Priority"] = _("Normal");
+ params["Priority"] = C_("Priority", "Normal");
}
// Error
=== modified file 'linux/downloadqueue.hh'
--- linux/downloadqueue.hh 2009-03-12 05:47:55 +0000
+++ linux/downloadqueue.hh 2011-01-25 05:11:20 +0000
@@ -22,6 +22,8 @@
#ifndef WULFOR_DOWNLOAD_QUEUE_HH
#define WULFOR_DOWNLOAD_QUEUE_HH
+#include "IntlUtil.hh"
+
#include <dcpp/stdinc.h>
#include <dcpp/DCPlusPlus.h>
#include <dcpp/QueueManager.h>
=== modified file 'linux/entry.hh'
--- linux/entry.hh 2010-09-08 02:51:30 +0000
+++ linux/entry.hh 2011-01-25 05:11:20 +0000
@@ -25,7 +25,7 @@
#include <gtk/gtk.h>
#include <glade/glade.h>
#include <gdk/gdkkeysyms.h>
-#include <glib/gi18n.h>
+#include "IntlUtil.hh"
#include <string>
#include <map>
=== modified file 'linux/favoritehubs.cc'
--- linux/favoritehubs.cc 2010-09-05 00:10:54 +0000
+++ linux/favoritehubs.cc 2011-01-25 05:11:20 +0000
@@ -43,14 +43,14 @@
// Initialize favorite hub list treeview
favoriteView.setView(GTK_TREE_VIEW(getWidget("favoriteView")), TRUE, "favoritehubs");
- favoriteView.insertColumn("Auto Connect", G_TYPE_BOOLEAN, TreeView::BOOL, 100);
- favoriteView.insertColumn("Name", G_TYPE_STRING, TreeView::STRING, 150);
- favoriteView.insertColumn("Description", G_TYPE_STRING, TreeView::STRING, 250);
- favoriteView.insertColumn("Address", G_TYPE_STRING, TreeView::STRING, 175);
- favoriteView.insertColumn("Username", G_TYPE_STRING, TreeView::STRING, 100);
- favoriteView.insertColumn("Password", G_TYPE_STRING, TreeView::STRING, 100);
- favoriteView.insertColumn("User Description", G_TYPE_STRING, TreeView::STRING, 125);
- favoriteView.insertColumn("Encoding", G_TYPE_STRING, TreeView::STRING, 125);
+ favoriteView.insertColumn(N_("Auto Connect"), G_TYPE_BOOLEAN, TreeView::BOOL, 100);
+ favoriteView.insertColumn(N_("Name"), G_TYPE_STRING, TreeView::STRING, 150);
+ favoriteView.insertColumn(N_("Description"), G_TYPE_STRING, TreeView::STRING, 250);
+ favoriteView.insertColumn(N_("Address"), G_TYPE_STRING, TreeView::STRING, 175);
+ favoriteView.insertColumn(N_("Username"), G_TYPE_STRING, TreeView::STRING, 100);
+ favoriteView.insertColumn(N_("Password"), G_TYPE_STRING, TreeView::STRING, 100);
+ favoriteView.insertColumn(N_("User Description"), G_TYPE_STRING, TreeView::STRING, 125);
+ favoriteView.insertColumn(N_("Encoding"), G_TYPE_STRING, TreeView::STRING, 125);
favoriteView.insertHiddenColumn("Hidden Password", G_TYPE_STRING);
favoriteView.finalize();
favoriteStore = gtk_list_store_newv(favoriteView.getColCount(), favoriteView.getGTypes());
@@ -375,17 +375,11 @@
{
if (BOOLSETTING(CONFIRM_HUB_REMOVAL))
{
- string name = fh->favoriteView.getString(&iter, "Name").c_str();
- GtkWindow* parent = GTK_WINDOW(WulforManager::get()->getMainWindow()->getContainer());
- GtkWidget* dialog = gtk_message_dialog_new(parent,
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
- _("Are you sure you want to delete favorite hub \"%s\"?"), name.c_str());
- gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_REMOVE, GTK_RESPONSE_YES, NULL);
- gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_YES, GTK_RESPONSE_CANCEL, -1);
- gint response = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ GtkWidget *confirmDeletionDialog = fh->getWidget("confirmDeletionDialog");
+ gint response = gtk_dialog_run(GTK_DIALOG(confirmDeletionDialog));
+ gtk_widget_hide(fh->getWidget("confirmDeletionDialog"));
- if (response != GTK_RESPONSE_YES)
+ if (response != GTK_RESPONSE_OK)
return;
}
=== modified file 'linux/favoriteusers.cc'
--- linux/favoriteusers.cc 2010-09-05 00:10:54 +0000
+++ linux/favoriteusers.cc 2011-01-25 05:11:20 +0000
@@ -38,12 +38,12 @@
// Initialize favorite users list treeview
favoriteUserView.setView(GTK_TREE_VIEW(getWidget("favoriteUserView")), TRUE, "favoriteusers");
- favoriteUserView.insertColumn(_("Auto Grant Slot"), G_TYPE_BOOLEAN, TreeView::BOOL, 120);
- favoriteUserView.insertColumn(_("User"), G_TYPE_STRING, TreeView::ICON_STRING, 100, "Icon");
- favoriteUserView.insertColumn(_("Most Recent Hub"), G_TYPE_STRING, TreeView::STRING, 200);
- favoriteUserView.insertColumn(_("Time Last Seen"), G_TYPE_STRING, TreeView::STRING, 120);
- favoriteUserView.insertColumn(_("Description"), G_TYPE_STRING, TreeView::STRING, 150);
- favoriteUserView.insertColumn("CID", G_TYPE_STRING, TreeView::STRING, 350);
+ favoriteUserView.insertColumn(N_("Auto Grant Slot"), G_TYPE_BOOLEAN, TreeView::BOOL, 120);
+ favoriteUserView.insertColumn(N_("User"), G_TYPE_STRING, TreeView::ICON_STRING, 100, "Icon");
+ favoriteUserView.insertColumn(N_("Most Recent Hub"), G_TYPE_STRING, TreeView::STRING, 200);
+ favoriteUserView.insertColumn(N_("Time Last Seen"), G_TYPE_STRING, TreeView::STRING, 120);
+ favoriteUserView.insertColumn(N_("Description"), G_TYPE_STRING, TreeView::STRING, 150);
+ favoriteUserView.insertColumn(N_("CID"), G_TYPE_STRING, TreeView::STRING, 350);
favoriteUserView.insertHiddenColumn("URL", G_TYPE_STRING);
favoriteUserView.insertHiddenColumn("Icon", G_TYPE_STRING);
favoriteUserView.finalize();
@@ -54,12 +54,12 @@
favoriteUserSelection = gtk_tree_view_get_selection(favoriteUserView.get());
gtk_tree_selection_set_mode(favoriteUserSelection, GTK_SELECTION_MULTIPLE);
- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(favoriteUserStore), favoriteUserView.col(_("User")), GTK_SORT_ASCENDING);
- gtk_tree_view_column_set_sort_indicator(gtk_tree_view_get_column(favoriteUserView.get(), favoriteUserView.col(_("User"))), TRUE);
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(favoriteUserStore), favoriteUserView.col("User"), GTK_SORT_ASCENDING);
+ gtk_tree_view_column_set_sort_indicator(gtk_tree_view_get_column(favoriteUserView.get(), favoriteUserView.col("User")), TRUE);
gtk_tree_view_set_fixed_height_mode(favoriteUserView.get(), TRUE);
GList *list = gtk_tree_view_column_get_cell_renderers(gtk_tree_view_get_column(favoriteUserView.get(),
- favoriteUserView.col(_("Auto Grant Slot"))));
+ favoriteUserView.col("Auto Grant Slot")));
GObject *renderer = (GObject *)g_list_nth_data(list, 0);
g_signal_connect(renderer, "toggled", G_CALLBACK(onAutoGrantSlotToggled_gui), (gpointer)this);
g_list_free(list);
@@ -96,16 +96,16 @@
const FavoriteUser &user = it->second;
bool online = user.getUser()->isOnline();
string hub = online ? WulforUtil::getHubNames(user.getUser()) : user.getUrl();
- string seen = online ? _("Online") : Util::formatTime("%Y-%m-%d %H:%M", user.getLastSeen());
+ string seen = online ? C_("User", "Online") : Util::formatTime("%Y-%m-%d %H:%M", user.getLastSeen());
string cid = user.getUser()->getCID().toBase32();
gtk_list_store_append(favoriteUserStore, &iter);
gtk_list_store_set(favoriteUserStore, &iter,
- favoriteUserView.col(_("Auto Grant Slot")), user.isSet(FavoriteUser::FLAG_GRANTSLOT) ? TRUE : FALSE,
- favoriteUserView.col(_("User")), user.getNick().c_str(),
- favoriteUserView.col(_("Most Recent Hub")), hub.c_str(),
- favoriteUserView.col(_("Time Last Seen")), seen.c_str(),
- favoriteUserView.col(_("Description")), user.getDescription().c_str(),
+ favoriteUserView.col("Auto Grant Slot"), user.isSet(FavoriteUser::FLAG_GRANTSLOT) ? TRUE : FALSE,
+ favoriteUserView.col("User"), user.getNick().c_str(),
+ favoriteUserView.col("Most Recent Hub"), hub.c_str(),
+ favoriteUserView.col("Time Last Seen"), seen.c_str(),
+ favoriteUserView.col("Description"), user.getDescription().c_str(),
favoriteUserView.col("CID"), cid.c_str(),
favoriteUserView.col("URL"), user.getUrl().c_str(),
favoriteUserView.col("Icon"), "linuxdcpp-normal",
@@ -355,8 +355,8 @@
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fu->favoriteUserStore), &iter, path))
{
- description = fu->favoriteUserView.getString(&iter, _("Description"));
- nick = fu->favoriteUserView.getString(&iter, _("User"));
+ description = fu->favoriteUserView.getString(&iter, "Description");
+ nick = fu->favoriteUserView.getString(&iter, "User");
cid = fu->favoriteUserView.getString(&iter, "CID");
}
gtk_tree_path_free(path);
@@ -380,7 +380,7 @@
if (fu->findUser_gui(cid, &iter))
{
description = gtk_entry_get_text(GTK_ENTRY(fu->getWidget("descriptionEntry")));
- gtk_list_store_set(fu->favoriteUserStore, &iter, fu->favoriteUserView.col(_("Description")), description.c_str(), -1);
+ gtk_list_store_set(fu->favoriteUserStore, &iter, fu->favoriteUserView.col("Description"), description.c_str(), -1);
typedef Func2<FavoriteUsers, string, string> F2;
F2 *func = new F2(fu, &FavoriteUsers::setUserDescription_client, cid, description);
@@ -409,7 +409,7 @@
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fu->favoriteUserStore), &iter, path))
{
string cid = fu->favoriteUserView.getString(&iter, "CID");
- string nick = fu->favoriteUserView.getString(&iter, _("User"));
+ string nick = fu->favoriteUserView.getString(&iter, "User");
params.insert(ParamMap::value_type(cid, nick));
}
gtk_tree_path_free(path);
@@ -423,7 +423,7 @@
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
- _("Are you sure you want to delete the selected favorite user(s)?"));
+ _("Are you sure you want to delete the selected favorite users?"));
gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_REMOVE,
GTK_RESPONSE_YES, NULL);
gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_YES, GTK_RESPONSE_CANCEL, -1);
@@ -455,9 +455,9 @@
if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(fu->favoriteUserStore), &iter, path))
{
string cid = fu->favoriteUserView.getString(&iter, "CID");
- gboolean grant = fu->favoriteUserView.getValue<gboolean>(&iter, _("Auto Grant Slot"));
+ gboolean grant = fu->favoriteUserView.getValue<gboolean>(&iter, "Auto Grant Slot");
grant = !grant;
- gtk_list_store_set(fu->favoriteUserStore, &iter, fu->favoriteUserView.col(_("Auto Grant Slot")), grant, -1);
+ gtk_list_store_set(fu->favoriteUserStore, &iter, fu->favoriteUserView.col("Auto Grant Slot"), grant, -1);
typedef Func2<FavoriteUsers, string, bool> F2;
F2 *func = new F2(fu, &FavoriteUsers::setAutoGrantSlot_client, cid, grant);
@@ -563,16 +563,16 @@
if (findUser_gui(cid, &iter))
{
- gtk_list_store_set(favoriteUserStore, &iter, favoriteUserView.col(_("Time Last Seen")), params["Time"].c_str(), -1);
+ gtk_list_store_set(favoriteUserStore, &iter, favoriteUserView.col("Time Last Seen"), params["Time"].c_str(), -1);
}
else
{
gtk_list_store_append(favoriteUserStore, &iter);
gtk_list_store_set(favoriteUserStore, &iter,
- favoriteUserView.col(_("User")), params["User"].c_str(),
- favoriteUserView.col(_("Most Recent Hub")), params["Hub"].c_str(),
- favoriteUserView.col(_("Time Last Seen")), params["Time"].c_str(),
- favoriteUserView.col(_("Description")), params["Description"].c_str(),
+ favoriteUserView.col("User"), params["User"].c_str(),
+ favoriteUserView.col("Most Recent Hub"), params["Hub"].c_str(),
+ favoriteUserView.col("Time Last Seen"), params["Time"].c_str(),
+ favoriteUserView.col("Description"), params["Description"].c_str(),
favoriteUserView.col("CID"), cid.c_str(),
favoriteUserView.col("URL"), params["URL"].c_str(),
favoriteUserView.col("Icon"), "linuxdcpp-normal",
@@ -609,7 +609,7 @@
bool online = user.getUser()->isOnline();
params.insert(ParamMap::value_type("User", user.getNick()));
params.insert(ParamMap::value_type("Hub", online ? WulforUtil::getHubNames(user.getUser()) : user.getUrl()));
- params.insert(ParamMap::value_type("Time", online ? _("Online") : Util::formatTime("%Y-%m-%d %H:%M", user.getLastSeen())));
+ params.insert(ParamMap::value_type("Time", online ? C_("User", "Online") : Util::formatTime("%Y-%m-%d %H:%M", user.getLastSeen())));
params.insert(ParamMap::value_type("Description", user.getDescription()));
params.insert(ParamMap::value_type("CID", user.getUser()->getCID().toBase32()));
params.insert(ParamMap::value_type("URL", user.getUrl()));
@@ -634,7 +634,7 @@
if (user->isOnline())
{
- seen = _("Online");
+ seen = C_("User", "Online");
}
else
{
=== modified file 'linux/finishedtransfers.cc'
--- linux/finishedtransfers.cc 2010-09-18 17:51:54 +0000
+++ linux/finishedtransfers.cc 2011-01-25 05:11:20 +0000
@@ -47,13 +47,13 @@
{
// Initialize transfer treeview
fileView.setView(GTK_TREE_VIEW(getWidget("fileView")), true, "finished");
- fileView.insertColumn("Time", G_TYPE_STRING, TreeView::STRING, 150);
- fileView.insertColumn("Filename", G_TYPE_STRING, TreeView::STRING, 100);
- fileView.insertColumn("Path", G_TYPE_STRING, TreeView::STRING, 200);
- fileView.insertColumn("Users", G_TYPE_STRING, TreeView::STRING, 100);
- fileView.insertColumn("Size", G_TYPE_INT64, TreeView::SIZE, 100);
- fileView.insertColumn("Average Speed", G_TYPE_INT64, TreeView::SPEED, 125);
- fileView.insertColumn("CRC Checked", G_TYPE_STRING, TreeView::STRING, 115);
+ fileView.insertColumn(N_("Time"), G_TYPE_STRING, TreeView::STRING, 150);
+ fileView.insertColumn(N_("Filename"), G_TYPE_STRING, TreeView::STRING, 100);
+ fileView.insertColumn(N_("Path"), G_TYPE_STRING, TreeView::STRING, 200);
+ fileView.insertColumn(N_("Users"), G_TYPE_STRING, TreeView::STRING, 100);
+ fileView.insertColumn(N_("Size"), G_TYPE_INT64, TreeView::SIZE, 100);
+ fileView.insertColumn(N_("Average Speed"), G_TYPE_INT64, TreeView::SPEED, 125);
+ fileView.insertColumn(N_("CRC Checked"), G_TYPE_STRING, TreeView::STRING, 115);
fileView.insertHiddenColumn("Target", G_TYPE_STRING);
fileView.insertHiddenColumn("Elapsed Time", G_TYPE_INT64);
fileView.finalize();
@@ -156,7 +156,8 @@
void FinishedTransfers::updateStatus_gui()
{
- string status = Util::toString(totalFiles) + _(" files");
+ // TRANSLATORS: Displays the total number of files in the status bar.
+ string status = P_("File: %1%", "Files: %1%", % totalFiles, totalFiles);
string size = Util::formatBytes(totalBytes);
string speed = Util::formatBytes((totalTime > 0) ? totalBytes * ((int64_t)1000) / totalTime : 0) + "/s";
=== modified file 'linux/hashdialog.cc'
--- linux/hashdialog.cc 2009-03-12 05:47:55 +0000
+++ linux/hashdialog.cc 2011-01-25 05:11:20 +0000
@@ -55,25 +55,33 @@
double diff = tick - startTime;
if (diff < 1000 || files == 0 || bytes == 0)
{
- gtk_label_set_text(GTK_LABEL(getWidget("labelSpeed")), string("-.-- B/s, " + Util::formatBytes(bytes) + _(" left")).c_str());
- gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), _("-:--:-- left"));
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR(getWidget("progressbar")), "0%");
+ // TRANSLATORS: Hashing speed and bytes left to hash
+ const gchar *speed = F_("%1%/s, %2% left", % Util::formatBytes(0) % Util::formatBytes(bytes)).c_str();
+
+ // TRANSLATORS: Time left to hash the remaining files.
+ const gchar *time = F_("%1% left", % Util::formatSeconds(0)).c_str();
+
+ gtk_label_set_text(GTK_LABEL(getWidget("labelSpeed")), speed);
+ gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), time);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(getWidget("progressbar")), "0%");
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(getWidget("progressbar")), 0.0);
}
else
{
double speedStat = (((double)(startBytes - bytes)) * 1000) / diff;
+ const gchar *speed = F_("%1%/s, %2% left", % Util::formatBytes((int64_t)speedStat) % Util::formatBytes(bytes)).c_str();
- gtk_label_set_text(GTK_LABEL(getWidget("labelSpeed")), string(Util::formatBytes((int64_t)speedStat) + "/s, " + Util::formatBytes(bytes) + " left").c_str());
+ gtk_label_set_text(GTK_LABEL(getWidget("labelSpeed")), speed);
if (speedStat == 0)
{
- gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), _("-:--:-- left"));
+ gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), F_("%1% left", % Util::formatSeconds(0)).c_str());
}
else
{
double ss = (double)bytes / speedStat;
- gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), string(Util::formatSeconds((int64_t)ss) + _(" left")).c_str());
+ const gchar *time = F_("%1% left", % Util::formatSeconds((int64_t)ss)).c_str();
+ gtk_label_set_text(GTK_LABEL(getWidget("labelTime")), time);
}
}
=== modified file 'linux/hub.cc'
--- linux/hub.cc 2010-09-10 01:26:40 +0000
+++ linux/hub.cc 2011-01-25 05:11:20 +0000
@@ -51,13 +51,13 @@
// Initialize nick treeview
nickView.setView(GTK_TREE_VIEW(getWidget("nickView")), true, "hub");
- nickView.insertColumn("User", G_TYPE_STRING, TreeView::ICON_STRING, 100, "Icon");
- nickView.insertColumn("Shared", G_TYPE_INT64, TreeView::SIZE, 75);
- nickView.insertColumn("Description", G_TYPE_STRING, TreeView::STRING, 85);
- nickView.insertColumn("Tag", G_TYPE_STRING, TreeView::STRING, 100);
- nickView.insertColumn("Connection", G_TYPE_STRING, TreeView::STRING, 85);
- nickView.insertColumn("IP", G_TYPE_STRING, TreeView::STRING, 85);
- nickView.insertColumn("eMail", G_TYPE_STRING, TreeView::STRING, 90);
+ nickView.insertColumn(N_("User"), G_TYPE_STRING, TreeView::ICON_STRING, 100, "Icon");
+ nickView.insertColumn(N_("Shared"), G_TYPE_INT64, TreeView::SIZE, 75);
+ nickView.insertColumn(N_("Description"), G_TYPE_STRING, TreeView::STRING, 85);
+ nickView.insertColumn(N_("Tag"), G_TYPE_STRING, TreeView::STRING, 100);
+ nickView.insertColumn(N_("Connection"), G_TYPE_STRING, TreeView::STRING, 85);
+ nickView.insertColumn(N_("IP"), G_TYPE_STRING, TreeView::STRING, 85);
+ nickView.insertColumn(N_("Email"), G_TYPE_STRING, TreeView::STRING, 90);
nickView.insertHiddenColumn("Icon", G_TYPE_STRING);
nickView.insertHiddenColumn("Nick Order", G_TYPE_STRING);
nickView.insertHiddenColumn("CID", G_TYPE_STRING);
@@ -201,6 +201,13 @@
return FALSE;
}
+void Hub::updateStats_gui()
+{
+ // TRANSLATORS: Count of users appearing in the status bar.
+ setStatus_gui("statusUsers", P_("%1% User", "%1% Users", % userMap.size(), userMap.size()));
+ setStatus_gui("statusShared", Util::formatBytes(totalShared));
+}
+
void Hub::updateUser_gui(ParamMap params, bool showJoin)
{
GtkTreeIter iter;
@@ -211,7 +218,7 @@
if (findUser_gui(cid, &iter))
{
totalShared += shared - nickView.getValue<int64_t>(&iter, "Shared");
- string nick = nickView.getString(&iter,"User");
+ string nick = nickView.getString(&iter, "User");
if (nick != params["User"])
{
@@ -228,7 +235,7 @@
nickView.col("Tag"), params["Tag"].c_str(),
nickView.col("Connection"), params["Connection"].c_str(),
nickView.col("IP"), params["IP"].c_str(),
- nickView.col("eMail"), params["eMail"].c_str(),
+ nickView.col("Email"), params["Email"].c_str(),
nickView.col("Icon"), icon.c_str(),
nickView.col("Nick Order"), params["Nick Order"].c_str(),
nickView.col("CID"), cid.c_str(),
@@ -246,7 +253,7 @@
nickView.col("Tag"), params["Tag"].c_str(),
nickView.col("Connection"), params["Connection"].c_str(),
nickView.col("IP"), params["IP"].c_str(),
- nickView.col("eMail"), params["eMail"].c_str(),
+ nickView.col("Email"), params["Email"].c_str(),
nickView.col("Icon"), icon.c_str(),
nickView.col("Nick Order"), params["Nick Order"].c_str(),
nickView.col("CID"), cid.c_str(),
@@ -255,11 +262,10 @@
userIters[cid] = iter;
if (showJoin)
- addStatusMessage_gui(params["User"] + _(" has joined"));
+ addStatusMessage_gui(F_("%1% has joined", % params["User"]));
}
- setStatus_gui("statusUsers", Util::toString(userMap.size()) + _(" Users"));
- setStatus_gui("statusShared", Util::formatBytes(totalShared));
+ updateStats_gui();
}
void Hub::removeUser_gui(string cid)
@@ -275,8 +281,7 @@
removeTag_gui(nick);
userMap.erase(nick);
userIters.erase(cid);
- setStatus_gui("statusUsers", Util::toString(userMap.size()) + _(" Users"));
- setStatus_gui("statusShared", Util::formatBytes(totalShared));
+ updateStats_gui();
}
}
@@ -302,8 +307,7 @@
userMap.clear();
userIters.clear();
totalShared = 0;
- setStatus_gui("statusUsers", _("0 Users"));
- setStatus_gui("statusShared", "0 B");
+ updateStats_gui();
}
void Hub::popupNickMenu_gui()
@@ -894,7 +898,7 @@
Util::setAway(TRUE);
Util::setManualAway(TRUE);
Util::setAwayMessage(param);
- hub->addStatusMessage_gui(_("Away mode on: ") + Util::getAwayMessage());
+ hub->addStatusMessage_gui(F_("Away mode on: %1%", % Util::getAwayMessage()));
}
}
else if (command == _("back"))
@@ -991,7 +995,7 @@
}
else
{
- hub->addStatusMessage_gui(_("Unknown command '") + text + _("': type /help for a list of available commands"));
+ hub->addStatusMessage_gui(F_("Unknown command '%1%': Type /help for a list of available commands", % text));
}
}
@@ -1222,7 +1226,7 @@
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(hub->nickStore), &iter, path))
{
cid = hub->nickView.getString(&iter, "CID");
- nick = hub->nickView.getString(&iter, _("User"));
+ nick = hub->nickView.getString(&iter, "User");
if (!cid.empty() && nick != hub->client->getMyNick())
{
F1 *func = new F1(hub, &Hub::addFavoriteUser_client, cid);
@@ -1349,7 +1353,7 @@
if (user)
{
UploadManager::getInstance()->reserveSlot(user, client->getHubUrl());
- message = _("Slot granted to ") + WulforUtil::getNicks(user);
+ message = F_("Slot granted to %1%", % WulforUtil::getNicks(user));
}
}
@@ -1473,7 +1477,7 @@
params["Tag"] = id.getTag();
params["Connection"] = id.getConnection();
params["IP"] = id.getIp();
- params["eMail"] = id.getEmail();
+ params["Email"] = id.getEmail();
params["CID"] = id.getUser()->getCID().toBase32();
}
@@ -1486,7 +1490,7 @@
void Hub::on(ClientListener::Connecting, Client *) throw()
{
typedef Func1<Hub, string> F1;
- F1 *f1 = new F1(this, &Hub::addStatusMessage_gui, _("Connecting to ") + client->getHubUrl());
+ F1 *f1 = new F1(this, &Hub::addStatusMessage_gui, F_("Connecting to %1%", % client->getHubUrl()));
WulforManager::get()->dispatchGuiFunc(f1);
}
@@ -1541,7 +1545,7 @@
if (showJoins_client(user.getUser()))
{
- func = new F1(this, &Hub::addStatusMessage_gui, nick + _(" has quit"));
+ func = new F1(this, &Hub::addStatusMessage_gui, F_("%1% has quit", % nick));
WulforManager::get()->dispatchGuiFunc(func);
}
@@ -1563,7 +1567,7 @@
WulforManager::get()->dispatchGuiFunc(f0);
typedef Func1<Hub, string> F1;
- F1 *f1 = new F1(this, &Hub::addStatusMessage_gui, _("Connect failed: ") + reason);
+ F1 *f1 = new F1(this, &Hub::addStatusMessage_gui, F_("Connect failed: %1%", % reason));
WulforManager::get()->dispatchGuiFunc(f1);
}
@@ -1698,7 +1702,7 @@
}
else if (user.getIdentity().isBot() && BOOLSETTING(IGNORE_BOT_PMS))
{
- error = _("Ignored private message from bot ") + user.getIdentity().getNick();
+ error = F_("Ignored private message from bot %1%", % user.getIdentity().getNick());
typedef Func1<Hub, string> F1;
F1 *func = new F1(this, &Hub::addStatusMessage_gui, error);
WulforManager::get()->dispatchGuiFunc(func);
@@ -1722,7 +1726,7 @@
void Hub::on(ClientListener::SearchFlood, Client *, const string &msg) throw()
{
typedef Func1<Hub, string> F1;
- F1 *func = new F1(this, &Hub::addStatusMessage_gui, _("Search spam detected from ") + msg);
+ F1 *func = new F1(this, &Hub::addStatusMessage_gui, F_("Search spam detected from %1%", % msg));
WulforManager::get()->dispatchGuiFunc(func);
}
=== modified file 'linux/hub.hh'
--- linux/hub.hh 2010-09-10 01:26:40 +0000
+++ linux/hub.hh 2011-01-25 05:11:20 +0000
@@ -50,6 +50,7 @@
void setStatus_gui(std::string statusBar, std::string text);
bool findUser_gui(const std::string &cid, GtkTreeIter *iter);
bool findNick_gui(const std::string &nick, GtkTreeIter *iter);
+ void updateStats_gui();
void updateUser_gui(ParamMap id, bool showJoin);
void removeUser_gui(std::string cid);
void removeTag_gui(const std::string &nick);
=== modified file 'linux/mainwindow.cc'
--- linux/mainwindow.cc 2010-09-10 01:26:40 +0000
+++ linux/mainwindow.cc 2011-01-25 05:11:20 +0000
@@ -160,7 +160,8 @@
gtk_widget_destroy(dummy);
emptyStatusWidth = req.width;
- setMainStatus_gui(_("Welcome to ") + string(g_get_application_name()));
+ // TRANSLATORS: Shown in status bar on startup.
+ setMainStatus_gui(F_("Welcome to %1%", % g_get_application_name()));
loadIcons_gui();
showTransfersPane_gui();
@@ -465,9 +466,9 @@
void MainWindow::updateStatusIconTooltip_gui(string download, string upload)
{
- ostringstream toolTip;
- toolTip << g_get_application_name() << endl << _("Download: ") << download << endl << _("Upload: ") << upload;
- gtk_status_icon_set_tooltip(statusIcon, toolTip.str().c_str());
+ // TRANSLATORS: Notify icon (systray) tooltip
+ string tooltip = F_("%1%\nDownload: %2%\nUpload: %3%", % g_get_application_name() % download % upload);
+ gtk_status_icon_set_tooltip(statusIcon, tooltip.c_str());
}
void MainWindow::showNotification_gui(string title, string body)
@@ -728,12 +729,10 @@
bool MainWindow::getUserCommandLines_gui(const string &command, StringMap &ucParams)
{
string name;
- string label;
string line;
StringMap done;
string::size_type i = 0;
string::size_type j = 0;
- string text = string("<b>") + _("Enter value for ") + "\'";
while ((i = command.find("%[line:", i)) != string::npos)
{
@@ -746,9 +745,11 @@
if (done.find(name) == done.end())
{
line.clear();
- label = text + name + "\'</b>";
-
- gtk_label_set_label(GTK_LABEL(getWidget("ucLabel")), label.c_str());
+
+ // TRANSLATORS: Appears in a dialog prompt when a user command requires arguments.
+ string label = F_("Enter a value for '%1%'", % name);
+
+ gtk_label_set_text(GTK_LABEL(getWidget("ucLabel")), label.c_str());
gtk_entry_set_text(GTK_ENTRY(getWidget("ucLineEntry")), "");
gtk_widget_grab_focus(getWidget("ucLineEntry"));
@@ -1249,7 +1250,7 @@
catch (const Exception &e)
{
string primaryText = _("Unable to open TCP/TLS port");
- string secondaryText = _("File transfers will not work correctly until you change settings or turn off any application that might be using the TCP/TLS port.");
+ string secondaryText = _("File transfers will not work correctly until the connection settings are adjusted or any application using the port is closed.");
typedef Func2<MainWindow, string, string> F2;
F2* func = new F2(this, &MainWindow::showMessageDialog_gui, primaryText, secondaryText);
WulforManager::get()->dispatchGuiFunc(func);
@@ -1263,7 +1264,7 @@
catch (const Exception &e)
{
string primaryText = _("Unable to open UDP port");
- string secondaryText = _("Searching will not work correctly until you change settings or turn off any application that might be using the UDP port.");
+ string secondaryText = _("Searching will not work correctly until the connection settings are adjusted or any application using the port is closed.");
typedef Func2<MainWindow, string, string> F2;
F2* func = new F2(this, &MainWindow::showMessageDialog_gui, primaryText, secondaryText);
WulforManager::get()->dispatchGuiFunc(func);
=== modified file 'linux/mainwindow.hh'
--- linux/mainwindow.hh 2010-09-10 01:26:40 +0000
+++ linux/mainwindow.hh 2011-01-25 05:11:20 +0000
@@ -22,6 +22,8 @@
#ifndef WULFOR_MAIN_WINDOW_HH
#define WULFOR_MAIN_WINDOW_HH
+#include "IntlUtil.hh"
+
#include <dcpp/stdinc.h>
#include <dcpp/DCPlusPlus.h>
#include <dcpp/ConnectionManager.h>
=== modified file 'linux/privatemessage.cc'
--- linux/privatemessage.cc 2010-09-10 01:26:40 +0000
+++ linux/privatemessage.cc 2011-01-25 05:11:20 +0000
@@ -331,7 +331,7 @@
Util::setAway(TRUE);
Util::setManualAway(TRUE);
Util::setAwayMessage(param);
- pm->addStatusMessage_gui(_("Away mode on: ") + Util::getAwayMessage());
+ pm->addStatusMessage_gui(F_("Away mode on: %1%", % Util::getAwayMessage()));
}
}
else if (command == _("back"))
@@ -376,7 +376,7 @@
}
else
{
- pm->addStatusMessage_gui(_("Unknown command ") + text + _(": type /help for a list of available commands"));
+ pm->addStatusMessage_gui(F_("Unknown command '%1%': Type /help for a list of available commands", % text));
}
}
else
@@ -644,7 +644,7 @@
if (BOOLSETTING(SHOW_JOINS) || (BOOLSETTING(FAV_SHOW_JOINS) &&
FavoriteManager::getInstance()->isFavoriteUser(user)))
{
- statusMessage = nicks + _(" has quit");
+ statusMessage = F_("%1% has quit", % nicks);
}
typedef Func4<PrivateMessage, string, string, bool, string> F4;
=== modified file 'linux/publichubs.cc'
--- linux/publichubs.cc 2010-01-01 00:57:24 +0000
+++ linux/publichubs.cc 2011-01-25 05:11:20 +0000
@@ -35,17 +35,17 @@
// Initialize public hub list treeview
hubView.setView(GTK_TREE_VIEW(getWidget("hubView")), true, "publichubs");
- hubView.insertColumn("Name", G_TYPE_STRING, TreeView::STRING, 200);
- hubView.insertColumn("Description", G_TYPE_STRING, TreeView::STRING, 350);
- hubView.insertColumn("Users", G_TYPE_INT, TreeView::INT, 75);
- hubView.insertColumn("Address", G_TYPE_STRING, TreeView::STRING, 110);
- hubView.insertColumn("Country", G_TYPE_STRING, TreeView::STRING, 100);
- hubView.insertColumn("Shared", G_TYPE_INT64, TreeView::SIZE, 70);
- hubView.insertColumn("Min Share", G_TYPE_INT64, TreeView::SIZE, 80);
- hubView.insertColumn("Min Slots", G_TYPE_INT, TreeView::INT, 70);
- hubView.insertColumn("Max Hubs", G_TYPE_INT, TreeView::INT, 80);
- hubView.insertColumn("Max Users", G_TYPE_INT, TreeView::INT, 80);
- hubView.insertColumn("Rating", G_TYPE_STRING, TreeView::STRING, 70);
+ hubView.insertColumn(N_("Name"), G_TYPE_STRING, TreeView::STRING, 200);
+ hubView.insertColumn(N_("Description"), G_TYPE_STRING, TreeView::STRING, 350);
+ hubView.insertColumn(N_("Users"), G_TYPE_INT, TreeView::INT, 75);
+ hubView.insertColumn(N_("Address"), G_TYPE_STRING, TreeView::STRING, 110);
+ hubView.insertColumn(N_("Country"), G_TYPE_STRING, TreeView::STRING, 100);
+ hubView.insertColumn(N_("Shared"), G_TYPE_INT64, TreeView::SIZE, 70);
+ hubView.insertColumn(N_("Min Share"), G_TYPE_INT64, TreeView::SIZE, 80);
+ hubView.insertColumn(N_("Min Slots"), G_TYPE_INT, TreeView::INT, 70);
+ hubView.insertColumn(N_("Max Hubs"), G_TYPE_INT, TreeView::INT, 80);
+ hubView.insertColumn(N_("Max Users"), G_TYPE_INT, TreeView::INT, 80);
+ hubView.insertColumn(N_("Rating"), G_TYPE_STRING, TreeView::STRING, 70);
hubView.finalize();
hubStore = gtk_list_store_newv(hubView.getColCount(), hubView.getGTypes());
gtk_tree_view_set_model(hubView.get(), GTK_TREE_MODEL(hubStore));
@@ -169,8 +169,8 @@
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(hubStore), sortColumn, sortType);
- setStatus_gui("statusHubs", _("Hubs: ") + Util::toString(numHubs));
- setStatus_gui("statusUsers", _("Users: ") + Util::toString(numUsers));
+ setStatus_gui("statusHubs", P_("%1% Hub", "%1% Hubs", % numHubs, numHubs));
+ setStatus_gui("statusUsers", P_("%1% User", "%1% Users", % numUsers, numUsers));
}
void PublicHubs::setStatus_gui(string statusBar, string text)
@@ -427,7 +427,7 @@
void PublicHubs::on(FavoriteManagerListener::DownloadStarting, const string &file) throw()
{
- string msg = _("Download starting: ") + file;
+ string msg = _("Download starting");
typedef Func2<PublicHubs, string, string> Func;
Func *func = new Func(this, &PublicHubs::setStatus_gui, "statusMain", msg);
WulforManager::get()->dispatchGuiFunc(func);
@@ -435,7 +435,7 @@
void PublicHubs::on(FavoriteManagerListener::DownloadFailed, const string &file) throw()
{
- string msg = _("Download failed: ") + file;
+ string msg = F_("Download failed: %1%", % file);
typedef Func2<PublicHubs, string, string> Func;
Func *func = new Func(this, &PublicHubs::setStatus_gui, "statusMain", msg);
WulforManager::get()->dispatchGuiFunc(func);
@@ -443,7 +443,7 @@
void PublicHubs::on(FavoriteManagerListener::DownloadFinished, const string &file) throw()
{
- string msg = _("Download finished: ") + file;
+ string msg = _("Download finished");
typedef Func2<PublicHubs, string, string> Func;
Func *f2 = new Func(this, &PublicHubs::setStatus_gui, "statusMain", msg);
WulforManager::get()->dispatchGuiFunc(f2);
=== modified file 'linux/search.cc'
--- linux/search.cc 2010-10-29 19:44:50 +0000
+++ linux/search.cc 2011-01-25 05:11:20 +0000
@@ -38,6 +38,10 @@
Search::Search():
BookEntry(Entry::SEARCH, _("Search"), "search.glade", generateID()),
+ droppedResult(0),
+ searchHits(0),
+ isHash(false),
+ onlyFree(BOOLSETTING(SEARCH_ONLY_FREE_SLOTS)),
previousGrouping(NOGROUPING)
{
// Initialize the search entries combo box
@@ -53,7 +57,6 @@
gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("dirChooserDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
// Initialize check button options.
- onlyFree = BOOLSETTING(SEARCH_ONLY_FREE_SLOTS);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("checkbuttonSlots")), onlyFree);
gtk_widget_set_sensitive(GTK_WIDGET(getWidget("checkbuttonSlots")), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(getWidget("checkbuttonShared")), FALSE);
@@ -79,17 +82,17 @@
// Initialize search result treeview
resultView.setView(GTK_TREE_VIEW(getWidget("treeviewResult")), TRUE, "search");
- resultView.insertColumn("Filename", G_TYPE_STRING, TreeView::ICON_STRING, 250, "Icon");
- resultView.insertColumn("User", G_TYPE_STRING, TreeView::STRING, 100);
- resultView.insertColumn("Type", G_TYPE_STRING, TreeView::STRING, 65);
- resultView.insertColumn("Size", G_TYPE_STRING, TreeView::STRING, 80);
- resultView.insertColumn("Path", G_TYPE_STRING, TreeView::STRING, 100);
- resultView.insertColumn("Slots", G_TYPE_STRING, TreeView::STRING, 50);
- resultView.insertColumn("Connection", G_TYPE_STRING, TreeView::STRING, 90);
- resultView.insertColumn("Hub", G_TYPE_STRING, TreeView::STRING, 150);
- resultView.insertColumn("Exact Size", G_TYPE_STRING, TreeView::STRING, 80);
- resultView.insertColumn("IP", G_TYPE_STRING, TreeView::STRING, 100);
- resultView.insertColumn("TTH", G_TYPE_STRING, TreeView::STRING, 125);
+ resultView.insertColumn(N_("Filename"), G_TYPE_STRING, TreeView::ICON_STRING, 250, "Icon");
+ resultView.insertColumn(N_("User"), G_TYPE_STRING, TreeView::STRING, 100);
+ resultView.insertColumn(N_("Type"), G_TYPE_STRING, TreeView::STRING, 65);
+ resultView.insertColumn(N_("Size"), G_TYPE_STRING, TreeView::STRING, 80);
+ resultView.insertColumn(N_("Path"), G_TYPE_STRING, TreeView::STRING, 100);
+ resultView.insertColumn(N_("Slots"), G_TYPE_STRING, TreeView::STRING, 50);
+ resultView.insertColumn(N_("Connection"), G_TYPE_STRING, TreeView::STRING, 90);
+ resultView.insertColumn(N_("Hub"), G_TYPE_STRING, TreeView::STRING, 150);
+ resultView.insertColumn(N_("Exact Size"), G_TYPE_STRING, TreeView::STRING, 80);
+ resultView.insertColumn(N_("IP"), G_TYPE_STRING, TreeView::STRING, 100);
+ resultView.insertColumn(N_("TTH"), G_TYPE_STRING, TreeView::STRING, 125);
resultView.insertHiddenColumn("Icon", G_TYPE_STRING);
resultView.insertHiddenColumn("Real Size", G_TYPE_INT64);
resultView.insertHiddenColumn("Slots Order", G_TYPE_INT);
@@ -161,6 +164,7 @@
void Search::show()
{
initHubs_gui();
+ updateStats_gui();
ClientManager::getInstance()->addListener(this);
SearchManager::getInstance()->addListener(this);
}
@@ -295,7 +299,8 @@
}
// Add Browse item
- menuItem = gtk_menu_item_new_with_label(_("Browse..."));
+ menuItem = gtk_menu_item_new_with_label(_("_Browse..."));
+ gtk_menu_item_set_use_underline(GTK_MENU_ITEM(menuItem), TRUE);
g_signal_connect(menuItem, "activate", G_CALLBACK(onDownloadToClicked_gui), (gpointer)this);
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("downloadMenu")), menuItem);
@@ -366,7 +371,8 @@
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("downloadDirMenu")), menuItem);
}
- menuItem = gtk_menu_item_new_with_label(_("Browse..."));
+ menuItem = gtk_menu_item_new_with_label(_("_Browse..."));
+ gtk_menu_item_set_use_underline(GTK_MENU_ITEM(menuItem), TRUE);
g_signal_connect(menuItem, "activate", G_CALLBACK(onDownloadDirToClicked_gui), (gpointer)this);
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("downloadDirMenu")), menuItem);
@@ -383,6 +389,15 @@
gtk_statusbar_push(GTK_STATUSBAR(getWidget(statusBar)), 0, text.c_str());
}
+void Search::updateStats_gui()
+{
+ // TRANSLATORS: Appears in the status bar when a valid search result is received.
+ setStatus_gui("statusbar2", P_("%1% Result", "%1% Results", % searchHits, searchHits));
+
+ // TRANSLATORS: Appears in the status bar when a search result is ignored/dropped.
+ setStatus_gui("statusbar3", F_("%1% Dropped", % droppedResult));
+}
+
void Search::search_gui()
{
StringList clients;
@@ -459,9 +474,8 @@
droppedResult = 0;
searchHits = 0;
- setStatus_gui("statusbar1", _("Searching for ") + text + " ...");
- setStatus_gui("statusbar2", _("0 items"));
- setStatus_gui("statusbar3", _("0 filtered"));
+ setStatus_gui("statusbar1", F_("Searching for %1%...", % text));
+ updateStats_gui();
setLabel_gui(text);
if (SearchManager::getInstance()->okToSearch())
@@ -474,10 +488,8 @@
else
{
int32_t waitFor = SearchManager::getInstance()->timeToSearch();
- string line = _("Searching too soon, retry in ") + Util::toString(waitFor) + " s";
+ string line = F_("Searching too soon, retry in %1% s", % waitFor);
setStatus_gui("statusbar1", line);
- setStatus_gui("statusbar2", "");
- setStatus_gui("statusbar3", "");
}
}
@@ -556,7 +568,7 @@
updateParentRow_gui(&parent, &iter);
++searchHits;
- setStatus_gui("statusbar2", Util::toString(searchHits) + _(" items"));
+ updateStats_gui();
if (BOOLSETTING(BOLD_SEARCH))
setBold_gui();
@@ -595,7 +607,7 @@
gint children = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(resultStore), parent);
dcassert(children != 0);
- string users = Util::toString(children) + _(" user(s)");
+ string users = P_("%1% User", "%1% Users", % children, children);
gtk_tree_store_set(resultStore, parent, resultView.col("User"), users.c_str(), -1);
if (child == NULL)
@@ -1740,14 +1752,12 @@
if (searchlist.empty() || result == NULL)
return;
- typedef Func2<Search, string, string> F2;
-
if (isHash)
{
if (result->getType() != SearchResult::TYPE_FILE || TTHValue(searchlist[0]) != result->getTTH())
{
++droppedResult;
- F2 *func = new F2(this, &Search::setStatus_gui, "statusbar3", Util::toString(droppedResult) + _(" filtered"));
+ Func0<Search> *func = new Func0<Search>(this, &Search::updateStats_gui);
WulforManager::get()->dispatchGuiFunc(func);
return;
}
@@ -1760,7 +1770,7 @@
(*i->begin() == '-' && i->size() != 1 && Util::findSubString(result->getFile(), i->substr(1)) != (string::size_type)-1))
{
++droppedResult;
- F2 *func = new F2(this, &Search::setStatus_gui, "statusbar3", Util::toString(droppedResult) + _(" dropped"));
+ Func0<Search> *func = new Func0<Search>(this, &Search::updateStats_gui);
WulforManager::get()->dispatchGuiFunc(func);
return;
}
=== modified file 'linux/search.hh'
--- linux/search.hh 2010-09-05 06:03:16 +0000
+++ linux/search.hh 2011-01-25 05:11:20 +0000
@@ -67,6 +67,7 @@
void removeHub_gui(std::string url);
void popupMenu_gui();
void setStatus_gui(std::string statusBar, std::string text);
+ void updateStats_gui();
void search_gui();
void addResult_gui(const dcpp::SearchResultPtr result);
GtkTreeIter createParentRow_gui(GtkTreeIter *child, const std::string &groupStr, gint position = -1);
=== modified file 'linux/settingsdialog.cc'
--- linux/settingsdialog.cc 2010-07-27 04:26:37 +0000
+++ linux/settingsdialog.cc 2011-01-25 05:11:20 +0000
@@ -38,10 +38,8 @@
// Configure the dialogs.
gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("dialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("favoriteNameDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
- gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("publicHubsDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("virtualNameDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("dirChooserDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
- gtk_dialog_set_alternative_button_order(GTK_DIALOG(getWidget("fileChooserDialog")), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
// Initialize the tabs in the GtkNotebook.
initPersonal_gui();
@@ -59,10 +57,8 @@
saveSettings_client();
gtk_widget_destroy(getWidget("favoriteNameDialog"));
- gtk_widget_destroy(getWidget("publicHubsDialog"));
gtk_widget_destroy(getWidget("virtualNameDialog"));
gtk_widget_destroy(getWidget("dirChooserDialog"));
- gtk_widget_destroy(getWidget("fileChooserDialog"));
gtk_widget_destroy(getWidget("commandDialog"));
}
@@ -75,7 +71,8 @@
sm->set(SettingsManager::NICK, gtk_entry_get_text(GTK_ENTRY(getWidget("nickEntry"))));
sm->set(SettingsManager::EMAIL, gtk_entry_get_text(GTK_ENTRY(getWidget("emailEntry"))));
sm->set(SettingsManager::DESCRIPTION, gtk_entry_get_text(GTK_ENTRY(getWidget("descriptionEntry"))));
- sm->set(SettingsManager::UPLOAD_SPEED, SettingsManager::connectionSpeeds[gtk_combo_box_get_active(connectionSpeedComboBox)]);
+ gint speed = gtk_combo_box_get_active(GTK_COMBO_BOX(getWidget("speedComboBox")));
+ sm->set(SettingsManager::UPLOAD_SPEED, SettingsManager::connectionSpeeds[speed]);
gchar *encoding = gtk_combo_box_get_active_text(GTK_COMBO_BOX(getWidget("comboboxCharset")));
WSET("default-charset", string(encoding));
@@ -125,19 +122,27 @@
}
{ // Downloads
- path = gtk_entry_get_text(GTK_ENTRY(getWidget("finishedDownloadsEntry")));
- if (path[path.length() - 1] != PATH_SEPARATOR)
- path += PATH_SEPARATOR;
- sm->set(SettingsManager::DOWNLOAD_DIRECTORY, path);
+ saveFileChooserPath_gui(getWidget("finishedDownloadsFileChooserButton"), SettingsManager::DOWNLOAD_DIRECTORY);
+ saveFileChooserPath_gui(getWidget("unfinishedDownloadsFileChooserButton"), SettingsManager::TEMP_DOWNLOAD_DIRECTORY);
- path = gtk_entry_get_text(GTK_ENTRY(getWidget("unfinishedDownloadsEntry")));
- if (!path.empty() && path[path.length() - 1] != PATH_SEPARATOR)
- path += PATH_SEPARATOR;
- sm->set(SettingsManager::TEMP_DOWNLOAD_DIRECTORY, path);
sm->set(SettingsManager::DOWNLOAD_SLOTS, (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(getWidget("maxDownloadsSpinButton"))));
sm->set(SettingsManager::MAX_DOWNLOAD_SPEED, (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(getWidget("newDownloadsSpinButton"))));
sm->set(SettingsManager::HTTP_PROXY, gtk_entry_get_text(GTK_ENTRY(getWidget("proxyEntry"))));
+ // Public Hubs List Tree View
+ string lists;
+ GtkTreeIter iter;
+ GtkTreeModel *m = GTK_TREE_MODEL(publicListStore);
+ gboolean valid = gtk_tree_model_get_iter_first(m, &iter);
+ while (valid)
+ {
+ lists += publicListView.getString(&iter, "List") + ";";
+ valid = gtk_tree_model_iter_next(m, &iter);
+ }
+ if (!lists.empty())
+ lists.erase(lists.size() - 1);
+ SettingsManager::getInstance()->set(SettingsManager::HUBLIST_SERVERS, lists);
+
{ // Queue
// Auto-priority
sm->set(SettingsManager::PRIO_HIGHEST_SIZE, Util::toString(gtk_spin_button_get_value(GTK_SPIN_BUTTON(getWidget("priorityHighestSpinButton")))));
@@ -198,10 +203,8 @@
}
{ // Logs
- path = gtk_entry_get_text(GTK_ENTRY(getWidget("logDirectoryEntry")));
- if (!path.empty() && path[path.length() - 1] != PATH_SEPARATOR)
- path += PATH_SEPARATOR;
- sm->set(SettingsManager::LOG_DIRECTORY, path);
+ saveFileChooserPath_gui(getWidget("logDirectoryFileChooserButton"), SettingsManager::LOG_DIRECTORY);
+
sm->set(SettingsManager::LOG_MAIN_CHAT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(getWidget("logMainCheckButton"))));
sm->set(SettingsManager::LOG_FORMAT_MAIN_CHAT, string(gtk_entry_get_text(GTK_ENTRY(getWidget("logMainEntry")))));
sm->set(SettingsManager::LOG_PRIVATE_CHAT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(getWidget("logPrivateCheckButton"))));
@@ -230,13 +233,11 @@
sm->set(SettingsManager::BIND_ADDRESS, string(gtk_entry_get_text(GTK_ENTRY(getWidget("bindAddressEntry")))));
sm->set(SettingsManager::SOCKET_IN_BUFFER, Util::toString(gtk_spin_button_get_value(GTK_SPIN_BUTTON(getWidget("socketReadSpinButton")))));
sm->set(SettingsManager::SOCKET_OUT_BUFFER, Util::toString(gtk_spin_button_get_value(GTK_SPIN_BUTTON(getWidget("socketWriteSpinButton")))));
+
// Security Certificates
- path = gtk_entry_get_text(GTK_ENTRY(getWidget("trustedCertificatesPathEntry")));
- if (!path.empty() && path[path.length() - 1] != PATH_SEPARATOR)
- path += PATH_SEPARATOR;
- sm->set(SettingsManager::TLS_PRIVATE_KEY_FILE, string(gtk_entry_get_text(GTK_ENTRY(getWidget("privateKeyEntry")))));
- sm->set(SettingsManager::TLS_CERTIFICATE_FILE, string(gtk_entry_get_text(GTK_ENTRY(getWidget("certificateFileEntry")))));
- sm->set(SettingsManager::TLS_TRUSTED_CERTIFICATES_PATH, path);
+ saveFileChooserPath_gui(getWidget("privateKeyFileChooserButton"), SettingsManager::TLS_PRIVATE_KEY_FILE);
+ saveFileChooserPath_gui(getWidget("certificateFileChooserButton"), SettingsManager::TLS_CERTIFICATE_FILE);
+ saveFileChooserPath_gui(getWidget("trustedCertificatesPathFileChooserButton"), SettingsManager::TLS_TRUSTED_CERTIFICATES_PATH);
saveOptionsView_gui(certificatesView);
}
@@ -328,14 +329,29 @@
}
}
+void Settings::saveFileChooserPath_gui(GtkWidget *fileChooser, dcpp::SettingsManager::StrSetting setting)
+{
+ gchar *path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fileChooser));
+ if (path)
+ {
+ if (!g_str_has_suffix(path, G_DIR_SEPARATOR_S))
+ {
+ gchar *tmp = g_strconcat(path, G_DIR_SEPARATOR_S, NULL);
+ g_free(path);
+ path = tmp;
+ }
+
+ SettingsManager::getInstance()->set(setting, path);
+ g_free(path);
+ }
+}
+
void Settings::initPersonal_gui()
{
gtk_entry_set_text(GTK_ENTRY(getWidget("nickEntry")), SETTING(NICK).c_str());
gtk_entry_set_text(GTK_ENTRY(getWidget("emailEntry")), SETTING(EMAIL).c_str());
gtk_entry_set_text(GTK_ENTRY(getWidget("descriptionEntry")), SETTING(DESCRIPTION).c_str());
- connectionSpeedComboBox = GTK_COMBO_BOX(gtk_combo_box_new_text());
- gtk_box_pack_start(GTK_BOX(getWidget("connectionBox")), GTK_WIDGET(connectionSpeedComboBox), FALSE, TRUE, 0);
- gtk_widget_show_all(GTK_WIDGET(connectionSpeedComboBox));
+ GtkComboBox *connectionSpeedComboBox = GTK_COMBO_BOX(getWidget("speedComboBox"));
for (StringIter i = SettingsManager::connectionSpeeds.begin(); i != SettingsManager::connectionSpeeds.end(); ++i)
{
@@ -412,21 +428,18 @@
void Settings::initDownloads_gui()
{
{ // Downloads
- g_signal_connect(getWidget("finishedDownloadsButton"), "clicked", G_CALLBACK(onBrowseFinished_gui), (gpointer)this);
- g_signal_connect(getWidget("unfinishedDownloadsButton"), "clicked", G_CALLBACK(onBrowseUnfinished_gui), (gpointer)this);
- g_signal_connect(getWidget("publicHubsButton"), "clicked", G_CALLBACK(onPublicHubs_gui), (gpointer)this);
- g_signal_connect(getWidget("publicHubsDialogAddButton"), "clicked", G_CALLBACK(onPublicAdd_gui), (gpointer)this);
- g_signal_connect(getWidget("publicHubsDialogUpButton"), "clicked", G_CALLBACK(onPublicMoveUp_gui), (gpointer)this);
- g_signal_connect(getWidget("publicHubsDialogDownButton"), "clicked", G_CALLBACK(onPublicMoveDown_gui), (gpointer)this);
- g_signal_connect(getWidget("publicHubsDialogRemoveButton"), "clicked", G_CALLBACK(onPublicRemove_gui), (gpointer)this);
+ g_signal_connect(getWidget("publicHubsAddButton"), "clicked", G_CALLBACK(onPublicAdd_gui), (gpointer)this);
+ g_signal_connect(getWidget("publicHubsUpButton"), "clicked", G_CALLBACK(onPublicMoveUp_gui), (gpointer)this);
+ g_signal_connect(getWidget("publicHubsDownButton"), "clicked", G_CALLBACK(onPublicMoveDown_gui), (gpointer)this);
+ g_signal_connect(getWidget("publicHubsRemoveButton"), "clicked", G_CALLBACK(onPublicRemove_gui), (gpointer)this);
- gtk_entry_set_text(GTK_ENTRY(getWidget("finishedDownloadsEntry")), SETTING(DOWNLOAD_DIRECTORY).c_str());
- gtk_entry_set_text(GTK_ENTRY(getWidget("unfinishedDownloadsEntry")), SETTING(TEMP_DOWNLOAD_DIRECTORY).c_str());
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(getWidget("finishedDownloadsFileChooserButton")), SETTING(DOWNLOAD_DIRECTORY).c_str());
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(getWidget("unfinishedDownloadsFileChooserButton")), SETTING(TEMP_DOWNLOAD_DIRECTORY).c_str());
gtk_spin_button_set_value(GTK_SPIN_BUTTON(getWidget("maxDownloadsSpinButton")), (double)SETTING(DOWNLOAD_SLOTS));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(getWidget("newDownloadsSpinButton")), (double)SETTING(MAX_DOWNLOAD_SPEED));
gtk_entry_set_text(GTK_ENTRY(getWidget("proxyEntry")), SETTING(HTTP_PROXY).c_str());
- publicListView.setView(GTK_TREE_VIEW(getWidget("publicHubsDialogTreeView")));
+ publicListView.setView(GTK_TREE_VIEW(getWidget("publicHubsTreeView")));
publicListView.insertColumn("List", G_TYPE_STRING, TreeView::EDIT_STRING, -1);
publicListView.finalize();
publicListStore = gtk_list_store_newv(publicListView.getColCount(), publicListView.getGTypes());
@@ -438,14 +451,23 @@
GObject *editRenderer = G_OBJECT(g_list_nth_data(list, 0));
g_list_free(list);
g_signal_connect(editRenderer, "edited", G_CALLBACK(onPublicEdit_gui), (gpointer)this);
+
+ // Populate the public hubs list tree view
+ StringList lists = FavoriteManager::getInstance()->getHubLists();
+ for (StringList::iterator list = lists.begin(); list != lists.end(); ++list)
+ {
+ GtkTreeIter iter;
+ gtk_list_store_append(publicListStore, &iter);
+ gtk_list_store_set(publicListStore, &iter, publicListView.col("List"), list->c_str(), -1);
+ }
}
{ // Download to
g_signal_connect(getWidget("favoriteAddButton"), "clicked", G_CALLBACK(onAddFavorite_gui), (gpointer)this);
g_signal_connect(getWidget("favoriteRemoveButton"), "clicked", G_CALLBACK(onRemoveFavorite_gui), (gpointer)this);
downloadToView.setView(GTK_TREE_VIEW(getWidget("favoriteTreeView")));
- downloadToView.insertColumn("Favorite Name", G_TYPE_STRING, TreeView::STRING, -1);
- downloadToView.insertColumn("Directory", G_TYPE_STRING, TreeView::STRING, -1);
+ downloadToView.insertColumn(N_("Favorite Name"), G_TYPE_STRING, TreeView::STRING, -1);
+ downloadToView.insertColumn(N_("Directory"), G_TYPE_STRING, TreeView::STRING, -1);
downloadToView.finalize();
downloadToStore = gtk_list_store_newv(downloadToView.getColCount(), downloadToView.getGTypes());
gtk_tree_view_set_model(downloadToView.get(), GTK_TREE_MODEL(downloadToStore));
@@ -490,7 +512,7 @@
addOption_gui(queueStore, _("Automatically search for alternative download locations"), SettingsManager::AUTO_SEARCH);
addOption_gui(queueStore, _("Automatically match queue for auto search hits"), SettingsManager::AUTO_SEARCH_AUTO_MATCH);
addOption_gui(queueStore, _("Skip zero-byte files"), SettingsManager::SKIP_ZERO_BYTE);
- addOption_gui(queueStore, _("Don't download files already in share"), SettingsManager::DONT_DL_ALREADY_SHARED);
+ addOption_gui(queueStore, _("Don't download files already in the share"), SettingsManager::DONT_DL_ALREADY_SHARED);
addOption_gui(queueStore, _("Don't download files already in the queue"), SettingsManager::DONT_DL_ALREADY_QUEUED);
}
}
@@ -502,9 +524,9 @@
g_signal_connect(getWidget("sharedRemoveButton"), "clicked", G_CALLBACK(onRemoveShare_gui), (gpointer)this);
shareView.setView(GTK_TREE_VIEW(getWidget("sharedTreeView")));
- shareView.insertColumn("Virtual Name", G_TYPE_STRING, TreeView::STRING, -1);
- shareView.insertColumn("Directory", G_TYPE_STRING, TreeView::STRING, -1);
- shareView.insertColumn("Size", G_TYPE_STRING, TreeView::STRING, -1);
+ shareView.insertColumn(N_("Virtual Name"), G_TYPE_STRING, TreeView::STRING, -1);
+ shareView.insertColumn(N_("Directory"), G_TYPE_STRING, TreeView::STRING, -1);
+ shareView.insertColumn(N_("Size"), G_TYPE_STRING, TreeView::STRING, -1);
shareView.insertHiddenColumn("Real Size", G_TYPE_INT64);
shareView.finalize();
shareStore = gtk_list_store_newv(shareView.getColCount(), shareView.getGTypes());
@@ -527,7 +549,9 @@
-1);
}
- gtk_label_set_text(GTK_LABEL(getWidget("sharedSizeLabel")), string("Total size: " + Util::formatBytes(ShareManager::getInstance()->getShareSize())).c_str());
+ int64_t shareSize = ShareManager::getInstance()->getShareSize();
+ string shareSizeText = F_("Total share size: %1%", % Util::formatBytes(shareSize));
+ gtk_label_set_text(GTK_LABEL(getWidget("sharedSizeLabel")), shareSizeText.c_str());
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("shareHiddenCheckButton")), BOOLSETTING(SHARE_HIDDEN));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("followLinksCheckButton")), BOOLSETTING(FOLLOW_LINKS));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(getWidget("sharedExtraSlotSpinButton")), (double)SETTING(MIN_UPLOAD_SPEED));
@@ -573,21 +597,14 @@
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("soundPMReceivedCheckButton")), BOOLSETTING(PRIVATE_MESSAGE_BEEP));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("soundPMWindowCheckButton")), BOOLSETTING(PRIVATE_MESSAGE_BEEP_OPEN));
*/
- gtk_widget_set_sensitive(getWidget("soundPMReceivedCheckButton"), FALSE);
- gtk_widget_set_sensitive(getWidget("soundPMWindowCheckButton"), FALSE);
-
- gtk_widget_set_sensitive(getWidget("appearanceColor"), FALSE);
- gtk_widget_set_sensitive(getWidget("upColor"), FALSE);
- gtk_widget_set_sensitive(getWidget("downColor"), FALSE);
- gtk_widget_set_sensitive(getWidget("textStyle"), FALSE);
createOptionsView_gui(colorView, colorStore, "tabBoldingTreeView");
addOption_gui(colorStore, _("Finished Downloads"), SettingsManager::BOLD_FINISHED_DOWNLOADS);
addOption_gui(colorStore, _("Finished Uploads"), SettingsManager::BOLD_FINISHED_UPLOADS);
addOption_gui(colorStore, _("Download Queue"), SettingsManager::BOLD_QUEUE);
- addOption_gui(colorStore, _("Hub (also sets urgency hint)"), SettingsManager::BOLD_HUB);
- addOption_gui(colorStore, _("Private Message (also sets urgency hint)"), SettingsManager::BOLD_PM);
+ addOption_gui(colorStore, _("Hub"), SettingsManager::BOLD_HUB);
+ addOption_gui(colorStore, _("Private Message"), SettingsManager::BOLD_PM);
addOption_gui(colorStore, _("Search"), SettingsManager::BOLD_SEARCH);
}
@@ -607,7 +624,7 @@
addOption_gui(windowStore2, _("Open file list window in the background"), SettingsManager::POPUNDER_FILELIST);
addOption_gui(windowStore2, _("Open new private messages from other users in the background"), SettingsManager::POPUNDER_PM);
- addOption_gui(windowStore2, _("Open new window when using /join"), SettingsManager::JOIN_OPEN_NEW_WINDOW);
+ addOption_gui(windowStore2, _("Open a new window when using /join"), SettingsManager::JOIN_OPEN_NEW_WINDOW);
addOption_gui(windowStore2, _("Ignore private messages from the hub"), SettingsManager::IGNORE_HUB_PMS);
addOption_gui(windowStore2, _("Ignore private messages from bots"), SettingsManager::IGNORE_BOT_PMS);
@@ -623,32 +640,23 @@
void Settings::initLog_gui()
{
- g_signal_connect(getWidget("logBrowseButton"), "clicked", G_CALLBACK(onLogBrowseClicked_gui), (gpointer)this);
- gtk_entry_set_text(GTK_ENTRY(getWidget("logDirectoryEntry")), SETTING(LOG_DIRECTORY).c_str());
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(getWidget("logDirectoryFileChooserButton")), SETTING(LOG_DIRECTORY).c_str());
g_signal_connect(getWidget("logMainCheckButton"), "toggled", G_CALLBACK(onLogMainClicked_gui), (gpointer)this);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logMainCheckButton")), BOOLSETTING(LOG_MAIN_CHAT));
gtk_entry_set_text(GTK_ENTRY(getWidget("logMainEntry")), SETTING(LOG_FORMAT_MAIN_CHAT).c_str());
- gtk_widget_set_sensitive(getWidget("logMainLabel"), BOOLSETTING(LOG_MAIN_CHAT));
- gtk_widget_set_sensitive(getWidget("logMainEntry"), BOOLSETTING(LOG_MAIN_CHAT));
g_signal_connect(getWidget("logPrivateCheckButton"), "toggled", G_CALLBACK(onLogPrivateClicked_gui), (gpointer)this);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logPrivateCheckButton")), BOOLSETTING(LOG_PRIVATE_CHAT));
gtk_entry_set_text(GTK_ENTRY(getWidget("logPrivateEntry")), SETTING(LOG_FORMAT_PRIVATE_CHAT).c_str());
- gtk_widget_set_sensitive(getWidget("logPrivateLabel"), BOOLSETTING(LOG_PRIVATE_CHAT));
- gtk_widget_set_sensitive(getWidget("logPrivateEntry"), BOOLSETTING(LOG_PRIVATE_CHAT));
g_signal_connect(getWidget("logDownloadsCheckButton"), "toggled", G_CALLBACK(onLogDownloadClicked_gui), (gpointer)this);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logDownloadsCheckButton")), BOOLSETTING(LOG_DOWNLOADS));
gtk_entry_set_text(GTK_ENTRY(getWidget("logDownloadsEntry")), SETTING(LOG_FORMAT_POST_DOWNLOAD).c_str());
- gtk_widget_set_sensitive(getWidget("logDownloadsLabel"), BOOLSETTING(LOG_DOWNLOADS));
- gtk_widget_set_sensitive(getWidget("logDownloadsEntry"), BOOLSETTING(LOG_DOWNLOADS));
g_signal_connect(getWidget("logUploadsCheckButton"), "toggled", G_CALLBACK(onLogUploadClicked_gui), (gpointer)this);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logUploadsCheckButton")), BOOLSETTING(LOG_UPLOADS));
gtk_entry_set_text(GTK_ENTRY(getWidget("logUploadsEntry")), SETTING(LOG_FORMAT_POST_UPLOAD).c_str());
- gtk_widget_set_sensitive(getWidget("logUploadsLabel"), BOOLSETTING(LOG_UPLOADS));
- gtk_widget_set_sensitive(getWidget("logUploadsEntry"), BOOLSETTING(LOG_UPLOADS));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logSystemCheckButton")), BOOLSETTING(LOG_SYSTEM));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(getWidget("logStatusCheckButton")), BOOLSETTING(LOG_STATUS_MESSAGES));
@@ -669,11 +677,11 @@
addOption_gui(advancedStore, _("Enable segmented downloads"), SettingsManager::SEGMENTED_DL);
addOption_gui(advancedStore, _("Enable automatic SFV checking"), SettingsManager::SFV_CHECK);
addOption_gui(advancedStore, _("Enable safe and compressed transfers"), SettingsManager::COMPRESS_TRANSFERS);
- addOption_gui(advancedStore, _("Accept custom user commands from hub"), SettingsManager::HUB_USER_COMMANDS);
+ addOption_gui(advancedStore, _("Accept custom user commands from the hub"), SettingsManager::HUB_USER_COMMANDS);
addOption_gui(advancedStore, _("Send unknown /commands to the hub"), SettingsManager::SEND_UNKNOWN_COMMANDS);
- addOption_gui(advancedStore, _("Add finished files to share instantly (if shared)"), SettingsManager::ADD_FINISHED_INSTANTLY);
+ addOption_gui(advancedStore, _("Add finished files to the share instantly (if shared)"), SettingsManager::ADD_FINISHED_INSTANTLY);
addOption_gui(advancedStore, _("Don't send the away message to bots"), SettingsManager::NO_AWAYMSG_TO_BOTS);
- addOption_gui(advancedStore, _("Use fast hashing method (disable if you have problems with hashing)"), SettingsManager::FAST_HASH);
+ addOption_gui(advancedStore, _("Use fast hashing method"), SettingsManager::FAST_HASH);
/// @todo: Uncomment when implemented
//addOption_gui(advancedStore, _("Register with the OS to handle dchub:// and adc:// URL links"), SettingsManager::URL_HANDLER);
//addOption_gui(advancedStore, _("Register with the OS to handle magnet: URL links"), SettingsManager::MAGNET_REGISTER);
@@ -682,9 +690,9 @@
{ // User Commands
userCommandView.setView(GTK_TREE_VIEW(getWidget("userCommandTreeView")));
- userCommandView.insertColumn("Name", G_TYPE_STRING, TreeView::STRING, -1);
- userCommandView.insertColumn("Hub", G_TYPE_STRING, TreeView::STRING, -1);
- userCommandView.insertColumn("Command", G_TYPE_STRING, TreeView::STRING, -1);
+ userCommandView.insertColumn(N_("Name"), G_TYPE_STRING, TreeView::STRING, -1);
+ userCommandView.insertColumn(N_("Hub"), G_TYPE_STRING, TreeView::STRING, -1);
+ userCommandView.insertColumn(N_("Command"), G_TYPE_STRING, TreeView::STRING, -1);
userCommandView.finalize();
userCommandStore = gtk_list_store_newv(userCommandView.getColCount(), userCommandView.getGTypes());
gtk_tree_view_set_model(userCommandView.get(), GTK_TREE_MODEL(userCommandStore));
@@ -726,18 +734,15 @@
}
{ // Security Certificates
- gtk_entry_set_text(GTK_ENTRY(getWidget("privateKeyEntry")), SETTING(TLS_PRIVATE_KEY_FILE).c_str());
- gtk_entry_set_text(GTK_ENTRY(getWidget("certificateFileEntry")), SETTING(TLS_CERTIFICATE_FILE).c_str());
- gtk_entry_set_text(GTK_ENTRY(getWidget("trustedCertificatesPathEntry")), SETTING(TLS_TRUSTED_CERTIFICATES_PATH).c_str());
- g_signal_connect(getWidget("privateKeyButton"), "clicked", G_CALLBACK(onCertificatesPrivateBrowseClicked_gui), (gpointer)this);
- g_signal_connect(getWidget("certificateFileButton"), "clicked", G_CALLBACK(onCertificatesFileBrowseClicked_gui), (gpointer)this);
- g_signal_connect(getWidget("trustedCertificatesPathButton"), "clicked", G_CALLBACK(onCertificatesPathBrowseClicked_gui), (gpointer)this);
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(getWidget("privateKeyFileChooserButton")), SETTING(TLS_PRIVATE_KEY_FILE).c_str());
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(getWidget("certificateFileChooserButton")), SETTING(TLS_CERTIFICATE_FILE).c_str());
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(getWidget("trustedCertificatesPathFileChooserButton")), SETTING(TLS_TRUSTED_CERTIFICATES_PATH).c_str());
createOptionsView_gui(certificatesView, certificatesStore, "certificatesTreeView");
addOption_gui(certificatesStore, _("Use TLS when remote client supports it"), SettingsManager::USE_TLS);
- addOption_gui(certificatesStore, _("Allow TLS connections to hubs without trusted certificate"), SettingsManager::ALLOW_UNTRUSTED_HUBS);
- addOption_gui(certificatesStore, _("Allow TLS connections to clients without trusted certificate"), SettingsManager::ALLOW_UNTRUSTED_CLIENTS);
+ addOption_gui(certificatesStore, _("Allow TLS connections to hubs without a trusted certificate"), SettingsManager::ALLOW_UNTRUSTED_HUBS);
+ addOption_gui(certificatesStore, _("Allow TLS connections to clients without a trusted certificate"), SettingsManager::ALLOW_UNTRUSTED_CLIENTS);
g_signal_connect(getWidget("generateCertificatesButton"), "clicked", G_CALLBACK(onGenerateCertificatesClicked_gui), (gpointer)this);
}
@@ -817,6 +822,7 @@
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(getWidget("commandDialogSeparator"))))
{
+ // TRANSLATORS: Name of custom separator user command.
name = _("Separator");
type = UserCommand::TYPE_SEPARATOR;
}
@@ -1027,74 +1033,6 @@
gtk_widget_set_sensitive(s->getWidget("socksCheckButton"), TRUE);
}
-void Settings::onBrowseFinished_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("dirChooserDialog")));
- gtk_widget_hide(s->getWidget("dirChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(s->getWidget("dirChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("finishedDownloadsEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
-void Settings::onBrowseUnfinished_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("dirChooserDialog")));
- gtk_widget_hide(s->getWidget("dirChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(s->getWidget("dirChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("unfinishedDownloadsEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
-void Settings::onPublicHubs_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
- GtkTreeIter iter;
-
- gtk_list_store_clear(s->publicListStore);
- StringList lists(FavoriteManager::getInstance()->getHubLists());
- for (StringList::iterator idx = lists.begin(); idx != lists.end(); ++idx)
- {
- gtk_list_store_append(s->publicListStore, &iter);
- gtk_list_store_set(s->publicListStore, &iter, s->publicListView.col("List"), (*idx).c_str(), -1);
- }
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("publicHubsDialog")));
- gtk_widget_hide(s->getWidget("publicHubsDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- string lists = "";
- GtkTreeModel *m = GTK_TREE_MODEL(s->publicListStore);
- gboolean valid = gtk_tree_model_get_iter_first(m, &iter);
- while (valid)
- {
- lists += s->publicListView.getString(&iter, "List") + ";";
- valid = gtk_tree_model_iter_next(m, &iter);
- }
- if (!lists.empty())
- lists.erase(lists.size() - 1);
- SettingsManager::getInstance()->set(SettingsManager::HUBLIST_SERVERS, lists);
- }
-}
-
void Settings::onPublicAdd_gui(GtkWidget *widget, gpointer data)
{
Settings *s = (Settings *)data;
@@ -1103,7 +1041,7 @@
GtkTreeViewColumn *col;
gtk_list_store_append(s->publicListStore, &iter);
- gtk_list_store_set(s->publicListStore, &iter, s->publicListView.col("List"), _("New list"), -1);
+ gtk_list_store_set(s->publicListStore, &iter, s->publicListView.col("List"), _("New public hub list"), -1);
path = gtk_tree_model_get_path(GTK_TREE_MODEL(s->publicListStore), &iter);
col = gtk_tree_view_get_column(s->publicListView.get(), 0);
gtk_tree_view_set_cursor(s->publicListView.get(), path, col, TRUE);
@@ -1300,35 +1238,17 @@
-1);
}
- string text = _("Total size: ") + Util::formatBytes(ShareManager::getInstance()->getShareSize());
+ int64_t shareSize = ShareManager::getInstance()->getShareSize();
+ string text = F_("Total share size: %1%", % Util::formatBytes(shareSize));
gtk_label_set_text(GTK_LABEL(s->getWidget("sharedSizeLabel")), text.c_str());
return FALSE;
}
-void Settings::onLogBrowseClicked_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("dirChooserDialog")));
- gtk_widget_hide(s->getWidget("dirChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(s->getWidget("dirChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("logDirectoryEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
void Settings::onLogMainClicked_gui(GtkToggleButton *button, gpointer data)
{
Settings *s = (Settings *)data;
bool toggled = gtk_toggle_button_get_active(button);
- gtk_widget_set_sensitive(s->getWidget("logMainLabel"), toggled);
gtk_widget_set_sensitive(s->getWidget("logMainEntry"), toggled);
}
@@ -1336,7 +1256,6 @@
{
Settings *s = (Settings *)data;
bool toggled = gtk_toggle_button_get_active(button);
- gtk_widget_set_sensitive(s->getWidget("logPrivateLabel"), toggled);
gtk_widget_set_sensitive(s->getWidget("logPrivateEntry"), toggled);
}
@@ -1344,7 +1263,6 @@
{
Settings *s = (Settings *)data;
bool toggled = gtk_toggle_button_get_active(button);
- gtk_widget_set_sensitive(s->getWidget("logDownloadsLabel"), toggled);
gtk_widget_set_sensitive(s->getWidget("logDownloadsEntry"), toggled);
}
@@ -1352,7 +1270,6 @@
{
Settings *s = (Settings *)data;
bool toggled = gtk_toggle_button_get_active(button);
- gtk_widget_set_sensitive(s->getWidget("logUploadsLabel"), toggled);
gtk_widget_set_sensitive(s->getWidget("logUploadsEntry"), toggled);
}
@@ -1614,61 +1531,6 @@
return FALSE;
}
-
-void Settings::onCertificatesPrivateBrowseClicked_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("fileChooserDialog")));
- gtk_widget_hide(s->getWidget("fileChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(s->getWidget("fileChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("privateKeyEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
-void Settings::onCertificatesFileBrowseClicked_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("fileChooserDialog")));
- gtk_widget_hide(s->getWidget("fileChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(s->getWidget("fileChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("certificateFileEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
-void Settings::onCertificatesPathBrowseClicked_gui(GtkWidget *widget, gpointer data)
-{
- Settings *s = (Settings *)data;
-
- gint response = gtk_dialog_run(GTK_DIALOG(s->getWidget("dirChooserDialog")));
- gtk_widget_hide(s->getWidget("dirChooserDialog"));
-
- if (response == GTK_RESPONSE_OK)
- {
- gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(s->getWidget("dirChooserDialog")));
- if (path)
- {
- gtk_entry_set_text(GTK_ENTRY(s->getWidget("trustedCertificatesPathEntry")), Text::toUtf8(path).c_str());
- g_free(path);
- }
- }
-}
-
void Settings::onGenerateCertificatesClicked_gui(GtkWidget *widget, gpointer data)
{
Settings *s = (Settings *)data;
=== modified file 'linux/settingsdialog.hh'
--- linux/settingsdialog.hh 2009-08-15 16:59:22 +0000
+++ linux/settingsdialog.hh 2011-01-25 05:11:20 +0000
@@ -43,6 +43,7 @@
void addOption_gui(GtkListStore *store, const std::string &name, const std::string &setting);
void createOptionsView_gui(TreeView &treeView, GtkListStore *&store, const std::string &widgetName);
void saveOptionsView_gui(TreeView &treeView);
+ void saveFileChooserPath_gui(GtkWidget *fileChooser, dcpp::SettingsManager::StrSetting setting);
void initPersonal_gui();
void initConnection_gui();
void initDownloads_gui();
@@ -66,9 +67,6 @@
static void onInFW_NAT_gui(GtkToggleButton *button, gpointer data);
static void onOutDirect_gui(GtkToggleButton *button, gpointer data);
static void onSocks5_gui(GtkToggleButton *button, gpointer data);
- static void onBrowseFinished_gui(GtkWidget *widget, gpointer data);
- static void onBrowseUnfinished_gui(GtkWidget *widget, gpointer data);
- static void onPublicHubs_gui(GtkWidget *widget, gpointer data);
static void onPublicAdd_gui(GtkWidget *widget, gpointer data);
static void onPublicMoveUp_gui(GtkWidget *widget, gpointer data);
static void onPublicMoveDown_gui(GtkWidget *widget, gpointer data);
@@ -86,7 +84,6 @@
//static void onDownColorClicked_gui(GtkCellRendererToggle *cell, gchar *path, gpointer data);
//static void onUpColorClicked_gui(GtkCellRendererToggle *cell, gchar *path, gpointer data);
//static void onTextStyleClicked_gui(GtkCellRendererToggle *cell, gchar *path, gpointer data);
- static void onLogBrowseClicked_gui(GtkWidget *widget, gpointer data);
static void onLogMainClicked_gui(GtkToggleButton *button, gpointer data);
static void onLogPrivateClicked_gui(GtkToggleButton *button, gpointer data);
static void onLogDownloadClicked_gui(GtkToggleButton *button, gpointer data);
@@ -101,9 +98,6 @@
static void onUserCommandTypeChat_gui(GtkWidget *widget, gpointer data);
static void onUserCommandTypePM_gui(GtkWidget *widget, gpointer data);
static gboolean onUserCommandKeyPress_gui(GtkWidget *widget, GdkEventKey *event, gpointer data);
- static void onCertificatesPrivateBrowseClicked_gui(GtkWidget *widget, gpointer data);
- static void onCertificatesFileBrowseClicked_gui(GtkWidget *widget, gpointer data);
- static void onCertificatesPathBrowseClicked_gui(GtkWidget *widget, gpointer data);
static void onGenerateCertificatesClicked_gui(GtkWidget *widget, gpointer data);
// Client functions
@@ -114,7 +108,6 @@
void moveUserCommand_client(std::string name, std::string hub, int pos);
void generateCertificates_client();
- GtkComboBox *connectionSpeedComboBox;
GtkListStore *downloadToStore, *publicListStore, *queueStore,
*shareStore, *appearanceStore, *colorStore, *windowStore1,
*windowStore2, *windowStore3, *advancedStore, *certificatesStore, *userCommandStore;
=== modified file 'linux/settingsmanager.hh'
--- linux/settingsmanager.hh 2009-03-12 05:47:55 +0000
+++ linux/settingsmanager.hh 2011-01-25 05:11:20 +0000
@@ -22,6 +22,7 @@
#ifndef WULFOR_SETTINGSMANAGER_HH
#define WULFOR_SETTINGSMANAGER_HH
+#include "IntlUtil.hh"
#include <string>
#include <map>
#include <dcpp/stdinc.h>
=== modified file 'linux/sharebrowser.cc'
--- linux/sharebrowser.cc 2010-10-14 03:51:12 +0000
+++ linux/sharebrowser.cc 2011-01-25 05:11:20 +0000
@@ -34,7 +34,7 @@
using namespace dcpp;
ShareBrowser::ShareBrowser(UserPtr user, const std::string &file, const std::string &initialDirectory):
- BookEntry(Entry::SHARE_BROWSER, _("List: ") + WulforUtil::getNicks(user), "sharebrowser.glade", user->getCID().toBase32()),
+ BookEntry(Entry::SHARE_BROWSER, WulforUtil::getNicks(user), "sharebrowser.glade", user->getCID().toBase32()),
user(user),
file(file),
initialDirectory(initialDirectory),
@@ -53,7 +53,7 @@
string name = Util::getFileName(file);
string::size_type loc = name.find('.');
nick = name.substr(0, loc);
- setLabel_gui(_("List: ") + nick);
+ setLabel_gui(nick);
}
// Configure the dialogs
@@ -67,11 +67,11 @@
// Initialize the file TreeView
fileView.setView(GTK_TREE_VIEW(getWidget("fileView")), true, "sharebrowser");
- fileView.insertColumn("Filename", G_TYPE_STRING, TreeView::ICON_STRING, 400, "Icon");
- fileView.insertColumn("Size", G_TYPE_STRING, TreeView::STRINGR, 80);
- fileView.insertColumn("Type", G_TYPE_STRING, TreeView::STRING, 50);
- fileView.insertColumn("TTH", G_TYPE_STRING, TreeView::STRING, 150);
- fileView.insertColumn("Exact Size", G_TYPE_STRING, TreeView::STRINGR, 105);
+ fileView.insertColumn(N_("Filename"), G_TYPE_STRING, TreeView::ICON_STRING, 400, "Icon");
+ fileView.insertColumn(N_("Size"), G_TYPE_STRING, TreeView::STRINGR, 80);
+ fileView.insertColumn(N_("Type"), G_TYPE_STRING, TreeView::STRING, 50);
+ fileView.insertColumn(N_("TTH"), G_TYPE_STRING, TreeView::STRING, 150);
+ fileView.insertColumn(N_("Exact Size"), G_TYPE_STRING, TreeView::STRINGR, 105);
fileView.insertHiddenColumn("DL File", G_TYPE_POINTER);
fileView.insertHiddenColumn("Icon", G_TYPE_STRING);
fileView.insertHiddenColumn("Size Order", G_TYPE_INT64);
@@ -156,7 +156,7 @@
}
catch (const Exception &e)
{
- setStatus_gui("mainStatus", _("Unable to load file list: ") + e.getError());
+ setStatus_gui("mainStatus", F_("Unable to load file list: %1%", % e.getError()));
}
}
@@ -319,25 +319,18 @@
void ShareBrowser::updateStatus_gui()
{
- string items, files, size, total;
- files = _("Files: ") + Util::toString(shareItems);
- total = _("Total: ") + Util::formatBytes(shareSize);
-
- if (gtk_tree_selection_get_selected(dirSelection, NULL, NULL))
- {
- items = _("Items: ") + Util::toString(currentItems);
- size = _("Size: ") + Util::formatBytes(currentSize);
- }
- else
- {
- items = _("Items: 0");
- size = _("Size: 0 B");
- }
-
- setStatus_gui("itemsStatus", items);
+ string files = P_("File: %1%", "Files: %1%", % currentItems, currentItems);
+ setStatus_gui("itemsStatus", files);
+
+ // TRANSLATORS: Size of currently visible folder.
+ string size = F_("Size: %1%", % Util::formatBytes(currentSize));
setStatus_gui("sizeStatus", size);
- setStatus_gui("filesStatus", files);
- setStatus_gui("totalStatus", total);
+
+ string totalFiles = P_("Total File: %1%", "Total Files: %1%", % shareItems, shareItems);
+ setStatus_gui("filesStatus", totalFiles);
+
+ string totalSize = F_("Total Size: %1%", % Util::formatBytes(shareSize));
+ setStatus_gui("totalStatus", totalSize);
}
void ShareBrowser::setStatus_gui(string statusBar, std::string msg)
@@ -464,7 +457,8 @@
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("fileDownloadMenu")), menuItem);
}
- menuItem = gtk_menu_item_new_with_label(_("Browse..."));
+ menuItem = gtk_menu_item_new_with_label(_("_Browse..."));
+ gtk_menu_item_set_use_underline(GTK_MENU_ITEM(menuItem), TRUE);
g_signal_connect(menuItem, "activate", G_CALLBACK(onDownloadToClicked_gui), (gpointer)this);
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("fileDownloadMenu")), menuItem);
@@ -532,7 +526,8 @@
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("dirDownloadMenu")), menuItem);
}
- menuItem = gtk_menu_item_new_with_label(_("Browse..."));
+ menuItem = gtk_menu_item_new_with_label(_("_Browse..."));
+ gtk_menu_item_set_use_underline(GTK_MENU_ITEM(menuItem), TRUE);
g_signal_connect(menuItem, "activate", G_CALLBACK(onDownloadDirToClicked_gui), (gpointer)this);
gtk_menu_shell_append(GTK_MENU_SHELL(getWidget("dirDownloadMenu")), menuItem);
@@ -991,7 +986,7 @@
void ShareBrowser::matchQueue_client()
{
int matched = QueueManager::getInstance()->matchListing(listing, "");
- string message = _("Matched ") + Util::toString(matched) + _(" files");
+ string message = P_("Matched %1% file", "Matched %1% files", % matched, matched);
typedef Func2<ShareBrowser, string, string> F2;
F2 *f = new F2(this, &ShareBrowser::setStatus_gui, "mainStatus", message);
=== modified file 'linux/sharebrowser.hh'
--- linux/sharebrowser.hh 2009-06-28 23:06:29 +0000
+++ linux/sharebrowser.hh 2011-01-25 05:11:20 +0000
@@ -22,6 +22,8 @@
#ifndef WULFOR_SHARE_BROWSER_HH
#define WULFOR_SHARE_BROWSER_HH
+#include "IntlUtil.hh"
+
#include <dcpp/stdinc.h>
#include <dcpp/DCPlusPlus.h>
#include <dcpp/DirectoryListing.h>
=== modified file 'linux/transfers.cc'
--- linux/transfers.cc 2010-09-05 06:31:22 +0000
+++ linux/transfers.cc 2011-01-25 05:11:20 +0000
@@ -46,15 +46,15 @@
// Initialize transfer treeview
transferView.setView(GTK_TREE_VIEW(getWidget("transfers")), TRUE, "transfers");
- transferView.insertColumn("User", G_TYPE_STRING, TreeView::ICON_STRING, 150, "Icon");
- transferView.insertColumn("Hub Name", G_TYPE_STRING, TreeView::STRING, 100);
- transferView.insertColumn("Status", G_TYPE_STRING, TreeView::PROGRESS, 250, "Progress");
- transferView.insertColumn("Time Left", G_TYPE_INT64, TreeView::TIME_LEFT, 85);
- transferView.insertColumn("Speed", G_TYPE_INT64, TreeView::SPEED, 125);
- transferView.insertColumn("Filename", G_TYPE_STRING, TreeView::STRING, 200);
- transferView.insertColumn("Size", G_TYPE_INT64, TreeView::SIZE, 125);
- transferView.insertColumn("Path", G_TYPE_STRING, TreeView::STRING, 200);
- transferView.insertColumn("IP", G_TYPE_STRING, TreeView::STRING, 175);
+ transferView.insertColumn(N_("User"), G_TYPE_STRING, TreeView::ICON_STRING, 150, "Icon");
+ transferView.insertColumn(N_("Hub Name"), G_TYPE_STRING, TreeView::STRING, 100);
+ transferView.insertColumn(N_("Status"), G_TYPE_STRING, TreeView::PROGRESS, 250, "Progress");
+ transferView.insertColumn(N_("Time Left"), G_TYPE_INT64, TreeView::TIME_LEFT, 85);
+ transferView.insertColumn(N_("Speed"), G_TYPE_INT64, TreeView::SPEED, 125);
+ transferView.insertColumn(N_("Filename"), G_TYPE_STRING, TreeView::STRING, 200);
+ transferView.insertColumn(N_("Size"), G_TYPE_INT64, TreeView::SIZE, 125);
+ transferView.insertColumn(N_("Path"), G_TYPE_STRING, TreeView::STRING, 200);
+ transferView.insertColumn(N_("IP"), G_TYPE_STRING, TreeView::STRING, 175);
transferView.insertHiddenColumn("Icon", G_TYPE_STRING);
transferView.insertHiddenColumn("Progress", G_TYPE_INT);
transferView.insertHiddenColumn("Sort Order", G_TYPE_STRING);
@@ -506,8 +506,10 @@
void Transfers::updateParent_gui(GtkTreeIter* iter)
{
int active = 0;
+ int total = 0;
GtkTreeIter child;
string users;
+ string status;
std::set<string> hubs;
bool valid;
int64_t speed = 0;
@@ -515,7 +517,6 @@
int64_t totalSize = 0;
int64_t timeLeft = 0;
double progress = 0.0;
- ostringstream stream;
ostringstream tmpHubs;
position = transferView.getValue<int64_t>(iter, "Download Position");
@@ -535,6 +536,7 @@
speed += transferView.getValue<int64_t>(&child, "Speed");
position += transferView.getValue<int64_t>(&child, "Download Position");
}
+ ++total;
users += transferView.getString(&child, "User") + string(", ");
hubs.insert(transferView.getString(&child, "Hub Name"));
valid = WulforUtil::getNextIter_gui(GTK_TREE_MODEL(transferStore), &child, TRUE, FALSE);
@@ -546,31 +548,27 @@
if (speed > 0)
timeLeft = (totalSize - position) / speed;
- stream << setiosflags(ios::fixed) << setprecision(1);
-
if (transferView.getValue<gboolean>(iter, "Failed") == 0)
{
if (active)
- stream << _("Downloaded ");
+ status = F_("Downloaded %1% (%2$.1f%%)", % Util::formatBytes(position) % progress);
else
- stream << _("Waiting for slot ");
-
- stream << Util::formatBytes(position) << " (" << progress;
- stream << _("%) from ") << active << "/" << gtk_tree_model_iter_n_children(GTK_TREE_MODEL(transferStore), iter) << _(" user(s)");
+ status = _("Waiting for slot");
}
else
{
- stream << transferView.getString(iter, "Status");
+ status = transferView.getString(iter, "Status");
}
+ string user = P_("%1% of %2% User", "%1% of %2% Users", % active % total, total);
std::copy(hubs.begin(), hubs.end(), std::ostream_iterator<string>(tmpHubs, ", "));
gtk_tree_store_set(transferStore, iter,
- transferView.col("User"), users.substr(0, users.length()-2).c_str(),
+ transferView.col("User"), user.c_str(),
transferView.col("Hub Name"), tmpHubs.str().substr(0, tmpHubs.str().length()-2).c_str(),
transferView.col("Speed"), speed,
transferView.col("Time Left"), timeLeft,
- transferView.col("Status"), stream.str().c_str(),
+ transferView.col("Status"), status.c_str(),
transferView.col("Progress"), static_cast<int>(progress),
transferView.col("Sort Order"), active ? (string("d").append(users)).c_str() : (string("w").append(users)).c_str(),
-1);
@@ -729,7 +727,7 @@
gtk_tree_store_set(transferStore, &iter,
transferView.col("Status"), status.c_str(),
transferView.col("Failed"), (gboolean)1,
- transferView.col("Speed"), (uint64_t)-1,
+ transferView.col("Speed"), (gint64)-1,
-1);
}
}
@@ -894,22 +892,29 @@
getParams_client(params, *it);
+ // TODO: These flags in the status are a hack and should be redesigned.
if (dl->getUserConnection().isSecure())
{
if (dl->getUserConnection().isTrusted())
+ // TRANSLATORS: Status flag to indicate transfer is secure and trusted.
stream << _("[S]");
else
+ // TRANSLATORS: Status flag to indicate transfer is secure but untrusted.
stream << _("[U]");
}
if (dl->isSet(Download::FLAG_TTH_CHECK))
+ // TRANSLATORS: Status flag to indicate a TTH check will be performed on the transfer.
stream << _("[T]");
if (dl->isSet(Download::FLAG_ZDOWNLOAD))
+ // TRANSLATORS: Status flag to indicate transfer is compressed.
stream << _("[Z]");
- stream << setiosflags(ios::fixed) << setprecision(1);
- stream << " " << _("Downloaded ") << Util::formatBytes(dl->getPos()) << " (" << params["Progress"]
- << "%) in " << Util::formatSeconds((GET_TICK() - dl->getStart()) / 1000);
- params["Status"] = stream.str();
+ string bytes = Util::formatBytes(dl->getPos());
+ double progress = dl->getSize() <= 0 ? 0.0 : static_cast<double>(dl->getPos() * 100.0) / dl->getSize();
+
+ // TRANSLATORS: Shows the bytes downloaded and the percentage completed.
+ string status = F_("Downloaded %1% (%2$.1f%%)", % bytes % progress);
+ params["Status"] = stream.tellp() > 0 ? stream.str() + " " + status : status;
typedef Func2<Transfers, StringMap, bool> F2;
F2* f2 = new F2(this, &Transfers::updateTransfer_gui, params, TRUE);
@@ -1057,7 +1062,7 @@
Upload* ul = *it;
StringMap params;
ostringstream stream;
-
+
getParams_client(params, ul);
if (ul->getUserConnection().isSecure())
@@ -1070,10 +1075,12 @@
if (ul->isSet(Upload::FLAG_ZUPLOAD))
stream << _("[Z]");
- stream << setiosflags(ios::fixed) << setprecision(1);
- stream << " " << _("Uploaded ") << Util::formatBytes(ul->getPos()) << " (" << params["Progress"]
- << "%) in " << Util::formatSeconds((GET_TICK() - ul->getStart()) / 1000);
- params["Status"] = stream.str();
+ string bytes = Util::formatBytes(ul->getPos());
+ double progress = ul->getSize() <= 0 ? 0.0 : static_cast<double>(ul->getPos() * 100.0) / ul->getSize();
+
+ // TRANSLATORS: Shows the bytes uploaded and the percentage completed.
+ string status = F_("Uploaded %1% (%2$.1f%%)", % bytes % progress);
+ params["Status"] = stream.tellp() > 0 ? stream.str() + " " + status : status;
typedef Func2<Transfers, StringMap, bool> F2;
F2* f2 = new F2(this, &Transfers::updateTransfer_gui, params, FALSE);
=== modified file 'linux/transfers.hh'
--- linux/transfers.hh 2010-05-30 03:15:23 +0000
+++ linux/transfers.hh 2011-01-25 05:11:20 +0000
@@ -22,6 +22,8 @@
#ifndef WULFOR_TRANSFERS_HH
#define WULFOR_TRANSFERS_HH
+#include "IntlUtil.hh"
+
#include <dcpp/stdinc.h>
#include <dcpp/DCPlusPlus.h>
#include <dcpp/ConnectionManager.h>
=== modified file 'linux/treeview.cc'
--- linux/treeview.cc 2010-01-01 00:57:24 +0000
+++ linux/treeview.cc 2011-01-25 05:11:20 +0000
@@ -22,6 +22,8 @@
#include "treeview.hh"
#include "settingsmanager.hh"
#include "WulforUtil.hh"
+#include "IntlUtil.hh"
+#include <sstream>
using namespace std;
@@ -71,7 +73,7 @@
m = gtk_tree_view_get_model(view);
string value;
gchar* temp;
- dcassert(gtk_tree_model_get_column_type(m, col(column)) == G_TYPE_STRING);
+ g_assert(gtk_tree_model_get_column_type(m, col(column)) == G_TYPE_STRING);
gtk_tree_model_get(m, i, col(column), &temp, -1);
if (temp != NULL)
@@ -86,10 +88,10 @@
void TreeView::insertColumn(const string &title, const GType >ype, const columnType type, const int width, const string &linkedCol)
{
// All insertColumn's have to be called before any insertHiddenColumn's.
- dcassert(hiddenColumns.size() == 0);
+ g_assert(hiddenColumns.size() == 0);
// Title must be unique.
- dcassert(!title.empty() && columns.find(title) == columns.end());
+ g_assert(!title.empty() && columns.find(title) == columns.end());
columns[title] = Column(title, count, gtype, type, width, linkedCol);
sortedColumns[count] = title;
@@ -99,9 +101,9 @@
void TreeView::insertHiddenColumn(const string &title, const GType >ype)
{
// Title must be unique.
- dcassert(!title.empty());
- dcassert(hiddenColumns.find(title) == hiddenColumns.end());
- dcassert(columns.find(title) == columns.end());
+ g_assert(!title.empty());
+ g_assert(hiddenColumns.find(title) == hiddenColumns.end());
+ g_assert(columns.find(title) == columns.end());
hiddenColumns[title] = Column(title, count, gtype);
sortedHiddenColumns[count] = title;
@@ -110,7 +112,7 @@
void TreeView::finalize()
{
- dcassert(count > 0);
+ g_assert(count > 0);
menu = GTK_MENU(gtk_menu_new());
visibleColumns = columns.size();
@@ -123,11 +125,6 @@
Column& col = columns[iter->second];
addColumn_gui(col);
- colMenuItems[col.title] = gtk_check_menu_item_new_with_label(col.title.c_str());
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(colMenuItems[col.title]), col.visible);
- g_signal_connect(colMenuItems[col.title], "activate", G_CALLBACK(toggleColumnVisibility), (gpointer)this);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), colMenuItems[col.title]);
-
if (!col.visible)
visibleColumns--;
}
@@ -229,50 +226,51 @@
{
GtkTreeViewColumn *col = NULL;
GtkCellRenderer *renderer;
+ const gchar *title = _(column.title.c_str());
switch (column.type)
{
case INT:
case STRING:
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
gtk_cell_renderer_text_new(), "text", column.pos, NULL);
break;
case SIZE:
renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
renderer, "text", column.pos, NULL);
gtk_tree_view_column_set_cell_data_func(col, renderer, TreeView::sizeDataFunc, &column, NULL);
break;
case SPEED:
renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
renderer, "text", column.pos, NULL);
gtk_tree_view_column_set_cell_data_func(col, renderer, TreeView::speedDataFunc, &column, NULL);
break;
case TIME_LEFT:
renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
renderer, "text", column.pos, NULL);
gtk_tree_view_column_set_cell_data_func(col, renderer, TreeView::timeLeftDataFunc, &column, NULL);
break;
case STRINGR:
renderer = gtk_cell_renderer_text_new();
g_object_set(renderer, "xalign", 1.0, NULL);
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(), renderer, "text", column.pos, NULL);
+ col = gtk_tree_view_column_new_with_attributes(title, renderer, "text", column.pos, NULL);
gtk_tree_view_column_set_alignment(col, 1.0);
break;
case BOOL:
renderer = gtk_cell_renderer_toggle_new();
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(), renderer, "active", column.pos, NULL);
+ col = gtk_tree_view_column_new_with_attributes(title, renderer, "active", column.pos, NULL);
break;
case PIXBUF:
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
gtk_cell_renderer_pixbuf_new(), "pixbuf", column.pos, NULL);
break;
case ICON_STRING:
renderer = gtk_cell_renderer_pixbuf_new();
col = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(col, column.title.c_str());
+ gtk_tree_view_column_set_title(col, title);
gtk_tree_view_column_pack_start(col, renderer, false);
gtk_tree_view_column_add_attribute(col, renderer, "icon-name", TreeView::col(column.linkedCol));
renderer = gtk_cell_renderer_text_new();
@@ -282,12 +280,12 @@
case EDIT_STRING:
renderer = gtk_cell_renderer_text_new();
g_object_set(renderer, "editable", TRUE, NULL);
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(), renderer, "text", column.pos, NULL);
+ col = gtk_tree_view_column_new_with_attributes(title, renderer, "text", column.pos, NULL);
break;
case PROGRESS:
renderer = gtk_cell_renderer_progress_new();
g_object_set(renderer, "xalign", 0.0, NULL); // Doesn't work yet. See: http://bugzilla.gnome.org/show_bug.cgi?id=334576
- col = gtk_tree_view_column_new_with_attributes(column.title.c_str(),
+ col = gtk_tree_view_column_new_with_attributes(title,
renderer, "text", column.pos, "value", TreeView::col(column.linkedCol), NULL);
break;
}
@@ -316,6 +314,9 @@
gtk_tree_view_column_set_visible(col, column.visible);
gtk_tree_view_insert_column(view, col, column.pos);
+ g_object_set_data(G_OBJECT(col), "column", (gpointer)&column);
+
+ addCheckMenuItem(col);
/*
* Breaks GTK+ API, but is the only way to attach a signal to a gtktreeview column header. See GTK bug #141937.
@@ -324,6 +325,18 @@
g_signal_connect(col->button, "button-release-event", G_CALLBACK(popupMenu_gui), (gpointer)this);
}
+void TreeView::addCheckMenuItem(GtkTreeViewColumn *col)
+{
+ bool visible = gtk_tree_view_column_get_visible(col);
+ const gchar *title = gtk_tree_view_column_get_title(col);
+
+ GtkWidget *menuItem = gtk_check_menu_item_new_with_label(title);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuItem), visible);
+ g_object_set_data(G_OBJECT(menuItem), "gtktreeviewcolumn", (gpointer)col);
+ g_signal_connect(menuItem, "activate", G_CALLBACK(toggleColumnVisibility), (gpointer)this);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuItem);
+}
+
void TreeView::setSortColumn_gui(const string &column, const string &sortColumn)
{
GtkTreeViewColumn *gtkColumn = gtk_tree_view_get_column(view, col(column));
@@ -332,8 +345,8 @@
int TreeView::col(const string &title)
{
- dcassert(!title.empty());
- dcassert(columns.find(title) != columns.end() || hiddenColumns.find(title) != hiddenColumns.end());
+ g_assert(!title.empty());
+ g_assert(columns.find(title) != columns.end() || hiddenColumns.find(title) != hiddenColumns.end());
int retval = -1;
if (columns.find(title) != columns.end())
@@ -341,7 +354,7 @@
else
retval = hiddenColumns[title].id;
- dcassert(retval >= 0 && (retval < count));
+ g_assert(retval >= 0 && (retval < count));
return retval;
}
@@ -362,33 +375,19 @@
void TreeView::toggleColumnVisibility(GtkMenuItem *item, gpointer data)
{
TreeView *tv = (TreeView*)data;
- GtkTreeViewColumn *column = NULL;
- gboolean visible;
- SortedColIter iter;
- string title = string(gtk_label_get_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(item)))));
-
- // Function col(title) doesn't work here, so we have to find column manually.
- for (iter = tv->sortedColumns.begin(); iter != tv->sortedColumns.end(); iter++)
- {
- column = gtk_tree_view_get_column(tv->view, iter->first);
- if (string(gtk_tree_view_column_get_title(column)) == title)
- break;
- }
-
- if (!column)
- return;
-
- visible = !gtk_tree_view_column_get_visible(column);
+ gpointer column_data = g_object_get_data(G_OBJECT(item), "gtktreeviewcolumn");
+ GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(column_data);
+ gboolean visible = !gtk_tree_view_column_get_visible(column);
// Can't let number of visible columns fall below 1, otherwise there's no way to unhide columns.
if (!visible && tv->visibleColumns <= 1)
{
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tv->colMenuItems[title]), true);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), true);
return;
}
gtk_tree_view_column_set_visible(column, visible);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tv->colMenuItems[title]), visible);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), visible);
if (visible)
{
@@ -432,41 +431,44 @@
void TreeView::saveSettings()
{
- string columnOrder, columnWidth, columnVisibility, title;
- GtkTreeViewColumn *col;
- gint width;
-
- dcassert(columns.size() > 0);
+ const string delimiter = ",";
+ stringstream columnOrder;
+ stringstream columnWidth;
+ stringstream columnVisibility;
for (size_t i = 0; i < columns.size(); i++)
{
- col = gtk_tree_view_get_column(view, i);
+ GtkTreeViewColumn *col = gtk_tree_view_get_column(view, i);
if (col == NULL)
continue;
- title = string(gtk_tree_view_column_get_title(col));
- width = gtk_tree_view_column_get_width(col);
+ Column *column = (Column*)g_object_get_data(G_OBJECT(col), "column");
// A col was moved to the right of the padding col
- if (title.empty())
+ if (column == NULL)
return;
- columnOrder += dcpp::Util::toString(columns[title].id) + ",";
- if (width >= 20)
- columnWidth += dcpp::Util::toString(width) + ",";
- else
- columnWidth += dcpp::Util::toString(columns[title].width) + ",";
- columnVisibility += dcpp::Util::toString(gtk_tree_view_column_get_visible(col)) + ",";
+ gint width = gtk_tree_view_column_get_width(col);
+ width = width >= 20 ? width : column->width;
+ gboolean visible = gtk_tree_view_column_get_visible(col);
+
+ columnOrder << column->id;
+ columnWidth << width;
+ columnVisibility << visible;
+
+ // Add delimiter except for the last iteration
+ if (i < columns.size() - 1)
+ {
+ columnOrder << delimiter;
+ columnWidth << delimiter;
+ columnVisibility << delimiter;
+ }
}
- if (columnOrder.size() > 0)
+ if (!columnOrder.str().empty())
{
- columnOrder.erase(columnOrder.size() - 1, 1);
- columnWidth.erase(columnWidth.size() - 1, 1);
- columnVisibility.erase(columnVisibility.size() - 1, 1);
-
- WSET(name + "-order", columnOrder);
- WSET(name + "-width", columnWidth);
- WSET(name + "-visibility", columnVisibility);
+ WSET(name + "-order", columnOrder.str());
+ WSET(name + "-width", columnWidth.str());
+ WSET(name + "-visibility", columnVisibility.str());
}
}
=== modified file 'linux/treeview.hh'
--- linux/treeview.hh 2010-01-01 00:57:24 +0000
+++ linux/treeview.hh 2011-01-25 05:11:20 +0000
@@ -23,7 +23,6 @@
#define WULFOR_TREE_VIEW_HH
#include <gtk/gtk.h>
-#include <cassert>
#include <map>
#include <string>
@@ -67,7 +66,7 @@
if (m == NULL)
m = gtk_tree_view_get_model(view);
T value;
- assert(gtk_tree_model_get_column_type(m, col(column)) != G_TYPE_STRING);
+ g_assert(gtk_tree_model_get_column_type(m, col(column)) != G_TYPE_STRING);
gtk_tree_model_get(m, i, col(column), &value, -1);
return value;
}
@@ -101,6 +100,7 @@
};
void addColumn_gui(Column& column);
+ void addCheckMenuItem(GtkTreeViewColumn *col);
void restoreSettings();
static gboolean popupMenu_gui(GtkWidget *widget, GdkEventButton *event, gpointer data);
static void toggleColumnVisibility(GtkMenuItem *item, gpointer data);
@@ -115,7 +115,6 @@
int visibleColumns;
GtkMenu *menu;
GType *gtypes;
- std::map<std::string, GtkWidget*> colMenuItems;
typedef std::map<std::string, Column> ColMap;
typedef std::map<int, std::string> SortedColMap;
=== modified file 'linux/wulfor.cc'
--- linux/wulfor.cc 2010-03-23 01:35:22 +0000
+++ linux/wulfor.cc 2011-01-25 05:11:20 +0000
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
#include <glade/glade.h>
-#include <glib/gi18n.h>
+#include "IntlUtil.hh"
#include <dcpp/stdinc.h>
#include <dcpp/DCPlusPlus.h>
@@ -44,25 +44,19 @@
CommandlineArgs() : show(FALSE), refresh(FALSE), version(FALSE), existing(FALSE) { }
};
-
-void callBack(void* x, const std::string& a)
-{
- std::cout << "Loading: " << a << std::endl;
-}
-
void printVersionInfo()
{
- std::cout << "Version information: " << std::endl;
- std::cout << "\t" << APPNAME << " version: " << LINUXDCPP_VERSION_STRING << std::endl;
- std::cout << "\t" << "DC++ Core version: " << VERSIONSTRING << std::endl;
- std::cout << "\t" << "GLIB header version: " << GLIB_MAJOR_VERSION << "." <<
- GLIB_MINOR_VERSION << "." << GLIB_MICRO_VERSION << std::endl;
- std::cout << "\t" << "GLIB version: " << glib_major_version << "."
- << glib_minor_version << "." << glib_micro_version << std::endl;
- std::cout << "\t" << "GTK header version: " << GTK_MAJOR_VERSION << "."
- << GTK_MINOR_VERSION << "." << GTK_MICRO_VERSION << std::endl;
- std::cout << "\t" << "GTK version: " << gtk_major_version << "."
- << gtk_minor_version << "." << gtk_micro_version << std::endl;
+ // TRANSLATORS: Application version printed on the command line.
+ std::cout << F_("%1% version: %2%", % APPNAME % LINUXDCPP_VERSION_STRING) << std::endl;
+
+ // TRANSLATORS: DC++ core library version printed on the command line.
+ std::cout << F_("DC++ library version: %1%", % VERSIONSTRING) << std::endl;
+
+ // TRANSLATORS: GTK+ version in major.minor.micro format printed on the command line.
+ std::cout << F_("GTK+ version: %1%.%2%.%3%", % gtk_major_version % gtk_minor_version % gtk_micro_version) << std::endl;
+
+ // TRANSLATORS: GLib version in major.minor.micro format printed on the command line.
+ std::cout << F_("GLib version: %1%.%2%.%3%", % glib_major_version % glib_minor_version % glib_micro_version) << std::endl;
}
void parseExtraArguments(int argc, char* argv[], CommandlineArgs* args)
@@ -84,7 +78,7 @@
GOptionEntry entries[] = {
{ "connect", 'c', 0, G_OPTION_ARG_STRING_ARRAY, &address, N_("Connect to the given hub"), N_("URI") },
- { "existing", 'e', 0, G_OPTION_ARG_NONE, &existing, N_("Direct commands to an already running instance"), NULL },
+ { "existing", 'e', 0, G_OPTION_ARG_NONE, &existing, N_("Send commands to the existing instance (if applicable)"), NULL },
{ "magnet", 'm', 0, G_OPTION_ARG_STRING_ARRAY, &magnet, N_("Search for the given magnet link"), N_("URI") },
{ "refresh", 'r', 0, G_OPTION_ARG_NONE, &refresh, N_("Initiate filelist refresh"), NULL },
{ "show", 's', 0, G_OPTION_ARG_NONE, &show, N_("Show the running instance (default action)"), NULL },
@@ -102,7 +96,7 @@
if (!g_option_context_parse(context, argc, argv, &error))
{
- g_print(_("Option parsing failed: %s\n"), error->message);
+ std::cerr << F_("Option parsing failed: %1%", % error->message) << std::endl;
return FALSE;
}
else
@@ -166,11 +160,13 @@
int main(int argc, char *argv[])
{
CommandlineArgs args;
- // Initialize i18n support
- bindtextdomain("linuxdcpp", _DATADIR "/locale");
- textdomain("linuxdcpp");
- bind_textdomain_codeset("linuxdcpp", "UTF-8");
-
+
+ dcpp::Util::PathsMap pathsMap;
+ pathsMap[dcpp::Util::PATH_RESOURCES] = _DATADIR;
+ pathsMap[dcpp::Util::PATH_LOCALE] = _DATADIR "/locale";
+ dcpp::Util::initialize(pathsMap);
+
+ IntlUtil::initialize();
if (!parseArguments(&argc, &argv, &args))
{
@@ -190,7 +186,7 @@
if (retval < 0)
{
- std::cout << _("Failed to communicate with existing instance: ") << dcpp::Util::translateError(retval) << std::endl;
+ std::cerr << F_("Failed to communicate with existing instance: %1%", % dcpp::Util::translateError(retval)) << std::endl;
return -1;
}
@@ -212,14 +208,12 @@
if (args.existing) // If we're still here and --existing was given, bail out since no running instance was found
{
- std::cout << _("No running instance found") << std::endl;
+ std::cerr << _("No running instance found") << std::endl;
return 0;
}
- printVersionInfo();
-
// Start the DC++ client core
- dcpp::startup(callBack, NULL);
+ dcpp::startup(NULL, NULL);
dcpp::TimerManager::getInstance()->start();
@@ -239,7 +233,6 @@
WulforManager::stop();
WulforSettingsManager::deleteInstance();
- std::cout << "Shutting down..." << std::endl;
dcpp::shutdown();
return 0;
=== modified file 'linux/wulformanager.cc'
--- linux/wulformanager.cc 2010-02-02 04:01:05 +0000
+++ linux/wulformanager.cc 2011-01-25 05:11:20 +0000
@@ -23,7 +23,6 @@
#include <iostream>
#include <gdk/gdkx.h>
-#include <glib/gi18n.h>
#include "hashdialog.hh"
#include "settingsdialog.hh"
Follow ups