public static void Load()
 {
     if (File.Exists(path))
     {
         TextReader treader = new StreamReader(path);
         JsonReader reader = new JsonTextReader(treader);
         instance = JsonConvert.DeserializeObject<GardenPlannerSettings>(treader.ReadToEnd());
         if (instance == null)
             instance = new GardenPlannerSettings();
         reader.Close();
     }
 }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            //System.IO.StreamWriter streamWriter = new System.IO.StreamWriter("/tmp/gplanner.json");
            //string ser = Newtonsoft.Json.JsonConvert.SerializeObject(translation);
            //System.Console.WriteLine(ser);
            //streamWriter.Write(ser);
            //streamWriter.Flush();

            GardenPlannerSettings.Load();

            Application.Init();
            MainWindow win = MainWindow.GetInstance();

            win.Show();
            Application.Run();
        }
Esempio n. 3
0
        public EditPlantingInfoWindow(PlantingInfo plantingInfo, System.Action <PlantingInfo> okAction) : base("Edit planting information")
        {
            GardenPlannerSettings settings = GardenPlannerSettings.GetSettings();

            AddControlButton("cancel", () =>
            {
                this.Destroy();
            });
            AddControlButton("ok", () =>
            {
                plantingInfo.Count = numberPlantsSpinButton.ValueAsInt;
                plantingInfo.PlannedPlantingDate = plannedDateBox.GetDate();
                plantingInfo.AlreadyPlanted      = alreadyPlantedButton.Active;
                plantingInfo.PlantingDate        = actualDateBox.GetDate();
                this.Destroy();
                okAction.Invoke(plantingInfo);
            });

            numberPlantsSpinButton       = new SpinButton(1, settings.MaxPlantingCount, 1);
            numberPlantsSpinButton.Value = plantingInfo.Count;
            AddLabeledEntry("Number of plants", numberPlantsSpinButton);

            plannedDateBox = new DateEntryBox("planned planting date", DateEntryType.MiddleMonthDateEntry);
            plannedDateBox.SetDate(plantingInfo.PlannedPlantingDate);
            AddEntry(plannedDateBox);

            alreadyPlantedButton = new CheckButton("already planted")
            {
                Active = plantingInfo.AlreadyPlanted
            };
            alreadyPlantedButton.Clicked += (sender, e) =>
            {
                actualDateBox.Sensitive = alreadyPlantedButton.Active;
            };

            AddEntry(alreadyPlantedButton);

            actualDateBox = new DateEntryBox("planted on", DateEntryType.DayDateEntry)
            {
                Sensitive = alreadyPlantedButton.Active
            };
            actualDateBox.SetDate(plantingInfo.PlantingDate);
            AddEntry(actualDateBox);
        }
Esempio n. 4
0
        public DateEntryBox(string label, DateEntryType dateEntryType = DateEntryType.MonthDateEntry) : base(label)
        {
            GardenPlannerSettings settings = GardenPlannerSettings.GetSettings();

            VBox mainVBox = new VBox();

            Label labelYear = new Label("Year");

            spinButtonYear = new SpinButton(settings.MinYear, settings.MaxYear, 1);
            HBox hBoxYear = new HBox
            {
                labelYear,
                spinButtonYear
            };

            mainVBox.Add(hBoxYear);

            Label labelDay = new Label("Day");

            spinButtonDay = new SpinButton(1, 31, 1);
            HBox hBoxDay = new HBox
            {
                labelDay,
                spinButtonDay
            };



            Label labelMonth = new Label("Month");

            spinButtonMonth = new SpinButton(1, 12, 1);
            HBox hBoxMonth = new HBox
            {
                labelMonth,
                spinButtonMonth
            };

            mainVBox.Add(hBoxMonth);

            radioMiddle    = new RadioButton("middle");
            radioBeginning = new RadioButton(radioMiddle, "beginning");
            switch (dateEntryType)
            {
            case DateEntryType.MonthDateEntry:
                break;

            case DateEntryType.MiddleMonthDateEntry:
                Label labelMiddleMonth = new Label("Time of month");
                HBox  hBoxRadios       = new HBox
                {
                    radioMiddle,
                    radioBeginning
                };
                HBox hBoxMiddleMonth = new HBox
                {
                    labelMiddleMonth,
                    hBoxRadios
                };

                mainVBox.Add(hBoxMiddleMonth);
                break;

            case DateEntryType.DayDateEntry:
                mainVBox.Add(hBoxDay);
                break;
            }

            this.Add(mainVBox);
        }
