# Path: pytrainer/lib/fileUtils.py
# class fileUtils:
#     def __init__(self, filename, data):
#         self.filename = filename
#         self.data = data
# 
#     def run(self):
#         logging.debug('>>')
#         if self.data is not None:
#             logging.debug("Writing in %s " % self.filename) 
#             out = open(self.filename, 'w')
#             out.write(self.data)
#             out.close()
#         else:
#             logging.error("Nothing to write in %s" % self.filename)
#         logging.debug('<<')
# 
# Path: pytrainer/gui/dialogs.py
# def save_file_chooser_dialog(title="Choose a file", pattern="*.csv"):
#     dialog = Gtk.FileChooserDialog(title, None, Gtk.FileChooserAction.SAVE,
#                                        (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
#                                             Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
#     dialog.set_default_response(Gtk.ResponseType.OK)
#     dialog.set_current_name(pattern)
#     response = dialog.run()
#     result = None
#     if response == Gtk.ResponseType.OK:
#         result = dialog.get_filename()
#     dialog.destroy()
#     return result


from .lib.fileUtils import fileUtils
from pytrainer.gui.dialogs import save_file_chooser_dialog
import logging
import traceback
class Save:
    def __init__(self, data_path = None, record = None):
        self.record = record
        self.data_path = data_path

    def run(self):
        logging.debug('>>')
        filename = save_file_chooser_dialog(title="savecsvfile", pattern="*.csv")
        records = self.record.getAllrecord()
        # CSV Header
        content = "date_time_local,title,sports.name,distance,duration,average,maxspeed,pace,maxpace,beats,maxbeats,calories,upositive,unegative,comments\n"
        try:
            for record in records:
                line = ""
                for i, data in enumerate(record):
                    if i in [3, 5, 6, 7, 8, 12, 13]:
                        try:
                            data = round(data, 2)
                        except:
                            pass             
                    data = "%s" %data
                    data = data.replace(",", " ")  
                    data = data.replace("\n", " ")             
                    data = data.replace("\r", " ")          
                    if i>0: 
                        line += ",%s" %data
                    else:
                        line += "%s" %data      
                content += "%s\n" %line
            logging.info("Record data successfully retrieved. Choosing file to save it")

# Path: pytrainer/lib/fileUtils.py
# class fileUtils:
#     def __init__(self, filename, data):
#         self.filename = filename
#         self.data = data
# 
#     def run(self):
#         logging.debug('>>')
#         if self.data is not None:
#             logging.debug("Writing in %s " % self.filename) 
#             out = open(self.filename, 'w')
#             out.write(self.data)
#             out.close()
#         else:
#             logging.error("Nothing to write in %s" % self.filename)
#         logging.debug('<<')
# 
# Path: pytrainer/gui/dialogs.py
# def save_file_chooser_dialog(title="Choose a file", pattern="*.csv"):
#     dialog = Gtk.FileChooserDialog(title, None, Gtk.FileChooserAction.SAVE,
#                                        (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
#                                             Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
#     dialog.set_default_response(Gtk.ResponseType.OK)
#     dialog.set_current_name(pattern)
#     response = dialog.run()
#     result = None
#     if response == Gtk.ResponseType.OK:
#         result = dialog.get_filename()
#     dialog.destroy()
#     return result


# Path: pytrainer/save.py
from .lib.fileUtils import fileUtils
from pytrainer.gui.dialogs import save_file_chooser_dialog
import logging
import traceback

class Save:
    def __init__(self, data_path = None, record = None):
        self.record = record
        self.data_path = data_path

    def run(self):
        logging.debug('>>')
        filename = save_file_chooser_dialog(title="savecsvfile", pattern="*.csv")
        records = self.record.getAllrecord()
        # CSV Header
        content = "date_time_local,title,sports.name,distance,duration,average,maxspeed,pace,maxpace,beats,maxbeats,calories,upositive,unegative,comments\n"
        try:
            for record in records:
                line = ""
                for i, data in enumerate(record):
                    if i in [3, 5, 6, 7, 8, 12, 13]:
                        try:
                            data = round(data, 2)
                        except:
                            pass             
                    data = "%s" %data
                    data = data.replace(",", " ")  
                    data = data.replace("\n", " ")             
                    data = data.replace("\r", " ")          
                    if i>0: 
                        line += ",%s" %data
                    else:
                        line += "%s" %data      
                content += "%s\n" %line
            logging.info("Record data successfully retrieved. Choosing file to save it")

            file = fileUtils(filename,content)