void job_dialog::swap_rows(unsigned int lower, unsigned int higher, bool up) { if ((lower == higher) || (jobs.size() <= lower) || (jobs.size() <= higher)) return; if (lower > higher) { int tmp_i = lower; lower = higher; higher = tmp_i; } job_t tmp_job = jobs[lower]; jobs[lower] = jobs[higher]; jobs[higher] = tmp_job; if (up) { lv_jobs->DeleteItem(lower); create_list_item(higher); } else { lv_jobs->DeleteItem(higher); create_list_item(lower); } }
void linked_list_prepend(LinkedRoot* root, void* object) { if (NULL == root) { return; } LinkedList* child = create_list_item(object); child->next = root->head; if (NULL != root->head) { root->head->prev = child; } root->head = child; }
void linked_list_insert(LinkedRoot* root, void* object, uint16_t after) { if (NULL == root) { return; } LinkedList* child = create_list_item(object); LinkedList* list = list_get(root, after); if (NULL == list) { linked_list_append(root, object); } else { child->next = list->next; list->next = child; child->prev = list; } }
void linked_list_append(LinkedRoot* root, void* object) { if (NULL == root) { return; } LinkedList* child = create_list_item(object); if (NULL == root->head) { root->head = child; } else { LinkedList* tail = root->head; while (NULL != tail->next) { tail = tail->next; } tail->next = child; child->prev = tail; } }
void job_dialog::start_jobs(std::vector<int> &jobs_to_start) { wxString temp_settings = app->get_jobs_folder() + wxT("/temp.mmg"); mdlg->save(temp_settings, true); mdlg->Show(false); Show(false); job_run_dialog *jrdlg = new job_run_dialog(this, jobs_to_start); jrdlg->Destroy(); Show(true); mdlg->Show(true); mdlg->load(temp_settings, true); wxRemoveFile(temp_settings); size_t i; for (i = 0; i < jobs_to_start.size(); i++) { lv_jobs->DeleteItem(jobs_to_start[i]); create_list_item(jobs_to_start[i]); } }
job_dialog::job_dialog(wxWindow *parent) : wxDialog(parent, -1, Z("Job queue management"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX) , m_geometry_saver{this, "job_dialog"} { wxBoxSizer *siz_all = new wxBoxSizer(wxVERTICAL); siz_all->Add(new wxStaticText(this, -1, Z("Current and past jobs:")), 0, wxALIGN_LEFT | wxALL, 10); lv_jobs = new jobdlg_list_view(this, ID_JOBS_LV_JOBS); wxListItem item; item.m_mask = wxLIST_MASK_TEXT; item.m_text = Z("ID"); item.m_image = -1; lv_jobs->InsertColumn(0, item); item.m_text = Z("Status"); lv_jobs->InsertColumn(1, item); item.m_text = Z("Description"); lv_jobs->InsertColumn(2, item); item.m_text = Z("Added on"); lv_jobs->InsertColumn(3, item); item.m_text = Z("Started on"); lv_jobs->InsertColumn(4, item); item.m_text = Z("Finished on"); lv_jobs->InsertColumn(5, item); size_t i; for (i = 0; i < jobs.size(); i++) create_list_item(i); long dummy = lv_jobs->InsertItem(0, wxT("12345")); lv_jobs->SetItem(dummy, 1, Z("aborted")); lv_jobs->SetItem(dummy, 2, wxT("2004-05-06 07:08:09")); lv_jobs->SetItem(dummy, 3, wxT("2004-05-06 07:08:09")); lv_jobs->SetItem(dummy, 4, wxT("2004-05-06 07:08:09")); lv_jobs->SetItem(dummy, 5, wxT("2004-05-06 07:08:09")); for (i = 0; i < 6; i++) lv_jobs->SetColumnWidth(i, wxLIST_AUTOSIZE); lv_jobs->DeleteItem(0); wxBoxSizer *siz_line = new wxBoxSizer(wxHORIZONTAL); siz_line->Add(lv_jobs, 1, wxGROW | wxRIGHT, 10); wxBoxSizer *siz_b_right = new wxBoxSizer(wxVERTICAL); b_up = new wxButton(this, ID_JOBS_B_UP, Z("&Up")); b_up->SetToolTip(TIP("Move the selected jobs up")); siz_b_right->Add(b_up, 0, wxGROW | wxLEFT | wxBOTTOM, 10); b_down = new wxButton(this, ID_JOBS_B_DOWN, Z("&Down")); b_down->SetToolTip(TIP("Move the selected jobs down")); siz_b_right->Add(b_down, 0, wxGROW | wxLEFT | wxBOTTOM, 10); siz_b_right->AddSpacer(15); b_reenable = new wxButton(this, ID_JOBS_B_REENABLE, Z("&Re-enable")); b_reenable->SetToolTip(TIP("Re-enable the selected jobs")); siz_b_right->Add(b_reenable, 0, wxGROW | wxLEFT | wxBOTTOM, 10); b_disable = new wxButton(this, ID_JOBS_B_DISABLE, Z("&Disable")); b_disable->SetToolTip(TIP("Disable the selected jobs and set their status to 'done'")); siz_b_right->Add(b_disable, 0, wxGROW | wxLEFT | wxBOTTOM, 10); siz_b_right->AddSpacer(15); b_delete = new wxButton(this, ID_JOBS_B_DELETE, Z("D&elete")); b_delete->SetToolTip(TIP("Delete the selected jobs from the job queue")); siz_b_right->Add(b_delete, 0, wxGROW | wxLEFT | wxBOTTOM, 10); siz_b_right->AddSpacer(15); b_view_log = new wxButton(this, ID_JOBS_B_VIEW_LOG, Z("&View log")); b_view_log->SetToolTip(TIP("View the output that mkvmerge generated during the muxing process for the selected jobs")); siz_b_right->Add(b_view_log, 0, wxGROW | wxLEFT, 10); siz_line->Add(siz_b_right, 0, 0, 0); siz_all->Add(siz_line, 1, wxGROW | wxLEFT | wxRIGHT, 10); siz_all->Add(new wxStaticLine(this, -1), 0, wxGROW | wxALL, 10); wxBoxSizer *siz_b_bottom = new wxBoxSizer(wxHORIZONTAL); b_ok = new wxButton(this, wxID_OK, Z("&Ok")); b_ok->SetDefault(); siz_b_bottom->Add(b_ok, 0, 0, 0); siz_b_bottom->Add(1, 0, 1, wxGROW, 0); b_start = new wxButton(this, ID_JOBS_B_START, Z("&Start")); b_start->SetToolTip(TIP("Start the jobs whose status is 'pending'")); siz_b_bottom->Add(b_start, 0, wxGROW | wxRIGHT, 10); siz_b_bottom->Add(10, 0, 0, 0, 0); b_start_selected = new wxButton(this, ID_JOBS_B_START_SELECTED, Z("S&tart selected")); b_start_selected->SetToolTip(TIP("Start the selected jobs regardless of their status")); siz_b_bottom->Add(b_start_selected, 0, wxGROW | wxLEFT, 10); siz_all->Add(siz_b_bottom, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 10); siz_all->SetSizeHints(this); SetSizerAndFit(siz_all); m_geometry_saver.set_default_size(800, 500, true).restore(); enable_buttons(false); b_start->Enable(!jobs.empty()); ShowModal(); }