All pastes #429892 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-04-08 15:33 UTC
rendered paste body
using System;
using System.IO;
using Gdk;
using Gtk;

public class MainWindow: Gtk.Window
{
	protected Gtk.EventBox evtMain;
	protected Gtk.Image imgMain;
	
	private string config_file;
	private string base_directory;
	private string album_directory;
	private int timeout;

	
	public MainWindow (): base ("")
	{
		Stetic.Gui.Build (this, typeof(MainWindow));
		
		config_file = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
		// config_file = Path.Combine(config_file, ".stacks-frame");
	}
	
	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}
	
	public void ReadConfig ()
	{
		if (File.Exists(config_file))
		{
			FileStream stream = new FileStream(config_file, FileMode.Open, FileAccess.Read);
			StreamReader reader = new StreamReader(stream);
			
			try
			{
				base_directory = reader.ReadLine();
				album_directory = reader.ReadLine();
				timeout = Int32.Parse(reader.ReadLine());
			}
			catch (Exception ex)
			{
				MessageDialog dialog = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Close, ex.Message);
				dialog.Run();
				Application.Quit();
			}
			
			reader.Close();
			stream.Close();
		}
		else
		{
			// Setup initial configurations
			base_directory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
			base_directory = Path.Combine(base_directory, "Pictures");
			album_directory = Path.Combine(base_directory, "Default");
			timeout = 60;
			
			// Create the initial album
			if (!Directory.Exists(Path.Combine(base_directory, album_directory)))
			{
				Directory.CreateDirectory(album_directory);
			}
			
			// Save it
			WriteConfig();
		}
	}
	
	public void SetImage(System.Byte[] image)
	{
		Pixbuf buf = new Pixbuf(image);
		imgMain.Pixbuf = buf;
	}
	
	public void WriteConfig()
	{
		FileStream stream = new FileStream(config_file, FileMode.OpenOrCreate, FileAccess.Write);
		StreamWriter writer = new StreamWriter(stream);
		
		writer.WriteLine(base_directory);
		writer.WriteLine(album_directory);
		writer.WriteLine(timeout);
		
		writer.Close();
		stream.Close();
	}
}