#!/usr/bin/env python

#	Programmer:	Daniel Pozmanter
#	E-mail:		drpython@bluebottle.com
#	Note:		You must reply to the verification e-mail to get through.
#
#	Copyright 2003-2005 Daniel Pozmanter
#
#	Distributed under the terms of the GPL (GNU Public License)
#
#	DrPython 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 2 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, write to the Free Software
#	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#	Requirements(Dependencies):  Install Python, and wxPython.
#
#	Tested On Windows, Linux, Mac OS X
#
#	Icons taken from "Klassic New Crisp Icons" by Asif Ali Rizwaan (therizwaan) from the KDE-LOOK site (some edited a bit).
#	A humble and excellent artist.
#	Oh, the python icon is taken from wxPython.
#	The basic design of the program is meant to roughly (ROUGHLY) mimick DrScheme.
#	The purpose is the same, to provide a simple IDE(integrated development environment) ideal for teaching.
#	The DrPython icon itself was based on the DrScheme icon, with a slightly edited wxpython icon inserted(note yellow tongue, googly eyes).
#	
#	This program could not have been written without the wonderful work of the people behind
#	python and wxPython, in particular the Styled Text Control.  Thank you.  Hopefully this tool will be of use.

#This is a module for a gui for importing / exporting preferences.

import wx
import drZip
import drFileDialog

class drSetupPreferencesDialog(wx.Dialog):

	def __init__(self, parent):
		wx.Dialog.__init__(self, parent, -1, 'Setup Preferences', style=wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER)
		
		self.parent = parent
		
		self.drframe = parent.drframe
		
		self.ID_EXPORT_ALL = 501
		self.ID_IMPORT_ALL = 502		
				
		self.ID_EXPORT_PREFS = 503
		self.ID_IMPORT_PREFS = 504
		
		self.ID_EXPORT_PLUGINS = 505
		self.ID_IMPORT_PLUGINS = 506
		
		self.ID_EXPORT_DRSCRIPTS = 507
		self.ID_IMPORT_DRSCRIPTS = 518
				
		self.btnExportAll = wx.Button(self, self.ID_EXPORT_ALL, 'Export Preferences, Plugins, DrScripts To Zip')
		self.btnImportAll = wx.Button(self, self.ID_IMPORT_ALL, 'Import Preferences, Plugins, DrScripts From Zip')
		self.btnExportPrefs = wx.Button(self, self.ID_EXPORT_PREFS, 'Export Preferences To Zip')
		self.btnImportPrefs = wx.Button(self, self.ID_IMPORT_PREFS, 'Import Preferences From Zip')
		self.btnExportPlugins = wx.Button(self, self.ID_EXPORT_PLUGINS, 'Export Plugins To Zip')
		self.btnImportPlugins = wx.Button(self, self.ID_IMPORT_PLUGINS, 'Import Plugins From Zip')
		self.btnExportDrScripts = wx.Button(self, self.ID_EXPORT_DRSCRIPTS, 'Export DrScripts To Zip')
		self.btnImportDrScripts = wx.Button(self, self.ID_IMPORT_DRSCRIPTS, 'Import DrScripts From Zip')
		
		self.btnExit = wx.Button(self, wx.ID_CANCEL, 'Exit')
		
		self.theSizer = wx.BoxSizer(wx.VERTICAL)
		
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)
		self.theSizer.Add(self.btnExportAll, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(self.btnImportAll, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)
		self.theSizer.Add(self.btnExportPrefs, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(self.btnImportPrefs, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)
		self.theSizer.Add(self.btnExportPlugins, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(self.btnImportPlugins, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)
		self.theSizer.Add(self.btnExportDrScripts, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(self.btnImportDrScripts, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)
		self.theSizer.Add(self.btnExit, 0, wx.SHAPED | wx.ALIGN_CENTER)
		self.theSizer.Add(wx.StaticText(self, -1, '   '), 1, wx.EXPAND)

		self.SetAutoLayout(True)
		self.SetSizerAndFit(self.theSizer)
					
		self.Bind(wx.EVT_BUTTON, self.OnExportAll, id=self.ID_EXPORT_ALL)
		self.Bind(wx.EVT_BUTTON, self.OnImportAll, id=self.ID_IMPORT_ALL)
		self.Bind(wx.EVT_BUTTON, self.OnExportPrefs, id=self.ID_EXPORT_PREFS)
		self.Bind(wx.EVT_BUTTON, self.OnImportPrefs, id=self.ID_IMPORT_PREFS)
		self.Bind(wx.EVT_BUTTON, self.OnExportPlugins, id=self.ID_EXPORT_PLUGINS)
		self.Bind(wx.EVT_BUTTON, self.OnImportPlugins, id=self.ID_IMPORT_PLUGINS)
		self.Bind(wx.EVT_BUTTON, self.OnExportDrScripts, id=self.ID_EXPORT_DRSCRIPTS)
		self.Bind(wx.EVT_BUTTON, self.OnImportDrScripts, id=self.ID_IMPORT_DRSCRIPTS)
		
	def OnExportAll(self, event):
		dlg = drFileDialog.FileDialog(self.drframe, "Export Preferences, Plugins, and DrScripts To", 'Zip File (*.zip)|*.zip', IsASaveDialog=True)
		
		if (dlg.ShowModal() == wx.ID_OK):
			filename = dlg.GetPath().replace("\\", "/")		
			drZip.ExportPreferencesTo(self.drframe.userpreferencesdirectory, filename)
			
		dlg.Destroy()

	def OnExportDrScripts(self, event):
		dlg = drFileDialog.FileDialog(self.drframe, "Export DrScripts To", 'Zip File (*.zip)|*.zip', IsASaveDialog=True)
		
		if (dlg.ShowModal() == wx.ID_OK):
			filename = dlg.GetPath().replace("\\", "/")		
			drZip.ExportDrScriptsTo(self.drframe.userpreferencesdirectory, filename)
			
		dlg.Destroy()

	def OnExportPlugins(self, event):
		dlg = drFileDialog.FileDialog(self.drframe, "Export Plugins To", 'Zip File (*.zip)|*.zip', IsASaveDialog=True)
		
		if (dlg.ShowModal() == wx.ID_OK):
			filename = dlg.GetPath().replace("\\", "/")		
			drZip.ExportDirectoryTo(self.drframe.GetPluginsDirectory(), filename, 'plugins')
			
		dlg.Destroy()

	def OnExportPrefs(self, event):
		dlg = drFileDialog.FileDialog(self.drframe, "Export Preferences To", 'Zip File (*.zip)|*.zip', IsASaveDialog=True)
		
		if (dlg.ShowModal() == wx.ID_OK):
			filename = dlg.GetPath().replace("\\", "/")		
			drZip.ExportPreferencesTo(self.drframe.userpreferencesdirectory, filename, plugins=False, drscripts=False)
			
		dlg.Destroy()

	def OnImportAll(self, event):
		if self.drframe.Ask('This will permanently overwrite all of your preferences, plugins, and drscript file.\n\nProceed?', 'Warning'):
			dlg = drFileDialog.FileDialog(self.drframe, "Import Preferences, Plugins, and DrScripts From", 'Zip File (*.zip)|*.zip')
			
			if (dlg.ShowModal() == wx.ID_OK):
				filename = dlg.GetPath().replace("\\", "/")
				drZip.ImportPreferencesFrom(self.drframe.userpreferencesdirectory, filename)
				self.drframe.ShowMessage('Successfully imported preferences, plugins, and drscripts.', 'Import Success')
				
			dlg.Destroy()

	def OnImportDrScripts(self, event):
		if self.drframe.Ask('This will permanently overwrite all of your drscript file.\n\nProceed?', 'Warning'):
			dlg = drFileDialog.FileDialog(self.drframe, "Import DrScripts From", 'Zip File (*.zip)|*.zip')
			
			if (dlg.ShowModal() == wx.ID_OK):
				filename = dlg.GetPath().replace("\\", "/")
				drZip.ImportDrScriptsFrom(self.drframe.userpreferencesdirectory, filename)
				self.drframe.ShowMessage('Successfully imported drscripts.', 'Import Success')
				
			dlg.Destroy()

	def OnImportPlugins(self, event):
		if self.drframe.Ask('This will permanently overwrite all of your plugins.\n\nProceed?', 'Warning'):
			dlg = drFileDialog.FileDialog(self.drframe, "Import Plugins From", 'Zip File (*.zip)|*.zip')
			
			if (dlg.ShowModal() == wx.ID_OK):
				filename = dlg.GetPath().replace("\\", "/")
				drZip.ImportPluginsFrom(self.drframe.userpreferencesdirectory, filename)
				self.drframe.ShowMessage('Successfully imported plugins.', 'Import Success')
				
			dlg.Destroy()

	def OnImportPrefs(self, event):
		if self.drframe.Ask('This will permanently overwrite all of your preferences.\n\nProceed?', 'Warning'):
			dlg = drFileDialog.FileDialog(self.drframe, "Import Preferences From", 'Zip File (*.zip)|*.zip')
			
			if (dlg.ShowModal() == wx.ID_OK):
				filename = dlg.GetPath().replace("\\", "/")
				drZip.ImportJustPreferencesFrom(self.drframe.userpreferencesdirectory, filename)
				self.drframe.ShowMessage('Successfully imported preferences.', 'Import Success')
				
			dlg.Destroy()

syntax highlighted by Code2HTML, v. 0.9.1