Eagleget - For Linux
def init_ui(self): self.setWindowTitle("New Download") self.setModal(True) layout = QVBoxLayout() # URL input layout.addWidget(QLabel("URL:")) self.url_input = QLineEdit() layout.addWidget(self.url_input) # Save path layout.addWidget(QLabel("Save to:")) path_layout = QHBoxLayout() self.path_input = QLineEdit(os.path.expanduser("~/Downloads")) browse_btn = QPushButton("Browse") browse_btn.clicked.connect(self.browse_folder) path_layout.addWidget(self.path_input) path_layout.addWidget(browse_btn) layout.addLayout(path_layout) # Threads layout.addWidget(QLabel("Download threads:")) self.threads_spin = QSpinBox() self.threads_spin.setRange(1, 16) self.threads_spin.setValue(4) layout.addWidget(self.threads_spin) # Buttons buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) layout.addWidget(buttons) self.setLayout(layout)
def init_ui(self): self.setWindowTitle("EagleGet for Linux") self.setGeometry(100, 100, 900, 600) # Create menu bar menubar = self.menuBar() file_menu = menubar.addMenu('File') new_action = QAction('New Download', self) new_action.triggered.connect(self.new_download) new_action.setShortcut('Ctrl+N') file_menu.addAction(new_action) exit_action = QAction('Exit', self) exit_action.triggered.connect(self.close) file_menu.addAction(exit_action) # Toolbar toolbar = self.addToolBar('Tools') toolbar.addAction(QIcon.fromTheme('download'), 'New Download', self.new_download) toolbar.addAction(QIcon.fromTheme('media-playback-start'), 'Start', self.start_download) toolbar.addAction(QIcon.fromTheme('media-playback-pause'), 'Pause', self.pause_download) toolbar.addAction(QIcon.fromTheme('edit-delete'), 'Remove', self.remove_download) # Central widget central_widget = QWidget() self.setCentralWidget(central_widget) layout = QVBoxLayout(central_widget) # URL input bar url_layout = QHBoxLayout() self.url_input = QLineEdit() self.url_input.setPlaceholderText("Enter URL to download...") download_btn = QPushButton("Download") download_btn.clicked.connect(self.new_download) url_layout.addWidget(self.url_input) url_layout.addWidget(download_btn) layout.addLayout(url_layout) # Download table self.table_view = QTableView() self.model = DownloadTableModel(self.manager) self.table_view.setModel(self.model) self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows) self.table_view.horizontalHeader().setStretchLastSection(True) layout.addWidget(self.table_view) # Status bar self.status_label = QLabel("Ready") self.statusBar().addWidget(self.status_label) # Apply stylesheet self.setStyleSheet(""" QMainWindow background-color: #f5f5f5; QTableView background-color: white; alternate-background-color: #f9f9f9; selection-background-color: #3498db; gridline-color: #e0e0e0; QHeaderView::section background-color: #ecf0f1; padding: 8px; border: 1px solid #ddd; QPushButton background-color: #3498db; color: white; border: none; padding: 8px 16px; border-radius: 4px; QPushButton:hover background-color: #2980b9; QLineEdit padding: 8px; border: 1px solid #ddd; border-radius: 4px; """) def new_download(self): dialog = DownloadDialog(self) if dialog.exec_(): url, save_path, threads = dialog.get_data() if url: task_id = self.manager.add_download(url, save_path, threads) self.manager.start_download(task_id) self.model.refresh() eagleget for linux
def load_tasks(self): conn = sqlite3.connect(self.db_path) cursor = conn.cursor() cursor.execute('SELECT * FROM downloads') for row in cursor.fetchall(): task = DownloadTask( id=row[0], url=row[1], filename=row[2], save_path=row[3], total_size=row[4], downloaded_size=row[5], status=DownloadStatus(row[6]), threads=row[7], speed=row[8], created_at=datetime.fromisoformat(row[9]), completed_at=datetime.fromisoformat(row[10]) if row[10] else None, md5=row[11] ) self.tasks[task.id] = task conn.close() def init_ui(self): self
