示例#1
0
    def test_long_time(self):
        difference = (datetime.now() + timedelta(minutes=4)) - datetime.now()
        self.assertEqual(readable.long_time(difference), "03:59")

        difference = (datetime.now() +
                      timedelta(hours=5, minutes=30)) - datetime.now()
        self.assertEqual(readable.long_time(difference), "05:29:59")
    def test_long_time(self):
        difference = (datetime.now() + timedelta(minutes=4)) - datetime.now()
        self.assertEqual(readable.long_time(difference), "03:59")

        difference = (datetime.now() + timedelta(hours=5, minutes=30)) - datetime.now()
        self.assertEqual(readable.long_time(difference), "05:29:59")

        difference = (datetime.now() + timedelta(days=5)) - datetime.now()
        self.assertEqual(readable.long_time(difference), "5 days")
示例#3
0
    def update_scheduler_timeout(self, status, event_type, title, attr_red, attr_black, changed, parpadeo):
        """GObject.timeout callback with 500 ms intervals"""
        if self.recorder.current_mediapackage and not self.recorder.current_mediapackage.manual:
            start = self.recorder.current_mediapackage.getLocalDate()
            duration = self.recorder.current_mediapackage.getDuration() / 1000
            end = start + datetime.timedelta(seconds=duration)
            dif = end - datetime.datetime.now()
            status.set_text(_("Stopping in {0}").format(readable.long_time(dif)))
            event_type.set_text(CURRENT_TEXT) 
            title.set_text(self.recorder.current_mediapackage.title)             
                
            if dif < datetime.timedelta(0, TIME_RED_STOP):
                if not changed:
                    status.set_attributes(attr_red)
                    changed = True
            elif changed:
                status.set_attributes(attr_black)
                changed = False
            if dif < datetime.timedelta(0,TIME_BLINK_STOP):
                parpadeo = not parpadeo

        else:
            next_mediapackage = self.repo.get_next_mediapackage()
            if next_mediapackage:
                start = next_mediapackage.getLocalDate()
                dif = start - datetime.datetime.now()
                if event_type.get_text != NEXT_TEXT:
                    event_type.set_text(NEXT_TEXT)
                if title.get_text() != next_mediapackage.title:
                    title.set_text(next_mediapackage.title)
                status.set_text(_("Starting in {0}").format(readable.long_time(dif)))

                if dif < datetime.timedelta(0,TIME_RED_START):
                    if not changed:
                        status.set_attributes(attr_red)
                        changed = True
                elif changed:
                    status.set_attributes(attr_black)
                    changed = False

                if dif < datetime.timedelta(0,TIME_BLINK_START):
                    if parpadeo:
                        status.set_text("")
                        parpadeo =  False
                    else:
                        parpadeo = True

            else: # Not current or pending recordings
                if event_type.get_text():                
                    event_type.set_text("")
                if status.get_text():
                    status.set_text("")
                if title.get_text() != _("No upcoming events"):
                    title.set_text(_("No upcoming events"))

        return True
示例#4
0
 def recording_info_timeout(self, rec_title, rec_elapsed):
     """GObject.timeout callback with 500 ms intervals"""
     if self.recorder.status == RECORDING_STATUS:
         rec_title.set_text(self.recorder.current_mediapackage.getTitle())
         msec = datetime.timedelta(microseconds=(round(self.recorder.get_recorded_time()/1000.0,-6)))
         rec_elapsed.set_text(_("Elapsed Time: ") + readable.long_time(msec))
         return True
     return False
 def recording_info_timeout(self, rec_title, rec_elapsed):
     """GObject.timeout callback with 500 ms intervals"""
     if self.recorder.status == RECORDING_STATUS:
         rec_title.set_text(self.recorder.current_mediapackage.getTitle())
         msec = datetime.timedelta(microseconds=(round(self.recorder.get_recorded_time()/1000.0,-6)))
         rec_elapsed.set_text(_("Elapsed Time: ") + readable.long_time(msec))
         return True
     return False
示例#6
0
 def timer_launch_thread(self):
     """Thread handling the recording elapsed time timer."""
     thread_id= self.timer_thread_id
     rec_title = self.gui.get_object("recording1")
     rec_elapsed = self.gui.get_object("recording3")
          
     while thread_id == self.timer_thread_id:            
         gtk.gdk.threads_enter()
         if rec_title.get_text() != self.mediapackage.getTitle():
             rec_title.set_text(self.mediapackage.getTitle())
         msec = datetime.timedelta(microseconds=(self.recorder.get_recorded_time()/1000))
         rec_elapsed.set_text(_("Elapsed Time: ") + readable.long_time(msec))
         gtk.gdk.threads_leave()
         time.sleep(0.5)          
     return True
