~marco-crosio/pyroom/austosave

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import gobject
import os
import tempfile
import string
import sys

global elapsed_time  # seconds elapsed counter
global autosave_time # the timeout time in minutes
global temp_folder #the temporary folder

temp_folder= "/var/tmp/pyroom"

FILE_UNNAMED = _('* Unnamed *')  ##repeted definition delete if possible

def autosave_init(self,mill=1000,autosavetime=3, tempfolder="/var/tmp/pyroom"):
    "Init the internal timer"
    global elapsed_time
    global autosave_time
    global temp_folder

    timeout_id=gobject.timeout_add(mill,timeout, self)
    #autosave_time=autosavetime if autosave_time==0 else autosave_time
    elapsed_time=0 ## init the elapsed_time_var
    #autosave_time=autosavetime
    temp_folder=tempfolder
    #print "->", autosave_time
   

def save_file(filename, text):
	"""Save File Atom Function
        it comes from atomic fuction in pyroom.py 
        (if they are integrated remove this code and include pyroom_py)
    """
	out_file = open(filename,"w")
	out_file.write(text)
	out_file.close()

def autosave_quit(self):
    "dispose the internal timer"
    gobject.source_remove(timout_id)

def autosave_file(self, buffer_id):
	"""AutoSave the Buffer to temp folder"""
	buffer=self.buffers[buffer_id]
	if not os.path.exists(temp_folder):  #chech if the path exists
	    os.mkdir(temp_folder)    

	if buffer.tmp_filename==None:
	    if buffer.filename==FILE_UNNAMED:
		buffer.tmp_filename=tempfile.mkstemp(suffix="",prefix="noname_"+"tmp_",dir=temp_folder,text=True)[1]
	    else:
		buff_path,buff_name=os.path.split(buffer.filename)
		print buff_path, buff_name #(debug)
		buffer.tmp_filename=tempfile.mkstemp(suffix="",prefix=buff_name+"_tmp_",dir=temp_folder,text=True)[1]
	save_file(buffer.tmp_filename, buffer.get_text(buffer.get_start_iter(),buffer.get_end_iter())) #really saves the fil
	self.status.set_text(_('AutoSaving Buffer %d, to temp file %s') % (buffer_id, buffer.tmp_filename)) #inform the user of the saving operation

def timeout(self):
    "the Timer Function"
    global elapsed_time
    global autosave_time

    if (int(autosave_time)!=0):
        elapsed_time=elapsed_time+1
        print "elapsed time = %d , autosave_time = %d" % (elapsed_time, int(autosave_time)*60)
        if (elapsed_time>=(int(autosave_time)*60)):
            for buffer in self.buffers:
                print "saving buffer" + str(buffer)
                autosave_file(self,self.buffers.index(buffer))
            elapsed_time=0
        return True # coninue repeat timeout event
    else:
        print "Autosave Feature Disabled"
        return False #stop timeout event

def kill_tempfile():
    """Kills all the temporary files"""
    print "Cleaning Pyroom Temp Folder : ",temp_folder
    response=raw_input("proceed [Yes/No]?")
    if string.lower(response)=="yes":
	killlist = os.listdir(temp_folder)
	if len(killlist)==0 : sys.exit(0)
        for killfile in killlist:
	    print "removing File :", os.path.join(temp_folder,killfile)
	    os.remove(os.path.join(temp_folder,killfile))
    else:
	    print "Nothing deleted..."
    sys.exit(0)

def set_autosave_time(autosavetime):
    """set the autosave timeout, useful in pyroom.py"""
    global autosave_time
    autosave_time=autosavetime

def get_autosave_time():
    """read the autosave timeout, useful in pyroom.py"""
    global autosave_time
    return autosave_time