Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/2075
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/75/2075/1
Widget for Calc protect cell tab page
* Translated some German comments to English (thanks to David E. Jourdain)
* Moved tab page .ui from sc/ to cui/
* Disabled FreeResource() in tabpages.cxx (need further understanding of the consequences)
* Need to address text alignement on the right
Change-Id: I332c263bce7c8f743c60bbe79e23641e9f037474
---
M cui/UI_cui.mk
A cui/uiconfig/ui/cellprotectionpage.ui
M sc/source/ui/attrdlg/tabpages.cxx
M sc/source/ui/inc/attrdlg.hrc
M sc/source/ui/inc/tabpages.hxx
M sc/source/ui/src/attrdlg.src
6 files changed, 275 insertions(+), 149 deletions(-)
diff --git a/cui/UI_cui.mk b/cui/UI_cui.mk
index db290b7..314e526 100644
--- a/cui/UI_cui.mk
+++ b/cui/UI_cui.mk
@@ -11,8 +11,10 @@
$(eval $(call gb_UI_add_uifiles,cui,\
cui/uiconfig/ui/backgroundpage \
+ cui/uiconfig/ui/alignement \
cui/uiconfig/ui/borderpage \
cui/uiconfig/ui/charnamepage \
+ cui/uiconfig/ui/cellprotectionpage \
cui/uiconfig/ui/colorpage \
cui/uiconfig/ui/gradientpage \
cui/uiconfig/ui/colorconfigwin \
diff --git a/cui/uiconfig/ui/cellprotectionpage.ui b/cui/uiconfig/ui/cellprotectionpage.ui
new file mode 100644
index 0000000..1d2fe5e
--- /dev/null
+++ b/cui/uiconfig/ui/cellprotectionpage.ui
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="window1">
+ <property name="can_focus">False</property>
+ <property name="margin_left">6</property>
+ <property name="margin_top">15</property>
+ <property name="border_width">6</property>
+ <child>
+ <object class="GtkGrid" id="ProtectionPage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkFrame" id="FrameProtection">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="events">GDK_EXPOSURE_MASK</property>
+ <property name="hexpand">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="protection1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="checkHideAll">
+ <property name="label" translatable="yes">Hide _all</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="always_show_image">True</property>
+ <property name="inconsistent">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkProtected">
+ <property name="label" translatable="yes">_Protected</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_left">25</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="inconsistent">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkHideFormula">
+ <property name="label" translatable="yes">Hide _formula</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_left">25</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="inconsistent">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">50</property>
+ <property name="label" translatable="yes">Cell protection is only
effective after the current sheet has been protected.
+
+Select 'Protect Document' from the 'Tools' menu, and specify 'Sheet'.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="LabelProtection">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Protection</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="framePrint">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="checkHidePrinting">
+ <property name="label" translatable="yes">Hide _when printing</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="inconsistent">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin_left">12</property>
+ <property name="label" translatable="yes">The cells selected will be
omitted when printing.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Print</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/sc/source/ui/attrdlg/tabpages.cxx b/sc/source/ui/attrdlg/tabpages.cxx
index 3b43bd6..1fe9a9d 100644
--- a/sc/source/ui/attrdlg/tabpages.cxx
+++ b/sc/source/ui/attrdlg/tabpages.cxx
@@ -21,7 +21,6 @@
#undef SC_DLLIMPLEMENTATION
-
#include "global.hxx"
#include "document.hxx"
#include "attrib.hxx"
@@ -47,30 +46,28 @@
ScTabPageProtection::ScTabPageProtection( Window* pParent,
const SfxItemSet& rCoreAttrs )
: SfxTabPage ( pParent,
- ScResId( RID_SCPAGE_PROTECTION ),
- rCoreAttrs ),
- //
- aFlProtect ( this, ScResId( FL_PROTECTION ) ),
- aBtnHideCell ( this, ScResId( BTN_HIDE_ALL ) ),
- aBtnProtect ( this, ScResId( BTN_PROTECTED ) ),
- aBtnHideFormula ( this, ScResId( BTN_HIDE_FORMULAR ) ),
- aTxtHint ( this, ScResId( FT_HINT ) ),
- aFlPrint ( this, ScResId( FL_PRINT ) ),
- aBtnHidePrint ( this, ScResId( BTN_HIDE_PRINT ) ),
- aTxtHint2 ( this, ScResId( FT_HINT2 ) )
-{
- // diese Page braucht ExchangeSupport
+ "ProtectionPage",
+ "cui/ui/cellprotectionpage.ui",
+ rCoreAttrs )
+
+ {
+ get(m_pBtnHideCell,"checkHideAll");
+ get(m_pBtnProtect,"checkProtected");
+ get(m_pBtnHideFormula,"checkHideFormula");
+ get(m_pBtnHidePrint,"checkHidePrinting");
+
+ // This Page need ExchangeSupport
SetExchangeSupport();
- // States werden in Reset gesetzt
+ // States will be set in Reset
bTriEnabled = bDontCare = bProtect = bHideForm = bHideCell = bHidePrint = false;
- aBtnProtect.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
- aBtnHideCell.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
- aBtnHideFormula.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
- aBtnHidePrint.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ m_pBtnProtect->SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ m_pBtnHideCell->SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ m_pBtnHideFormula->SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ m_pBtnHidePrint->SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
- FreeResource();
+ //FreeResource();
}
// -----------------------------------------------------------------------
@@ -88,8 +85,7 @@
// -----------------------------------------------------------------------
-SfxTabPage* ScTabPageProtection::Create( Window* pParent,
- const SfxItemSet& rAttrSet )
+SfxTabPage* ScTabPageProtection::Create( Window* pParent, const SfxItemSet& rAttrSet )
{
return ( new ScTabPageProtection( pParent, rAttrSet ) );
}
@@ -98,25 +94,26 @@
void ScTabPageProtection::Reset( const SfxItemSet& rCoreAttrs )
{
- // Variablen initialisieren
+ // Initialize variables
sal_uInt16 nWhich = GetWhich( SID_SCATTR_PROTECTION );
const ScProtectionAttr* pProtAttr = NULL;
SfxItemState eItemState = rCoreAttrs.GetItemState( nWhich, false,
(const SfxPoolItem**)&pProtAttr );
- // handelt es sich um ein Default-Item?
+ // Is this a Default-Item?
if ( eItemState == SFX_ITEM_DEFAULT )
pProtAttr = (const ScProtectionAttr*)&(rCoreAttrs.Get(nWhich));
- // bei SFX_ITEM_DONTCARE auf 0 lassen
+ // At SFX_ITEM_DONTCARE let to 0
- bTriEnabled = ( pProtAttr == NULL ); // TriState, wenn DontCare
+ bTriEnabled = ( pProtAttr == NULL ); // TriState, when DontCare
bDontCare = bTriEnabled;
if (bTriEnabled)
{
- // Defaults, die erscheinen wenn ein TriState weggeklickt wird:
- // (weil alles zusammen ein Attribut ist, kann auch nur alles zusammen
- // auf DontCare stehen - #38543#)
+ // Defaults wich appear when a TriState will be clicked away:
+ // (because everything combined is an attribute, and also only
+ // everything combined as DontCare can be available - #38543#)
+
bProtect = sal_True;
bHideForm = bHideCell = bHidePrint = false;
}
@@ -128,12 +125,12 @@
bHidePrint = pProtAttr->GetHidePrint();
}
- // Controls initialisieren
+ // Start Controls
- aBtnProtect .EnableTriState( bTriEnabled );
- aBtnHideCell .EnableTriState( bTriEnabled );
- aBtnHideFormula .EnableTriState( bTriEnabled );
- aBtnHidePrint .EnableTriState( bTriEnabled );
+ m_pBtnProtect->EnableTriState( bTriEnabled );
+ m_pBtnHideCell->EnableTriState( bTriEnabled );
+ m_pBtnHideFormula->EnableTriState( bTriEnabled );
+ m_pBtnHidePrint->EnableTriState( bTriEnabled );
UpdateButtons();
}
@@ -157,7 +154,7 @@
aProtAttr.SetHidePrint( bHidePrint );
if ( bTriEnabled )
- bAttrsChanged = sal_True; // DontCare -> richtiger Wert
+ bAttrsChanged = sal_True; // DontCare -> properly value
else
bAttrsChanged = !pOldItem || !( aProtAttr == *(const ScProtectionAttr*)pOldItem );
}
@@ -184,23 +181,23 @@
//------------------------------------------------------------------------
-IMPL_LINK( ScTabPageProtection, ButtonClickHdl, TriStateBox*, pBox )
+IMPL_LINK( ScTabPageProtection, ButtonClickHdl, CheckBox*, pBox )
{
TriState eState = pBox->GetState();
if ( eState == STATE_DONTKNOW )
- bDontCare = sal_True; // alles zusammen auf DontCare
+ bDontCare = sal_True; // everything combined at DontCare
else
{
- bDontCare = false; // DontCare ueberall aus
- sal_Bool bOn = ( eState == STATE_CHECK ); // ausgewaehlter Wert
+ bDontCare = false; // DontCare from everywhere
+ sal_Bool bOn = ( eState == STATE_CHECK ); // from a selected value
- if ( pBox == &aBtnProtect )
+ if ( pBox == m_pBtnProtect )
bProtect = bOn;
- else if ( pBox == &aBtnHideCell )
+ else if ( pBox == m_pBtnHideCell )
bHideCell = bOn;
- else if ( pBox == &aBtnHideFormula )
+ else if ( pBox == m_pBtnHideFormula )
bHideForm = bOn;
- else if ( pBox == &aBtnHidePrint )
+ else if ( pBox == m_pBtnHidePrint )
bHidePrint = bOn;
else
{
@@ -208,7 +205,7 @@
}
}
- UpdateButtons(); // TriState und Enable-Logik
+ UpdateButtons(); // TriState and Logic-Enable
return 0;
}
@@ -219,23 +216,23 @@
{
if ( bDontCare )
{
- aBtnProtect.SetState( STATE_DONTKNOW );
- aBtnHideCell.SetState( STATE_DONTKNOW );
- aBtnHideFormula.SetState( STATE_DONTKNOW );
- aBtnHidePrint.SetState( STATE_DONTKNOW );
+ m_pBtnProtect->SetState( STATE_DONTKNOW );
+ m_pBtnHideCell->SetState( STATE_DONTKNOW );
+ m_pBtnHideFormula->SetState( STATE_DONTKNOW );
+ m_pBtnHidePrint->SetState( STATE_DONTKNOW );
}
else
{
- aBtnProtect.SetState( bProtect ? STATE_CHECK : STATE_NOCHECK );
- aBtnHideCell.SetState( bHideCell ? STATE_CHECK : STATE_NOCHECK );
- aBtnHideFormula.SetState( bHideForm ? STATE_CHECK : STATE_NOCHECK );
- aBtnHidePrint.SetState( bHidePrint ? STATE_CHECK : STATE_NOCHECK );
+ m_pBtnProtect->SetState( bProtect ? STATE_CHECK : STATE_NOCHECK );
+ m_pBtnHideCell->SetState( bHideCell ? STATE_CHECK : STATE_NOCHECK );
+ m_pBtnHideFormula->SetState( bHideForm ? STATE_CHECK : STATE_NOCHECK );
+ m_pBtnHidePrint->SetState( bHidePrint ? STATE_CHECK : STATE_NOCHECK );
}
- sal_Bool bEnable = ( aBtnHideCell.GetState() != STATE_CHECK );
+ sal_Bool bEnable = ( m_pBtnHideCell->GetState() != STATE_CHECK );
{
- aBtnProtect.Enable( bEnable );
- aBtnHideFormula.Enable( bEnable );
+ m_pBtnProtect->Enable( bEnable );
+ m_pBtnHideFormula->Enable( bEnable );
}
}
diff --git a/sc/source/ui/inc/attrdlg.hrc b/sc/source/ui/inc/attrdlg.hrc
index 4c36756..70fdaec 100644
--- a/sc/source/ui/inc/attrdlg.hrc
+++ b/sc/source/ui/inc/attrdlg.hrc
@@ -26,15 +26,3 @@
#define TP_PROTECTION 6
#define TP_FONTEFF 7
#define TP_ASIAN 8
-
-//================================================
-// Protected cell TabPage:
-
-#define BTN_PROTECTED 1
-#define BTN_HIDE_FORMULAR 2
-#define BTN_HIDE_ALL 3
-#define FT_HINT 4
-#define FL_PROTECTION 5
-#define BTN_HIDE_PRINT 6
-#define FT_HINT2 7
-#define FL_PRINT 8
diff --git a/sc/source/ui/inc/tabpages.hxx b/sc/source/ui/inc/tabpages.hxx
index 622cb92..f6c9ce7 100644
--- a/sc/source/ui/inc/tabpages.hxx
+++ b/sc/source/ui/inc/tabpages.hxx
@@ -45,17 +45,11 @@
~ScTabPageProtection();
private:
- FixedLine aFlProtect;
- TriStateBox aBtnHideCell;
- TriStateBox aBtnProtect;
- TriStateBox aBtnHideFormula;
- FixedInfo aTxtHint;
-
- FixedLine aFlPrint;
- TriStateBox aBtnHidePrint;
- FixedInfo aTxtHint2;
-
- // current status:
+ CheckBox* m_pBtnHideCell;
+ CheckBox* m_pBtnProtect;
+ CheckBox* m_pBtnHideFormula;
+ CheckBox* m_pBtnHidePrint;
+ // current status:
sal_Bool bTriEnabled; // if before - DontCare
sal_Bool bDontCare; // all in TriState
sal_Bool bProtect; // secure individual settings for TriState
@@ -64,7 +58,7 @@
sal_Bool bHidePrint;
// Handler:
- DECL_LINK( ButtonClickHdl, TriStateBox* pBox );
+ DECL_LINK( ButtonClickHdl, CheckBox* pBox );
void UpdateButtons();
};
diff --git a/sc/source/ui/src/attrdlg.src b/sc/source/ui/src/attrdlg.src
index c3ff94a..eeededa 100644
--- a/sc/source/ui/src/attrdlg.src
+++ b/sc/source/ui/src/attrdlg.src
@@ -87,73 +87,3 @@
};
};
};
-
- //================================================
- // Zellschutz-TabPage:
-
-TabPage RID_SCPAGE_PROTECTION
-{
- Hide = TRUE ;
- SVLook = TRUE ;
- HelpId = HID_SCPAGE_PROTECTION ;
- Pos = MAP_APPFONT ( 0 , 0 ) ;
- Size = MAP_APPFONT ( TP_WIDTH , TP_HEIGHT ) ;
- TriStateBox BTN_PROTECTED
- {
- HelpID = "sc:TriStateBox:RID_SCPAGE_PROTECTION:BTN_PROTECTED";
- Pos = MAP_APPFONT ( 22 , 28 ) ;
- Size = MAP_APPFONT ( 90 , 10 ) ;
- Text [ en-US ] = "~Protected" ;
- TabStop = TRUE ;
- };
- TriStateBox BTN_HIDE_FORMULAR
- {
- HelpID = "sc:TriStateBox:RID_SCPAGE_PROTECTION:BTN_HIDE_FORMULAR";
- Pos = MAP_APPFONT ( 22 , 42 ) ;
- Size = MAP_APPFONT ( 90 , 10 ) ;
- Text [ en-US ] = "Hide ~formula" ;
- TabStop = TRUE ;
- };
- TriStateBox BTN_HIDE_ALL
- {
- HelpID = "sc:TriStateBox:RID_SCPAGE_PROTECTION:BTN_HIDE_ALL";
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 100 , 10 ) ;
- Text [ en-US ] = "Hide ~all" ;
- TabStop = TRUE ;
- };
- FixedText FT_HINT
- {
- Pos = MAP_APPFONT ( 114 , 14 ) ;
- Size = MAP_APPFONT ( 137 , 56 ) ;
- WordBreak = TRUE ;
- Text [ en-US ] = "Cell protection is only effective after the current sheet has been
protected. \n\nSelect 'Protect Document' from the 'Tools' menu, and specify 'Sheet'." ;
- };
- FixedLine FL_PROTECTION
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 248 , 8 ) ;
- Text [ en-US ] = "Protection" ;
- };
- TriStateBox BTN_HIDE_PRINT
- {
- HelpID = "sc:TriStateBox:RID_SCPAGE_PROTECTION:BTN_HIDE_PRINT";
- Pos = MAP_APPFONT ( 12 , 87 ) ;
- Size = MAP_APPFONT ( 100 , 10 ) ;
- Text [ en-US ] = "Hide ~when printing" ;
- TabStop = TRUE ;
- };
- FixedText FT_HINT2
- {
- Pos = MAP_APPFONT ( 114 , 87 ) ;
- Size = MAP_APPFONT ( 137 , 24 ) ;
- WordBreak = TRUE ;
- Text [ en-US ] = "The cells selected will be omitted when printing." ;
- };
- FixedLine FL_PRINT
- {
- Pos = MAP_APPFONT ( 6 , 76 ) ;
- Size = MAP_APPFONT ( 248 , 8 ) ;
- Text [ en-US ] = "Print" ;
- };
-};
--
To view, visit https://gerrit.libreoffice.org/2075
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I332c263bce7c8f743c60bbe79e23641e9f037474
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Olivier Hallot <olivier.hallot@alta.org.br>
Context
- [PATCH] Widget for Calc protect cell tab page · Olivier Hallot (via Code Review)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.