import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox
from PyQt5.QtCore import QTimer, Qt

class TimerApp(QWidget):
    def __init__(self):
        super().__init__()
        
        self.time_left = 0
        self.timer_running = False

        self.init_ui()

    def init_ui(self):
        self.setWindowTitle("macOS Style Timer")
        self.setGeometry(100, 100, 300, 200)

        layout = QVBoxLayout()

        self.timer_label = QLabel("00:00:00", self)
        self.timer_label.setStyleSheet("font-size: 24px; text-align: center;")
        self.timer_label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.timer_label)

        self.time_input = QLineEdit(self)
        self.time_input.setPlaceholderText("Enter time in seconds")
        layout.addWidget(self.time_input)

        self.start_button = QPushButton("Start", self)
        self.start_button.clicked.connect(self.start_timer)
        layout.addWidget(self.start_button)

        self.pause_button = QPushButton("Pause", self)
        self.pause_button.clicked.connect(self.pause_timer)
        layout.addWidget(self.pause_button)

        self.reset_button = QPushButton("Reset", self)
        self.reset_button.clicked.connect(self.reset_timer)
        layout.addWidget(self.reset_button)

        self.setLayout(layout)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_timer)

    def start_timer(self):
        if not self.timer_running:
            try:
                if self.time_left == 0:
                    self.time_left = int(self.time_input.text())
                self.timer_running = True
                self.timer.start(1000)
            except ValueError:
                QMessageBox.warning(self, "Invalid Input", "Please enter a valid number.")

    def update_timer(self):
        if self.time_left > 0:
            self.time_left -= 1
            self.display_time()
        else:
            self.timer.stop()
            self.timer_running = False
            self.timer_label.setText("Time's up!")

    def pause_timer(self):
        self.timer_running = False
        self.timer.stop()

    def reset_timer(self):
        self.timer_running = False
        self.timer.stop()
        self.time_left = 0
        self.timer_label.setText("00:00:00")
        self.time_input.clear()

    def display_time(self):
        hours, remainder = divmod(self.time_left, 3600)
        minutes, seconds = divmod(remainder, 60)
        self.timer_label.setText(f"{hours:02}:{minutes:02}:{seconds:02}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    timer_app = TimerApp()
    timer_app.show()
    sys.exit(app.exec_())