示例#7
0
    def update_scheduler_timeout(self, status, event_type, title):
        """GObject.timeout callback with 500 ms intervals"""
        global status_label_changed, status_label_blink, signalized

        if self.recorder.current_mediapackage and not self.recorder.current_mediapackage.manual:
            start = self.recorder.current_mediapackage.getLocalDate()
            duration = self.recorder.current_mediapackage.getDuration() / 1000
            end = start + datetime.timedelta(seconds=duration)
            dif = end - datetime.datetime.now()

            if dif < datetime.timedelta(0):
                return True

            if self.recorder.current_mediapackage.anticipated:
                status.set_text("")
                event_type.set_text(CURRENT_TEXT)
                title.set_text(self.recorder.current_mediapackage.title)

                return True
            status.set_text(
                _("Stopping in {0}").format(readable.long_time(dif)))
            event_type.set_text(CURRENT_TEXT)
            title.set_text(self.recorder.current_mediapackage.title)

            if dif < datetime.timedelta(0, TIME_RED_STOP):
                if not status_label_changed:
                    status.set_name('red_coloured')
                    status_label_changed = True
            elif status_label_changed:
                status.set_name('black_coloured')
                status_label_changed = False
            if dif < datetime.timedelta(0, TIME_BLINK_STOP):
                if status_label_blink:
                    status.set_name('blinking_coloured_from')
                else:
                    status.set_name('blinking_coloured_to')
                status_label_blink = not status_label_blink

        else:
            next_mediapackage = self.repo.get_next_mediapackage()
            if next_mediapackage and next_mediapackage.isScheduled():
                start = next_mediapackage.getLocalDate()
                dif = start - datetime.datetime.now()
                event_type.set_text(NEXT_TEXT)
                title.set_text(next_mediapackage.title)
                status.set_text(
                    _("Starting in {0}").format(readable.long_time(dif)))

                if dif < datetime.timedelta(0, TIME_UPCOMING):
                    if not signalized:
                        self.dispatcher.emit("recorder-upcoming-event")
                    signalized = True
                elif signalized:
                    signalized = False

                if dif < datetime.timedelta(0, TIME_RED_START):
                    if not status_label_changed:
                        status.set_name('red_coloured')
                        status_label_changed = True
                elif status_label_changed:
                    status.set_name('black_coloured')
                    status_label_changed = False

                if dif < datetime.timedelta(0, TIME_BLINK_START):
                    if status_label_blink:
                        status.set_name('blinking_coloured_from')
                    else:
                        status.set_name('blinking_coloured_to')
                    status_label_blink = not status_label_blink

            elif self.recorder.title_standin is not None:
                if event_type.get_text():
                    event_type.set_text("")
                if status.get_text():
                    status.set_text("")
                title.set_text(_(self.recorder.title_standin))

            else:  # Not current or pending recordings
                if event_type.get_text():
                    event_type.set_text("")
                if status.get_text():
                    status.set_text("")
                title.set_text(_("No upcoming events"))

        return True
示例#8
0
    def scheduler_launch_thread(self):
        """Thread handling the messages scheduler notification area."""
        # Based on: http://pygstdocs.berlios.de/pygst-tutorial/seeking.html
        thread_id= self.scheduler_thread_id
        event_type = self.gui.get_object("nextlabel")
        title = self.gui.get_object("titlelabel")
        status = self.gui.get_object("eventlabel")

        # Status panel
        # status_disk = self.gui.get_object("status1")
        # status_hours = self.gui.get_object("status2")
        # status_mh = self.gui.get_object("status3")

        gtk.gdk.threads_enter()
        self.check_schedule()
        gtk.gdk.threads_leave()
        parpadeo = True
        changed = False
        signalized = False
        
        if self.font == None:
            anchura = self.get_toplevel().get_screen().get_width()
            if anchura not in [1024,1280,1920]:
                anchura = 1920            
            k1 = anchura / 1920.0
            changing_font = pango.FontDescription("bold "+str(k1*42))       
            self.font = changing_font
        
        bold = pango.AttrWeight(700, 0, -1)
        red = pango.AttrForeground(65535, 0, 0, 0, -1)        
        black = pango.AttrForeground(17753, 17753, 17753, 0, -1)
        font = pango.AttrFontDesc(self.font, 0, -1)

        attr_red = pango.AttrList()
        attr_black = pango.AttrList()

        attr_red.insert(red)
        attr_red.insert(font)
        attr_red.insert(bold)

        attr_black.insert(black)
        attr_black.insert(font)
        attr_black.insert(bold)

        gtk.gdk.threads_enter()
        status.set_attributes(attr_black)
        gtk.gdk.threads_leave()

        one_second = datetime.timedelta(seconds=1)
        while thread_id == self.scheduler_thread_id: 
            gtk.gdk.threads_enter()
            if self.font != changing_font:
                attr_black.insert(pango.AttrFontDesc(self.font, 0, -1))
                attr_red.insert(pango.AttrFontDesc(self.font, 0, -1))
                changing_font = self.font
            if self.current:
                start = self.current.getLocalDate()
                duration = self.current.getDuration() / 1000
                end = start + datetime.timedelta(seconds=duration)
                dif = end - datetime.datetime.now()
                #dif2 = datetime.datetime.now() - start
                if dif < datetime.timedelta(0,0): # Checking for malfuntions
                    self.current = None
                    self.current_mediapackage = None
                    status.set_text("")
                else:
                    status.set_text(_("Stopping in {0}").format(readable.long_time(dif+one_second)))
                    if event_type.get_text() != CURRENT_TEXT:
                        event_type.set_text(CURRENT_TEXT) 
                    if title.get_text() != self.current.title:
                        title.set_text(self.current.title)             
                        
                    if dif < datetime.timedelta(0,TIME_RED_STOP):
                        if not changed:
                            status.set_attributes(attr_red)
                            changed = True
                    elif changed:
                        status.set_attributes(attr_black)
                        changed = False
                    if dif < datetime.timedelta(0,TIME_BLINK_STOP):
                        parpadeo = False if parpadeo else True
                # Timer(diff,self.check_schedule)

            elif self.next:
                start = self.next.getLocalDate()
                dif = start - datetime.datetime.now()
                if event_type.get_text != NEXT_TEXT:
                    event_type.set_text(NEXT_TEXT)
                if title.get_text() != self.next.title:
                    title.set_text(self.next.title)
                status.set_text(_("Starting in {0}").format(readable.long_time(dif)))

                if dif < datetime.timedelta(0,TIME_RED_START):
                    if not changed:
                        status.set_attributes(attr_red)
                        changed = True
                elif changed:
                    status.set_attributes(attr_black)
                    changed = False

                if dif < datetime.timedelta(0,TIME_UPCOMING):
                    if not signalized:
                        self.dispatcher.emit("upcoming-recording")
                        signalized = True
                elif signalized:
                    signalized = True                   

                if dif < datetime.timedelta(0,TIME_BLINK_START):
                    if parpadeo:
                        status.set_text("")
                        parpadeo =  False
                    else:
                        parpadeo = True
                # Timer(60,self.check_schedule)

            else: # Not current or pending recordings
                if event_type.get_text():                
                    event_type.set_text("")
                if status.get_text():
                    status.set_text("")
                if title.get_text() != _("No upcoming events"):
                    title.set_text(_("No upcoming events"))
            gtk.gdk.threads_leave()
                
            time.sleep(0.5)
            gtk.gdk.threads_enter()
            self.check_schedule()  
            gtk.gdk.threads_leave()          
        return True
