public MainDemograftSim() { window = new Window("HDemografiSim"); window.DeleteEvent += (o, eargs) => { Application.Quit(); eargs.RetVal = true; }; window.ModifyBg(StateType.Normal, new Gdk.Color(130, 130, 160)); ageDistribution = new HIndexedChartLine("Age Distribution", new DColor(250, 100, 255)); ageDistribution.AddPoints(); ageDistributionChart = new HChart("Age chart", ageDistribution); AddDefaultToAgeDist(); populationLine = new HIndexedChartLine("Population", new DColor(200, 140, 255)); populationChart = new HChart("Population chart", populationLine); RecalculatePopulation(); birthRate = new HIndexedChartLine("Birth rate", new DColor(100, 140, 255)); deathRate = new HIndexedChartLine("Death rate", new DColor(55, 80, 180)); rateChart = new HChart("Rates Chart", birthRate, deathRate); //RecalculateRates (0, 2, 1000); //RecalculateRates (0, 2, 1000); chanceOfDeath = new HStandardChartLine("Chance of death", new DColor(255, 80, 180)); chanceOfDeath.AddPoint(0, 0.003f); chanceOfDeath.AddPoint(4, 0.001f); chanceOfDeath.AddPoint(8, 0.0005f); chanceOfDeath.AddPoint(16, 0.001f); chanceOfDeath.AddPoint(25, 0.0005f); chanceOfDeath.AddPoint(60, 0.003f); chanceOfDeath.AddPoint(80, 0.01f); chanceOfDeath.AddPoint(90, 0.03f); chanceOfDeath.AddPoint(119, 0.4f); chanceOfDeath.AddPoint(120, 0f); how1000PeopleDie = new HIndexedChartLine("How 1000 people die", new DColor(255, 20, 40)); chanceOfDeathChart = new HDoubleChart("Death Chart", new HChartLine[] { how1000PeopleDie }, chanceOfDeath); OnChanceOfDeathUpdated(); var charts = new Table(2, 2, true); charts.SetRowSpacing(0, 10); charts.SetColSpacing(0, 10); charts.Attach(ageDistributionChart, 0, 1, 0, 1); charts.Attach(populationChart, 1, 2, 0, 1); charts.Attach(chanceOfDeathChart, 0, 1, 1, 2); charts.Attach(rateChart, 1, 2, 1, 2); var prevYear = new Button("Prev Year"); prevYear.Clicked += (sender, e) => PrevYear(); var nextYear = new Button("Next Year"); nextYear.Clicked += (sender, e) => NextYear(); var clearHistory = new Button("Halv history"); clearHistory.Clicked += (sender, e) => ClearHistory(); var traceCharts = new Button("Tace age distribution"); traceCharts.Clicked += (sender, e) => TraceCharts(); var shrinkCharts = new Button("Shrink Charts"); shrinkCharts.Clicked += (sender, e) => ShrinkCharts(); var fertilityRateLabel = new Label("Fertility rate:"); fertilityRateLabel.ModifyFont(Pango.FontDescription.FromString("Sans 12")); fertilitySpinner = new SpinButton(0, 100, 0.01f); fertilitySpinner.Value = 2.1f; fertilitySpinner.SnapToTicks = false; var fertilitySettings = new HBox(false, 1); fertilitySettings.SetSizeRequest(10, -1); fertilitySpinner.ModifyBg(StateType.Normal, new Gdk.Color(150, 190, 200)); fertilitySettings.Add(fertilityRateLabel); fertilitySettings.Add(fertilitySpinner); var bottomBar = new Table(1, 8, false); bottomBar.SetSizeRequest(-1, 30); bottomBar.Attach(prevYear, 0, 1, 0, 1); bottomBar.Attach(nextYear, 1, 2, 0, 1); bottomBar.Attach(clearHistory, 2, 3, 0, 1); bottomBar.Attach(traceCharts, 3, 4, 0, 1); bottomBar.Attach(shrinkCharts, 4, 5, 0, 1); bottomBar.Attach(fertilitySettings, 5, 8, 0, 1); var everythingBox = new VBox(false, 1); everythingBox.PackStart(charts, true, true, 0); everythingBox.PackStart(bottomBar, false, false, 0); window.Add(everythingBox); window.ShowAll(); }