Kaydet (Commit) c6349747 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

vcl: add initial support for GtkScale (as Slider) to VclBuilder

Change-Id: I5c987a3b1ca39c8d382ba775bab762f030496bf5
üst 16c79edb
...@@ -33,6 +33,7 @@ class ListBox; ...@@ -33,6 +33,7 @@ class ListBox;
class NumericFormatter; class NumericFormatter;
class PopupMenu; class PopupMenu;
class ScrollBar; class ScrollBar;
class Slider;
class DateField; class DateField;
class TimeField; class TimeField;
class VclExpander; class VclExpander;
...@@ -236,6 +237,7 @@ private: ...@@ -236,6 +237,7 @@ private:
static void mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment); static void mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment);
static void mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment); static void mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment);
static void mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment); static void mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment);
static void mungeAdjustment(Slider &rTarget, const Adjustment &rAdjustment);
typedef std::map<OString, OString> WidgetTranslations; typedef std::map<OString, OString> WidgetTranslations;
typedef std::map<OString, WidgetTranslations> Translations; typedef std::map<OString, WidgetTranslations> Translations;
...@@ -276,6 +278,8 @@ private: ...@@ -276,6 +278,8 @@ private:
std::vector<WidgetAdjustmentMap> m_aTimeFormatterAdjustmentMaps; std::vector<WidgetAdjustmentMap> m_aTimeFormatterAdjustmentMaps;
std::vector<WidgetAdjustmentMap> m_aDateFormatterAdjustmentMaps; std::vector<WidgetAdjustmentMap> m_aDateFormatterAdjustmentMaps;
std::vector<WidgetAdjustmentMap> m_aScrollAdjustmentMaps; std::vector<WidgetAdjustmentMap> m_aScrollAdjustmentMaps;
std::vector<WidgetAdjustmentMap> m_aSliderAdjustmentMaps;
std::map<OString, Adjustment> m_aAdjustments; std::map<OString, Adjustment> m_aAdjustments;
std::vector<ButtonImageWidgetMap> m_aButtonImageWidgetMaps; std::vector<ButtonImageWidgetMap> m_aButtonImageWidgetMaps;
...@@ -350,7 +354,7 @@ private: ...@@ -350,7 +354,7 @@ private:
bool extractGroup(const OString &id, stringmap &rVec); bool extractGroup(const OString &id, stringmap &rVec);
bool extractModel(const OString &id, stringmap &rVec); bool extractModel(const OString &id, stringmap &rVec);
bool extractBuffer(const OString &id, stringmap &rVec); bool extractBuffer(const OString &id, stringmap &rVec);
bool extractScrollAdjustment(const OString &id, stringmap &rVec); bool extractAdjustmentToMap(const OString &id, stringmap &rVec, std::vector<WidgetAdjustmentMap>& rAdjustmentMap);
bool extractButtonImage(const OString &id, stringmap &rMap, bool bRadio); bool extractButtonImage(const OString &id, stringmap &rMap, bool bRadio);
bool extractStock(const OString &id, stringmap &rMap); bool extractStock(const OString &id, stringmap &rMap);
void extractMnemonicWidget(const OString &id, stringmap &rMap); void extractMnemonicWidget(const OString &id, stringmap &rMap);
......
...@@ -90,7 +90,9 @@ public: ...@@ -90,7 +90,9 @@ public:
{ mbFullDrag = bEnable; } { mbFullDrag = bEnable; }
bool IsDragEnabled() const { return mbFullDrag; } bool IsDragEnabled() const { return mbFullDrag; }
void SetRangeMin(long nNewRange);
long GetRangeMin() const { return mnMinRange; } long GetRangeMin() const { return mnMinRange; }
void SetRangeMax(long nNewRange);
long GetRangeMax() const { return mnMaxRange; } long GetRangeMax() const { return mnMaxRange; }
void SetRange( const Range& rRange ); void SetRange( const Range& rRange );
Range GetRange() const { return Range( GetRangeMin(), GetRangeMax() ); } Range GetRange() const { return Range( GetRangeMin(), GetRangeMax() ); }
......
...@@ -893,6 +893,16 @@ void Slider::EndSlide() ...@@ -893,6 +893,16 @@ void Slider::EndSlide()
maEndSlideHdl.Call( this ); maEndSlideHdl.Call( this );
} }
void Slider::SetRangeMin(long nNewRange)
{
SetRange(Range(nNewRange, GetRangeMax()));
}
void Slider::SetRangeMax(long nNewRange)
{
SetRange(Range(GetRangeMin(), nNewRange));
}
void Slider::SetRange( const Range& rRange ) void Slider::SetRange( const Range& rRange )
{ {
// adjust Range // adjust Range
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <vcl/toolbox.hxx> #include <vcl/toolbox.hxx>
#include <vcl/vclmedit.hxx> #include <vcl/vclmedit.hxx>
#include <vcl/settings.hxx> #include <vcl/settings.hxx>
#include <vcl/slider.hxx>
#include <svdata.hxx> #include <svdata.hxx>
#include <svids.hrc> #include <svids.hrc>
#include <window.h> #include <window.h>
...@@ -334,6 +335,20 @@ VclBuilder::VclBuilder(vcl::Window *pParent, const OUString& sUIDir, const OUStr ...@@ -334,6 +335,20 @@ VclBuilder::VclBuilder(vcl::Window *pParent, const OUString& sUIDir, const OUStr
mungeAdjustment(*pTarget, *pAdjustment); mungeAdjustment(*pTarget, *pAdjustment);
} }
//Set Scale(Slider) adjustments
std::vector<WidgetAdjustmentMap>::iterator aIterator;
for (aIterator = m_pParserState->m_aSliderAdjustmentMaps.begin();
aIterator != m_pParserState->m_aSliderAdjustmentMaps.end(); ++aIterator)
{
Slider* pTarget = dynamic_cast<Slider*>(get<vcl::Window>(aIterator->m_sID));
const Adjustment* pAdjustment = get_adjustment_by_name(aIterator->m_sValue);
SAL_WARN_IF(!pTarget || !pAdjustment, "vcl", "missing elements of scale(slider)/adjustment");
if (pTarget && pAdjustment)
{
mungeAdjustment(*pTarget, *pAdjustment);
}
}
//Set size-groups when all widgets have been imported //Set size-groups when all widgets have been imported
for (std::vector<SizeGroup>::iterator aI = m_pParserState->m_aSizeGroups.begin(), for (std::vector<SizeGroup>::iterator aI = m_pParserState->m_aSizeGroups.begin(),
aEnd = m_pParserState->m_aSizeGroups.end(); aI != aEnd; ++aI) aEnd = m_pParserState->m_aSizeGroups.end(); aI != aEnd; ++aI)
...@@ -586,6 +601,30 @@ OString VclBuilder::extractCustomProperty(VclBuilder::stringmap &rMap) ...@@ -586,6 +601,30 @@ OString VclBuilder::extractCustomProperty(VclBuilder::stringmap &rMap)
namespace namespace
{ {
bool extractDrawValue(VclBuilder::stringmap& rMap)
{
bool bDrawValue = true;
VclBuilder::stringmap::iterator aFind = rMap.find(OString("draw_value"));
if (aFind != rMap.end())
{
bDrawValue = toBool(aFind->second);
rMap.erase(aFind);
}
return bDrawValue;
}
OString extractValuePos(VclBuilder::stringmap& rMap)
{
OString sRet("top");
VclBuilder::stringmap::iterator aFind = rMap.find(OString("value_pos"));
if (aFind != rMap.end())
{
sRet = aFind->second;
rMap.erase(aFind);
}
return sRet;
}
OString extractTypeHint(VclBuilder::stringmap &rMap) OString extractTypeHint(VclBuilder::stringmap &rMap)
{ {
OString sRet("normal"); OString sRet("normal");
...@@ -1054,12 +1093,12 @@ void VclBuilder::connectDateFormatterAdjustment(const OString &id, const OString ...@@ -1054,12 +1093,12 @@ void VclBuilder::connectDateFormatterAdjustment(const OString &id, const OString
m_pParserState->m_aDateFormatterAdjustmentMaps.push_back(WidgetAdjustmentMap(id, rAdjustment)); m_pParserState->m_aDateFormatterAdjustmentMaps.push_back(WidgetAdjustmentMap(id, rAdjustment));
} }
bool VclBuilder::extractScrollAdjustment(const OString &id, VclBuilder::stringmap &rMap) bool VclBuilder::extractAdjustmentToMap(const OString& id, VclBuilder::stringmap& rMap, std::vector<WidgetAdjustmentMap>& rAdjustmentMap)
{ {
VclBuilder::stringmap::iterator aFind = rMap.find(OString("adjustment")); VclBuilder::stringmap::iterator aFind = rMap.find(OString("adjustment"));
if (aFind != rMap.end()) if (aFind != rMap.end())
{ {
m_pParserState->m_aScrollAdjustmentMaps.push_back(WidgetAdjustmentMap(id, aFind->second)); rAdjustmentMap.push_back(WidgetAdjustmentMap(id, aFind->second));
rMap.erase(aFind); rMap.erase(aFind);
return true; return true;
} }
...@@ -1540,7 +1579,7 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c ...@@ -1540,7 +1579,7 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c
} }
else if (name == "GtkScrollbar") else if (name == "GtkScrollbar")
{ {
extractScrollAdjustment(id, rMap); extractAdjustmentToMap(id, rMap, m_pParserState->m_aScrollAdjustmentMaps);
bVertical = extractOrientation(rMap); bVertical = extractOrientation(rMap);
if (bVertical) if (bVertical)
pWindow = new ScrollBar(pParent, WB_VERT); pWindow = new ScrollBar(pParent, WB_VERT);
...@@ -1549,7 +1588,7 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c ...@@ -1549,7 +1588,7 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c
} }
else if (name == "GtkProgressBar") else if (name == "GtkProgressBar")
{ {
extractScrollAdjustment(id, rMap); extractAdjustmentToMap(id, rMap, m_pParserState->m_aScrollAdjustmentMaps);
bVertical = extractOrientation(rMap); bVertical = extractOrientation(rMap);
if (bVertical) if (bVertical)
pWindow = new ProgressBar(pParent, WB_VERT); pWindow = new ProgressBar(pParent, WB_VERT);
...@@ -1598,6 +1637,21 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c ...@@ -1598,6 +1637,21 @@ vcl::Window *VclBuilder::makeObject(vcl::Window *pParent, const OString &name, c
{ {
pWindow = new Throbber(pParent, WB_3DLOOK); pWindow = new Throbber(pParent, WB_3DLOOK);
} }
else if (name == "GtkScale")
{
extractAdjustmentToMap(id, rMap, m_pParserState->m_aSliderAdjustmentMaps);
bool bDrawValue = extractDrawValue(rMap);
if (bDrawValue)
{
OString sValuePos = extractValuePos(rMap);
(void)sValuePos;
}
bVertical = extractOrientation(rMap);
WinBits nWinStyle = bVertical ? WB_VERT : WB_HORZ;
pWindow = new Slider(pParent, nWinStyle);
}
else if (name == "GtkToolbar") else if (name == "GtkToolbar")
{ {
pWindow = new ToolBox(pParent, WB_3DLOOK | WB_TABSTOP); pWindow = new ToolBox(pParent, WB_3DLOOK | WB_TABSTOP);
...@@ -3457,6 +3511,30 @@ void VclBuilder::mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustme ...@@ -3457,6 +3511,30 @@ void VclBuilder::mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustme
} }
} }
void VclBuilder::mungeAdjustment(Slider& rTarget, const Adjustment& rAdjustment)
{
for (stringmap::const_iterator aI = rAdjustment.begin(), aEnd = rAdjustment.end(); aI != aEnd; ++aI)
{
const OString &rKey = aI->first;
const OString &rValue = aI->second;
if (rKey == "upper")
rTarget.SetRangeMax(rValue.toInt32());
else if (rKey == "lower")
rTarget.SetRangeMin(rValue.toInt32());
else if (rKey == "value")
rTarget.SetThumbPos(rValue.toInt32());
else if (rKey == "step-increment")
rTarget.SetLineSize(rValue.toInt32());
else if (rKey == "page-increment")
rTarget.SetPageSize(rValue.toInt32());
else
{
SAL_INFO("vcl.layout", "unhandled property :" << rKey.getStr());
}
}
}
void VclBuilder::mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rTextBuffer) void VclBuilder::mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rTextBuffer)
{ {
for (stringmap::const_iterator aI = rTextBuffer.begin(), aEnd = rTextBuffer.end(); aI != aEnd; ++aI) for (stringmap::const_iterator aI = rTextBuffer.begin(), aEnd = rTextBuffer.end(); aI != aEnd; ++aI)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment