summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-06-12 13:02:05 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-06-12 13:54:14 +0100
commit0cab72b8191dc8ee5941fc5900d0c3b2c48fd0f3 (patch)
treee25417ba13612f68149aba0dae0a35d0c63447ea /extensions
parent99b1b4d4751081cee70d4ccb1d459a3776ed2250 (diff)
extract gamma grid drawing to standalone widget
so the dialog stops scribbling on itself, and instead uses a real widget for that This has to be one of our weirdest dialogs, why expend so much effort to create this dialog for the most obscure of issues. Change-Id: Ia25e6c67fb278528c6c68a1d6db74de59915fd34
Diffstat (limited to 'extensions')
-rw-r--r--extensions/source/scanner/grid.cxx347
-rw-r--r--extensions/source/scanner/grid.hxx122
-rw-r--r--extensions/source/scanner/sanedlg.cxx2
-rw-r--r--extensions/uiconfig/scanner/ui/griddialog.ui31
4 files changed, 279 insertions, 223 deletions
diff --git a/extensions/source/scanner/grid.cxx b/extensions/source/scanner/grid.cxx
index 898f834ecb11..ae3695494d71 100644
--- a/extensions/source/scanner/grid.cxx
+++ b/extensions/source/scanner/grid.cxx
@@ -29,6 +29,116 @@
#include <algorithm>
#include <boost/scoped_array.hpp>
+class GridWindow : public Window
+{
+ // helper class for handles
+ struct impHandle
+ {
+ Point maPos;
+ sal_uInt16 mnOffX;
+ sal_uInt16 mnOffY;
+
+ impHandle(const Point& rPos, sal_uInt16 nX, sal_uInt16 nY)
+ : maPos(rPos), mnOffX(nX), mnOffY(nY)
+ {
+ }
+
+ bool operator<(const impHandle& rComp) const
+ {
+ return (maPos.X() < rComp.maPos.X());
+ }
+
+ void draw(Window& rWin, const BitmapEx& rBitmapEx)
+ {
+ const Point aOffset(rWin.PixelToLogic(Point(mnOffX, mnOffY)));
+ rWin.DrawBitmapEx(maPos - aOffset, rBitmapEx);
+ }
+
+ bool isHit(Window& rWin, const Point& rPos)
+ {
+ const Point aOffset(rWin.PixelToLogic(Point(mnOffX, mnOffY)));
+ const Rectangle aTarget(maPos - aOffset, maPos + aOffset);
+ return aTarget.IsInside(rPos);
+ }
+ };
+
+ Rectangle m_aGridArea;
+
+ double m_fMinX;
+ double m_fMinY;
+ double m_fMaxX;
+ double m_fMaxY;
+
+ double m_fChunkX;
+ double m_fMinChunkX;
+ double m_fChunkY;
+ double m_fMinChunkY;
+
+ double* m_pXValues;
+ double* m_pOrigYValues;
+ int m_nValues;
+ double* m_pNewYValues;
+
+ sal_uInt16 m_BmOffX;
+ sal_uInt16 m_BmOffY;
+
+ bool m_bCutValues;
+
+ // stuff for handles
+ std::vector< impHandle > m_aHandles;
+ sal_uInt32 m_nDragIndex;
+
+ BitmapEx m_aMarkerBitmap;
+
+ Point transform( double x, double y );
+ void transform( const Point& rOriginal, double& x, double& y );
+
+ double findMinX();
+ double findMinY();
+ double findMaxX();
+ double findMaxY();
+
+ void updateRectSize();
+
+ void drawGrid();
+ void drawOriginal();
+ void drawNew();
+ void drawHandles();
+
+ void computeExtremes();
+ void computeChunk( double fMin, double fMax, double& fChunkOut, double& fMinChunkOut );
+ void computeNew();
+ double interpolate( double x, double* pNodeX, double* pNodeY, int nNodes );
+
+ virtual void MouseMove( const MouseEvent& ) SAL_OVERRIDE;
+ virtual void MouseButtonDown( const MouseEvent& ) SAL_OVERRIDE;
+ virtual void MouseButtonUp( const MouseEvent& ) SAL_OVERRIDE;
+ void onResize();
+ virtual void Resize() SAL_OVERRIDE;
+ virtual Size GetOptimalSize() const SAL_OVERRIDE;
+ void drawLine( double x1, double y1, double x2, double y2 );
+public:
+ GridWindow(Window* pParent);
+ void Init(double* pXValues, double* pYValues, int nValues, bool bCutValues);
+ virtual ~GridWindow();
+
+ void setBoundings( double fMinX, double fMinY, double fMaxX, double fMaxY );
+ double getMinX() { return m_fMinX; }
+ double getMinY() { return m_fMinY; }
+ double getMaxX() { return m_fMaxX; }
+ double getMaxY() { return m_fMaxY; }
+
+ int countValues() { return m_nValues; }
+ double* getXValues() { return m_pXValues; }
+ double* getOrigYValues() { return m_pOrigYValues; }
+ double* getNewYValues() { return m_pNewYValues; }
+
+ void ChangeMode(int nType);
+
+ virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
+};
+
+
namespace {
ResId SaneResId( sal_uInt32 nID )
@@ -39,41 +149,32 @@ ResId SaneResId( sal_uInt32 nID )
}
-/***********************************************************************
- *
- * GridWindow
- *
- ***********************************************************************/
-
-
-
-GridWindow::GridWindow(double* pXValues, double* pYValues, int nValues, Window* pParent, bool bCutValues )
-: ModalDialog( pParent, "GridDialog", "modules/scanner/ui/griddialog.ui" ),
- m_aGridArea( 50, 15, 100, 100 ),
- m_pXValues( pXValues ),
- m_pOrigYValues( pYValues ),
- m_nValues( nValues ),
- m_pNewYValues( NULL ),
- m_bCutValues( bCutValues ),
- m_aHandles(),
- m_nDragIndex( 0xffffffff ),
- m_aMarkerBitmap( FixedImage::loadThemeImage("extensions/source/scanner/handle.png").GetBitmapEx() )
+GridWindow::GridWindow(Window* pParent)
+ : Window(pParent, 0)
+ , m_aGridArea(50, 15, 100, 100)
+ , m_pXValues(NULL)
+ , m_pOrigYValues(NULL)
+ , m_nValues(0)
+ , m_pNewYValues(NULL)
+ , m_bCutValues(false)
+ , m_aHandles()
+ , m_nDragIndex(0xffffffff)
+ , m_aMarkerBitmap( FixedImage::loadThemeImage("extensions/source/scanner/handle.png").GetBitmapEx() )
{
- get(m_pOKButton, "ok");
- get(m_pResetTypeBox, "resetTypeCombobox");
- get(m_pResetButton, "resetButton");
-
- m_pResetTypeBox->SelectEntryPos( 0 );
+ SetMapMode(MapMode(MAP_PIXEL));
+}
- m_pResetButton->SetClickHdl( LINK( this, GridWindow, ClickButtonHdl ) );
+void GridWindow::Init(double* pXValues, double* pYValues, int nValues, bool bCutValues)
+{
+ m_pXValues = pXValues;
+ m_pOrigYValues = pYValues;
+ m_nValues = nValues;
+ m_bCutValues = bCutValues;
- SetMapMode( MapMode( MAP_PIXEL ) );
- Size aSize = GetOutputSizePixel();
- Size aBtnSize = m_pOKButton->GetOutputSizePixel();
- m_aGridArea.setWidth( aSize.Width() - aBtnSize.Width() - 80 );
- m_aGridArea.setHeight( aSize.Height() - 40 );
+ SetSizePixel(GetOptimalSize());
+ onResize();
- if( m_pOrigYValues && m_nValues )
+ if (m_pOrigYValues && m_nValues)
{
m_pNewYValues = new double[ m_nValues ];
memcpy( m_pNewYValues, m_pOrigYValues, sizeof( double ) * m_nValues );
@@ -89,6 +190,37 @@ GridWindow::GridWindow(double* pXValues, double* pYValues, int nValues, Window*
m_aHandles.push_back(impHandle(transform(findMaxX(), findMaxY()), m_BmOffX, m_BmOffY));
}
+void GridWindow::Resize()
+{
+ onResize();
+}
+
+void GridWindow::onResize()
+{
+ Size aSize = GetSizePixel();
+ m_aGridArea.setWidth( aSize.Width() - 80 );
+ m_aGridArea.setHeight( aSize.Height() - 40 );
+}
+
+Size GridWindow::GetOptimalSize() const
+{
+ return LogicToPixel(Size(240, 200), MAP_APPFONT);
+}
+
+GridDialog::GridDialog(double* pXValues, double* pYValues, int nValues, Window* pParent, bool bCutValues )
+ : ModalDialog(pParent, "GridDialog", "modules/scanner/ui/griddialog.ui")
+{
+ get(m_pOKButton, "ok");
+ get(m_pResetTypeBox, "resetTypeCombobox");
+ get(m_pResetButton, "resetButton");
+ get(m_pGridWindow, "gridwindow");
+ m_pGridWindow->Init(pXValues, pYValues, nValues, bCutValues);
+
+ m_pResetTypeBox->SelectEntryPos( 0 );
+
+ m_pResetButton->SetClickHdl( LINK( this, GridDialog, ClickButtonHdl ) );
+}
+
GridWindow::~GridWindow()
{
delete [] m_pNewYValues;
@@ -105,8 +237,6 @@ double GridWindow::findMinX()
return fMin;
}
-
-
double GridWindow::findMinY()
{
if( ! m_pNewYValues )
@@ -183,23 +313,17 @@ Point GridWindow::transform( double x, double y )
return aRet;
}
-
-
void GridWindow::transform( const Point& rOriginal, double& x, double& y )
{
x = ( rOriginal.X() - m_aGridArea.Left() ) * (m_fMaxX - m_fMinX) / (double)m_aGridArea.GetWidth() + m_fMinX;
y = ( m_aGridArea.Bottom() - rOriginal.Y() ) * (m_fMaxY - m_fMinY) / (double)m_aGridArea.GetHeight() + m_fMinY;
}
-
-
void GridWindow::drawLine( double x1, double y1, double x2, double y2 )
{
DrawLine( transform( x1, y1 ), transform( x2, y2 ) );
}
-
-
void GridWindow::computeChunk( double fMin, double fMax, double& fChunkOut, double& fMinChunkOut )
{
// get a nice chunk size like 10, 100, 25 or such
@@ -298,9 +422,12 @@ double GridWindow::interpolate(
return ret;
}
+void GridDialog::setBoundings(double fMinX, double fMinY, double fMaxX, double fMaxY)
+{
+ m_pGridWindow->setBoundings(fMinX, fMinY, fMaxX, fMaxY);
+}
-
-void GridWindow::setBoundings( double fMinX, double fMinY, double fMaxX, double fMaxY )
+void GridWindow::setBoundings(double fMinX, double fMinY, double fMaxX, double fMaxY)
{
m_fMinX = fMinX;
m_fMinY = fMinY;
@@ -311,8 +438,6 @@ void GridWindow::setBoundings( double fMinX, double fMinY, double fMaxX, double
computeChunk( m_fMinY, m_fMaxY, m_fChunkY, m_fMinChunkY );
}
-
-
void GridWindow::drawGrid()
{
char pBuf[256];
@@ -351,8 +476,6 @@ void GridWindow::drawGrid()
drawLine( m_fMaxX, m_fMinY, m_fMaxX, m_fMaxY );
}
-
-
void GridWindow::drawOriginal()
{
if( m_nValues && m_pXValues && m_pOrigYValues )
@@ -366,8 +489,6 @@ void GridWindow::drawOriginal()
}
}
-
-
void GridWindow::drawNew()
{
if( m_nValues && m_pXValues && m_pNewYValues )
@@ -383,8 +504,6 @@ void GridWindow::drawNew()
}
}
-
-
void GridWindow::drawHandles()
{
for(sal_uInt32 i(0L); i < m_aHandles.size(); i++)
@@ -393,19 +512,15 @@ void GridWindow::drawHandles()
}
}
-
-
void GridWindow::Paint( const Rectangle& rRect )
{
- ModalDialog::Paint( rRect );
+ Window::Paint(rRect);
drawGrid();
drawOriginal();
drawNew();
drawHandles();
}
-
-
void GridWindow::MouseMove( const MouseEvent& rEvt )
{
if( rEvt.GetButtons() == MOUSE_LEFT && m_nDragIndex != 0xffffffff )
@@ -436,7 +551,7 @@ void GridWindow::MouseMove( const MouseEvent& rEvt )
}
}
- ModalDialog::MouseMove( rEvt );
+ Window::MouseMove( rEvt );
}
void GridWindow::MouseButtonUp( const MouseEvent& rEvt )
@@ -452,7 +567,7 @@ void GridWindow::MouseButtonUp( const MouseEvent& rEvt )
}
}
- ModalDialog::MouseButtonUp( rEvt );
+ Window::MouseButtonUp( rEvt );
}
void GridWindow::MouseButtonDown( const MouseEvent& rEvt )
@@ -502,81 +617,95 @@ void GridWindow::MouseButtonDown( const MouseEvent& rEvt )
Paint( m_aGridArea );
}
- ModalDialog::MouseButtonDown( rEvt );
+ Window::MouseButtonDown( rEvt );
}
-IMPL_LINK( GridWindow, ClickButtonHdl, Button*, pButton )
+void GridWindow::ChangeMode(int nType)
{
- if( pButton == m_pResetButton )
+ switch( nType )
{
- int nType = m_pResetTypeBox->GetSelectEntryPos();
- switch( nType )
+ case LINEAR_ASCENDING:
{
- case LINEAR_ASCENDING:
+ for( int i = 0; i < m_nValues; i++ )
{
- for( int i = 0; i < m_nValues; i++ )
- {
- m_pNewYValues[ i ] = m_fMinY + (m_fMaxY-m_fMinY)/(m_fMaxX-m_fMinX)*(m_pXValues[i]-m_fMinX);
- }
+ m_pNewYValues[ i ] = m_fMinY + (m_fMaxY-m_fMinY)/(m_fMaxX-m_fMinX)*(m_pXValues[i]-m_fMinX);
}
- break;
- case LINEAR_DESCENDING:
- {
- for( int i = 0; i < m_nValues; i++ )
- {
- m_pNewYValues[ i ] = m_fMaxY - (m_fMaxY-m_fMinY)/(m_fMaxX-m_fMinX)*(m_pXValues[i]-m_fMinX);
- }
- }
- break;
- case RESET:
+ }
+ break;
+ case LINEAR_DESCENDING:
+ {
+ for( int i = 0; i < m_nValues; i++ )
{
- if( m_pOrigYValues && m_pNewYValues && m_nValues )
- memcpy( m_pNewYValues, m_pOrigYValues, m_nValues*sizeof(double) );
+ m_pNewYValues[ i ] = m_fMaxY - (m_fMaxY-m_fMinY)/(m_fMaxX-m_fMinX)*(m_pXValues[i]-m_fMinX);
}
- break;
- case EXPONENTIAL:
+ }
+ break;
+ case RESET:
+ {
+ if( m_pOrigYValues && m_pNewYValues && m_nValues )
+ memcpy( m_pNewYValues, m_pOrigYValues, m_nValues*sizeof(double) );
+ }
+ break;
+ case EXPONENTIAL:
+ {
+ for( int i = 0; i < m_nValues; i++ )
{
- for( int i = 0; i < m_nValues; i++ )
- {
- m_pNewYValues[ i ] = m_fMinY + (m_fMaxY-m_fMinY)*(std::exp((m_pXValues[i]-m_fMinX)/(m_fMaxX-m_fMinX))-1.0)/(M_E-1.0);
- }
+ m_pNewYValues[ i ] = m_fMinY + (m_fMaxY-m_fMinY)*(std::exp((m_pXValues[i]-m_fMinX)/(m_fMaxX-m_fMinX))-1.0)/(M_E-1.0);
}
- break;
-
- default:
- break;
}
+ break;
- if (m_pNewYValues)
+ default:
+ break;
+ }
+
+ if (m_pNewYValues)
+ {
+ for(sal_uInt32 i(0L); i < m_aHandles.size(); i++)
{
- for(sal_uInt32 i(0L); i < m_aHandles.size(); i++)
+ // find nearest xvalue
+ double x, y;
+ transform( m_aHandles[i].maPos, x, y );
+ int nIndex = 0;
+ double delta = std::fabs( x-m_pXValues[0] );
+ for( int n = 1; n < m_nValues; n++ )
{
- // find nearest xvalue
- double x, y;
- transform( m_aHandles[i].maPos, x, y );
- int nIndex = 0;
- double delta = std::fabs( x-m_pXValues[0] );
- for( int n = 1; n < m_nValues; n++ )
+ if( delta > std::fabs( x - m_pXValues[ n ] ) )
{
- if( delta > std::fabs( x - m_pXValues[ n ] ) )
- {
- delta = std::fabs( x - m_pXValues[ n ] );
- nIndex = n;
- }
+ delta = std::fabs( x - m_pXValues[ n ] );
+ nIndex = n;
}
- if( 0 == i )
- m_aHandles[i].maPos = transform( m_fMinX, m_pNewYValues[ nIndex ] );
- else if( m_aHandles.size() - 1L == i )
- m_aHandles[i].maPos = transform( m_fMaxX, m_pNewYValues[ nIndex ] );
- else
- m_aHandles[i].maPos = transform( m_pXValues[ nIndex ], m_pNewYValues[ nIndex ] );
}
+ if( 0 == i )
+ m_aHandles[i].maPos = transform( m_fMinX, m_pNewYValues[ nIndex ] );
+ else if( m_aHandles.size() - 1L == i )
+ m_aHandles[i].maPos = transform( m_fMaxX, m_pNewYValues[ nIndex ] );
+ else
+ m_aHandles[i].maPos = transform( m_pXValues[ nIndex ], m_pNewYValues[ nIndex ] );
}
+ }
- Invalidate( m_aGridArea );
- Paint(Rectangle());
+ Invalidate();
+}
+
+IMPL_LINK( GridDialog, ClickButtonHdl, Button*, pButton )
+{
+ if (pButton == m_pResetButton)
+ {
+ int nType = m_pResetTypeBox->GetSelectEntryPos();
+ m_pGridWindow->ChangeMode(nType);
}
return 0;
}
+double* GridDialog::getNewYValues()
+{
+ return m_pGridWindow->getNewYValues();
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeGridWindow(Window *pParent, VclBuilder::stringmap &)
+{
+ return new GridWindow(pParent);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/extensions/source/scanner/grid.hxx b/extensions/source/scanner/grid.hxx
index da59d6560610..7416c6abcfe4 100644
--- a/extensions/source/scanner/grid.hxx
+++ b/extensions/source/scanner/grid.hxx
@@ -25,125 +25,33 @@
#include <vcl/dialog.hxx>
#include <vcl/fixed.hxx>
-class GridWindow : public ModalDialog
-{
- // helper class for handles
- struct impHandle
- {
- Point maPos;
- sal_uInt16 mnOffX;
- sal_uInt16 mnOffY;
-
- impHandle(const Point& rPos, sal_uInt16 nX, sal_uInt16 nY)
- : maPos(rPos), mnOffX(nX), mnOffY(nY)
- {
- }
-
- bool operator<(const impHandle& rComp) const
- {
- return (maPos.X() < rComp.maPos.X());
- }
-
- void draw(Window& rWin, const BitmapEx& rBitmapEx)
- {
- const Point aOffset(rWin.PixelToLogic(Point(mnOffX, mnOffY)));
- rWin.DrawBitmapEx(maPos - aOffset, rBitmapEx);
- }
-
- bool isHit(Window& rWin, const Point& rPos)
- {
- const Point aOffset(rWin.PixelToLogic(Point(mnOffX, mnOffY)));
- const Rectangle aTarget(maPos - aOffset, maPos + aOffset);
- return aTarget.IsInside(rPos);
- }
- };
-
- enum resetType
- {
- LINEAR_ASCENDING = 0,
- LINEAR_DESCENDING = 1,
- RESET = 2,
- EXPONENTIAL = 3
- };
-
- Rectangle m_aGridArea;
-
- double m_fMinX;
- double m_fMinY;
- double m_fMaxX;
- double m_fMaxY;
-
- double m_fChunkX;
- double m_fMinChunkX;
- double m_fChunkY;
- double m_fMinChunkY;
-
- double* m_pXValues;
- double* m_pOrigYValues;
- int m_nValues;
- double* m_pNewYValues;
-
- sal_uInt16 m_BmOffX;
- sal_uInt16 m_BmOffY;
-
- bool m_bCutValues;
+class GridWindow;
- // stuff for handles
- std::vector< impHandle > m_aHandles;
- sal_uInt32 m_nDragIndex;
-
- BitmapEx m_aMarkerBitmap;
+enum resetType
+{
+ LINEAR_ASCENDING = 0,
+ LINEAR_DESCENDING = 1,
+ RESET = 2,
+ EXPONENTIAL = 3
+};
+class GridDialog : public ModalDialog
+{
OKButton* m_pOKButton;
ListBox* m_pResetTypeBox;
PushButton* m_pResetButton;
-
- Point transform( double x, double y );
- void transform( const Point& rOriginal, double& x, double& y );
-
- double findMinX();
- double findMinY();
- double findMaxX();
- double findMaxY();
-
- void updateRectSize();
-
- void drawGrid();
- void drawOriginal();
- void drawNew();
- void drawHandles();
-
- void computeExtremes();
- void computeChunk( double fMin, double fMax, double& fChunkOut, double& fMinChunkOut );
- void computeNew();
- double interpolate( double x, double* pNodeX, double* pNodeY, int nNodes );
+ GridWindow* m_pGridWindow;
DECL_LINK( ClickButtonHdl, Button* );
- virtual void MouseMove( const MouseEvent& ) SAL_OVERRIDE;
- virtual void MouseButtonDown( const MouseEvent& ) SAL_OVERRIDE;
- virtual void MouseButtonUp( const MouseEvent& ) SAL_OVERRIDE;
public:
- GridWindow( double* pXValues, double* pYValues, int nValues,
- Window* pParent, bool bCutValues = true );
- virtual ~GridWindow();
-
- void setBoundings( double fMinX, double fMinY, double fMaxX, double fMaxY );
- double getMinX() { return m_fMinX; }
- double getMinY() { return m_fMinY; }
- double getMaxX() { return m_fMaxX; }
- double getMaxY() { return m_fMaxY; }
-
- int countValues() { return m_nValues; }
- double* getXValues() { return m_pXValues; }
- double* getOrigYValues() { return m_pOrigYValues; }
- double* getNewYValues() { return m_pNewYValues; }
-
- void drawLine( double x1, double y1, double x2, double y2 );
+ GridDialog(double* pXValues, double* pYValues, int nValues,
+ Window* pParent, bool bCutValues = true);
- virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
+ void setBoundings(double fMinX, double fMinY, double fMaxX, double fMaxY);
+ double* getNewYValues();
};
#endif // INCLUDED_EXTENSIONS_SOURCE_SCANNER_GRID_HXX
diff --git a/extensions/source/scanner/sanedlg.cxx b/extensions/source/scanner/sanedlg.cxx
index ebae9fec9ed6..6e431bd78520 100644
--- a/extensions/source/scanner/sanedlg.cxx
+++ b/extensions/source/scanner/sanedlg.cxx
@@ -559,7 +559,7 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
x[ i ] = (double)i;
mrSane.GetOptionValue( mnCurrentOption, y.get() );
- GridWindow aGrid( x.get(), y.get(), nElements, this );
+ GridDialog aGrid( x.get(), y.get(), nElements, this );
aGrid.SetText( mrSane.GetOptionName( mnCurrentOption ) );
aGrid.setBoundings( 0, mfMin, nElements, mfMax );
if( aGrid.Execute() && aGrid.getNewYValues() )
diff --git a/extensions/uiconfig/scanner/ui/griddialog.ui b/extensions/uiconfig/scanner/ui/griddialog.ui
index 1d95b3cd917b..25638a5e43d1 100644
--- a/extensions/uiconfig/scanner/ui/griddialog.ui
+++ b/extensions/uiconfig/scanner/ui/griddialog.ui
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
<interface>
- <!-- interface-requires gtk+ 3.0 -->
+ <!-- interface-requires LibreOffice 1.0 -->
+ <requires lib="gtk+" version="3.0"/>
<object class="GtkDialog" id="GridDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
@@ -20,8 +22,9 @@
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -37,7 +40,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -47,9 +49,15 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="resetTypeCombobox">
+ <object class="GtkComboBoxText" id="resetTypeCombobox">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <items>
+ <item translatable="yes">Linear ascending</item>
+ <item translatable="yes">Linear descending</item>
+ <item translatable="yes">Original values</item>
+ <item translatable="yes">Exponential increasing</item>
+ </items>
</object>
<packing>
<property name="expand">False</property>
@@ -64,7 +72,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -82,7 +89,19 @@
</packing>
</child>
<child>
- <placeholder/>
+ <object class="scnlo-GridWindow" id="gridwindow">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
</child>