diff options
Diffstat (limited to '')
-rw-r--r-- | svtools/inc/FltCallDialogParameter.hxx | 46 | ||||
-rw-r--r-- | svtools/inc/bitmaps.hlst | 128 | ||||
-rw-r--r-- | svtools/inc/borderline.hrc | 40 | ||||
-rw-r--r-- | svtools/inc/errtxt.hrc | 158 | ||||
-rw-r--r-- | svtools/inc/framestatuslistener.hxx | 91 | ||||
-rw-r--r-- | svtools/inc/langtab.hrc | 445 | ||||
-rw-r--r-- | svtools/inc/mousefunction.hxx | 133 | ||||
-rw-r--r-- | svtools/inc/pch/precompiled_svt.cxx | 12 | ||||
-rw-r--r-- | svtools/inc/pch/precompiled_svt.hxx | 327 | ||||
-rw-r--r-- | svtools/inc/strings.hxx | 27 | ||||
-rw-r--r-- | svtools/inc/table/defaultinputhandler.hxx | 58 | ||||
-rw-r--r-- | svtools/inc/table/gridtablerenderer.hxx | 116 | ||||
-rw-r--r-- | svtools/inc/table/tablecontrol.hxx | 173 | ||||
-rw-r--r-- | svtools/inc/table/tablecontrolinterface.hxx | 237 | ||||
-rw-r--r-- | svtools/inc/table/tableinputhandler.hxx | 63 | ||||
-rw-r--r-- | svtools/inc/table/tablemodel.hxx | 454 | ||||
-rw-r--r-- | svtools/inc/table/tablerenderer.hxx | 249 | ||||
-rw-r--r-- | svtools/inc/table/tablesort.hxx | 80 | ||||
-rw-r--r-- | svtools/inc/table/tabletypes.hxx | 52 | ||||
-rw-r--r-- | svtools/inc/uiobject.hxx | 38 |
20 files changed, 2927 insertions, 0 deletions
diff --git a/svtools/inc/FltCallDialogParameter.hxx b/svtools/inc/FltCallDialogParameter.hxx new file mode 100644 index 000000000..0a45e65d7 --- /dev/null +++ b/svtools/inc/FltCallDialogParameter.hxx @@ -0,0 +1,46 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <tools/fldunit.hxx> + +class FilterConfigItem; +class SvStream; +class Graphic; +namespace weld +{ +class Window; +} + +struct FltCallDialogParameter +{ + weld::Window* pWindow; + FieldUnit eFieldUnit; + OUString aFilterExt; + + // In and Out PropertySequence for all filter dialogs + css::uno::Sequence<css::beans::PropertyValue> aFilterData; + + FltCallDialogParameter(weld::Window* pW, FieldUnit eFiUni) + : pWindow(pW) + , eFieldUnit(eFiUni){}; +}; diff --git a/svtools/inc/bitmaps.hlst b/svtools/inc/bitmaps.hlst new file mode 100644 index 000000000..5aa57db63 --- /dev/null +++ b/svtools/inc/bitmaps.hlst @@ -0,0 +1,128 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +inline constexpr OUStringLiteral BMP_IMPRESS_SC = u"res/sx03123.png"; +inline constexpr OUStringLiteral BMP_BITMAP_SC = u"res/sx03125.png"; +inline constexpr OUStringLiteral BMP_CALC_SC = u"res/sx03126.png"; +inline constexpr OUStringLiteral BMP_CALCTEMPLATE_SC = u"res/sx03127.png"; +inline constexpr OUStringLiteral BMP_DATABASE_SC = u"res/sx03129.png"; +inline constexpr OUStringLiteral BMP_IMPRESSTEMPLATE_SC = u"res/sx03130.png"; +inline constexpr OUStringLiteral BMP_GIF_SC = u"res/sx03137.png"; +inline constexpr OUStringLiteral BMP_HTML_SC = u"res/sx03139.png"; +inline constexpr OUStringLiteral BMP_JPG_SC = u"res/sx03140.png"; +inline constexpr OUStringLiteral BMP_MATH_SC = u"res/sx03144.png"; +inline constexpr OUStringLiteral BMP_MATHTEMPLATE_SC = u"res/sx03145.png"; +inline constexpr OUStringLiteral BMP_FILE_SC = u"res/sx03150.png"; +inline constexpr OUStringLiteral BMP_PCD_SC = u"res/sx03152.png"; +inline constexpr OUStringLiteral BMP_PCT_SC = u"res/sx03153.png"; +inline constexpr OUStringLiteral BMP_PCX_SC = u"res/sx03154.png"; +inline constexpr OUStringLiteral BMP_SIM_SC = u"res/sx03155.png"; +inline constexpr OUStringLiteral BMP_TEXTFILE_SC = u"res/sx03156.png"; +inline constexpr OUStringLiteral BMP_TIFF_SC = u"res/sx03158.png"; +inline constexpr OUStringLiteral BMP_WMF_SC = u"res/sx03160.png"; +inline constexpr OUStringLiteral BMP_WRITER_SC = u"res/sx03162.png"; +inline constexpr OUStringLiteral BMP_WRITERTEMPLATE_SC = u"res/sx03163.png"; +inline constexpr OUStringLiteral BMP_FIXEDDEV_SC = u"res/sx03164.png"; +inline constexpr OUStringLiteral BMP_REMOVABLEDEV_SC = u"res/sx03165.png"; +inline constexpr OUStringLiteral BMP_CDROMDEV_SC = u"res/sx03166.png"; +inline constexpr OUStringLiteral BMP_NETWORKDEV_SC = u"res/sx03167.png"; +inline constexpr OUStringLiteral BMP_TABLE_SC = u"res/sx03188.png"; +inline constexpr OUStringLiteral BMP_DXF_SC = u"res/sx03217.png"; +inline constexpr OUStringLiteral BMP_MET_SC = u"res/sx03218.png"; +inline constexpr OUStringLiteral BMP_PNG_SC = u"res/sx03219.png"; +inline constexpr OUStringLiteral BMP_SVM_SC = u"res/sx03222.png"; +inline constexpr OUStringLiteral BMP_WEBP_SC = u"res/sx03223.png"; +inline constexpr OUStringLiteral BMP_GLOBAL_DOC_SC = u"res/sx03226.png"; +inline constexpr OUStringLiteral BMP_DRAW_SC = u"res/sx03227.png"; +inline constexpr OUStringLiteral BMP_DRAWTEMPLATE_SC = u"res/sx03228.png"; +inline constexpr OUStringLiteral BMP_OO_DATABASE_DOC_SC = u"res/sx03245.png"; +inline constexpr OUStringLiteral BMP_OO_DRAW_DOC_SC = u"res/sx03246.png"; +inline constexpr OUStringLiteral BMP_OO_MATH_DOC_SC = u"res/sx03247.png"; +inline constexpr OUStringLiteral BMP_OO_GLOBAL_DOC_SC = u"res/sx03248.png"; +inline constexpr OUStringLiteral BMP_OO_IMPRESS_DOC_SC = u"res/sx03249.png"; +inline constexpr OUStringLiteral BMP_OO_CALC_DOC_SC = u"res/sx03250.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_DOC_SC = u"res/sx03251.png"; +inline constexpr OUStringLiteral BMP_OO_DRAW_TEMPLATE_SC = u"res/sx03252.png"; +inline constexpr OUStringLiteral BMP_OO_IMPRESS_TEMPLATE_SC = u"res/sx03253.png"; +inline constexpr OUStringLiteral BMP_OO_CALC_TEMPLATE_SC = u"res/sx03254.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_TEMPLATE_SC = u"res/sx03255.png"; +inline constexpr OUStringLiteral BMP_EXTENSION_SC = u"res/sx03256.png"; +inline constexpr OUStringLiteral BMP_IMPRESS_LC = u"res/lx03123.png"; +inline constexpr OUStringLiteral BMP_BITMAP_LC = u"res/lx03125.png"; +inline constexpr OUStringLiteral BMP_CALC_LC = u"res/lx03126.png"; +inline constexpr OUStringLiteral BMP_CALCTEMPLATE_LC = u"res/lx03127.png"; +inline constexpr OUStringLiteral BMP_DATABASE_LC = u"res/lx03129.png"; +inline constexpr OUStringLiteral BMP_IMPRESSTEMPLATE_LC = u"res/lx03130.png"; +inline constexpr OUStringLiteral BMP_GIF_LC = u"res/lx03137.png"; +inline constexpr OUStringLiteral BMP_HTML_LC = u"res/lx03139.png"; +inline constexpr OUStringLiteral BMP_JPG_LC = u"res/lx03140.png"; +inline constexpr OUStringLiteral BMP_MATH_LC = u"res/lx03144.png"; +inline constexpr OUStringLiteral BMP_MATHTEMPLATE_LC = u"res/lx03145.png"; +inline constexpr OUStringLiteral BMP_FILE_LC = u"res/lx03150.png"; +inline constexpr OUStringLiteral BMP_PCD_LC = u"res/lx03152.png"; +inline constexpr OUStringLiteral BMP_PCT_LC = u"res/lx03153.png"; +inline constexpr OUStringLiteral BMP_PCX_LC = u"res/lx03154.png"; +inline constexpr OUStringLiteral BMP_SIM_LC = u"res/lx03155.png"; +inline constexpr OUStringLiteral BMP_TEXTFILE_LC = u"res/lx03156.png"; +inline constexpr OUStringLiteral BMP_TIFF_LC = u"res/lx03158.png"; +inline constexpr OUStringLiteral BMP_WMF_LC = u"res/lx03160.png"; +inline constexpr OUStringLiteral BMP_WRITER_LC = u"res/lx03162.png"; +inline constexpr OUStringLiteral BMP_WRITERTEMPLATE_LC = u"res/lx03163.png"; +inline constexpr OUStringLiteral BMP_FIXEDDEV_LC = u"res/lx03164.png"; +inline constexpr OUStringLiteral BMP_REMOVABLEDEV_LC = u"res/lx03165.png"; +inline constexpr OUStringLiteral BMP_CDROMDEV_LC = u"res/lx03166.png"; +inline constexpr OUStringLiteral BMP_NETWORKDEV_LC = u"res/lx03167.png"; +inline constexpr OUStringLiteral BMP_TABLE_LC = u"res/lx03188.png"; +inline constexpr OUStringLiteral BMP_FOLDER_LC = u"res/lx03189.png"; +inline constexpr OUStringLiteral BMP_DXF_LC = u"res/lx03217.png"; +inline constexpr OUStringLiteral BMP_MET_LC = u"res/lx03218.png"; +inline constexpr OUStringLiteral BMP_PNG_LC = u"res/lx03219.png"; +inline constexpr OUStringLiteral BMP_SVM_LC = u"res/lx03222.png"; +inline constexpr OUStringLiteral BMP_WEBP_LC = u"res/lx03223.png"; +inline constexpr OUStringLiteral BMP_GLOBAL_DOC_LC = u"res/lx03226.png"; +inline constexpr OUStringLiteral BMP_DRAW_LC = u"res/lx03227.png"; +inline constexpr OUStringLiteral BMP_DRAWTEMPLATE_LC = u"res/lx03228.png"; +inline constexpr OUStringLiteral BMP_OO_DATABASE_DOC_LC = u"res/lx03245.png"; +inline constexpr OUStringLiteral BMP_OO_DRAW_DOC_LC = u"res/lx03246.png"; +inline constexpr OUStringLiteral BMP_OO_MATH_DOC_LC = u"res/lx03247.png"; +inline constexpr OUStringLiteral BMP_OO_GLOBAL_DOC_LC = u"res/lx03248.png"; +inline constexpr OUStringLiteral BMP_OO_IMPRESS_DOC_LC = u"res/lx03249.png"; +inline constexpr OUStringLiteral BMP_OO_CALC_DOC_LC = u"res/lx03250.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_DOC_LC = u"res/lx03251.png"; +inline constexpr OUStringLiteral BMP_OO_DRAW_TEMPLATE_LC = u"res/lx03252.png"; +inline constexpr OUStringLiteral BMP_OO_IMPRESS_TEMPLATE_LC = u"res/lx03253.png"; +inline constexpr OUStringLiteral BMP_OO_CALC_TEMPLATE_LC = u"res/lx03254.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_TEMPLATE_LC = u"res/lx03255.png"; +inline constexpr OUStringLiteral BMP_EXTENSION_LC = u"res/lx03256.png"; +inline constexpr OUStringLiteral BMP_HTML_32 = u"res/lx03139_32.png"; +inline constexpr OUStringLiteral BMP_OO_DATABASE_DOC_32 = u"res/lx03245_32.png"; +inline constexpr OUStringLiteral BMP_OO_DRAW_DOC_32 = u"res/lx03246_32.png"; +inline constexpr OUStringLiteral BMP_OO_MATH_DOC_32 = u"res/lx03247_32.png"; +inline constexpr OUStringLiteral BMP_OO_GLOBAL_DOC_32 = u"res/lx03248_32.png"; +inline constexpr OUStringLiteral BMP_OO_IMPRESS_DOC_32 = u"res/lx03249_32.png"; +inline constexpr OUStringLiteral BMP_OO_CALC_DOC_32 = u"res/lx03250_32.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_DOC_32 = u"res/lx03251_32.png"; +inline constexpr OUStringLiteral BMP_OO_WRITER_TEMPLATE_32 = u"res/lx03255_32.png"; +inline constexpr OUStringLiteral BMP_PLUGIN = u"res/plugin.png"; +inline constexpr OUStringLiteral RID_BMP_FOLDER = u"svtools/res/folder.png"; +inline constexpr OUStringLiteral BMP_CURRENT = u"svtools/res/ed01.png"; +inline constexpr OUStringLiteral BMP_MODIFIED = u"svtools/res/ed02.png"; +inline constexpr OUStringLiteral BMP_NEW = u"svtools/res/ed03.png"; +inline constexpr OUStringLiteral BMP_DELETED = u"svtools/res/ed04.png"; +inline constexpr OUStringLiteral BMP_CURRENTNEW = u"svtools/res/ed05.png"; +inline constexpr OUStringLiteral BMP_PRIMARYKEY = u"svtools/res/ed06.png"; +inline constexpr OUStringLiteral BMP_CURRENT_PRIMARYKEY = u"svtools/res/ed07.png"; +inline constexpr OUStringLiteral BMP_FILTER = u"svtools/res/ed08.png"; +inline constexpr OUStringLiteral BMP_HEADERFOOTER = u"svtools/res/ed09.png"; + +inline constexpr OUStringLiteral BMP_TAB_LOCK = u"cmd/sc_lock.png"; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/svtools/inc/borderline.hrc b/svtools/inc/borderline.hrc new file mode 100644 index 000000000..cfa4b22b1 --- /dev/null +++ b/svtools/inc/borderline.hrc @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +#pragma once + +#include <editeng/borderline.hxx> +#include <unotools/resmgr.hxx> + +#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String)) + +const std::pair<TranslateId, SvxBorderLineStyle> RID_SVXSTR_BORDERLINE[] = +{ + { NC_("RID_SVXSTR_BORDERLINE", "None"), SvxBorderLineStyle::NONE }, + { NC_("RID_SVXSTR_BORDERLINE", "Solid"), SvxBorderLineStyle::SOLID }, + { NC_("RID_SVXSTR_BORDERLINE", "Dotted"), SvxBorderLineStyle::DOTTED }, + { NC_("RID_SVXSTR_BORDERLINE", "Dashed"), SvxBorderLineStyle::DASHED }, + { NC_("RID_SVXSTR_BORDERLINE", "Double"), SvxBorderLineStyle::DOUBLE }, + { NC_("RID_SVXSTR_BORDERLINE", "Thin Thick, Small Gap"), SvxBorderLineStyle::THINTHICK_SMALLGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Thin Thick, Medium Gap"), SvxBorderLineStyle::THINTHICK_MEDIUMGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Thin Thick, Large Gap"), SvxBorderLineStyle::THINTHICK_LARGEGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Thick Thin, Small Gap"), SvxBorderLineStyle::THICKTHIN_SMALLGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Thick Thin, Medium Gap"), SvxBorderLineStyle::THICKTHIN_MEDIUMGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Thick Thin, Large Gap"), SvxBorderLineStyle::THICKTHIN_LARGEGAP }, + { NC_("RID_SVXSTR_BORDERLINE", "Embossed"), SvxBorderLineStyle::EMBOSSED }, + { NC_("RID_SVXSTR_BORDERLINE", "Engraved"), SvxBorderLineStyle::ENGRAVED }, + { NC_("RID_SVXSTR_BORDERLINE", "Outset"), SvxBorderLineStyle::OUTSET }, + { NC_("RID_SVXSTR_BORDERLINE", "Inset"), SvxBorderLineStyle::INSET }, + { NC_("RID_SVXSTR_BORDERLINE", "Fine Dashed"), SvxBorderLineStyle::FINE_DASHED }, + { NC_("RID_SVXSTR_BORDERLINE", "Double Thin"), SvxBorderLineStyle::DOUBLE_THIN }, + { NC_("RID_SVXSTR_BORDERLINE", "Dash Dot"), SvxBorderLineStyle::DASH_DOT }, + { NC_("RID_SVXSTR_BORDERLINE", "Dash Dot Dot"), SvxBorderLineStyle::DASH_DOT_DOT } +}; + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/errtxt.hrc b/svtools/inc/errtxt.hrc new file mode 100644 index 000000000..639b7e49a --- /dev/null +++ b/svtools/inc/errtxt.hrc @@ -0,0 +1,158 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <svtools/sfxecode.hxx> +#include <svtools/soerr.hxx> + +#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String)) + +const ErrMsgCode RID_ERRCTX[] = +{ + { NC_("RID_ERRCTX", "Error") , ErrCode(ERRCTX_ERROR) }, + { NC_("RID_ERRCTX", "Warning") , ErrCode(ERRCTX_WARNING) }, + { NC_("RID_ERRCTX", "$(ERR) loading the template $(ARG1)") , ErrCode(ERRCTX_SFX_LOADTEMPLATE) }, + { NC_("RID_ERRCTX", "$(ERR) saving the document $(ARG1)"), ErrCode(ERRCTX_SFX_SAVEDOC) }, + { NC_("RID_ERRCTX", "$(ERR) saving the document $(ARG1)"), ErrCode(ERRCTX_SFX_SAVEASDOC) }, + { NC_("RID_ERRCTX", "$(ERR) displaying doc. information for document $(ARG1)") , ErrCode(ERRCTX_SFX_DOCINFO) }, + { NC_("RID_ERRCTX", "$(ERR) writing document $(ARG1) as template") , ErrCode(ERRCTX_SFX_DOCTEMPLATE) }, + { NC_("RID_ERRCTX", "$(ERR) copying or moving document contents") , ErrCode(ERRCTX_SFX_MOVEORCOPYCONTENTS) }, + { NC_("RID_ERRCTX", "$(ERR) starting the Document Manager") , ErrCode(ERRCTX_SFX_DOCMANAGER) }, + { NC_("RID_ERRCTX", "$(ERR) loading document $(ARG1)") , ErrCode(ERRCTX_SFX_OPENDOC) }, + { NC_("RID_ERRCTX", "$(ERR) creating a new document") , ErrCode(ERRCTX_SFX_NEWDOCDIRECT) }, + { NC_("RID_ERRCTX", "$(ERR) creating a new document") , ErrCode(ERRCTX_SFX_NEWDOC) }, + { NC_("RID_ERRCTX", "$(ERR) expanding entry") , ErrCode(ERRCTX_SFX_CREATEOBJSH) }, + { NC_("RID_ERRCTX", "$(ERR) loading BASIC of document $(ARG1)") , ErrCode(ERRCTX_SFX_LOADBASIC) }, + { NC_("RID_ERRCTX", "$(ERR) searching for an address"), ErrCode(ERRCTX_SFX_SEARCHADDRESS) }, + { {}, ERRCODE_NONE } +}; + +const std::pair<TranslateId, ErrCodeClass> RID_ERRHDL_CLASS[] = +{ + { NC_("RID_ERRHDL", "Abort") , ErrCodeClass::Abort }, + { NC_("RID_ERRHDL", "Nonexistent object") , ErrCodeClass::NotExists }, + { NC_("RID_ERRHDL", "Object already exists") , ErrCodeClass::AlreadyExists }, + { NC_("RID_ERRHDL", "Object not accessible") , ErrCodeClass::Access }, + { NC_("RID_ERRHDL", "Inadmissible path") , ErrCodeClass::Path }, + { NC_("RID_ERRHDL", "Locking problem") , ErrCodeClass::Locking }, + { NC_("RID_ERRHDL", "Wrong parameter") , ErrCodeClass::Parameter }, + { NC_("RID_ERRHDL", "Resource exhausted") , ErrCodeClass::Space }, + { NC_("RID_ERRHDL", "Action not supported") , ErrCodeClass::NotSupported }, + { NC_("RID_ERRHDL", "Read Error") , ErrCodeClass::Read }, + { NC_("RID_ERRHDL", "Write Error") , ErrCodeClass::Write }, + { NC_("RID_ERRHDL", "unknown") , ErrCodeClass::Unknown }, + { NC_("RID_ERRHDL", "Version Incompatibility") , ErrCodeClass::Version }, + { NC_("RID_ERRHDL", "General Error") , ErrCodeClass::General }, + { NC_("RID_ERRHDL", "Incorrect format") , ErrCodeClass::Format }, + { NC_("RID_ERRHDL", "Error creating object") , ErrCodeClass::Create }, + { NC_("RID_ERRHDL", "Inadmissible value or data type") , ErrCodeClass::Sbx }, + { NC_("RID_ERRHDL", "BASIC runtime error") , ErrCodeClass::Runtime }, + { NC_("RID_ERRHDL", "BASIC syntax error") , ErrCodeClass::Compiler }, + { {}, ErrCodeClass::NONE } +}; + +const ErrMsgCode RID_ERRHDL[] = +{ + { NC_("RID_ERRHDL", "General Error") , ErrCode(1) }, + { NC_("RID_ERRHDL", "General input/output error.") , ERRCODE_IO_GENERAL }, + { NC_("RID_ERRHDL", "Invalid file name.") , ERRCODE_IO_MISPLACEDCHAR }, + { NC_("RID_ERRHDL", "Nonexistent file.") , ERRCODE_IO_NOTEXISTS }, + { NC_("RID_ERRHDL", "File already exists.") , ERRCODE_IO_ALREADYEXISTS }, + { NC_("RID_ERRHDL", "The object is not a directory.") , ERRCODE_IO_NOTADIRECTORY }, + { NC_("RID_ERRHDL", "The object is not a file.") , ERRCODE_IO_NOTAFILE }, + { NC_("RID_ERRHDL", "The specified device is invalid.") , ERRCODE_IO_INVALIDDEVICE }, + { NC_("RID_ERRHDL", "The object cannot be accessed\ndue to insufficient user rights.") , ERRCODE_IO_ACCESSDENIED }, + { NC_("RID_ERRHDL", "Sharing violation while accessing the object.") , ERRCODE_IO_LOCKVIOLATION }, + { NC_("RID_ERRHDL", "No more space on device.") , ERRCODE_IO_OUTOFSPACE }, + { NC_("RID_ERRHDL", "This operation cannot be run on\nfiles containing wildcards.") , ERRCODE_IO_ISWILDCARD }, + { NC_("RID_ERRHDL", "This operation is not supported on this operating system.") , ERRCODE_IO_NOTSUPPORTED }, + { NC_("RID_ERRHDL", "There are too many files open.") , ERRCODE_IO_TOOMANYOPENFILES }, + { NC_("RID_ERRHDL", "Data could not be read from the file.") , ERRCODE_IO_CANTREAD }, + { NC_("RID_ERRHDL", "The file could not be written.") , ERRCODE_IO_CANTWRITE }, + { NC_("RID_ERRHDL", "The operation could not be run due to insufficient memory.") , ERRCODE_IO_OUTOFMEMORY }, + { NC_("RID_ERRHDL", "The seek operation could not be run.") , ERRCODE_IO_CANTSEEK }, + { NC_("RID_ERRHDL", "The tell operation could not be run.") , ERRCODE_IO_CANTTELL }, + { NC_("RID_ERRHDL", "Incorrect file version.") , ERRCODE_IO_WRONGVERSION }, + { NC_("RID_ERRHDL", "Incorrect file format.") , ERRCODE_IO_WRONGFORMAT }, + { NC_("RID_ERRHDL", "The file name contains invalid characters.") , ERRCODE_IO_INVALIDCHAR }, + { NC_("RID_ERRHDL", "An unknown I/O error has occurred.") , ERRCODE_IO_UNKNOWN }, + { NC_("RID_ERRHDL", "An invalid attempt was made to access the file.") , ERRCODE_IO_INVALIDACCESS }, + { NC_("RID_ERRHDL", "The file could not be created.") , ERRCODE_IO_CANTCREATE }, + { NC_("RID_ERRHDL", "The operation was started under an invalid parameter.") , ERRCODE_IO_INVALIDPARAMETER }, + { NC_("RID_ERRHDL", "The operation on the file was aborted.") , ERRCODE_IO_ABORT }, + { NC_("RID_ERRHDL", "Path to the file does not exist.") , ERRCODE_IO_NOTEXISTSPATH }, + { NC_("RID_ERRHDL", "An object cannot be copied into itself.") , ERRCODE_IO_RECURSIVE }, + { NC_("RID_ERRHDL", "The specified template could not be found.") , ERRCODE_SFX_TEMPLATENOTFOUND }, + { NC_("RID_ERRHDL", "The file cannot be used as template.") , ERRCODE_SFX_NOTATEMPLATE }, + { NC_("RID_ERRHDL", "This document has already been opened for editing.") , ERRCODE_SFX_ALREADYOPEN }, + { NC_("RID_ERRHDL", "The wrong password has been entered.") , ERRCODE_SFX_WRONGPASSWORD }, + { NC_("RID_ERRHDL", "Error reading file.") , ERRCODE_SFX_DOLOADFAILED }, + { NC_("RID_ERRHDL", "Document opened as read-only cannot be saved over itself.") , ERRCODE_SFX_DOCUMENTREADONLY }, + { NC_("RID_ERRHDL", "General OLE Error.") , ERRCODE_SFX_OLEGENERAL }, + { NC_("RID_ERRHDL", "The host name $(ARG1) could not be resolved.") , ERRCODE_INET_NAME_RESOLVE }, + { NC_("RID_ERRHDL", "Could not establish Internet connection to $(ARG1).") , ERRCODE_INET_CONNECT }, + { NC_("RID_ERRHDL", "Error reading data from the Internet.\nServer error message: $(ARG1).") , ERRCODE_INET_READ }, + { NC_("RID_ERRHDL", "Error transferring data to the Internet.\nServer error message: $(ARG1).") , ERRCODE_INET_WRITE }, + { NC_("RID_ERRHDL", "General Internet error has occurred.") , ERRCODE_INET_GENERAL }, + { NC_("RID_ERRHDL", "The requested Internet data is not available in the cache and cannot be transmitted as the Online mode has not be activated.") , ERRCODE_INET_OFFLINE }, + { NC_("RID_ERRHDL", "The contents could not be created.") , ERRCODE_SFX_CANTCREATECONTENT }, + { NC_("RID_ERRHDL", "The file name is too long for the target file system.") , ERRCODE_IO_NAMETOOLONG }, + { NC_("RID_ERRHDL", "The input syntax is invalid.") , ERRCODE_SFX_INVALIDSYNTAX }, + { NC_("RID_ERRHDL", "This document contains attributes that cannot be saved in the selected format.\nPlease save the document in a %PRODUCTNAME %PRODUCTVERSION file format."), ERRCODE_IO_NOTSTORABLEINBINARYFORMAT }, + { NC_("RID_ERRHDL", "The maximum number of documents that can be opened at the same time has been reached. You need to close one or more documents before you can open a new document."), ERRCODE_SFX_NOMOREDOCUMENTSALLOWED }, + { NC_("RID_ERRHDL", "Could not create backup copy.") , ERRCODE_SFX_CANTCREATEBACKUP }, + { NC_("RID_ERRHDL", "An attempt was made to execute a macro.\nFor security reasons, macro support is disabled."), ERRCODE_SFX_MACROS_SUPPORT_DISABLED }, + { NC_("RID_ERRHDL", "Execution of macros is disabled. Macros are signed, but the document (containing document events) is not signed."), ERRCODE_SFX_DOCUMENT_MACRO_DISABLED_CONTENT_UNSIGNED }, + { NC_("RID_ERRHDL", "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in %PRODUCTNAME - Preferences - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available.") , ERRCODE_SFX_DOCUMENT_MACRO_DISABLED_MAC }, + { NC_("RID_ERRHDL", "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in Tools - Options - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available.") , ERRCODE_SFX_DOCUMENT_MACRO_DISABLED }, + { NC_("RID_ERRHDL", "The encrypted document contains unexpected non-encrypted streams.\n\nThis could be the result of document manipulation.\n\nWe recommend that you do not trust the content of the current document.\nExecution of macros is disabled for this document.\n ") , ERRCODE_SFX_INCOMPLETE_ENCRYPTION }, + { NC_("RID_ERRHDL", "Invalid data length.") , ERRCODE_IO_INVALIDLENGTH }, + { NC_("RID_ERRHDL", "Function not possible: path contains current directory.") , ERRCODE_IO_CURRENTDIR }, + { NC_("RID_ERRHDL", "Function not possible: device (drive) not identical.") , ERRCODE_IO_NOTSAMEDEVICE }, + { NC_("RID_ERRHDL", "Device (drive) not ready.") , ERRCODE_IO_DEVICENOTREADY }, + { NC_("RID_ERRHDL", "Wrong checksum.") , ERRCODE_IO_BADCRC }, + { NC_("RID_ERRHDL", "Function not possible: write protected.") , ERRCODE_IO_WRITEPROTECTED }, + { NC_("RID_ERRHDL", "The password of a shared spreadsheet cannot be set or changed.\nDeactivate sharing mode first."), ERRCODE_SFX_SHARED_NOPASSWORDCHANGE }, + { NC_("RID_ERRHDL", "File format error found at $(ARG1)(row,col)."), ERRCODE_SFX_FORMAT_ROWCOL }, + { NC_("RID_ERRHDL", "The filter for this file format is disabled in configuration. Please contact your systems administrator."), ERRCODE_IO_FILTERDISABLED }, + { {}, ERRCODE_NONE } +}; + +const ErrMsgCode RID_SO_ERROR_HANDLER[] = +{ + { NC_("RID_ERRHDL", "General OLE error."), + ERRCODE_SO_GENERALERROR }, + { NC_("RID_ERRHDL", "The action cannot be executed in the object's current state."), + ERRCODE_SO_CANNOT_DOVERB_NOW }, + { NC_("RID_ERRHDL", "The object does not support any actions."), + ERRCODE_SO_NOVERBS }, + { NC_("RID_ERRHDL", "Object does not support this action."), + ERRCODE_SO_NOTIMPL }, + { {}, ERRCODE_NONE } +}; + +const ErrMsgCode RID_SO_ERRCTX[] = +{ + { NC_("RID_ERRHDL", "$(ERR) activating object") , ErrCode(ERRCTX_SO_DOVERB) }, + { {}, ERRCODE_NONE } +}; + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/framestatuslistener.hxx b/svtools/inc/framestatuslistener.hxx new file mode 100644 index 000000000..6b4920039 --- /dev/null +++ b/svtools/inc/framestatuslistener.hxx @@ -0,0 +1,91 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <com/sun/star/frame/XFrameActionListener.hpp> +#include <com/sun/star/frame/XStatusListener.hpp> +#include <cppuhelper/weak.hxx> +#include <cppuhelper/basemutex.hxx> + +#include <unordered_map> + +namespace com :: sun :: star :: frame { class XDispatch; } +namespace com :: sun :: star :: frame { class XFrame; } +namespace com :: sun :: star :: uno { class XComponentContext; } + +namespace svt +{ + +class FrameStatusListener : public css::frame::XStatusListener, + public css::frame::XFrameActionListener, + public css::lang::XComponent, + public ::cppu::BaseMutex, + public ::cppu::OWeakObject +{ + public: + FrameStatusListener( const css::uno::Reference< css::uno::XComponentContext >& rxContext, + const css::uno::Reference< css::frame::XFrame >& xFrame ); + virtual ~FrameStatusListener() override; + + // methods to support status forwarder, known by the old sfx2 toolbox controller implementation + void addStatusListener( const OUString& aCommandURL ); + void bindListener(); + + // XInterface + virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override; + virtual void SAL_CALL acquire() noexcept override; + virtual void SAL_CALL release() noexcept override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) override; + virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& aListener ) override; + + // XEventListener + virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; + + // XStatusListener + virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& Event ) override = 0; + + // XFrameActionListener + virtual void SAL_CALL frameAction( const css::frame::FrameActionEvent& Action ) override; + + protected: + struct Listener + { + Listener( const css::util::URL& rURL, const css::uno::Reference< css::frame::XDispatch >& rDispatch ) : + aURL( rURL ), xDispatch( rDispatch ) {} + + css::util::URL aURL; + css::uno::Reference< css::frame::XDispatch > xDispatch; + }; + + typedef std::unordered_map< OUString, + css::uno::Reference< css::frame::XDispatch > > URLToDispatchMap; + + bool m_bDisposed : 1; + css::uno::Reference< css::frame::XFrame > m_xFrame; + css::uno::Reference< css::uno::XComponentContext > m_xContext; + URLToDispatchMap m_aListenerMap; +}; + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/langtab.hrc b/svtools/inc/langtab.hrc new file mode 100644 index 000000000..cb2343735 --- /dev/null +++ b/svtools/inc/langtab.hrc @@ -0,0 +1,445 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <i18nlangtag/lang.h> +#include <unotools/resmgr.hxx> + +#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String)) + +const std::pair<TranslateId, LanguageType> STR_ARR_SVT_LANGUAGE_TABLE[] = +{ + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "[None]") , LANGUAGE_NONE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Unknown") , LANGUAGE_DONTKNOW }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Default") , LANGUAGE_SYSTEM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Default") , LANGUAGE_USER_SYSTEM_CONFIG }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Afrikaans (South Africa)") , LANGUAGE_AFRIKAANS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Albanian") , LANGUAGE_ALBANIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic") , LANGUAGE_ARABIC_PRIMARY_ONLY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Algeria)") , LANGUAGE_ARABIC_ALGERIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Bahrain)") , LANGUAGE_ARABIC_BAHRAIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Chad)") , LANGUAGE_USER_ARABIC_CHAD }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Comoros)") , LANGUAGE_USER_ARABIC_COMOROS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Djibouti)") , LANGUAGE_USER_ARABIC_DJIBOUTI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Egypt)") , LANGUAGE_ARABIC_EGYPT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Eritrea)") , LANGUAGE_USER_ARABIC_ERITREA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Iraq)") , LANGUAGE_ARABIC_IRAQ }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Israel)") , LANGUAGE_USER_ARABIC_ISRAEL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Jordan)") , LANGUAGE_ARABIC_JORDAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Kuwait)") , LANGUAGE_ARABIC_KUWAIT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Lebanon)") , LANGUAGE_ARABIC_LEBANON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Libya)") , LANGUAGE_ARABIC_LIBYA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Mauritania)") , LANGUAGE_USER_ARABIC_MAURITANIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Morocco)") , LANGUAGE_ARABIC_MOROCCO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Oman)") , LANGUAGE_ARABIC_OMAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Palestine)") , LANGUAGE_USER_ARABIC_PALESTINE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Qatar)") , LANGUAGE_ARABIC_QATAR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Saudi Arabia)") , LANGUAGE_ARABIC_SAUDI_ARABIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Somalia)") , LANGUAGE_USER_ARABIC_SOMALIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Sudan)") , LANGUAGE_USER_ARABIC_SUDAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Syria)") , LANGUAGE_ARABIC_SYRIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Tunisia)") , LANGUAGE_ARABIC_TUNISIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (UAE)") , LANGUAGE_ARABIC_UAE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arabic (Yemen)") , LANGUAGE_ARABIC_YEMEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Aragonese") , LANGUAGE_USER_ARAGONESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Armenian, Eastern (Armenia)") , LANGUAGE_ARMENIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Assamese") , LANGUAGE_ASSAMESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Azerbaijani Latin") , LANGUAGE_AZERI_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Azerbaijani Cyrillic") , LANGUAGE_AZERI_CYRILLIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Basque") , LANGUAGE_BASQUE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bengali (India)") , LANGUAGE_BENGALI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bulgarian") , LANGUAGE_BULGARIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Belarusian") , LANGUAGE_BELARUSIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Catalan") , LANGUAGE_CATALAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Catalan (Valencian)") , LANGUAGE_USER_CATALAN_VALENCIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chinese (traditional)") , LANGUAGE_CHINESE_TRADITIONAL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chinese (simplified)") , LANGUAGE_CHINESE_SIMPLIFIED }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chinese (Hong Kong)") , LANGUAGE_CHINESE_HONGKONG }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chinese (Singapore)") , LANGUAGE_CHINESE_SINGAPORE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chinese (Macau)") , LANGUAGE_CHINESE_MACAU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Church Slavic") , LANGUAGE_USER_CHURCH_SLAVIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Croatian") , LANGUAGE_CROATIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Czech") , LANGUAGE_CZECH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Danish") , LANGUAGE_DANISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dutch (Netherlands)") , LANGUAGE_DUTCH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dutch (Belgium)") , LANGUAGE_DUTCH_BELGIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (USA)") , LANGUAGE_ENGLISH_US }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (UK)") , LANGUAGE_ENGLISH_UK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English, OED spelling (UK)") , LANGUAGE_USER_ENGLISH_UK_OXENDICT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Australia)") , LANGUAGE_ENGLISH_AUS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Canada)") , LANGUAGE_ENGLISH_CAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (New Zealand)") , LANGUAGE_ENGLISH_NZ }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Ireland)") , LANGUAGE_ENGLISH_EIRE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (South Africa)") , LANGUAGE_ENGLISH_SAFRICA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Jamaica)") , LANGUAGE_ENGLISH_JAMAICA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Caribbean)") , LANGUAGE_ENGLISH_CARIBBEAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Belize)") , LANGUAGE_ENGLISH_BELIZE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Trinidad)") , LANGUAGE_ENGLISH_TRINIDAD }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Zimbabwe)") , LANGUAGE_ENGLISH_ZIMBABWE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Philippines)") , LANGUAGE_ENGLISH_PHILIPPINES }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (India)") , LANGUAGE_ENGLISH_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Estonian") , LANGUAGE_ESTONIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Finnish") , LANGUAGE_FINNISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Faroese") , LANGUAGE_FAEROESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Persian") , LANGUAGE_FARSI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (France)") , LANGUAGE_FRENCH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Belgium)") , LANGUAGE_FRENCH_BELGIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Canada)") , LANGUAGE_FRENCH_CANADIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Switzerland)") , LANGUAGE_FRENCH_SWISS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Luxembourg)") , LANGUAGE_FRENCH_LUXEMBOURG }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Monaco)") , LANGUAGE_FRENCH_MONACO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Gascon") , LANGUAGE_USER_GASCON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Germany)") , LANGUAGE_GERMAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Switzerland)") , LANGUAGE_GERMAN_SWISS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Austria)") , LANGUAGE_GERMAN_AUSTRIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Luxembourg)") , LANGUAGE_GERMAN_LUXEMBOURG }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Liechtenstein)") , LANGUAGE_GERMAN_LIECHTENSTEIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Greek") , LANGUAGE_GREEK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Gujarati") , LANGUAGE_GUJARATI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hebrew") , LANGUAGE_HEBREW }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hindi") , LANGUAGE_HINDI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hungarian") , LANGUAGE_HUNGARIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Icelandic") , LANGUAGE_ICELANDIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Indonesian") , LANGUAGE_INDONESIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Italian (Italy)") , LANGUAGE_ITALIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Italian (Switzerland)") , LANGUAGE_ITALIAN_SWISS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Japanese") , LANGUAGE_JAPANESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kannada") , LANGUAGE_KANNADA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kashmiri (Kashmir)") , LANGUAGE_KASHMIRI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kashmiri (India)") , LANGUAGE_KASHMIRI_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kazakh") , LANGUAGE_KAZAKH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Konkani") , LANGUAGE_KONKANI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Korean (RoK)") , LANGUAGE_KOREAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Latvian") , LANGUAGE_LATVIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lithuanian") , LANGUAGE_LITHUANIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Macedonian") , LANGUAGE_MACEDONIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malay (Malaysia)") , LANGUAGE_MALAY_MALAYSIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malay (Brunei Darussalam)") , LANGUAGE_MALAY_BRUNEI_DARUSSALAM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malayalam") , LANGUAGE_MALAYALAM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Manipuri") , LANGUAGE_MANIPURI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Marathi") , LANGUAGE_MARATHI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nepali (Nepal)") , LANGUAGE_NEPALI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nepali (India)") , LANGUAGE_NEPALI_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Norwegian, Bokmål") , LANGUAGE_NORWEGIAN_BOKMAL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Norwegian, Nynorsk") , LANGUAGE_NORWEGIAN_NYNORSK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Odia") , LANGUAGE_ODIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Polish") , LANGUAGE_POLISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Portuguese (Angola)") , LANGUAGE_USER_PORTUGUESE_ANGOLA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Portuguese (Portugal)") , LANGUAGE_PORTUGUESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Portuguese (Brazil)") , LANGUAGE_PORTUGUESE_BRAZILIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Punjabi") , LANGUAGE_PUNJABI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Rhaeto-Romance") , LANGUAGE_RHAETO_ROMAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Romanian (Romania)") , LANGUAGE_ROMANIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Romanian (Moldova)") , LANGUAGE_ROMANIAN_MOLDOVA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Russian") , LANGUAGE_RUSSIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sanskrit") , LANGUAGE_SANSKRIT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Cyrillic (Serbia and Montenegro)") , LANGUAGE_SERBIAN_CYRILLIC_SAM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Latin (Serbia and Montenegro)") , LANGUAGE_SERBIAN_LATIN_SAM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Cyrillic (Serbia)") , LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Latin (Serbia)") , LANGUAGE_USER_SERBIAN_LATIN_SERBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Cyrillic (Montenegro)") , LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Latin (Montenegro)") , LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Serbian Latin") , LANGUAGE_SERBIAN_LATIN_LSO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sidama") , LANGUAGE_USER_SIDAMA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sindhi, Devanagari") , LANGUAGE_SINDHI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sindhi, Arabic") , LANGUAGE_SINDHI_PAKISTAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Slovak") , LANGUAGE_SLOVAK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Slovenian") , LANGUAGE_SLOVENIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Spain)") , LANGUAGE_SPANISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Mexico)") , LANGUAGE_SPANISH_MEXICAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Guatemala)") , LANGUAGE_SPANISH_GUATEMALA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Costa Rica)") , LANGUAGE_SPANISH_COSTARICA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Panama)") , LANGUAGE_SPANISH_PANAMA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Dom. Rep.)") , LANGUAGE_SPANISH_DOMINICAN_REPUBLIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Venezuela)") , LANGUAGE_SPANISH_VENEZUELA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Colombia)") , LANGUAGE_SPANISH_COLOMBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Peru)") , LANGUAGE_SPANISH_PERU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Argentina)") , LANGUAGE_SPANISH_ARGENTINA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Ecuador)") , LANGUAGE_SPANISH_ECUADOR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Chile)") , LANGUAGE_SPANISH_CHILE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Uruguay)") , LANGUAGE_SPANISH_URUGUAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Paraguay)") , LANGUAGE_SPANISH_PARAGUAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Bolivia)") , LANGUAGE_SPANISH_BOLIVIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (El Salvador)") , LANGUAGE_SPANISH_EL_SALVADOR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Honduras)") , LANGUAGE_SPANISH_HONDURAS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Nicaragua)") , LANGUAGE_SPANISH_NICARAGUA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Puerto Rico)") , LANGUAGE_SPANISH_PUERTO_RICO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Swahili (Kenya)") , LANGUAGE_SWAHILI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Swedish (Sweden)") , LANGUAGE_SWEDISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Swedish (Finland)") , LANGUAGE_SWEDISH_FINLAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tajik") , LANGUAGE_TAJIK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tamil") , LANGUAGE_TAMIL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tatar") , LANGUAGE_TATAR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Telugu") , LANGUAGE_TELUGU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Thai") , LANGUAGE_THAI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Turkish") , LANGUAGE_TURKISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Urdu (Pakistan)") , LANGUAGE_URDU_PAKISTAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Urdu (India)") , LANGUAGE_URDU_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ukrainian") , LANGUAGE_UKRAINIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Uzbek Latin") , LANGUAGE_UZBEK_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Uzbek Cyrillic") , LANGUAGE_UZBEK_CYRILLIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Welsh") , LANGUAGE_WELSH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Latin") , LANGUAGE_USER_LATIN_VATICAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Esperanto") , LANGUAGE_USER_ESPERANTO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kinyarwanda (Rwanda)") , LANGUAGE_USER_KINYARWANDA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Maori") , LANGUAGE_MAORI_NEW_ZEALAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Galician") , LANGUAGE_GALICIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dhivehi") , LANGUAGE_DHIVEHI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Northern Sotho") , LANGUAGE_SEPEDI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Gaelic (Scotland)") , LANGUAGE_GAELIC_SCOTLAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Mongolian Cyrillic") , LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Mongolian Mongolian") , LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Interlingua") , LANGUAGE_USER_INTERLINGUA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bosnian") , LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bengali (Bangladesh)") , LANGUAGE_BENGALI_BANGLADESH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Occitan") , LANGUAGE_USER_OCCITAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Khmer") , LANGUAGE_KHMER }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Northern (Turkey)") , LANGUAGE_USER_KURDISH_TURKEY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Northern (Syria)") , LANGUAGE_USER_KURDISH_SYRIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Central (Iraq)") , LANGUAGE_USER_KURDISH_IRAQ }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Central (Iran)") , LANGUAGE_USER_KURDISH_IRAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Southern (Iran)") , LANGUAGE_USER_KURDISH_SOUTHERN_IRAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kurdish, Southern (Iraq)") , LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sardinian") , LANGUAGE_USER_SARDINIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dzongkha") , LANGUAGE_DZONGKHA_BHUTAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Swahili (Tanzania)") , LANGUAGE_USER_SWAHILI_TANZANIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lao") , LANGUAGE_LAO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Irish") , LANGUAGE_GAELIC_IRELAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tibetan (PR China)") , LANGUAGE_TIBETAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Georgian") , LANGUAGE_GEORGIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Frisian") , LANGUAGE_FRISIAN_NETHERLANDS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tswana (South Africa)") , LANGUAGE_TSWANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Zulu") , LANGUAGE_ZULU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Vietnamese") , LANGUAGE_VIETNAMESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Breton") , LANGUAGE_USER_BRETON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kalaallisut") , LANGUAGE_USER_KALAALLISUT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ndebele, South") , LANGUAGE_USER_NDEBELE_SOUTH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Southern Sotho") , LANGUAGE_SESOTHO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Swazi") , LANGUAGE_USER_SWAZI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tsonga") , LANGUAGE_TSONGA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Venda") , LANGUAGE_VENDA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tswana (Botswana)") , LANGUAGE_USER_TSWANA_BOTSWANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Xhosa") , LANGUAGE_XHOSA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sinhala") , LANGUAGE_SINHALESE_SRI_LANKA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Moore") , LANGUAGE_USER_MOORE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bambara") , LANGUAGE_USER_BAMBARA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Akan") , LANGUAGE_USER_AKAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Luxembourgish") , LANGUAGE_USER_LUXEMBOURGISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Friulian") , LANGUAGE_USER_FRIULIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Fijian") , LANGUAGE_USER_FIJIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Afrikaans (Namibia)") , LANGUAGE_USER_AFRIKAANS_NAMIBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Namibia)") , LANGUAGE_USER_ENGLISH_NAMIBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Walloon") , LANGUAGE_USER_WALLOON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Coptic") , LANGUAGE_USER_COPTIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tigrigna (Eritrea)") , LANGUAGE_TIGRIGNA_ERITREA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tigrigna (Ethiopia)") , LANGUAGE_TIGRIGNA_ETHIOPIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Amharic") , LANGUAGE_AMHARIC_ETHIOPIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kirghiz") , LANGUAGE_KIRGHIZ }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "German (Belgium)") , LANGUAGE_USER_GERMAN_BELGIUM }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Chuvash") , LANGUAGE_USER_CHUVASH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Burmese") , LANGUAGE_BURMESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hausa (Nigeria)") , LANGUAGE_HAUSA_NIGERIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hausa (Ghana)") , LANGUAGE_USER_HAUSA_GHANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Éwé") , LANGUAGE_USER_EWE_GHANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Ghana)") , LANGUAGE_USER_ENGLISH_GHANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sango") , LANGUAGE_USER_SANGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tagalog") , LANGUAGE_USER_TAGALOG }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ganda") , LANGUAGE_USER_GANDA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lingala") , LANGUAGE_USER_LINGALA_DRCONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Low German") , LANGUAGE_USER_LOW_GERMAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hiligaynon") , LANGUAGE_USER_HILIGAYNON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nyanja") , LANGUAGE_USER_NYANJA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kashubian") , LANGUAGE_USER_KASHUBIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Spanish (Cuba)") , LANGUAGE_USER_SPANISH_CUBA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tetun (Indonesia)") , LANGUAGE_USER_TETUN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Quechua (Bolivia, North)") , LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Quechua (Bolivia, South)") , LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Somali") , LANGUAGE_SOMALI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Inari (Finland)") , LANGUAGE_SAMI_INARI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Lule (Norway)") , LANGUAGE_SAMI_LULE_NORWAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Lule (Sweden)") , LANGUAGE_SAMI_LULE_SWEDEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Northern (Finland)") , LANGUAGE_SAMI_NORTHERN_FINLAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Northern (Norway)") , LANGUAGE_SAMI_NORTHERN_NORWAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Northern (Sweden)") , LANGUAGE_SAMI_NORTHERN_SWEDEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Skolt (Finland)") , LANGUAGE_SAMI_SKOLT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Southern (Norway)") , LANGUAGE_SAMI_SOUTHERN_NORWAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Southern (Sweden)") , LANGUAGE_SAMI_SOUTHERN_SWEDEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Kildin (Russia)") , LANGUAGE_USER_SAMI_KILDIN_RUSSIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Guarani (Paraguay)") , LANGUAGE_GUARANI_PARAGUAY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bodo") , LANGUAGE_USER_BODO_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dogri") , LANGUAGE_USER_DOGRI_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Maithili") , LANGUAGE_USER_MAITHILI_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Santali") , LANGUAGE_USER_SANTALI_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tetun (Timor-Leste)") , LANGUAGE_USER_TETUN_TIMOR_LESTE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Turkmen") , LANGUAGE_TURKMEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Maltese") , LANGUAGE_MALTESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tok Pisin") , LANGUAGE_USER_TOK_PISIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Shuswap") , LANGUAGE_USER_SHUSWAP }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Oromo") , LANGUAGE_OROMO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Greek, Ancient") , LANGUAGE_USER_ANCIENT_GREEK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yiddish (Israel)") , LANGUAGE_USER_YIDDISH_ISRAEL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Quechua (Ecuador)") , LANGUAGE_QUECHUA_ECUADOR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Uyghur") , LANGUAGE_UIGHUR_CHINA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Asturian") , LANGUAGE_USER_ASTURIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sorbian, Upper") , LANGUAGE_UPPER_SORBIAN_GERMANY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sorbian, Lower") , LANGUAGE_LOWER_SORBIAN_GERMANY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Latgalian") , LANGUAGE_USER_LATGALIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Maore") , LANGUAGE_USER_MAORE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bushi") , LANGUAGE_USER_BUSHI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tahitian") , LANGUAGE_USER_TAHITIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malagasy, Plateau") , LANGUAGE_MALAGASY_PLATEAU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Papiamentu (Netherlands Antilles)") , LANGUAGE_PAPIAMENTU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Papiamento (Aruba)") , LANGUAGE_USER_PAPIAMENTU_ARUBA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sardinian, Campidanese") , LANGUAGE_USER_SARDINIAN_CAMPIDANESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sardinian, Gallurese") , LANGUAGE_USER_SARDINIAN_GALLURESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sardinian, Logudorese") , LANGUAGE_USER_SARDINIAN_LOGUDORESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sardinian, Sassarese") , LANGUAGE_USER_SARDINIAN_SASSARESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bafia") , LANGUAGE_USER_BAFIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Gikuyu") , LANGUAGE_USER_GIKUYU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yoruba") , LANGUAGE_YORUBA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Rusyn (Ukraine)") , LANGUAGE_USER_RUSYN_UKRAINE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Rusyn (Slovakia)") , LANGUAGE_USER_RUSYN_SLOVAKIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kabyle Latin") , LANGUAGE_TAMAZIGHT_LATIN_ALGERIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yiddish (USA)") , LANGUAGE_USER_YIDDISH_US }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hawaiian") , LANGUAGE_HAWAIIAN_UNITED_STATES }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Limbu") , LANGUAGE_USER_LIMBU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lojban") , LANGUAGE_USER_LOJBAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Haitian") , LANGUAGE_USER_HAITIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Beembe") , LANGUAGE_USER_BEEMBE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bekwel") , LANGUAGE_USER_BEKWEL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kituba (Congo)") , LANGUAGE_USER_KITUBA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lari") , LANGUAGE_USER_LARI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Mbochi") , LANGUAGE_USER_MBOCHI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Teke-Eboo") , LANGUAGE_USER_TEKE_EBOO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Teke-Ibali") , LANGUAGE_USER_TEKE_IBALI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Teke-Tyee") , LANGUAGE_USER_TEKE_TYEE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Vili") , LANGUAGE_USER_VILI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "KeyID") , LANGUAGE_USER_KEYID }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Pali Latin") , LANGUAGE_USER_PALI_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kyrgyz (China)") , LANGUAGE_USER_KYRGYZ_CHINA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Komi-Zyrian") , LANGUAGE_USER_KOMI_ZYRIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Komi-Permyak") , LANGUAGE_USER_KOMI_PERMYAK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Pitjantjatjara") , LANGUAGE_USER_PITJANTJATJARA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Malawi)") , LANGUAGE_USER_ENGLISH_MALAWI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Erzya") , LANGUAGE_USER_ERZYA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Mari, Meadow") , LANGUAGE_USER_MARI_MEADOW }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Papiamento (Curaçao)") , LANGUAGE_USER_PAPIAMENTU_CURACAO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Papiamento (Bonaire)") , LANGUAGE_USER_PAPIAMENTU_BONAIRE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Khanty") , LANGUAGE_USER_KHANTY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Livonian") , LANGUAGE_USER_LIVONIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Moksha") , LANGUAGE_USER_MOKSHA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Mari, Hill") , LANGUAGE_USER_MARI_HILL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nganasan") , LANGUAGE_USER_NGANASAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Olonets") , LANGUAGE_USER_OLONETS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Veps") , LANGUAGE_USER_VEPS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Võro") , LANGUAGE_USER_VORO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nenets") , LANGUAGE_USER_NENETS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Aka (Central African Republic)") , LANGUAGE_USER_AKA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Aka (Congo)") , LANGUAGE_USER_AKA_CONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Dibole") , LANGUAGE_USER_DIBOLE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Doondo") , LANGUAGE_USER_DOONDO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kaamba") , LANGUAGE_USER_KAAMBA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Koongo (Congo)") , LANGUAGE_USER_KOONGO_CONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kunyi") , LANGUAGE_USER_KUNYI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ngungwel") , LANGUAGE_USER_NGUNGWEL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Njyem (Congo)") , LANGUAGE_USER_NJYEM_CONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Punu") , LANGUAGE_USER_PUNU_CONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Suundi") , LANGUAGE_USER_SUUNDI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Teke-Kukuya") , LANGUAGE_USER_TEKE_KUKUYA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tsaangi") , LANGUAGE_USER_TSAANGI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yaka (Congo)") , LANGUAGE_USER_YAKA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yaka (Democratic Republic of the Congo)") , LANGUAGE_USER_YAKA_DRCONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Yombe (Congo)") , LANGUAGE_USER_YOMBE_CONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "N'ko") , LANGUAGE_USER_NKO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Udmurt") , LANGUAGE_USER_UDMURT }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Tibetan (India)") , LANGUAGE_USER_TIBETAN_INDIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Cornish") , LANGUAGE_USER_CORNISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sami, Pite (Sweden)") , LANGUAGE_USER_SAMI_PITE_SWEDEN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ngäbere") , LANGUAGE_USER_NGAEBERE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kumyk") , LANGUAGE_USER_KUMYK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Nogai") , LANGUAGE_USER_NOGAI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Karakalpak Latin") , LANGUAGE_USER_KARAKALPAK_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ladin") , LANGUAGE_USER_LADIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Burkina Faso)") , LANGUAGE_USER_FRENCH_BURKINA_FASO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Puinave") , LANGUAGE_USER_PUINAVE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Maninkakan, Eastern, Latin") , LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Avar") , LANGUAGE_USER_AVAR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Cree, Plains, Latin") , LANGUAGE_USER_CREE_PLAINS_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Cree, Plains, Syllabics") , LANGUAGE_USER_CREE_PLAINS_SYLLABICS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Lengo") , LANGUAGE_USER_LENGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Côte d'Ivoire)") , LANGUAGE_FRENCH_COTE_D_IVOIRE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Mali)") , LANGUAGE_FRENCH_MALI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Senegal)") , LANGUAGE_FRENCH_SENEGAL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Benin)") , LANGUAGE_USER_FRENCH_BENIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Niger)") , LANGUAGE_USER_FRENCH_NIGER }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Togo)") , LANGUAGE_USER_FRENCH_TOGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kven Finnish") , LANGUAGE_USER_KVEN_FINNISH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Venetian") , LANGUAGE_USER_VENETIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Gambia)") , LANGUAGE_USER_ENGLISH_GAMBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Aranese") , LANGUAGE_USER_OCCITAN_ARANESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arpitan (France)") , LANGUAGE_USER_ARPITAN_FRANCE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arpitan (Italy)") , LANGUAGE_USER_ARPITAN_ITALY }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Arpitan (Switzerland)") , LANGUAGE_USER_ARPITAN_SWITZERLAND }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Botswana)") , LANGUAGE_USER_ENGLISH_BOTSWANA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Interlingue Occidental") , LANGUAGE_USER_INTERLINGUE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Apatani") , LANGUAGE_USER_APATANI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Mauritius)") , LANGUAGE_USER_ENGLISH_MAURITIUS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "French (Mauritius)") , LANGUAGE_USER_FRENCH_MAURITIUS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Silesian") , LANGUAGE_USER_SILESIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Hungarian (Szekely-Hungarian Rovas)") , LANGUAGE_USER_HUNGARIAN_ROVAS }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Malaysia)") , LANGUAGE_ENGLISH_MALAYSIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Manchu") , LANGUAGE_USER_MANCHU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Xibe") , LANGUAGE_USER_XIBE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kituba (Democratic Republic of the Congo)"), LANGUAGE_USER_KITUBA_DRCONGO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Fon"), LANGUAGE_USER_FON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Plautdietsch"), LANGUAGE_USER_PLAUTDIETSCH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Armenian, Eastern (Russia)") , LANGUAGE_USER_ARMENIAN_RUSSIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Armenian, Eastern (Iran)") , LANGUAGE_USER_ARMENIAN_IRAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Armenian, Western (Armenia)") , LANGUAGE_USER_ARMENIAN_WESTERN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Armenian, Classical (Armenia)") , LANGUAGE_USER_ARMENIAN_CLASSICAL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malay Arabic (Malaysia)") , LANGUAGE_USER_MALAY_ARABIC_MALAYSIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Malay Arabic (Brunei Darussalam)") , LANGUAGE_USER_MALAY_ARABIC_BRUNEI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Juǀ’hoan") , LANGUAGE_USER_JUHOAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Naro") , LANGUAGE_USER_NARO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Iloko") , LANGUAGE_USER_ILOKO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Zambia)") , LANGUAGE_USER_ENGLISH_ZAMBIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Sri Lanka)") , LANGUAGE_USER_ENGLISH_SRI_LANKA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Nigeria)") , LANGUAGE_USER_ENGLISH_NIGERIA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Kabardian") , LANGUAGE_USER_KABARDIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Guadeloupean Creole French") , LANGUAGE_USER_GUADELOUPEAN_CREOLE_FRENCH }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Ligurian") , LANGUAGE_USER_LIGURIAN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Minangkabau") , LANGUAGE_USER_MINANGKABAU }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sundanese") , LANGUAGE_USER_SUNDANESE }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Hong Kong)") , LANGUAGE_ENGLISH_HONG_KONG_SAR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Kenya)") , LANGUAGE_USER_ENGLISH_KENYA }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Pali Thai") , LANGUAGE_USER_PALI_THAI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Cabécar") , LANGUAGE_USER_CABECAR }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Bribri") , LANGUAGE_USER_BRIBRI }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Denmark)") , LANGUAGE_USER_ENGLISH_DENMARK }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Sesotho") , LANGUAGE_USER_SESOTHO_LESOTHO }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Klingon") , LANGUAGE_USER_KLINGON }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "English (Israel)") , LANGUAGE_USER_ENGLISH_ISRAEL }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Interslavic Latin") , LANGUAGE_USER_INTERSLAVIC_LATIN }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Interslavic Cyrillic") , LANGUAGE_USER_INTERSLAVIC_CYRILLIC }, + { NC_("STR_ARR_SVT_LANGUAGE_TABLE", "Pennsylvania Dutch") , LANGUAGE_USER_PENNSYLVANIA_DUTCH } +}; + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/mousefunction.hxx b/svtools/inc/mousefunction.hxx new file mode 100644 index 000000000..00313b0f4 --- /dev/null +++ b/svtools/inc/mousefunction.hxx @@ -0,0 +1,133 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include "table/tabletypes.hxx" + +#include <salhelper/simplereferenceobject.hxx> + +class MouseEvent; + +namespace svt::table +{ +class ITableControl; + +//= FunctionResult + +enum FunctionResult +{ + ActivateFunction, + ContinueFunction, + DeactivateFunction, + + SkipFunction +}; + +//= MouseFunction + +class MouseFunction : public ::salhelper::SimpleReferenceObject +{ +public: + MouseFunction() {} + MouseFunction(const MouseFunction&) = delete; + MouseFunction& operator=(const MouseFunction&) = delete; + virtual FunctionResult handleMouseMove(ITableControl& i_tableControl, MouseEvent const& i_event) + = 0; + virtual FunctionResult handleMouseDown(ITableControl& i_tableControl, MouseEvent const& i_event) + = 0; + virtual FunctionResult handleMouseUp(ITableControl& i_tableControl, MouseEvent const& i_event) + = 0; + +protected: + virtual ~MouseFunction() override {} +}; + +//= ColumnResize + +class ColumnResize final : public MouseFunction +{ +public: + ColumnResize() + : m_nResizingColumn(COL_INVALID) + { + } + +public: + // MouseFunction + virtual FunctionResult handleMouseMove(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseDown(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseUp(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + +private: + ColPos m_nResizingColumn; +}; + +//= RowSelection + +class RowSelection final : public MouseFunction +{ +public: + RowSelection() + : m_bActive(false) + { + } + +public: + // MouseFunction + virtual FunctionResult handleMouseMove(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseDown(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseUp(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + +private: + bool m_bActive; +}; + +//= ColumnSortHandler + +class ColumnSortHandler final : public MouseFunction +{ +public: + ColumnSortHandler() + : m_nActiveColumn(COL_INVALID) + { + } + +public: + // MouseFunction + virtual FunctionResult handleMouseMove(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseDown(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + virtual FunctionResult handleMouseUp(ITableControl& i_tableControl, + MouseEvent const& i_event) override; + +private: + ColPos m_nActiveColumn; +}; + +} // namespace svt::table + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/pch/precompiled_svt.cxx b/svtools/inc/pch/precompiled_svt.cxx new file mode 100644 index 000000000..56e1a70fe --- /dev/null +++ b/svtools/inc/pch/precompiled_svt.cxx @@ -0,0 +1,12 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "precompiled_svt.hxx" + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/pch/precompiled_svt.hxx b/svtools/inc/pch/precompiled_svt.hxx new file mode 100644 index 000000000..6632d92d8 --- /dev/null +++ b/svtools/inc/pch/precompiled_svt.hxx @@ -0,0 +1,327 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* + This file has been autogenerated by update_pch.sh. It is possible to edit it + manually (such as when an include file has been moved/renamed/removed). All such + manual changes will be rewritten by the next run of update_pch.sh (which presumably + also fixes all possible problems, so it's usually better to use it). + + Generated on 2021-04-08 13:56:44 using: + ./bin/update_pch svtools svt --cutoff=4 --exclude:system --include:module --exclude:local + + If after updating build fails, use the following command to locate conflicting headers: + ./bin/update_pch_bisect ./svtools/inc/pch/precompiled_svt.hxx "make svtools.build" --find-conflicts +*/ + +#include <sal/config.h> +#if PCH_LEVEL >= 1 +#include <algorithm> +#include <cassert> +#include <chrono> +#include <cmath> +#include <cstddef> +#include <cstdlib> +#include <cstring> +#include <deque> +#include <float.h> +#include <functional> +#include <initializer_list> +#include <iomanip> +#include <limits.h> +#include <limits> +#include <map> +#include <math.h> +#include <memory> +#include <new> +#include <optional> +#include <ostream> +#include <set> +#include <stddef.h> +#include <string.h> +#include <string> +#include <string_view> +#include <type_traits> +#include <unordered_map> +#include <utility> +#include <vector> +#include <boost/property_tree/ptree_fwd.hpp> +#endif // PCH_LEVEL >= 1 +#if PCH_LEVEL >= 2 +#include <osl/diagnose.h> +#include <osl/endian.h> +#include <osl/file.hxx> +#include <osl/interlck.h> +#include <osl/mutex.hxx> +#include <osl/thread.h> +#include <osl/time.h> +#include <rtl/alloc.h> +#include <rtl/bootstrap.hxx> +#include <rtl/character.hxx> +#include <rtl/instance.hxx> +#include <rtl/math.h> +#include <rtl/math.hxx> +#include <rtl/ref.hxx> +#include <rtl/strbuf.h> +#include <rtl/strbuf.hxx> +#include <rtl/string.h> +#include <rtl/string.hxx> +#include <rtl/stringconcat.hxx> +#include <rtl/stringutils.hxx> +#include <rtl/tencinfo.h> +#include <rtl/textcvt.h> +#include <rtl/textenc.h> +#include <rtl/unload.h> +#include <rtl/uri.hxx> +#include <rtl/ustrbuf.h> +#include <rtl/ustrbuf.hxx> +#include <rtl/ustring.h> +#include <rtl/ustring.hxx> +#include <rtl/uuid.h> +#include <sal/backtrace.hxx> +#include <sal/log.hxx> +#include <sal/macros.h> +#include <sal/saldllapi.h> +#include <sal/types.h> +#include <sal/typesizes.h> +#include <vcl/BinaryDataContainer.hxx> +#include <vcl/GraphicExternalLink.hxx> +#include <vcl/Scanline.hxx> +#include <vcl/accessiblefactory.hxx> +#include <vcl/alpha.hxx> +#include <vcl/animate/Animation.hxx> +#include <vcl/animate/AnimationBitmap.hxx> +#include <vcl/bitmap.hxx> +#include <vcl/bitmap/BitmapTypes.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/checksum.hxx> +#include <vcl/commandevent.hxx> +#include <vcl/ctrl.hxx> +#include <vcl/dllapi.h> +#include <vcl/dockwin.hxx> +#include <vcl/errcode.hxx> +#include <vcl/event.hxx> +#include <vcl/fntstyle.hxx> +#include <vcl/font.hxx> +#include <vcl/gfxlink.hxx> +#include <vcl/graph.hxx> +#include <vcl/graphicfilter.hxx> +#include <vcl/help.hxx> +#include <vcl/idle.hxx> +#include <vcl/image.hxx> +#include <vcl/imapobj.hxx> +#include <vcl/keycod.hxx> +#include <vcl/keycodes.hxx> +#include <vcl/mapmod.hxx> +#include <vcl/outdev.hxx> +#include <vcl/prntypes.hxx> +#include <vcl/ptrstyle.hxx> +#include <vcl/region.hxx> +#include <vcl/scopedbitmapaccess.hxx> +#include <vcl/settings.hxx> +#include <vcl/svapp.hxx> +#include <vcl/syswin.hxx> +#include <vcl/task.hxx> +#include <vcl/timer.hxx> +#include <vcl/transfer.hxx> +#include <vcl/vclenum.hxx> +#include <vcl/vclptr.hxx> +#include <vcl/vectorgraphicdata.hxx> +#include <vcl/virdev.hxx> +#include <vcl/weld.hxx> +#include <vcl/window.hxx> +#include <vcl/windowstate.hxx> +#endif // PCH_LEVEL >= 2 +#if PCH_LEVEL >= 3 +#include <basegfx/basegfxdllapi.h> +#include <basegfx/color/bcolor.hxx> +#include <basegfx/numeric/ftools.hxx> +#include <basegfx/point/b2dpoint.hxx> +#include <basegfx/point/b2ipoint.hxx> +#include <basegfx/polygon/b2dpolygon.hxx> +#include <basegfx/polygon/b2dpolypolygon.hxx> +#include <basegfx/range/b2drange.hxx> +#include <basegfx/range/basicrange.hxx> +#include <basegfx/tuple/b2dtuple.hxx> +#include <basegfx/tuple/b2ituple.hxx> +#include <basegfx/tuple/b3dtuple.hxx> +#include <basegfx/utils/common.hxx> +#include <basegfx/vector/b2dsize.hxx> +#include <basegfx/vector/b2dvector.hxx> +#include <basegfx/vector/b2enums.hxx> +#include <basegfx/vector/b2ivector.hxx> +#include <com/sun/star/accessibility/AccessibleEventId.hpp> +#include <com/sun/star/accessibility/AccessibleStateType.hpp> +#include <com/sun/star/awt/Key.hpp> +#include <com/sun/star/awt/KeyGroup.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/beans/Property.hpp> +#include <com/sun/star/beans/PropertyAttribute.hpp> +#include <com/sun/star/beans/PropertyState.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/beans/XFastPropertySet.hpp> +#include <com/sun/star/beans/XMultiPropertySet.hpp> +#include <com/sun/star/beans/XPropertiesChangeListener.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/beans/XPropertySetOption.hpp> +#include <com/sun/star/beans/XPropertyState.hpp> +#include <com/sun/star/beans/XVetoableChangeListener.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/container/XNameReplace.hpp> +#include <com/sun/star/datatransfer/DataFlavor.hpp> +#include <com/sun/star/datatransfer/XTransferable2.hpp> +#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp> +#include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp> +#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp> +#include <com/sun/star/datatransfer/dnd/DropTargetDragEvent.hpp> +#include <com/sun/star/datatransfer/dnd/DropTargetDropEvent.hpp> +#include <com/sun/star/datatransfer/dnd/XDragGestureListener.hpp> +#include <com/sun/star/datatransfer/dnd/XDragSourceListener.hpp> +#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp> +#include <com/sun/star/embed/Aspects.hpp> +#include <com/sun/star/frame/XDispatch.hpp> +#include <com/sun/star/frame/XDispatchProvider.hpp> +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/frame/XStatusListener.hpp> +#include <com/sun/star/frame/XTerminateListener.hpp> +#include <com/sun/star/i18n/Calendar2.hpp> +#include <com/sun/star/i18n/ForbiddenCharacters.hpp> +#include <com/sun/star/i18n/LanguageCountryInfo.hpp> +#include <com/sun/star/i18n/LocaleDataItem2.hpp> +#include <com/sun/star/i18n/LocaleItem.hpp> +#include <com/sun/star/i18n/NativeNumberXmlAttributes.hpp> +#include <com/sun/star/i18n/TransliterationModules.hpp> +#include <com/sun/star/i18n/TransliterationModulesExtra.hpp> +#include <com/sun/star/i18n/reservedWords.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/lang/EventObject.hpp> +#include <com/sun/star/lang/Locale.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/uno/Any.h> +#include <com/sun/star/uno/Any.hxx> +#include <com/sun/star/uno/Exception.hpp> +#include <com/sun/star/uno/Reference.h> +#include <com/sun/star/uno/Reference.hxx> +#include <com/sun/star/uno/RuntimeException.hpp> +#include <com/sun/star/uno/Sequence.h> +#include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/uno/Type.h> +#include <com/sun/star/uno/Type.hxx> +#include <com/sun/star/uno/TypeClass.hdl> +#include <com/sun/star/uno/XAggregation.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/uno/XInterface.hpp> +#include <com/sun/star/uno/XWeak.hpp> +#include <com/sun/star/util/Date.hpp> +#include <com/sun/star/util/DateTime.hpp> +#include <com/sun/star/util/Time.hpp> +#include <com/sun/star/util/URLTransformer.hpp> +#include <com/sun/star/view/PrintableState.hpp> +#include <comphelper/broadcasthelper.hxx> +#include <comphelper/comphelperdllapi.h> +#include <comphelper/lok.hxx> +#include <comphelper/processfactory.hxx> +#include <comphelper/propagg.hxx> +#include <comphelper/propertycontainer.hxx> +#include <comphelper/propertycontainerhelper.hxx> +#include <comphelper/propstate.hxx> +#include <comphelper/sequence.hxx> +#include <comphelper/string.hxx> +#include <comphelper/uno3.hxx> +#include <cppu/cppudllapi.h> +#include <cppu/unotype.hxx> +#include <cppuhelper/basemutex.hxx> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/compbase_ex.hxx> +#include <cppuhelper/cppuhelperdllapi.h> +#include <cppuhelper/implbase.hxx> +#include <cppuhelper/interfacecontainer.h> +#include <cppuhelper/interfacecontainer.hxx> +#include <cppuhelper/propshlp.hxx> +#include <cppuhelper/supportsservice.hxx> +#include <cppuhelper/weak.hxx> +#include <cppuhelper/weakagg.hxx> +#include <cppuhelper/weakref.hxx> +#include <i18nlangtag/lang.h> +#include <i18nlangtag/languagetag.hxx> +#include <i18nutil/i18nutildllapi.h> +#include <i18nutil/transliteration.hxx> +#include <o3tl/cow_wrapper.hxx> +#include <o3tl/deleter.hxx> +#include <o3tl/safeint.hxx> +#include <o3tl/strong_int.hxx> +#include <o3tl/typed_flags_set.hxx> +#include <o3tl/underlyingenumvalue.hxx> +#include <officecfg/Office/Common.hxx> +#include <salhelper/thread.hxx> +#include <sot/exchange.hxx> +#include <sot/formats.hxx> +#include <sot/sotdllapi.h> +#include <svl/hint.hxx> +#include <svl/macitem.hxx> +#include <svl/poolitem.hxx> +#include <svl/svldllapi.h> +#include <svl/typedwhich.hxx> +#include <toolkit/helper/vclunohelper.hxx> +#include <tools/color.hxx> +#include <tools/date.hxx> +#include <tools/datetime.hxx> +#include <tools/debug.hxx> +#include <tools/degree.hxx> +#include <tools/diagnose_ex.h> +#include <tools/fldunit.hxx> +#include <tools/fontenum.hxx> +#include <tools/fract.hxx> +#include <tools/gen.hxx> +#include <tools/globname.hxx> +#include <tools/link.hxx> +#include <tools/long.hxx> +#include <tools/mapunit.hxx> +#include <tools/ref.hxx> +#include <tools/solar.h> +#include <tools/stream.hxx> +#include <tools/time.hxx> +#include <tools/toolsdllapi.h> +#include <tools/urlobj.hxx> +#include <typelib/typeclass.h> +#include <typelib/typedescription.h> +#include <typelib/uik.h> +#include <ucbhelper/content.hxx> +#include <uno/any2.h> +#include <uno/data.h> +#include <uno/sequence2.h> +#include <unotools/accessiblestatesethelper.hxx> +#include <unotools/calendarwrapper.hxx> +#include <unotools/configitem.hxx> +#include <unotools/configmgr.hxx> +#include <unotools/localedatawrapper.hxx> +#include <unotools/nativenumberwrapper.hxx> +#include <unotools/options.hxx> +#include <unotools/streamwrap.hxx> +#include <unotools/syslocale.hxx> +#include <unotools/transliterationwrapper.hxx> +#include <unotools/unotoolsdllapi.h> +#endif // PCH_LEVEL >= 3 +#if PCH_LEVEL >= 4 +#include <svtools/brwbox.hxx> +#include <svtools/brwhead.hxx> +#include <svtools/colorcfg.hxx> +#include <svtools/htmlkywd.hxx> +#include <svtools/htmltokn.h> +#include <svtools/svtdllapi.h> +#include <svtools/svtresid.hxx> +#include <svtools/valueset.hxx> +#endif // PCH_LEVEL >= 4 + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/strings.hxx b/svtools/inc/strings.hxx new file mode 100644 index 000000000..d6210eec9 --- /dev/null +++ b/svtools/inc/strings.hxx @@ -0,0 +1,27 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <rtl/ustring.hxx> + +// no need to translate this +// the items in this string have to be in the same order as the STR_FIELD_* strings are added to the +// field label list of the dialog +inline constexpr OUStringLiteral STR_LOGICAL_FIELD_NAMES = u"FirstName;LastName;Company;Department;Street;Zip;City;State;Country;PhonePriv;PhoneComp;PhoneOffice;PhoneCell;PhoneOther;Pager;Fax;EMail;URL;Title;Position;Code;AddrForm;AddrFormMail;Id;CalendarURL;InviteParticipant;Note;Altfield1;Altfield2;Altfield3;Altfield4"; + +#define STR_DESCRIPTION_SMATH_DOC "StarMath 2.0 - 5.0" +#define STR_DESCRIPTION_SCHART_DOC "StarChart 3.0 - 5.0" +#define STR_DESCRIPTION_SDRAW_DOC "StarDraw 3.0 / 5.0 (StarImpress)" +#define STR_DESCRIPTION_SCALC_DOC "StarCalc 3.0 - 5.0" +#define STR_DESCRIPTION_SIMPRESS_DOC "StarImpress 4.0 / 5.0" +#define STR_DESCRIPTION_SWRITER_DOC "StarWriter 3.0 - 5.0" + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/svtools/inc/table/defaultinputhandler.hxx b/svtools/inc/table/defaultinputhandler.hxx new file mode 100644 index 000000000..add1a0693 --- /dev/null +++ b/svtools/inc/table/defaultinputhandler.hxx @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <table/tableinputhandler.hxx> +#include <rtl/ref.hxx> +#include <mousefunction.hxx> + +#include <vector> + + +namespace svt::table +{ + + class DefaultInputHandler final : public ITableInputHandler + { + public: + DefaultInputHandler(); + virtual ~DefaultInputHandler() override; + + virtual bool MouseMove ( ITableControl& _rControl, const MouseEvent& rMEvt ) override; + virtual bool MouseButtonDown ( ITableControl& _rControl, const MouseEvent& rMEvt ) override; + virtual bool MouseButtonUp ( ITableControl& _rControl, const MouseEvent& rMEvt ) override; + virtual bool KeyInput ( ITableControl& _rControl, const KeyEvent& rKEvt ) override; + virtual bool GetFocus ( ITableControl& _rControl ) override; + virtual bool LoseFocus ( ITableControl& _rControl ) override; + + private: + bool delegateMouseEvent( ITableControl& i_control, const MouseEvent& i_event, + FunctionResult ( MouseFunction::*i_handlerMethod )( ITableControl&, const MouseEvent& ) ); + + rtl::Reference< MouseFunction > pActiveFunction; + std::vector< rtl::Reference< MouseFunction > > aMouseFunctions; + }; + + +} // namespace svt::table + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/gridtablerenderer.hxx b/svtools/inc/table/gridtablerenderer.hxx new file mode 100644 index 000000000..e372de324 --- /dev/null +++ b/svtools/inc/table/gridtablerenderer.hxx @@ -0,0 +1,116 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <table/tablemodel.hxx> +#include <vcl/image.hxx> + +#include <memory> + + +namespace svt::table +{ + + + struct GridTableRenderer_Impl; + + + //= GridTableRenderer + + /** a default implementation for the ->ITableRenderer interface + + This class is able to paint a table grid, table headers, and cell + backgrounds according to the selected/active state of cells. + */ + class GridTableRenderer final : public ITableRenderer + { + private: + ::std::unique_ptr< GridTableRenderer_Impl > m_pImpl; + + public: + /** creates a table renderer associated with the given model + + @param _rModel + the model which should be rendered. The caller is responsible + for lifetime control, that is, the model instance must live + at least as long as the renderer instance lives + */ + GridTableRenderer( ITableModel& _rModel ); + virtual ~GridTableRenderer() override; + + /** determines whether or not to paint grid lines + */ + bool useGridLines() const; + + /** controls whether or not to paint grid lines + */ + void useGridLines( bool const i_use ); + + public: + // ITableRenderer overridables + virtual void PaintHeaderArea( + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + bool _bIsColHeaderArea, bool _bIsRowHeaderArea, + const StyleSettings& _rStyle ) override; + virtual void PaintColumnHeader( ColPos _nCol, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + const StyleSettings& _rStyle ) override; + virtual void PrepareRow( RowPos _nRow, bool i_hasControlFocus, bool _bSelected, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rRowArea, + const StyleSettings& _rStyle ) override; + virtual void PaintRowHeader( + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + const StyleSettings& _rStyle ) override; + virtual void PaintCell( ColPos const i_col, + bool i_hasControlFocus, bool _bSelected, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + const StyleSettings& _rStyle ) override; + virtual void ShowCellCursor( vcl::Window& _rView, const tools::Rectangle& _rCursorRect) override; + virtual void HideCellCursor( vcl::Window& _rView ) override; + virtual bool FitsIntoCell( + css::uno::Any const & i_cellContent, + OutputDevice& i_targetDevice, tools::Rectangle const & i_targetArea + ) const override; + virtual bool GetFormattedCellString( + css::uno::Any const & i_cellValue, + OUString & o_cellString + ) const override; + + private: + struct CellRenderContext; + + void impl_paintCellContent( + CellRenderContext const & i_context + ); + void impl_paintCellImage( + CellRenderContext const & i_context, + Image const & i_image + ); + void impl_paintCellText( + CellRenderContext const & i_context, + OUString const & i_text + ); + }; + +} // namespace svt::table + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tablecontrol.hxx b/svtools/inc/table/tablecontrol.hxx new file mode 100644 index 000000000..ecb6ea52c --- /dev/null +++ b/svtools/inc/table/tablecontrol.hxx @@ -0,0 +1,173 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <table/tablemodel.hxx> +#include <vcl/accessibletable.hxx> + +#include <vcl/ctrl.hxx> +#include <vcl/seleng.hxx> + +#include <memory> + +namespace svt::table +{ + class TableControl_Impl; + + + //= TableControl + + /** a basic control which manages table-like data, i.e. a number of cells + organized in <code>m</code> rows and <code>n</code> columns. + + The control itself does not do any assumptions about the concrete data + it displays, this is encapsulated in an instance supporting the + ->ITableModel interface. + + Also, the control does not do any assumptions about how the model's + content is rendered. This is the responsibility of a component + supporting the ->ITableRenderer interface (the renderer is obtained from + the model). + + The control supports the concept of a <em>current</em> (or <em>active</em> + cell). + The control supports accessibility, this is encapsulated in IAccessibleTable + */ + class TableControl final : public Control, public vcl::table::IAccessibleTable + { + private: + std::shared_ptr<TableControl_Impl> m_pImpl; + + + public: + TableControl( vcl::Window* _pParent, WinBits _nStyle ); + virtual ~TableControl() override; + virtual void dispose() override; + + /// sets a new table model + void SetModel( const PTableModel& _pModel ); + /// retrieves the current table model + PTableModel GetModel() const; + + /** retrieves the current row + + The current row is the one which contains the active cell. + + @return + the row index of the active cell, or ->ROW_INVALID + if there is no active cell, e.g. because the table does + not contain any rows or columns. + */ + sal_Int32 GetCurrentRow() const override; + + ITableControl& + getTableControlInterface(); + + /** retrieves the current column + + The current col is the one which contains the active cell. + + @return + the column index of the active cell, or ->COL_INVALID + if there is no active cell, e.g. because the table does + not contain any rows or columns. + */ + sal_Int32 GetCurrentColumn() const override; + + /** activates the cell at the given position + */ + void GoTo( ColPos _nColumnPos, RowPos _nRow); + + virtual void Resize() override; + void Select(); + + /**after removing a row, updates the vector which contains the selected rows + if the row, which should be removed, is selected, it will be erased from the vector + */ + SelectionEngine* getSelEngine(); + vcl::Window& getDataWindow(); + + // Window overridables + virtual void GetFocus() override; + virtual void LoseFocus() override; + virtual void KeyInput( const KeyEvent& rKEvt ) override; + virtual void StateChanged( StateChangedType i_nStateChange ) override; + + /** Creates and returns the accessible object of the whole GridControl. */ + virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override; + virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleControl( sal_Int32 _nIndex ) override; + virtual OUString GetAccessibleObjectName(vcl::table::AccessibleTableControlObjType eObjType, sal_Int32 _nRow, sal_Int32 _nCol) const override; + virtual void GoToCell( sal_Int32 _nColumnPos, sal_Int32 _nRow ) override; + virtual OUString GetAccessibleObjectDescription(vcl::table::AccessibleTableControlObjType eObjType) const override; + virtual void FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& rStateSet, vcl::table::AccessibleTableControlObjType eObjType ) const override; + + // temporary methods + // Those do not really belong into the public API - they're intended for firing A11Y-related events. However, + // firing those events should be an implementation internal to the TableControl resp. TableControl_Impl, + // instead of something triggered externally. + void commitCellEventIfAccessibleAlive( sal_Int16 const i_eventID, const css::uno::Any& i_newValue, const css::uno::Any& i_oldValue ); + void commitTableEventIfAccessibleAlive( sal_Int16 const i_eventID, const css::uno::Any& i_newValue, const css::uno::Any& i_oldValue ); + + + // IAccessibleTable + virtual tools::Rectangle GetWindowExtentsRelative(const vcl::Window *pRelativeWindow) const override; + virtual void GrabFocus() override; + virtual css::uno::Reference< css::accessibility::XAccessible > GetAccessible() override; + virtual vcl::Window* GetAccessibleParentWindow() const override; + virtual vcl::Window* GetWindowInstance() override; + virtual sal_Int32 GetAccessibleControlCount() const override; + virtual bool ConvertPointToControlIndex( sal_Int32& _rnIndex, const Point& _rPoint ) override; + virtual sal_Int32 GetRowCount() const override; + virtual sal_Int32 GetColumnCount() const override; + virtual bool ConvertPointToCellAddress( sal_Int32& _rnRow, sal_Int32& _rnColPos, const Point& _rPoint ) override; + virtual tools::Rectangle calcHeaderRect( bool _bIsColumnBar ) override; + virtual tools::Rectangle calcHeaderCellRect( bool _bIsColumnBar, sal_Int32 nPos) override; + virtual tools::Rectangle calcTableRect() override; + virtual tools::Rectangle calcCellRect( sal_Int32 _nRowPos, sal_Int32 _nColPos ) override; + virtual tools::Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex) override; + virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint) override; + virtual void FillAccessibleStateSetForCell( ::utl::AccessibleStateSetHelper& _rStateSet, sal_Int32 _nRow, sal_uInt16 _nColumnPos ) const override; + virtual OUString GetRowName(sal_Int32 _nIndex) const override; + virtual OUString GetColumnName( sal_Int32 _nIndex ) const override; + virtual bool HasRowHeader() override; + virtual bool HasColHeader() override; + virtual OUString GetAccessibleCellText(sal_Int32 _nRowPos, sal_Int32 _nColPos) const override; + + virtual sal_Int32 GetSelectedRowCount() const override; + virtual sal_Int32 GetSelectedRowIndex( sal_Int32 const i_selectionIndex ) const override; + virtual bool IsRowSelected( sal_Int32 const i_rowIndex ) const override; + virtual void SelectRow( sal_Int32 const i_rowIndex, bool const i_select ) override; + virtual void SelectAllRows( bool const i_select ) override; + + + private: + DECL_LINK( ImplSelectHdl, LinkParamNone*, void ); + + private: + TableControl( const TableControl& ) = delete; + TableControl& operator=( const TableControl& ) = delete; + }; + + +} // namespace svt::table + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tablecontrolinterface.hxx b/svtools/inc/table/tablecontrolinterface.hxx new file mode 100644 index 000000000..6a5927284 --- /dev/null +++ b/svtools/inc/table/tablecontrolinterface.hxx @@ -0,0 +1,237 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <sal/types.h> +#include <vcl/seleng.hxx> +#include <vcl/window.hxx> + +#include <table/tabletypes.hxx> +#include <table/tablemodel.hxx> + +namespace svt::table +{ + //= TableControlAction + enum TableControlAction + { + /// moves the cursor in the table control one row up, if possible, by keeping the current column + cursorUp, + /// moves the cursor in the table control one row down, if possible, by keeping the current column + cursorDown, + /// moves the cursor in the table control one column to the left, if possible, by keeping the current row + cursorLeft, + /// moves the cursor in the table control one column to the right, if possible, by keeping the current row + cursorRight, + /// moves the cursor to the beginning of the current line + cursorToLineStart, + /// moves the cursor to the end of the current line + cursorToLineEnd, + /// moves the cursor to the first row, keeping the current column + cursorToFirstLine, + /// moves the cursor to the last row, keeping the current column + cursorToLastLine, + /// moves the cursor one page up, keeping the current column + cursorPageUp, + /// moves the cursor one page down, keeping the current column + cursorPageDown, + /// moves the cursor to the top-most, left-most cell + cursorTopLeft, + /// moves the cursor to the bottom-most, right-most cell + cursorBottomRight, + /// selects the row, where the actual cursor is + cursorSelectRow, + /// selects the rows, above the actual cursor is + cursorSelectRowUp, + /// selects the row, beneath the actual cursor is + cursorSelectRowDown, + /// selects the row, from the actual cursor till top + cursorSelectRowAreaTop, + /// selects the row, from the actual cursor till bottom + cursorSelectRowAreaBottom, + + /// invalid and final enumeration value, not to be actually used + invalidTableControlAction + }; + + + //= TableCellArea + + enum TableCellArea + { + CellContent, + ColumnDivider + }; + + + //= TableCell + + struct TableCell + { + ColPos nColumn; + RowPos nRow; + TableCellArea eArea; + + TableCell( ColPos const i_column, RowPos const i_row ) + :nColumn( i_column ) + ,nRow( i_row ) + ,eArea( CellContent ) + { + } + }; + + + //= ColumnMetrics + + struct ColumnMetrics + { + /** the start of the column, in pixels. Might be negative, in case the column is scrolled out of the visible + area. Note: see below. + */ + tools::Long nStartPixel; + + /** the end of the column, in pixels, plus 1. Effectively, this is the accumulated width of all columns + up to the current one. + + Huh? Earlier you said that the nStartPixel of columns + scrolled out (to the left) of the visible area is + negative. Also, where is the promise that there is no gap + between columns? The above claim would be true only if the + first column always started at zero, and there is never a + gap. So these doc comments are inconsistent. How + surprising. + */ + tools::Long nEndPixel; + + ColumnMetrics() + :nStartPixel(0) + ,nEndPixel(0) + { + } + + ColumnMetrics( tools::Long const i_start, tools::Long const i_end ) + :nStartPixel( i_start ) + ,nEndPixel( i_end ) + { + } + }; + + + //= TableArea + + enum class TableArea + { + ColumnHeaders, + RowHeaders, + All + }; + + + //= ITableControl + + /** defines a callback interface to be implemented by a concrete table control + */ + class SAL_NO_VTABLE ITableControl + { + public: + /** hides the cell cursor + + The method cares for successive calls, that is, for every call to + ->hideCursor(), you need one call to ->showCursor. Only if the number + of both calls matches, the cursor is really shown. + + @see showCursor + */ + virtual void hideCursor() = 0; + + /** shows the cell cursor + + @see hideCursor + */ + virtual void showCursor() = 0; + + /** dispatches an action to the table control + + @return + <TRUE/> if the action could be dispatched successfully, <FALSE/> otherwise. Usual + failure conditions include some other instance vetoing the action, or impossibility + to execute the action at all (for instance moving up one row when already positioned + on the very first row). + + @see TableControlAction + */ + virtual bool dispatchAction( TableControlAction _eAction ) = 0; + + /** returns selection engine*/ + virtual SelectionEngine* getSelEngine() = 0; + + /** returns the table model + + The returned model is guaranteed to not be <NULL/>. + */ + virtual PTableModel getModel() const = 0; + + /// returns the index of the currently active column + virtual ColPos getCurrentColumn() const = 0; + + /// returns the index of the currently active row + virtual RowPos getCurrentRow() const = 0; + + /// activates the given cell + virtual void activateCell( ColPos const i_col, RowPos const i_row ) = 0; + + /// retrieves the size of the table window, in pixels + virtual ::Size getTableSizePixel() const = 0; + + /// sets a new mouse pointer for the table window + virtual void setPointer( PointerStyle i_pointer ) = 0; + + /// captures the mouse to the table window + virtual void captureMouse() = 0; + + /// releases the mouse, after it had previously been captured + virtual void releaseMouse() = 0; + + /// invalidates the table window + virtual void invalidate( TableArea const i_what ) = 0; + + /// calculates a width, given in pixels, into an AppFont-based width + virtual tools::Long pixelWidthToAppFont( tools::Long const i_pixels ) const = 0; + + /// shows a tracking rectangle + virtual void showTracking( tools::Rectangle const & i_location, ShowTrackFlags const i_flags ) = 0; + + /// hides a previously shown tracking rectangle + virtual void hideTracking() = 0; + + /// does a hit test for the given pixel coordinates + virtual TableCell hitTest( const Point& rPoint ) const = 0; + + /// retrieves the metrics for a given column + virtual ColumnMetrics getColumnMetrics( ColPos const i_column ) const = 0; + + /// determines whether a given row is selected + virtual bool isRowSelected( RowPos _nRow ) const = 0; + + virtual ~ITableControl() {}; + }; + +} // namespace svt::table + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tableinputhandler.hxx b/svtools/inc/table/tableinputhandler.hxx new file mode 100644 index 000000000..9d11df38d --- /dev/null +++ b/svtools/inc/table/tableinputhandler.hxx @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <memory> + +class MouseEvent; +class KeyEvent; + + +namespace svt::table +{ + + + class ITableControl; + + + //= ITableInputHandler + + /** interface for components handling input in a ->TableControl + */ + class ITableInputHandler + { + public: + // all those methods have the same semantics as the equal-named methods of ->Window, + // with the additional option to return a boolean value indicating whether + // the event should be further processed by the ->Window implementations (<FALSE/>), + // or whether it has been sufficiently handled by the ->ITableInputHandler instance + // (<FALSE/>). + + virtual bool MouseMove ( ITableControl& _rControl, const MouseEvent& rMEvt ) = 0; + virtual bool MouseButtonDown ( ITableControl& _rControl, const MouseEvent& rMEvt ) = 0; + virtual bool MouseButtonUp ( ITableControl& _rControl, const MouseEvent& rMEvt ) = 0; + virtual bool KeyInput ( ITableControl& _rControl, const KeyEvent& rKEvt ) = 0; + virtual bool GetFocus ( ITableControl& _rControl ) = 0; + virtual bool LoseFocus ( ITableControl& _rControl ) = 0; + + virtual ~ITableInputHandler() { } + }; + typedef std::shared_ptr< ITableInputHandler > PTableInputHandler; + + +} // namespace svt::table + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tablemodel.hxx b/svtools/inc/table/tablemodel.hxx new file mode 100644 index 000000000..b3bcc36e9 --- /dev/null +++ b/svtools/inc/table/tablemodel.hxx @@ -0,0 +1,454 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <svtools/svtdllapi.h> +#include <table/tabletypes.hxx> +#include <table/tablerenderer.hxx> +#include <table/tableinputhandler.hxx> + +#include <com/sun/star/style/VerticalAlignment.hpp> +#include <com/sun/star/style/HorizontalAlignment.hpp> + +#include <sal/types.h> + +#include <optional> +#include <memory> +#include <vector> +#include <o3tl/typed_flags_set.hxx> + +namespace svt::table { class ITableDataSort; } + +class Color; + +enum class ColumnAttributeGroup +{ + NONE = 0x00, + /// denotes column attributes related to the width of the column + WIDTH = 0x01, + /// denotes column attributes related to the appearance of the column, i.e. those relevant for rendering + APPEARANCE = 0x02, + /// denotes the entirety of column attributes + ALL = 0x03, +}; +namespace o3tl +{ + template<> struct typed_flags<ColumnAttributeGroup> : is_typed_flags<ColumnAttributeGroup, 0x03> {}; +} + + +namespace svt::table +{ + //= ScrollbarVisibility + enum ScrollbarVisibility + { + /** enumeration value denoting that a scrollbar should never be visible, even + if needed normally + */ + ScrollbarShowNever, + /** enumeration value denoting that a scrollbar should be visible when needed only + */ + ScrollbarShowSmart, + /** enumeration value denoting that a scrollbar should always be visible, even + if not needed normally + */ + ScrollbarShowAlways + }; + + + //= ITableModelListener + + /** declares an interface to be implemented by components interested in + changes in an ->ITableModel + */ + class SAL_NO_VTABLE ITableModelListener : public std::enable_shared_from_this< ITableModelListener > + { + public: + /** notifies the listener that one or more rows have been inserted into + the table + + @param first + the index of the first newly inserted row + @param last + the index of the last newly inserted row. Must not be smaller + than ->first + */ + virtual void rowsInserted( RowPos first, RowPos last ) = 0; + + /** notifies the listener that one or more rows have been removed from + the table + + @param first + the old index of the first removed row. If this is <code>-1</code>, then all + rows have been removed from the model. + @param last + the old index of the last removed row. Must not be smaller + than ->first + */ + virtual void rowsRemoved( RowPos first, RowPos last ) = 0; + + /** notifies the listener that one or more columns have been inserted into + the table + */ + virtual void columnInserted() = 0; + + /** notifies the listener that one or more columns have been removed from + the table + */ + virtual void columnRemoved() = 0; + + /** notifies the listener that all columns have been removed from the model + */ + virtual void allColumnsRemoved() = 0; + + /** notifies the listener that a rectangular cell range in the table + has been updated + + Listeners are required to discard any possibly cached information + they have about the cells in question, in particular any possibly + cached cell values. + */ + virtual void cellsUpdated( RowPos const i_firstRow, RowPos const i_lastRow ) = 0; + + /** notifies the listener that attributes of a given column changed + + @param i_column + the position of the column whose attributes changed + @param i_attributeGroup + a combination of one or more <code>COL_ATTRS_*</code> flags, denoting the attribute group(s) + in which changes occurred. + */ + virtual void columnChanged( ColPos const i_column, ColumnAttributeGroup const i_attributeGroup ) = 0; + + /** notifies the listener that the metrics of the table changed. + + Metrics here include the column header height, the row header width, the row height, and the presence + of both the row and column header. + */ + virtual void tableMetricsChanged() = 0; + + /// deletes the listener instance + virtual ~ITableModelListener(){}; + }; + typedef std::shared_ptr< ITableModelListener > PTableModelListener; + + + //= IColumnModel + + /** interface to be implemented by table column models + */ + class SAL_NO_VTABLE IColumnModel + { + public: + /** returns the name of the column + + Column names should be human-readable, but not necessarily unique + within a given table. + + @see setName + */ + virtual OUString getName() const = 0; + + /** retrieves the help text to be displayed for the column. + */ + virtual OUString getHelpText() const = 0; + + /** determines whether the column can be interactively resized + + @see getMinWidth + @see getMaxWidth + @see getWidth + */ + virtual bool isResizable() const = 0; + + /** denotes the relative flexibility of the column + + This flexibility is taken into account when a table control auto-resizes its columns, because the available + space changed. In this case, the columns grow or shrink according to their flexibility. + + A value of 0 means the column is not auto-resized at all. + */ + virtual sal_Int32 getFlexibility() const = 0; + + /** returns the width of the column, in app-font units + + The returned value must be a positive ->TableMetrics value. + + @see setWidth + @see getMinWidth + @see getMaxWidth + */ + virtual TableMetrics getWidth() const = 0; + + /** sets a new width for the column + + @param _nWidth + the new width, app-font units + + @see getWidth + */ + virtual void setWidth( TableMetrics _nWidth ) = 0; + + /** returns the minimum width of the column, in app-font units, or 0 if the column + does not have a minimal width + + @see setMinWidth + @see getMaxWidth + @see getWidth + */ + virtual TableMetrics getMinWidth() const = 0; + + /** returns the maximum width of the column, in app-font units, or 0 if the column + does not have a minimal width + + @see setMaxWidth + @see getMinWidth + @see getWidth + */ + virtual TableMetrics getMaxWidth() const = 0; + + /** retrieves the horizontal alignment to be used for content in this cell + */ + virtual css::style::HorizontalAlignment getHorizontalAlign() = 0; + + /// deletes the column model instance + virtual ~IColumnModel() { } + }; + typedef std::shared_ptr< IColumnModel > PColumnModel; + + + //= ITableModel + + /** declares the interface to implement by an abstract table model + */ + class SAL_NO_VTABLE SVT_DLLPUBLIC ITableModel + { + public: + /** returns the number of columns in the table + */ + virtual TableSize getColumnCount() const = 0; + + /** returns the number of rows in the table + */ + virtual TableSize getRowCount() const = 0; + + /** determines whether the table has column headers + + If this method returns <TRUE/>, the renderer returned by + ->getRenderer must be able to render column headers. + + @see IColumnRenderer + */ + virtual bool hasColumnHeaders() const = 0; + + /** determines whether the table has row headers + + If this method returns <TRUE/>, the renderer returned by + ->getRenderer must be able to render row headers. + + @see IColumnRenderer + */ + virtual bool hasRowHeaders() const = 0; + + /** returns a model for a certain column + + @param column + the index of the column in question. Must be greater than or + equal 0, and smaller than the return value of ->getColumnCount() + + @return + the model of the column in question. Must not be <NULL/> + */ + virtual PColumnModel getColumnModel( ColPos column ) = 0; + + /** returns a renderer which is able to paint the table represented + by this table model + + @return the renderer to use. Must not be <NULL/> + */ + virtual PTableRenderer getRenderer() const = 0; + + /** returns the component handling input in a view associated with the model + */ + virtual PTableInputHandler getInputHandler() const = 0; + + /** determines the height of rows in the table. + + @return + the logical height of rows in the table, in app-font units. The height must be + greater 0. + */ + virtual TableMetrics getRowHeight() const = 0; + + /** determines the height of the column header row + + This method is not to be called if ->hasColumnHeaders() + returned <FALSE/>. + + @return + the logical height of the column header row, in app-font units. + Must be greater than 0. + */ + virtual TableMetrics getColumnHeaderHeight() const = 0; + + /** determines the width of the row header column + + This method is not to be called if ->hasRowHeaders() + returned <FALSE/>. + + @return + the logical width of the row header column, in app-font units. + Must be greater than 0. + */ + virtual TableMetrics getRowHeaderWidth() const = 0; + + /** returns the visibility mode of the vertical scrollbar + */ + virtual ScrollbarVisibility getVerticalScrollbarVisibility() const = 0; + + /** returns the visibility mode of the horizontal scrollbar + */ + virtual ScrollbarVisibility getHorizontalScrollbarVisibility() const = 0; + + /** adds a listener to be notified of changes in the table model + */ + virtual void addTableModelListener( const PTableModelListener& i_listener ) = 0; + + /** remove a listener to be notified of changes in the table model + */ + virtual void removeTableModelListener( const PTableModelListener& i_listener ) = 0; + + /** retrieves the content of the given cell + */ + virtual void getCellContent( ColPos const i_col, RowPos const i_row, css::uno::Any& o_cellContent ) = 0; + + /** returns an object which should be displayed as tooltip for the given cell + + At the moment, only string-convertible values are supported here. In the future, one might imagine displaying + scaled-down versions of a graphic in a cell, and a larger version of that very graphic as tooltip. + + If no tooltip object is provided, then the cell content is used, and displayed as tooltip for the cell + if and only if it doesn't fit into the cell's space itself. + + @param i_col + The column index of the cell in question. COL_ROW_HEADERS is a valid argument here. + @param i_row + The row index of the cell in question. + @param o_cellToolTip + takes the tooltip object upon return. + */ + virtual void getCellToolTip( ColPos const i_col, RowPos const i_row, css::uno::Any & o_cellToolTip ) = 0; + + /** retrieves title of a given row + */ + virtual css::uno::Any getRowHeading( RowPos const i_rowPos ) const = 0; + + /** returns the color to be used for rendering the grid lines. + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getLineColor() const = 0; + + /** returns the color to be used for rendering the header background. + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getHeaderBackgroundColor() const = 0; + + /** returns the color to be used for rendering the header text. + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getHeaderTextColor() const = 0; + + /** returns the color to be used for the background of selected cells, when the control has the focus + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getActiveSelectionBackColor() const = 0; + + /** returns the color to be used for the background of selected cells, when the control does not have the focus + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getInactiveSelectionBackColor() const = 0; + + /** returns the color to be used for the text of selected cells, when the control has the focus + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getActiveSelectionTextColor() const = 0; + + /** returns the color to be used for the text of selected cells, when the control does not have the focus + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getInactiveSelectionTextColor() const = 0; + + /** returns the color to be used for rendering cell texts. + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getTextColor() const = 0; + + /** returns the color to be used for text lines (underline, strikethrough) when rendering cell text. + + If this value is not set, a default color from the style settings will be used. + */ + virtual ::std::optional< ::Color > getTextLineColor() const = 0; + + /** returns the colors to be used for the row backgrounds. + + If this value is not set, every second row will have a background color derived from the style settings's + selection color, the other rows will not have a special background at all. + + If this value is an empty sequence, the rows will not have a special background at all, instead the + normal background of the complete control will be used. + + If value is a non-empty sequence, then rows will have the background colors as specified in the sequence, + in alternating order. + */ + virtual ::std::optional< ::std::vector< ::Color > > + getRowBackgroundColors() const = 0; + + /** determines the vertical alignment of content within a cell + */ + virtual css::style::VerticalAlignment getVerticalAlign() const = 0; + + /** returns an adapter to the sorting functionality of the model + + It is legitimate to return <NULL/> here, in this case, the table model does not support sorting. + */ + virtual ITableDataSort* getSortAdapter() = 0; + + /** returns enabled state. + */ + virtual bool isEnabled() const = 0; + + /// destroys the table model instance + virtual ~ITableModel() { } + }; + typedef std::shared_ptr< ITableModel > PTableModel; + + +} // namespace svt::table + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tablerenderer.hxx b/svtools/inc/table/tablerenderer.hxx new file mode 100644 index 000000000..c43bac818 --- /dev/null +++ b/svtools/inc/table/tablerenderer.hxx @@ -0,0 +1,249 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <table/tabletypes.hxx> + +#include <rtl/ustring.hxx> + +#include <memory> + +namespace com :: sun :: star :: uno { class Any; } +namespace tools { class Rectangle; } +namespace vcl { class Window; } + +class OutputDevice; +class StyleSettings; +namespace vcl { + typedef OutputDevice RenderContext; +}; + + +namespace svt::table +{ + + + //= ITableRenderer + + /** interface to implement by components rendering a ->TableControl + */ + class SAL_NO_VTABLE ITableRenderer + { + public: + + /** paints a (part of) header area + + There are two header areas in a table control: + <ul><li>The row containing all column headers, i.e. <em>above</em> all rows containing the data</li> + <li>The column containing all row headers. i.e. <em>left of</em> all columns containing the data</li> + </ul> + + A header area is more than the union of the single column/row headers. + + First, there might be less columns than fit into the view - in this case, right + beside the right-most column, there's still room which belongs to the column header + area, but is not occupied by any particular column header.<br/> + An equivalent statement holds for the row header area, if there are fewer rows than + fit into the view. + + Second, if the table control has both a row header and a column header, + the intersection between those both belongs to both the column header area and the + row header area, but not to any particular column or row header. + + There are two flags specifying whether the to-be-painted area is part of the column + and/or row header area. + <ul><li>If both are <TRUE/>, the intersection of both areas is to be painted.</li> + <li>If ->_bIsColHeaderArea is <TRUE/> and ->_bIsRowHeaderArea is <FALSE/>, + then ->_rArea denotes the column header area <em>excluding</em> the + intersection between row and column header area.</li> + <li>Equivalently for ->_bIsColHeaderArea being <FALSE/> and ->_bIsRowHeaderArea + being <TRUE/></li> + </ul> + Note that it's not possible for both ->_bIsColHeaderArea and ->_bIsRowHeaderArea + to be <FALSE/> at the same time. + + @param _rDevice + the device to paint onto + @param _rArea + the area to paint into + @param _bIsColHeaderArea + <TRUE/> if and only if ->_rArea is part of the column header area. + @param _bIsRowHeaderArea + <TRUE/> if and only if ->_rArea is part of the row header area. + @param _rStyle + the style to be used for drawing + */ + virtual void PaintHeaderArea( + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + bool _bIsColHeaderArea, bool _bIsRowHeaderArea, + const StyleSettings& _rStyle ) = 0; + + /** paints the header for a given column + + @param _nCol + the index of the column to paint + @param _rDevice + denotes the device to paint onto + @param _rArea + the are into which the column header should be painted + @param _rStyle + the style to be used for drawing + */ + virtual void PaintColumnHeader( ColPos _nCol, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + const StyleSettings& _rStyle ) = 0; + + /** prepares a row for painting + + Painting a table means painting rows as necessary, in an increasing + order. The assumption is that retrieving data for two different rows + is (potentially) more expensive than retrieving data for two different + columns. Thus, the renderer will get the chance to "seek" to a certain + row, and then has to render all cells in this row, before another + row is going to be painted. + + @param _nRow + the row which is going to be painted. The renderer should + at least remember this row, since subsequent calls to + ->PaintRowHeader(), ->PaintCell(), and ->FinishRow() will + not pass this parameter again. + + However, the renderer is also allowed to render any + cell-independent content of this row. + + @param i_hasControlFocus + <TRUE/> if and only if the table control currently has the focus + @param _bSelected + <TRUE/> if and only if the row to be prepared is + selected currently. + @param _rDevice + denotes the device to paint onto + @param _rRowArea + the are into which the row should be painted. This excludes + the row header area, if applicable. + @param _rStyle + the style to be used for drawing + */ + virtual void PrepareRow( RowPos _nRow, bool i_hasControlFocus, bool _bSelected, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rRowArea, + const StyleSettings& _rStyle ) = 0; + + /** paints the header of a row + + The row to be painted is denoted by the most recent call to + ->PrepareRow. + + @param _rDevice + denotes the device to paint onto + @param _rArea + the are into which the row header should be painted + @param _rStyle + the style to be used for drawing + */ + virtual void PaintRowHeader( + vcl::RenderContext& _rDevice, tools::Rectangle const & _rArea, + StyleSettings const & _rStyle ) = 0; + + /** paints a certain cell + + The row to be painted is denoted by the most recent call to + ->PrepareRow. + + @param _bSelected + <TRUE/> if and only if the cell to be painted is + selected currently. This is the case if either + the row or the column of the cell is currently selected. + <br/> + Note that this flag is equal to the respective flag in the + previous ->PrepareRow call, it's passed here for convenience + only. + @param i_hasControlFocus + <TRUE/> if and only if the table control currently has the focus + <br/> + Note that this flag is equal to the respective flag in the + previous ->PrepareRow call, it's passed here for convenience + only. + @param _rDevice + denotes the device to paint onto + @param _rArea + the are into which the cell should be painted + @param _rStyle + the style to be used for drawing + */ + virtual void PaintCell( ColPos const i_col, + bool i_hasControlFocus, bool _bSelected, + vcl::RenderContext& _rDevice, const tools::Rectangle& _rArea, + const StyleSettings& _rStyle ) = 0; + + /** draws a cell cursor in the given rectangle + + The cell cursor is used to indicate the active/current cell + of a table control. + */ + virtual void ShowCellCursor( vcl::Window& _rView, const tools::Rectangle& _rCursorRect) = 0; + + /** hides the cell cursor previously drawn into the given rectangle + + The cell cursor is used to indicate the active/current cell + of a table control. + */ + virtual void HideCellCursor( vcl::Window& _rView ) = 0; + + /** checks whether a given cell content fits into a given target area on a given device. + + @param i_targetDevice + denotes the target device for the assumed rendering operation + + @param i_targetArea + denotes the area within the target device for the assumed rendering operation. + + @return + <TRUE/> if and only if the given cell content could be rendered into the given device and the + given area. + */ + virtual bool FitsIntoCell( + css::uno::Any const & i_cellContent, + OutputDevice& i_targetDevice, tools::Rectangle const & i_targetArea + ) const = 0; + + /** attempts to format the content of the given cell as string + + @param i_cellValue + the value for which an attempt for a string conversion should be made + @param o_cellString + the cell content, formatted as string + @return + <TRUE/> if and only if the content could be formatted as string + */ + virtual bool GetFormattedCellString( + css::uno::Any const & i_cellValue, + OUString & o_cellString + ) const = 0; + + /// deletes the renderer instance + virtual ~ITableRenderer() { } + }; + typedef std::shared_ptr< ITableRenderer > PTableRenderer; + + +} // namespace svt::table + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tablesort.hxx b/svtools/inc/table/tablesort.hxx new file mode 100644 index 000000000..699086352 --- /dev/null +++ b/svtools/inc/table/tablesort.hxx @@ -0,0 +1,80 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <table/tabletypes.hxx> + + +namespace svt::table +{ + + + //= ColumnSortDirection + + enum ColumnSortDirection + { + ColumnSortAscending, + ColumnSortDescending + }; + + + //= ColumnSort + + struct ColumnSort + { + ColPos nColumnPos; + ColumnSortDirection eSortDirection; + + ColumnSort() + :nColumnPos( COL_INVALID ) + ,eSortDirection( ColumnSortAscending ) + { + } + + }; + + + //= ITableDataSort + + /** provides sorting functionality for the data underlying an ITableModel + */ + class SAL_NO_VTABLE ITableDataSort + { + public: + /** sorts the rows in the model by the given column's data, in the given direction. + */ + virtual void sortByColumn( ColPos const i_column, ColumnSortDirection const i_sortDirection ) = 0; + + /** retrieves the current sort order of the data + + If the <code>nColumnIndex</code> member of the returned structure is <code>COL_INVALID</code>, then + the data is currently not sorted. + */ + virtual ColumnSort getCurrentSortOrder() const = 0; + + protected: + ~ITableDataSort() {} + }; + + +} // namespace svt::table + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/table/tabletypes.hxx b/svtools/inc/table/tabletypes.hxx new file mode 100644 index 000000000..8fdb18a83 --- /dev/null +++ b/svtools/inc/table/tabletypes.hxx @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <sal/types.h> + + +namespace svt::table +{ + + /// a value denoting the size of a table + typedef sal_Int32 TableSize; + + /// a value denoting a column position within a table + typedef sal_Int32 ColPos; + /// a value denoting a row position within a table + typedef sal_Int32 RowPos; + + typedef sal_Int32 TableMetrics; + +/// denotes the column containing the row headers +#define COL_ROW_HEADERS (::svt::table::ColPos(-1)) +/// denotes the row containing the column headers +#define ROW_COL_HEADERS (::svt::table::RowPos(-1)) + +/// denotes an invalid column index +#define COL_INVALID (::svt::table::ColPos(-2)) +/// denotes an invalid row index +#define ROW_INVALID (::svt::table::RowPos(-2)) + + +} // namespace svt::table + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/inc/uiobject.hxx b/svtools/inc/uiobject.hxx new file mode 100644 index 000000000..b20155517 --- /dev/null +++ b/svtools/inc/uiobject.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_SVTOOLS_INC_UIOBJECT_HXX +#define INCLUDED_SVTOOLS_INC_UIOBJECT_HXX + +#include <memory> +#include <vcl/uitest/uiobject.hxx> +#include <svtools/valueset.hxx> + +class ValueSet; + +class ValueSetUIObject final : public DrawingAreaUIObject +{ + ValueSet* mpSet; + +public: + ValueSetUIObject(const VclPtr<vcl::Window>& xSetWin); + + virtual void execute(const OUString& rAction, const StringMap& rParameters) override; + + static std::unique_ptr<UIObject> create(vcl::Window* pWindow); + + virtual StringMap get_state() override; + +private: + OUString get_name() const override; +}; + +#endif // INCLUDED_SVX_INC_UIOBJECT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |