/* buypeeb - a program to track yahoo jp auctions of peebus. Copyright (C) 2020 lynnesbian This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ using System; using System.Collections.Generic; using System.Text.RegularExpressions; using Gtk; namespace Buypeeb { enum ItemColumns { Name, PriceYen, PriceAUD, Ending, Id } class MainWindow : Window { private ListStore items; private Settings settings; public MainWindow() : this(new Builder("main.glade")) { } private MainWindow(Builder builder) : base(builder.GetObject("wndMain").Handle) { this.settings = new Settings(); this.settings.Save(); this.Title = "Buypeeb"; builder.Autoconnect(this); this.items = (ListStore)builder.GetObject("ListItems"); this.RenderList(); foreach (object[] row in this.items) { Console.WriteLine(row[(int)ItemColumns.Name]); } DeleteEvent += Window_Shutdown; } private void Window_Shutdown(object sender, DeleteEventArgs args) { Application.Quit(); } // general behaviour private (Boolean accepted, string response) EntryDialogue(string title = "Buypeeb", string message = "Hi there!") { Dialog ed = new Dialog(title, null, Gtk.DialogFlags.DestroyWithParent, "Cancel", ResponseType.Cancel, "OK", ResponseType.Ok); ed.DefaultResponse = ResponseType.Ok; Label edLabel = new Label(message); Entry edEntry = new Entry(); edEntry.ActivatesDefault = true; ed.ContentArea.PackStart(edLabel, true, true, 2); edLabel.Show(); ed.ContentArea.PackStart(edEntry, true, true, 10); edEntry.Show(); ResponseType accepted = (ResponseType)ed.Run(); string response = edEntry.Text; ed.Dispose(); return (accepted == ResponseType.Ok, response); } private void UpdateItems() { } private void RenderList() { this.items.Clear(); foreach (KeyValuePair entry in settings.watchlist) { string[] values = new[] { entry.Value.name, entry.Value.PriceJPY(), entry.Value.PriceAUD(), "whenever", entry.Value.id }; this.items.AppendValues(values); } } // button handlers private void ButtonAddClicked(object sender, EventArgs a) { // Console.WriteLine("ButtonAddClicked"); AddItemDialogue aid = new AddItemDialogue(); ResponseType accepted = (ResponseType)aid.Run(); string url = aid.GetURL(); string name = aid.GetName(); aid.Dispose(); // vry simpl url validation for simpol creachers Regex rx = new Regex(@"^http.+yahoo.+"); if (rx.IsMatch(url)) { Console.WriteLine("{0} will be added", url); this.settings.Watch(url, name); this.RenderList(); } else { Console.WriteLine("{0} is an invalid url", url); } } private void ButtonUpdateAllClicked(object sender, EventArgs a) { Console.WriteLine("ButtonUpdateAllClicked"); } private void ButtonClearEndedClicked(object sender, EventArgs a) { Console.WriteLine("ButtonClearEndedClicked"); } private void ButtonClearAllClicked(object sender, EventArgs a) { Console.WriteLine("ButtonClearAllClicked"); } private void ButtonSaveClicked(object sender, EventArgs a) { Console.WriteLine("ButtonSaveClicked"); } private void ButtonQuitClicked(object sender, EventArgs a) { MessageDialog md = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Question, ButtonsType.OkCancel, "Are you sure you want to quit?"); ResponseType response = (ResponseType)md.Run(); md.Dispose(); if (response == ResponseType.Ok) { Application.Quit(); } } private void tveItemsSelectionChanged(object sender, EventArgs a) { Console.WriteLine("tveItemsSelectionChanged"); } private void ButtonViewBuyeeClicked(object sender, EventArgs a) { Console.WriteLine("ButtonViewBuyeeClicked"); } private void ButtonViewYahooClicked(object sender, EventArgs a) { Console.WriteLine("ButtonViewYahooClicked"); } private void ButtonSelectedRemoveClicked(object sender, EventArgs a) { Console.WriteLine("ButtonSelectedRemoveClicked"); } private void ButtonSelectedRenameClicked(object sender, EventArgs a) { Console.WriteLine("ButtonSelectedRenameClicked"); } } }