diff options
author | Tomaž Vajngerl <quikee@gmail.com> | 2013-07-17 18:04:28 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2013-07-19 16:57:37 +0200 |
commit | a3759155707ee18ea5013bb42da93fbe9894a0cb (patch) | |
tree | b7346a2471e464259c6f5238d99607679406caed | |
parent | f2c9aa43666101c6970ea33f50fb4e780b99b97c (diff) |
SamplingDialog: add random and periodic method of sampling
Change-Id: I1ed75d1434751da017070fb6903f6288defa02b6
-rw-r--r-- | sc/AllLangResTarget_sc.mk | 1 | ||||
-rw-r--r-- | sc/inc/globstr.hrc | 2 | ||||
-rw-r--r-- | sc/source/ui/StatisticsDialogs/SamplingDialog.cxx | 182 | ||||
-rw-r--r-- | sc/source/ui/StatisticsDialogs/SamplingDialog.src | 28 | ||||
-rw-r--r-- | sc/source/ui/inc/SamplingDialog.hxx | 9 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/samplingdialog.ui | 328 |
6 files changed, 400 insertions, 150 deletions
diff --git a/sc/AllLangResTarget_sc.mk b/sc/AllLangResTarget_sc.mk index 536e95461f34..4de23aa4fa0f 100644 --- a/sc/AllLangResTarget_sc.mk +++ b/sc/AllLangResTarget_sc.mk @@ -84,6 +84,7 @@ $(eval $(call gb_SrsTarget_add_files,sc/res,\ sc/source/ui/formdlg/dwfunctr.src \ sc/source/ui/sidebar/CellAppearancePropertyPanel.src \ sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.src \ + sc/source/ui/StatisticsDialogs/SamplingDialog.src \ sc/source/core/src/compiler.src \ )) diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc index 31694f1297d5..458e775a1a10 100644 --- a/sc/inc/globstr.hrc +++ b/sc/inc/globstr.hrc @@ -704,6 +704,8 @@ #define STR_RNG_PARAMETER_STANDARD_NUMBER_OF_TRIALS 571 #define STR_RNG_PARAMETER_STANDARD_NU_VALUE 572 +#define STR_SAMPLING_UNDO_NAME 573 + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx index c9e8c3462e01..d78d901f8a13 100644 --- a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx +++ b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx @@ -55,6 +55,12 @@ ScSamplingDialog::ScSamplingDialog( get(mpOutputRangeButton, "output-range-button"); mpOutputRangeButton->SetReferences(this, mpOutputRangeEdit); + get(mpSampleSize, "sample-size-spin"); + get(mpPeriod, "period-spin"); + + get(mpRandomMethodRadio, "random-method-radio"); + get(mpPeriodicMethodRadio, "periodic-method-radio"); + get(mpButtonOk, "ok"); get(mpButtonApply, "apply"); get(mpButtonCancel, "cancel"); @@ -68,6 +74,8 @@ void ScSamplingDialog::Init() mpButtonOk->SetClickHdl( LINK( this, ScSamplingDialog, OkClicked ) ); mpButtonCancel->SetClickHdl( LINK( this, ScSamplingDialog, CancelClicked ) ); mpButtonApply->SetClickHdl( LINK( this, ScSamplingDialog, ApplyClicked ) ); + mpButtonOk->Enable(false); + mpButtonApply->Enable(false); Link aLink = LINK( this, ScSamplingDialog, GetFocusHandler ); mpInputRangeEdit->SetGetFocusHdl( aLink ); @@ -80,20 +88,31 @@ void ScSamplingDialog::Init() mpInputRangeButton->SetLoseFocusHdl( aLink ); mpOutputRangeEdit->SetLoseFocusHdl( aLink ); mpOutputRangeButton->SetLoseFocusHdl( aLink ); + + mpSampleSize->SetModifyHdl( LINK( this, ScSamplingDialog, SamplingSizeValueModified )); + + mpPeriodicMethodRadio->SetToggleHdl( LINK( this, ScSamplingDialog, ToggleSamplingMethod ) ); + mpRandomMethodRadio->SetToggleHdl( LINK( this, ScSamplingDialog, ToggleSamplingMethod ) ); + + mpSampleSize->SetMin( 0 ); + mpSampleSize->SetMax( SAL_MAX_INT64 ); + + mpOutputRangeEdit->GrabFocus(); + mpPeriodicMethodRadio->Check(true); + + ToggleSamplingMethod(NULL); } void ScSamplingDialog::GetRangeFromSelection() { OUString aCurrentString; mViewData->GetSimpleArea(mInputRange); - mInputRange.Format( aCurrentString, ABS_DREF3D, mDocument, mAddressDetails ); - mpInputRangeEdit->SetText( aCurrentString ); + mInputRange.Format(aCurrentString, ABS_DREF3D, mDocument, mAddressDetails); + mpInputRangeEdit->SetText(aCurrentString); } - ScSamplingDialog::~ScSamplingDialog() -{ -} +{} void ScSamplingDialog::SetActive() { @@ -133,77 +152,112 @@ void ScSamplingDialog::SetReference( const ScRange& rReferenceRange, ScDocument* else if ( mpActiveEdit == mpOutputRangeEdit ) { mOutputAddress = rReferenceRange.aStart; - sal_uInt16 nFormat = ( mOutputAddress.Tab() == mCurrentAddress.Tab() ) ? SCA_ABS : SCA_ABS_3D; + + sal_uInt16 nFormat = ( mOutputAddress.Tab() == mCurrentAddress.Tab() ) ? SCA_ABS : SCA_ABS_3D; mOutputAddress.Format( aReferenceString, nFormat, pDocument, pDocument->GetAddressConvention() ); - mpActiveEdit->SetRefString( aReferenceString ); + mpOutputRangeEdit->SetRefString( aReferenceString ); + + // Change sampling size according to output range selection + sal_Int64 aSelectedSampleSize = rReferenceRange.aEnd.Row() - rReferenceRange.aStart.Row() + 1; + if (aSelectedSampleSize > 1) + mpSampleSize->SetValue(aSelectedSampleSize); + SamplingSizeValueModified(NULL); + + // Enable OK, Cancel if output range is set + mpButtonOk->Enable(!mpOutputRangeEdit->GetText().isEmpty()); + mpButtonApply->Enable(!mpOutputRangeEdit->GetText().isEmpty()); + } } } void ScSamplingDialog::PerformSampling() { - OUString aUndo("A"); + OUString aUndo(ScResId(STR_SAMPLING_UNDO_NAME)); ScDocShell* pDocShell = mViewData->GetDocShell(); svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager(); pUndoManager->EnterListAction( aUndo, aUndo ); - SCCOL nColStart = mInputRange.aStart.Col(); - SCCOL nColEnd = mInputRange.aEnd.Col(); - SCROW nRowStart = mInputRange.aStart.Row(); - SCROW nRowEnd = mInputRange.aEnd.Row(); - SCTAB nTabStart = mInputRange.aStart.Tab(); - SCTAB nTabEnd = mInputRange.aEnd.Tab(); - - TimeValue now; - osl_getSystemTime(&now); - boost::mt19937 seed(now.Nanosec); - boost::uniform_01<boost::mt19937> rng(seed); - - SCTAB nOutTab = mOutputAddress.Tab(); - SCCOL nOutCol = mOutputAddress.Col(); - SCROW nOutRow = mOutputAddress.Row(); - for (SCROW nTab = nTabStart; nTab <= nTabEnd; nTab++) + ScAddress aStart = mInputRange.aStart; + ScAddress aEnd = mInputRange.aEnd; + + SCTAB outTab = mOutputAddress.Tab(); + SCCOL outCol = mOutputAddress.Col(); + SCROW outRow = mOutputAddress.Row(); + + if (mpRandomMethodRadio->IsChecked()) { - nOutCol = mOutputAddress.Col(); - for (SCCOL nCol = nColStart; nCol <= nColEnd; nCol++) - { - nOutRow = mOutputAddress.Row(); - SCROW nRow = nRowStart; + TimeValue now; + osl_getSystemTime(&now); + boost::mt19937 seed(now.Nanosec); + boost::uniform_01<boost::mt19937> rng(seed); + + SCROW inRow; - SCROW t = 0; - SCROW N = (nRowEnd - nRowStart) + 1; - int m = 0; - int n = 3; - double u; + sal_Int64 aSampleSize = mpSampleSize->GetValue(); - while (m < n) + for (SCROW inTab = aStart.Tab(); inTab <= aEnd.Tab(); inTab++) + { + outCol = mOutputAddress.Col(); + for (SCCOL inCol = aStart.Col(); inCol <= aEnd.Col(); inCol++) { - u = rng(); - if ( (N - t)*u >= n - m ) + SCROW aPopulationSize = (aEnd.Row() - aStart.Row()) + 1; + + outRow = mOutputAddress.Row(); + inRow = aStart.Row(); + + double aRandomValue; + + while ((outRow - mOutputAddress.Row()) < aSampleSize) { - nRow++; - t++; + aRandomValue = rng(); + + if ( (aPopulationSize - (inRow - aStart.Row())) * aRandomValue >= aSampleSize - (outRow - mOutputAddress.Row()) ) + { + inRow++; + } + else + { + double aValue = mDocument->GetValue( ScAddress(inCol, inRow, inTab) ); + pDocShell->GetDocFunc().SetValueCell(ScAddress(outCol, outRow, outTab), aValue, true); + inRow++; + outRow++; + } } - else + outCol++; + } + outTab++; + } + } + else if (mpPeriodicMethodRadio->IsChecked()) + { + sal_Int64 aPeriod = mpPeriod->GetValue(); + + for (SCROW inTab = aStart.Tab(); inTab <= aEnd.Tab(); inTab++) + { + outCol = mOutputAddress.Col(); + for (SCCOL inCol = aStart.Col(); inCol <= aEnd.Col(); inCol++) + { + sal_Int64 i = 0; + outRow = mOutputAddress.Row(); + for (SCROW inRow = aStart.Row(); inRow <= aEnd.Row(); inRow++) { - double aValue = mDocument->GetValue( ScAddress(nCol, nRow, nTab) ); - pDocShell->GetDocFunc().SetValueCell(ScAddress(nOutCol, nOutRow, nOutTab), aValue, true); - nRow++; - nOutRow++; - m++; - t++; + if (i % aPeriod == aPeriod - 1 ) // Sample the last of period + { + double aValue = mDocument->GetValue(ScAddress(inCol, inRow, inTab)); + pDocShell->GetDocFunc().SetValueCell(ScAddress(outCol, outRow, outTab), aValue, true); + outRow++; + } + i++; } + outCol++; } - - nOutCol++; + outTab++; } - nOutTab++; } - ScRange aOutputRange(mOutputAddress, ScAddress(nOutCol, nOutRow, nOutTab) ); - + ScRange aOutputRange(mOutputAddress, ScAddress(outTab, outRow, outTab) ); pUndoManager->LeaveListAction(); - pDocShell->PostPaint( aOutputRange, PAINT_GRID ); } @@ -248,4 +302,28 @@ IMPL_LINK_NOARG(ScSamplingDialog, LoseFocusHandler) return 0; } +IMPL_LINK_NOARG(ScSamplingDialog, SamplingSizeValueModified) +{ + sal_Int64 aPopulationSize = mInputRange.aEnd.Row() - mInputRange.aStart.Row() + 1; + if (mpSampleSize->GetValue() > aPopulationSize) + mpSampleSize->SetValue(aPopulationSize); + return 0; +} + +IMPL_LINK_NOARG(ScSamplingDialog, ToggleSamplingMethod) +{ + if (mpRandomMethodRadio->IsChecked()) + { + mpPeriod->Enable(false); + mpSampleSize->Enable(true); + } + else if (mpPeriodicMethodRadio->IsChecked()) + { + mpPeriod->Enable(true); + mpSampleSize->Enable(false); + } + return 0; +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/StatisticsDialogs/SamplingDialog.src b/sc/source/ui/StatisticsDialogs/SamplingDialog.src new file mode 100644 index 000000000000..e7eef3ac9ccb --- /dev/null +++ b/sc/source/ui/StatisticsDialogs/SamplingDialog.src @@ -0,0 +1,28 @@ +/* -*- 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 . + */ + +#include "globstr.hrc" + +String STR_SAMPLING_UNDO_NAME +{ + Text [ en-US ] = "Sampling"; +}; + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/SamplingDialog.hxx b/sc/source/ui/inc/SamplingDialog.hxx index b46524a940bf..c57390586013 100644 --- a/sc/source/ui/inc/SamplingDialog.hxx +++ b/sc/source/ui/inc/SamplingDialog.hxx @@ -42,6 +42,12 @@ private: formula::RefEdit* mpOutputRangeEdit; formula::RefButton* mpOutputRangeButton; + NumericField* mpSampleSize; + NumericField* mpPeriod; + + RadioButton* mpRandomMethodRadio; + RadioButton* mpPeriodicMethodRadio; + PushButton* mpButtonApply; OKButton* mpButtonOk; CancelButton* mpButtonCancel; @@ -70,7 +76,8 @@ private: DECL_LINK( ApplyClicked, PushButton* ); DECL_LINK( GetFocusHandler, Control* ); DECL_LINK( LoseFocusHandler, void* ); - + DECL_LINK( SamplingSizeValueModified, void* ); + DECL_LINK( ToggleSamplingMethod, void* ); }; #endif diff --git a/sc/uiconfig/scalc/ui/samplingdialog.ui b/sc/uiconfig/scalc/ui/samplingdialog.ui index 690c37a53870..cd6bd2155a25 100644 --- a/sc/uiconfig/scalc/ui/samplingdialog.ui +++ b/sc/uiconfig/scalc/ui/samplingdialog.ui @@ -2,9 +2,17 @@ <interface> <!-- interface-requires gtk+ 3.0 --> <!-- interface-requires LibreOffice 1.0 --> + <object class="GtkAdjustment" id="period-adjustment"> + <property name="lower">1</property> + <property name="upper">100</property> + <property name="value">1</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> <object class="GtkDialog" id="SamplingDialog"> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="title" translatable="yes">Sampling</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -70,119 +78,240 @@ </packing> </child> <child> - <object class="GtkFrame" id="frame1"> + <object class="GtkGrid" id="grid1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="input-range-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Input Range</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="foruilo-RefEdit" id="input-range-edit"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="valign">center</property> + <property name="hexpand">True</property> + <property name="invisible_char">•</property> + <property name="width_chars">30</property> + <property name="invisible_char_set">True</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> + <child> + <object class="foruilo-RefButton" id="input-range-button"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="output-range-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Output Range</property> + </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> <child> - <object class="GtkAlignment" id="alignment1"> + <object class="foruilo-RefEdit" id="output-range-edit"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="valign">center</property> + <property name="hexpand">True</property> + <property name="invisible_char">•</property> + <property name="width_chars">30</property> + <property name="invisible_char_set">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="foruilo-RefButton" id="output-range-button"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="left_padding">12</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">in</property> <child> - <object class="GtkGrid" id="grid1"> + <object class="GtkAlignment" id="alignment2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - <child> - <object class="GtkLabel" id="input-range-label"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Input Range</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> + <property name="top_padding">6</property> + <property name="bottom_padding">6</property> + <property name="left_padding">12</property> + <property name="right_padding">12</property> <child> - <object class="foruilo-RefEdit" id="input-range-edit"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="valign">center</property> - <property name="hexpand">True</property> - <property name="invisible_char">•</property> - <property name="invisible_char_set">True</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> - <child> - <object class="foruilo-RefButton" id="input-range-button"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="receives_default">True</property> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="output-range-label"> + <object class="GtkGrid" id="grid2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Output Range</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkSpinButton" id="sample-size-spin"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="invisible_char">•</property> + <property name="invisible_char_set">True</property> + <property name="adjustment">sample-size-adjustment</property> + <property name="update_policy">if-valid</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</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">12</property> + <property name="hexpand">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Sample SIze</property> + <property name="justify">center</property> + </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> + <child> + <object class="GtkRadioButton" id="random-method-radio"> + <property name="label" translatable="yes">Random</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="receives_default">False</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">periodic-method-radio</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="periodic-method-radio"> + <property name="label" translatable="yes">Periodic</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="receives_default">False</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">random-method-radio</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="period-spin"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="invisible_char">•</property> + <property name="invisible_char_set">True</property> + <property name="adjustment">period-adjustment</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="hexpand">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Period</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </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> - <child> - <object class="foruilo-RefEdit" id="output-range-edit"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="valign">center</property> - <property name="hexpand">True</property> - <property name="invisible_char">•</property> - <property name="invisible_char_set">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="foruilo-RefButton" id="output-range-button"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="receives_default">True</property> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> </child> </object> </child> + <child type="label"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Sampling Method</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> </object> - </child> - <child type="label"> - <object class="GtkLabel" id="sampling-label"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xalign">0.4699999988079071</property> - <property name="label" translatable="yes">Sampling</property> - </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">3</property> + <property name="height">1</property> + </packing> </child> </object> <packing> @@ -199,4 +328,9 @@ <action-widget response="0">cancel</action-widget> </action-widgets> </object> + <object class="GtkAdjustment" id="sample-size-adjustment"> + <property name="upper">100</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> </interface> |