Esempio n. 5
0
        public MainWindowMenuBar()
        {
            GardenPlannerSettings settings = GardenPlannerSettings.GetSettings();

            FileItem.Submenu = FileMenu;
            FileMenu.Add(MenuItemNew);
            FileMenu.Add(MenuItemLoad);
            FileMenu.Add(MenuItemSave);
            FileMenu.Add(MenuItemImportFamilies);
            FileMenu.Add(MenuItemClose);
            Append(FileItem);

            MenuItemClose.Activated          += CloseAction;
            MenuItemNew.Activated            += NewAction;
            MenuItemSave.Activated           += SaveAction;
            MenuItemLoad.Activated           += LoadAction;
            MenuItemImportFamilies.Activated += ImportFamiliesAction;


            SettingsItem.Submenu = SettingsMenu;
            SettingsMenu.Add(LanguageItem);
            LanguageItem.Submenu = LanguageMenu;
            RadioMenuItem group = null;
            bool          init  = true;

            foreach (KeyValuePair <string, Translation> pair in Translation.BuiltIn)
            {
                RadioMenuItem radioItem = group == null ? new RadioMenuItem(pair.Key) : new RadioMenuItem(group, pair.Key);
                group                = radioItem;
                radioItem.Active     = settings.Language.Equals(pair.Key);
                radioItem.Activated += (sender, e) => {
                    if (init)//during program initialization this should not be executed
                    {
                        return;
                    }
                    settings.Language = pair.Key;
                    Translation.GetTranslation(pair.Key);
                    MainWindow.GetInstance().ResetForNewData();
                };
                LanguageMenu.Append(radioItem);
            }
            init = false;

            ShowAreaImagesItem.Active     = settings.ShowAreaImages;
            ShowAreaImagesItem.Activated += (sender, e) =>
            {
                settings.ShowAreaImages = ShowAreaImagesItem.Active;
                GardenDrawingArea.ActiveInstance?.Draw();
            };
            SettingsMenu.Append(ShowAreaImagesItem);

            ShowPlantNames.Active     = settings.ShowPlantNames;
            ShowPlantNames.Activated += (sender, e) =>
            {
                settings.ShowPlantNames = ShowPlantNames.Active;
                GardenDrawingArea.ActiveInstance?.Draw();
            };
            SettingsMenu.Append(ShowPlantNames);
            ShowVarietyNames.Active     = settings.ShowVarietyNames;
            ShowVarietyNames.Activated += (sender, e) =>
            {
                settings.ShowVarietyNames = ShowVarietyNames.Active;
                GardenDrawingArea.ActiveInstance?.Draw();
            };
            SettingsMenu.Append(ShowVarietyNames);

            Append(SettingsItem);


            ToolItem.Submenu = ToolMenu;
            ToolMenu.Add(ToolMenuShowCropRotation);
            Append(ToolItem);

            ToolMenuShowCropRotation.Activated += ViewMenuShowCropRotation_Activated;


            HelpItem.Submenu = HelpMenu;
            HelpMenu.Add(MenuItemAbout);
            Append(HelpItem);

            MenuItemAbout.Activated += ShowAboutDialog;



            f = new FileFilter();
            f.AddPattern("*.gdata");
            f.Name = "Garden data";
        }