Skip to content

Commit

Permalink
feat(ui): use Unicode for X button
Browse files Browse the repository at this point in the history
- use Unicode for X button in KV Overrides box
- move CustomTitleBar to separate file
  • Loading branch information
leafspark committed Aug 17, 2024
1 parent b62e8fc commit 03c8a23
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 62 deletions.
61 changes: 1 addition & 60 deletions src/AutoGGUF.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from KVOverrideEntry import KVOverrideEntry
from Logger import Logger
from ModelInfoDialog import ModelInfoDialog
from CustomTitleBar import CustomTitleBar
from error_handling import show_error, handle_error
from TaskListItem import TaskListItem
from QuantizationThread import QuantizationThread
Expand All @@ -28,66 +29,6 @@
import utils


class CustomTitleBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.parent = parent
layout = QHBoxLayout(self)
layout.setContentsMargins(10, 5, 10, 5)

# Add your logo or app name here
self.title = QLabel("AutoGGUF")
layout.addWidget(self.title)

layout.addStretch(1) # This pushes the buttons to the right

# Add minimize and close buttons
self.minimize_button = QPushButton("—")
self.close_button = QPushButton("✕")

for button in (self.minimize_button, self.close_button):
button.setFixedSize(30, 30)
button.setStyleSheet(
"""
QPushButton {
border: none;
background-color: transparent;
}
QPushButton:hover {
background-color: rgba(255, 255, 255, 0.1);
}
"""
)

layout.addWidget(self.minimize_button)
layout.addWidget(self.close_button)

self.minimize_button.clicked.connect(self.parent.showMinimized)
self.close_button.clicked.connect(self.parent.close)

self.start = QPoint(0, 0)
self.pressing = False

def mousePressEvent(self, event):
self.start = self.mapToGlobal(event.pos())
self.pressing = True

def mouseMoveEvent(self, event):
if self.pressing:
end = self.mapToGlobal(event.pos())
movement = end - self.start
self.parent.setGeometry(
self.parent.x() + movement.x(),
self.parent.y() + movement.y(),
self.parent.width(),
self.parent.height(),
)
self.start = end

def mouseReleaseEvent(self, event):
self.pressing = False


class AutoGGUF(QMainWindow):
def __init__(self):
super().__init__()
Expand Down
75 changes: 75 additions & 0 deletions src/CustomTitleBar.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from PySide6.QtCore import QPoint
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QHBoxLayout, QLabel, QMenuBar, QPushButton, QWidget

from imports_and_globals import resource_path


class CustomTitleBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.parent = parent
layout = QHBoxLayout(self)
layout.setContentsMargins(10, 5, 10, 5)

# Add the favicon
# TODO: uncomment this
# self.icon_label = QLabel()
# self.icon_label.setPixmap(QPixmap(resource_path("assets/favicon.ico")))
# layout.addWidget(self.icon_label)

# Add app title (bolded)
self.title = QLabel("<b>AutoGGUF</b>") # Use HTML tags for bolding
layout.addWidget(self.title)

# Add menubar here
self.menubar = QMenuBar()
layout.addWidget(self.menubar) # Add menubar to the layout

layout.addStretch(1) # This pushes the buttons to the right

# Add minimize and close buttons
self.minimize_button = QPushButton("—")
self.close_button = QPushButton("✕")

for button in (self.minimize_button, self.close_button):
button.setFixedSize(30, 30)
button.setStyleSheet(
"""
QPushButton {
border: none;
background-color: transparent;
}
QPushButton:hover {
background-color: rgba(255, 255, 255, 0.1);
}
"""
)

layout.addWidget(self.minimize_button)
layout.addWidget(self.close_button)

self.minimize_button.clicked.connect(self.parent.showMinimized)
self.close_button.clicked.connect(self.parent.close)

self.start = QPoint(0, 0)
self.pressing = False

def mousePressEvent(self, event):
self.start = self.mapToGlobal(event.pos())
self.pressing = True

def mouseMoveEvent(self, event):
if self.pressing:
end = self.mapToGlobal(event.pos())
movement = end - self.start
self.parent.setGeometry(
self.parent.x() + movement.x(),
self.parent.y() + movement.y(),
self.parent.width(),
self.parent.height(),
)
self.start = end

def mouseReleaseEvent(self, event):
self.pressing = False
2 changes: 1 addition & 1 deletion src/KVOverrideEntry.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def __init__(self, parent=None):
self.value_input.setPlaceholderText("Value")
layout.addWidget(self.value_input)

delete_button = QPushButton("X")
delete_button = QPushButton("")
delete_button.setFixedSize(30, 30)
delete_button.clicked.connect(self.delete_clicked)
layout.addWidget(delete_button)
Expand Down
6 changes: 5 additions & 1 deletion src/ui_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def update_system_info(self):
)
self.cpu_label.setText(CPU_USAGE_FORMAT.format(cpu))


def animate_bar(self, bar, target_value):
current_value = bar.value()
difference = target_value - current_value
Expand All @@ -40,11 +41,14 @@ def animate_bar(self, bar, target_value):
timer.timeout.connect(lambda: _animate_step(bar, target_value, step, timer))
timer.start(10) # Adjust the interval for animation speed


def _animate_step(bar, target_value, step, timer):
current_value = bar.value()
new_value = current_value + step

if (step > 0 and new_value > target_value) or (step < 0 and new_value < target_value):
if (step > 0 and new_value > target_value) or (
step < 0 and new_value < target_value
):
bar.setValue(target_value)
timer.stop()
else:
Expand Down

0 comments on commit 03c8a23

Please sign in to comment.