示例#9
0
    def update_scheduler_timeout(self, status, event_type, title):
        """GObject.timeout callback with 500 ms intervals"""
        global status_label_changed, status_label_blink, signalized

        if self.recorder.current_mediapackage and not self.recorder.current_mediapackage.manual:
            start = self.recorder.current_mediapackage.getLocalDate()
            duration = self.recorder.current_mediapackage.getDuration() / 1000
            end = start + datetime.timedelta(seconds=duration)
            dif = end - datetime.datetime.now()

            if dif < datetime.timedelta(0):
                return True

            if self.recorder.current_mediapackage.anticipated:
                status.set_text("")
                event_type.set_text(CURRENT_TEXT)
                title.set_text(self.recorder.current_mediapackage.title)

                return True
            status.set_text(_("Stopping in {0}").format(readable.long_time(dif)))
            event_type.set_text(CURRENT_TEXT)
            title.set_text(self.recorder.current_mediapackage.title)

            if dif < datetime.timedelta(0, TIME_RED_STOP):
                if not status_label_changed:
                    status.set_name('red_coloured')
                    status_label_changed = True
            elif status_label_changed:
                status.set_name('black_coloured')
                status_label_changed = False
            if dif < datetime.timedelta(0,TIME_BLINK_STOP):
                if status_label_blink:
                    status.set_name('blinking_coloured_from')
                else:
                    status.set_name('blinking_coloured_to')
                status_label_blink = not status_label_blink

        else:
            next_mediapackage = self.repo.get_next_mediapackage()
            if next_mediapackage and next_mediapackage.isScheduled():
                start = next_mediapackage.getLocalDate()
                dif = start - datetime.datetime.now()
                event_type.set_text(NEXT_TEXT)
                title.set_text(next_mediapackage.title)
                status.set_text(_("Starting in {0}").format(readable.long_time(dif)))

                if dif < datetime.timedelta(0,TIME_UPCOMING):
                    if not signalized:
                        self.dispatcher.emit("recorder-upcoming-event")
                    signalized = True
                elif signalized:
                    signalized = False


                if dif < datetime.timedelta(0,TIME_RED_START):
                    if not status_label_changed:
                        status.set_name('red_coloured')
                        status_label_changed = True
                elif status_label_changed:
                    status.set_name('black_coloured')
                    status_label_changed = False

                if dif < datetime.timedelta(0,TIME_BLINK_START):
                    if status_label_blink:
                        status.set_name('blinking_coloured_from')
                    else:
                        status.set_name('blinking_coloured_to')
                    status_label_blink = not status_label_blink

            else: # Not current or pending recordings
                if event_type.get_text():
                    event_type.set_text("")
                if status.get_text():
                    status.set_text("")
                title.set_text(_("No upcoming events"))

        return True