convert ruler menu to .ui
Change-Id: I5f9b0033288ccd4b58e055998834185970f987b0
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
index 5f98695e..9e29d67 100644
--- a/include/svx/dialogs.hrc
+++ b/include/svx/dialogs.hrc
@@ -171,9 +171,6 @@
#define RID_SVXBMP_EDIT (RID_SVX_START + 90)
#define RID_SVXBMP_REMOVE (RID_SVX_START + 91)
// Menu for the ruler
#define RID_SVXMN_RULER (RID_SVX_START + 92)
#define RID_SVXSTR_FRMSEL_TEXTS (RID_SVX_START + 93)
#define RID_SVXSTR_FRMSEL_DESCRIPTIONS (RID_SVX_START + 94)
#define RID_SVXBMP_FRMSEL_ARROW1 (RID_SVX_START + 95)
diff --git a/include/vcl/field.hxx b/include/vcl/field.hxx
index 973f124..f78a565 100644
--- a/include/vcl/field.hxx
+++ b/include/vcl/field.hxx
@@ -232,6 +232,7 @@ public:
void SetCustomConvertHdl( const Link<MetricFormatter&,void>& rLink ) { maCustomConvertLink = rLink; }
static FieldUnit StringToMetric(const OUString &rMetricString);
protected:
sal_Int64 mnBaseValue;
FieldUnit meUnit;
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index e073234..ab20c83 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -65,6 +65,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
svx/uiconfig/ui/redlinecontrol \
svx/uiconfig/ui/redlinefilterpage \
svx/uiconfig/ui/redlineviewpage \
svx/uiconfig/ui/rulermenu \
svx/uiconfig/ui/safemodedialog \
svx/uiconfig/ui/savemodifieddialog \
svx/uiconfig/ui/sidebararea \
diff --git a/svx/source/dialog/ruler.hrc b/svx/source/dialog/ruler.hrc
deleted file mode 100644
index a4ce17b..0000000
--- a/svx/source/dialog/ruler.hrc
+++ /dev/null
@@ -1,32 +0,0 @@
/* -*- 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 .
*/
//!! Dependence on sv.hxx
#define ID_MM 1
#define ID_CM 2
#define ID_M 3
#define ID_KM 4
#define ID_INCH 8
#define ID_FOOT 9
#define ID_MILE 10
#define ID_POINT 6
#define ID_PICA 7
#define ID_CHAR 11
#define ID_LINE 12
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/ruler.src b/svx/source/dialog/ruler.src
index b1942de..0e8cc51 100644
--- a/svx/source/dialog/ruler.src
+++ b/svx/source/dialog/ruler.src
@@ -17,80 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <svx/dialogs.hrc>
#include "ruler.hrc"
Menu RID_SVXMN_RULER
{
ItemList =
{
MenuItem
{
Identifier = ID_MM ;
RadioCheck = TRUE ;
Text [ en-US ] = "Millimeter" ;
};
MenuItem
{
Identifier = ID_CM ;
RadioCheck = TRUE ;
Text [ en-US ] = "Centimeter" ;
};
MenuItem
{
Identifier = ID_M ;
RadioCheck = TRUE ;
Text [ en-US ] = "Meter" ;
};
MenuItem
{
Identifier = ID_KM ;
RadioCheck = TRUE ;
Text [ en-US ] = "Kilometer" ;
};
MenuItem
{
Identifier = ID_INCH ;
RadioCheck = TRUE ;
Text [ en-US ] = "Inch" ;
};
MenuItem
{
Identifier = ID_FOOT ;
RadioCheck = TRUE ;
Text [ en-US ] = "Foot" ;
};
MenuItem
{
Identifier = ID_MILE ;
RadioCheck = TRUE ;
Text [ en-US ] = "Miles" ;
};
MenuItem
{
Identifier = ID_POINT ;
RadioCheck = TRUE ;
Text [ en-US ] = "Point" ;
};
MenuItem
{
Identifier = ID_PICA ;
RadioCheck = TRUE ;
Text [ en-US ] = "Pica" ;
};
MenuItem
{
Identifier = ID_CHAR ;
RadioCheck = TRUE ;
Text[ en-US ] = "Char" ;
};
MenuItem
{
Identifier = ID_LINE ;
RadioCheck = TRUE ;
Text[ en-US ] = "Line" ;
};
};
};
String RID_SVXSTR_RULER_TAB_LEFT
{
Text [ en-US ] = "Left" ;
diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx
index ec43c43..7aa3cbb 100644
--- a/svx/source/dialog/svxruler.cxx
+++ b/svx/source/dialog/svxruler.cxx
@@ -20,6 +20,7 @@
#include <cstring>
#include <climits>
#include <vcl/builder.hxx>
#include <vcl/image.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
@@ -3342,11 +3343,10 @@ void SvxRuler::Notify(SfxBroadcaster&, const SfxHint& rHint)
}
}
IMPL_LINK( SvxRuler, MenuSelect, Menu *, pMenu, bool )
{
/* Handler of the context menus for switching the unit of measurement */
SetUnit(FieldUnit(pMenu->GetCurItemId()));
SetUnit(MetricFormatter::StringToMetric(OUString::fromUtf8(pMenu->GetCurItemIdent())));
return false;
}
@@ -3404,7 +3404,8 @@ void SvxRuler::Command( const CommandEvent& rCommandEvent )
}
else
{
ScopedVclPtrInstance<PopupMenu> aMenu(ResId(RID_SVXMN_RULER, DIALOG_MGR()));
VclBuilder aBuilder(nullptr, VclBuilderContainer::getUIRootDir(), "svx/ui/rulermenu.ui", "");
VclPtr<PopupMenu> aMenu(aBuilder.get_menu("menu"));
aMenu->SetSelectHdl(LINK(this, SvxRuler, MenuSelect));
FieldUnit eUnit = GetUnit();
const sal_uInt16 nCount = aMenu->GetItemCount();
@@ -3412,22 +3413,24 @@ void SvxRuler::Command( const CommandEvent& rCommandEvent )
bool bReduceMetric = bool(nFlags & SvxRulerSupportFlags::REDUCED_METRIC);
for ( sal_uInt16 i = nCount; i; --i )
{
const sal_uInt16 nId = aMenu->GetItemId(i - 1);
aMenu->CheckItem(nId, nId == (sal_uInt16)eUnit);
sal_uInt16 nId = aMenu->GetItemId(i - 1);
OString sIdent = aMenu->GetItemIdent(nId);
FieldUnit eMenuUnit = MetricFormatter::StringToMetric(OUString::fromUtf8(sIdent));
aMenu->CheckItem(nId, eMenuUnit == eUnit);
if( bReduceMetric )
{
if ( nId == FUNIT_M ||
nId == FUNIT_KM ||
nId == FUNIT_FOOT ||
nId == FUNIT_MILE )
if (eMenuUnit == FUNIT_M ||
eMenuUnit == FUNIT_KM ||
eMenuUnit == FUNIT_FOOT ||
eMenuUnit == FUNIT_MILE)
{
aMenu->RemoveItem(i - 1);
}
else if (( nId == FUNIT_CHAR ) && !bHorz )
else if (( eMenuUnit == FUNIT_CHAR ) && !bHorz )
{
aMenu->RemoveItem(i - 1);
}
else if (( nId == FUNIT_LINE ) && bHorz )
else if (( eMenuUnit == FUNIT_LINE ) && bHorz )
{
aMenu->RemoveItem(i - 1);
}
diff --git a/svx/uiconfig/ui/rulermenu.ui b/svx/uiconfig/ui/rulermenu.ui
new file mode 100644
index 0000000..163f6b9
--- /dev/null
+++ b/svx/uiconfig/ui/rulermenu.ui
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkMenu" id="menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="mm">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Millimeter</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="cm">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Centimeter</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Meter</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="km">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Kilometer</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="in">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Inch</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="ft">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Foot</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mile">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Miles</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="pt">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Point</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="pc">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Pica</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="ch">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Char</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="line">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Line</property>
<property name="use_underline">True</property>
</object>
</child>
</object>
</interface>
diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx
index 394fb8f..68baa14 100644
--- a/vcl/source/control/field.cxx
+++ b/vcl/source/control/field.cxx
@@ -1023,7 +1023,7 @@ static const OUString ImplMetricToString( FieldUnit rUnit )
return OUString();
}
static FieldUnit ImplStringToMetric(const OUString &rMetricString)
FieldUnit MetricFormatter::StringToMetric(const OUString &rMetricString)
{
FieldUnitStringList* pList = ImplGetCleanedFieldUnits();
if( pList )
@@ -1042,8 +1042,8 @@ static FieldUnit ImplStringToMetric(const OUString &rMetricString)
static FieldUnit ImplMetricGetUnit(const OUString& rStr)
{
OUString aStr = ImplMetricGetUnitText( rStr );
return ImplStringToMetric( aStr );
OUString aStr = ImplMetricGetUnitText(rStr);
return MetricFormatter::StringToMetric(aStr);
}
#define K *1000L