void CFrame::OnToolBar(wxCommandEvent& event) { ClearStatusBar(); switch (event.GetId()) { case IDM_SAVE_PERSPECTIVE: if (Perspectives.size() == 0) { wxMessageBox(_("Please create a perspective before saving"), _("Notice"), wxOK, this); return; } SaveIniPerspectives(); GetStatusBar()->SetStatusText(wxString::FromAscii(std::string ("Saved " + Perspectives[ActivePerspective].Name).c_str()), 0); break; case IDM_PERSPECTIVES_ADD_PANE: AddPane(); break; case IDM_EDIT_PERSPECTIVES: m_bEdit = !m_bEdit; m_ToolBarAui->SetToolSticky(IDM_EDIT_PERSPECTIVES, m_bEdit); TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES); break; } }
void DrawScreen () { ColorScreen (LIGHTBLUE); DrawText (1, 1, " Optimize F1 = help ", BLACK, WHITE); SetStatusBar (RED, WHITE, " FreeDOS defrag "); DelimitStatusBar (BLACK, WHITE, 62); DrawSingleBox(5, 19, 35, 5, WHITE, BLUE, " Status "); DrawSingleBox(41, 19, 35, 5, WHITE, BLUE, " Legend "); ClearStatusBar (); DrawText(6, 22, " Elapsed time: 00:00:00", WHITE, BLUE); DrawText(6, 23, " Full Optimization", WHITE, BLUE); DrawText(43, 20, "\t", BLINK+BLUE, WHITE); DrawText(44, 20, " - used", WHITE, BLUE); DrawText(43, 21, "r - reading", WHITE, BLUE); DrawText(43, 22, "b - bad", WHITE, BLUE); DrawText(43, 23, "Drive ?: 1 block = 0 clusters", WHITE, BLUE); DrawText(61, 20, "± - unused", WHITE, BLUE); DrawText(61, 21, "W - writing", WHITE, BLUE); DrawText(61, 22, "X - unmovable", WHITE, BLUE); }
void CFrame::OnDropDownToolbarSelect(wxCommandEvent& event) { ClearStatusBar(); switch(event.GetId()) { case IDM_ADD_PERSPECTIVE: { wxTextEntryDialog dlg(this, _("Enter a name for the new perspective:"), _("Create new perspective")); wxString DefaultValue = wxString::Format(_("Perspective %d"), Perspectives.size() + 1); dlg.SetValue(DefaultValue); bool DlgOk = false; int Return = 0; while (!DlgOk) { Return = dlg.ShowModal(); if (Return == wxID_CANCEL) return; else if (dlg.GetValue().Find(wxT(",")) != -1) { wxMessageBox(_("The name can not contain the character ','"), _("Notice"), wxOK, this); wxString Str = dlg.GetValue(); Str.Replace(wxT(","), wxT(""), true); dlg.SetValue(Str); } else if (dlg.GetValue().IsSameAs(wxT(""))) { wxMessageBox(_("The name can not be empty"), _("Notice"), wxOK, this); dlg.SetValue(DefaultValue); } else DlgOk = true; } SPerspectives Tmp; Tmp.Name = dlg.GetValue().mb_str(); Tmp.Perspective = m_Mgr->SavePerspective(); ActivePerspective = (u32)Perspectives.size(); Perspectives.push_back(Tmp); UpdateCurrentPerspective(); } break; case IDM_TAB_SPLIT: m_bTabSplit = event.IsChecked(); ToggleNotebookStyle(m_bTabSplit, wxAUI_NB_TAB_SPLIT); break; case IDM_NO_DOCKING: m_bNoDocking = event.IsChecked(); TogglePaneStyle(m_bNoDocking, IDM_NO_DOCKING); break; } }
void CFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& event) { event.Skip(); ClearStatusBar(); if (event.IsDropDownClicked()) { wxAuiToolBar* tb = static_cast<wxAuiToolBar*>(event.GetEventObject()); tb->SetToolSticky(event.GetId(), true); // create the popup menu wxMenu* menuPopup = new wxMenu; wxMenuItem* Item = new wxMenuItem(menuPopup, IDM_ADD_PERSPECTIVE, _("Create new perspective")); menuPopup->Append(Item); if (Perspectives.size() > 0) { menuPopup->Append(new wxMenuItem(menuPopup)); for (u32 i = 0; i < Perspectives.size(); i++) { wxMenuItem* mItem = new wxMenuItem(menuPopup, IDM_PERSPECTIVES_0 + i, StrToWxStr(Perspectives[i].Name), wxT(""), wxITEM_CHECK); menuPopup->Append(mItem); if (i == ActivePerspective) { mItem->Check(true); } } } // line up our menu with the button wxRect rect = tb->GetToolRect(event.GetId()); wxPoint pt = tb->ClientToScreen(rect.GetBottomLeft()); pt = ScreenToClient(pt); // show PopupMenu(menuPopup, pt); // make sure the button is "un-stuck" tb->SetToolSticky(event.GetId(), false); } }
void Display::Init() { u8g_InitComFn(&u8g, &u8g_dev_st7920_128x64_8bit, u8g_com_uart_fn); GPIO_InitTypeDef PORT; // Set LCDEN as output PORT.GPIO_Pin = ENABLE_PIN; PORT.GPIO_Mode = GPIO_Mode_Out_PP; PORT.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB,&PORT); GPIO_WriteBit(GPIOB,ENABLE_PIN,Bit_RESET); // set low for off PORT.GPIO_Pin = RW_PIN; GPIO_Init(GPIOB,&PORT); GPIO_WriteBit(GPIOB,RW_PIN,Bit_SET); // set high for write ClearErrorText(); ClearStatusBar(); ClearSecondScreen(); }
// Toolbar void CFrame::OnDropDownSettingsToolbar(wxAuiToolBarEvent& event) { event.Skip(); ClearStatusBar(); if (event.IsDropDownClicked()) { wxAuiToolBar* Tb = static_cast<wxAuiToolBar*>(event.GetEventObject()); Tb->SetToolSticky(event.GetId(), true); // Create the popup menu wxMenu* menuPopup = new wxMenu; wxMenuItem* Item = new wxMenuItem(menuPopup, IDM_PERSPECTIVES_ADD_PANE, _("Add new pane")); menuPopup->Append(Item); menuPopup->Append(new wxMenuItem(menuPopup)); Item = new wxMenuItem(menuPopup, IDM_TAB_SPLIT, _("Tab split"), wxT(""), wxITEM_CHECK); menuPopup->Append(Item); Item->Check(m_bTabSplit); Item = new wxMenuItem(menuPopup, IDM_NO_DOCKING, _("No docking"), wxT(""), wxITEM_CHECK); menuPopup->Append(Item); Item->Check(m_bNoDocking); // Line up our menu with the button wxRect rect = Tb->GetToolRect(event.GetId()); wxPoint Pt = Tb->ClientToScreen(rect.GetBottomLeft()); Pt = ScreenToClient(Pt); // Show PopupMenu(menuPopup, Pt); // Make the button un-stuck again if (!m_bEdit) { Tb->SetToolSticky(event.GetId(), false); } } }
void OBS::Stop() { if(!bRunning) return; OSEnterMutex(hStartupShutdownMutex); //we only want the capture thread to stop first, so we can ensure all packets are flushed bShutdownEncodeThread = true; ShowWindow(hwndProjector, SW_HIDE); if(hEncodeThread) { OSTerminateThread(hEncodeThread, 30000); hEncodeThread = NULL; } bShutdownVideoThread = true; SetEvent(hVideoEvent); if(hVideoThread) { OSTerminateThread(hVideoThread, 30000); hVideoThread = NULL; } bRunning = false; ReportStopStreamTrigger(); for(UINT i=0; i<globalSources.Num(); i++) globalSources[i].source->EndScene(); if(scene) scene->EndScene(); //------------------------------------------------------------- if(hSoundThread) { //ReleaseSemaphore(hRequestAudioEvent, 1, NULL); OSTerminateThread(hSoundThread, 20000); } //if(hRequestAudioEvent) // CloseHandle(hRequestAudioEvent); if(hSoundDataMutex) OSCloseMutex(hSoundDataMutex); hSoundThread = NULL; //hRequestAudioEvent = NULL; hSoundDataMutex = NULL; //------------------------------------------------------------- StopBlankSoundPlayback(); //------------------------------------------------------------- delete network; network = NULL; delete fileStream; fileStream = NULL; delete micAudio; micAudio = NULL; delete desktopAudio; desktopAudio = NULL; delete audioEncoder; audioEncoder = NULL; delete videoEncoder; videoEncoder = NULL; //------------------------------------------------------------- for(UINT i=0; i<pendingAudioFrames.Num(); i++) pendingAudioFrames[i].audioData.Clear(); pendingAudioFrames.Clear(); //------------------------------------------------------------- if(GS) GS->UnloadAllData(); //------------------------------------------------------------- delete scene; scene = NULL; for(UINT i=0; i<globalSources.Num(); i++) globalSources[i].FreeData(); globalSources.Clear(); //------------------------------------------------------------- for(UINT i=0; i<auxAudioSources.Num(); i++) delete auxAudioSources[i]; auxAudioSources.Clear(); //------------------------------------------------------------- for(UINT i=0; i<NUM_RENDER_BUFFERS; i++) { delete mainRenderTextures[i]; delete yuvRenderTextures[i]; mainRenderTextures[i] = NULL; yuvRenderTextures[i] = NULL; } for(UINT i=0; i<NUM_RENDER_BUFFERS; i++) { SafeRelease(copyTextures[i]); } delete transitionTexture; transitionTexture = NULL; //------------------------------------------------------------- delete mainVertexShader; delete mainPixelShader; delete yuvScalePixelShader; delete solidVertexShader; delete solidPixelShader; mainVertexShader = NULL; mainPixelShader = NULL; yuvScalePixelShader = NULL; solidVertexShader = NULL; solidPixelShader = NULL; //------------------------------------------------------------- delete GS; GS = NULL; //------------------------------------------------------------- ResizeRenderFrame(false); RedrawWindow(hwndRenderFrame, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW); //------------------------------------------------------------- AudioDeviceList audioDevices; GetAudioDevices(audioDevices, ADT_RECORDING); String strDevice = AppConfig->GetString(TEXT("Audio"), TEXT("Device"), NULL); if(strDevice.IsEmpty() || !audioDevices.HasID(strDevice)) { AppConfig->SetString(TEXT("Audio"), TEXT("Device"), TEXT("Disable")); strDevice = TEXT("Disable"); } audioDevices.FreeData(); EnableWindow(GetDlgItem(hwndMain, ID_MICVOLUME), !strDevice.CompareI(TEXT("Disable"))); //------------------------------------------------------------- ClearStreamInfo(); DumpProfileData(); FreeProfileData(); Log(TEXT("=====Stream End: %s================================================="), CurrentDateTimeString().Array()); //update notification icon to reflect current status UpdateNotificationAreaIcon(); SetWindowText(GetDlgItem(hwndMain, ID_TESTSTREAM), Str("MainWindow.TestStream")); EnableWindow(GetDlgItem(hwndMain, ID_STARTSTOP), TRUE); SetWindowText(GetDlgItem(hwndMain, ID_STARTSTOP), Str("MainWindow.StartStream")); EnableWindow(GetDlgItem(hwndMain, ID_TESTSTREAM), TRUE); bEditMode = false; SendMessage(GetDlgItem(hwndMain, ID_SCENEEDITOR), BM_SETCHECK, BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwndMain, ID_SCENEEDITOR), FALSE); ClearStatusBar(); InvalidateRect(hwndRenderFrame, NULL, TRUE); SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0); SetThreadExecutionState(ES_CONTINUOUS); String processPriority = AppConfig->GetString(TEXT("General"), TEXT("Priority"), TEXT("Normal")); if (scmp(processPriority, TEXT("Normal"))) SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS); bTestStream = false; UpdateRenderViewMessage(); OSLeaveMutex(hStartupShutdownMutex); }
void OBS::Stop(bool overrideKeepRecording) { if((!bStreaming && !bRecording && !bRunning) && (!bTestStream)) return; //ugly hack to prevent hotkeys from being processed while we're stopping otherwise we end up //with callbacks from the ProcessEvents call in DelayedPublisher which causes havoc. OSEnterMutex(hHotkeyMutex); int networkMode = AppConfig->GetInt(TEXT("Publish"), TEXT("Mode"), 2); if(!overrideKeepRecording && bRecording && bKeepRecording && networkMode == 0) { NetworkStream *tempStream = NULL; videoEncoder->RequestKeyframe(); tempStream = network; network = NULL; Log(TEXT("=====Stream End (recording continues): %s========================="), CurrentDateTimeString().Array()); delete tempStream; bStreaming = false; bSentHeaders = false; ReportStopStreamingTrigger(); ConfigureStreamButtons(); OSLeaveMutex(hHotkeyMutex); return; } OSEnterMutex(hStartupShutdownMutex); //we only want the capture thread to stop first, so we can ensure all packets are flushed bShutdownEncodeThread = true; ShowWindow(hwndProjector, SW_HIDE); if(hEncodeThread) { OSTerminateThread(hEncodeThread, 30000); hEncodeThread = NULL; } bShutdownVideoThread = true; SetEvent(hVideoEvent); if(hVideoThread) { OSTerminateThread(hVideoThread, 30000); hVideoThread = NULL; } bRunning = false; ReportStopStreamTrigger(); for(UINT i=0; i<globalSources.Num(); i++) globalSources[i].source->EndScene(); if(scene) scene->EndScene(); //------------------------------------------------------------- if(hSoundThread) { //ReleaseSemaphore(hRequestAudioEvent, 1, NULL); OSTerminateThread(hSoundThread, 20000); } //if(hRequestAudioEvent) // CloseHandle(hRequestAudioEvent); if(hSoundDataMutex) OSCloseMutex(hSoundDataMutex); hSoundThread = NULL; //hRequestAudioEvent = NULL; hSoundDataMutex = NULL; //------------------------------------------------------------- StopBlankSoundPlayback(); //------------------------------------------------------------- delete network; network = NULL; if (bStreaming) ReportStopStreamingTrigger(); bStreaming = false; if(bRecording) StopRecording(); delete micAudio; micAudio = NULL; delete desktopAudio; desktopAudio = NULL; delete audioEncoder; audioEncoder = NULL; delete videoEncoder; videoEncoder = NULL; //------------------------------------------------------------- for(UINT i=0; i<pendingAudioFrames.Num(); i++) pendingAudioFrames[i].audioData.Clear(); pendingAudioFrames.Clear(); //------------------------------------------------------------- if(GS) GS->UnloadAllData(); //------------------------------------------------------------- delete scene; scene = NULL; for(UINT i=0; i<globalSources.Num(); i++) globalSources[i].FreeData(); globalSources.Clear(); //------------------------------------------------------------- for(UINT i=0; i<auxAudioSources.Num(); i++) delete auxAudioSources[i]; auxAudioSources.Clear(); //------------------------------------------------------------- for(UINT i=0; i<NUM_RENDER_BUFFERS; i++) { delete mainRenderTextures[i]; delete yuvRenderTextures[i]; mainRenderTextures[i] = NULL; yuvRenderTextures[i] = NULL; } for(UINT i=0; i<NUM_RENDER_BUFFERS; i++) { SafeRelease(copyTextures[i]); } delete transitionTexture; transitionTexture = NULL; //------------------------------------------------------------- delete mainVertexShader; delete mainPixelShader; delete yuvScalePixelShader; delete solidVertexShader; delete solidPixelShader; mainVertexShader = NULL; mainPixelShader = NULL; yuvScalePixelShader = NULL; solidVertexShader = NULL; solidPixelShader = NULL; //------------------------------------------------------------- delete GS; GS = NULL; //------------------------------------------------------------- ResizeRenderFrame(false); RedrawWindow(hwndRenderFrame, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW); //------------------------------------------------------------- AudioDeviceList audioDevices; GetAudioDevices(audioDevices, ADT_RECORDING, false, true); String strDevice = AppConfig->GetString(TEXT("Audio"), TEXT("Device"), NULL); if(strDevice.IsEmpty() || !audioDevices.HasID(strDevice)) { AppConfig->SetString(TEXT("Audio"), TEXT("Device"), TEXT("Disable")); strDevice = TEXT("Disable"); } audioDevices.FreeData(); EnableWindow(GetDlgItem(hwndMain, ID_MICVOLUME), !strDevice.CompareI(TEXT("Disable"))); //------------------------------------------------------------- ClearStreamInfo(); DumpProfileData(); FreeProfileData(); Log(TEXT("=====Stream End: %s================================================="), CurrentDateTimeString().Array()); //update notification icon to reflect current status UpdateNotificationAreaIcon(); bEditMode = false; SendMessage(GetDlgItem(hwndMain, ID_SCENEEDITOR), BM_SETCHECK, BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hwndMain, ID_SCENEEDITOR), FALSE); ClearStatusBar(); InvalidateRect(hwndRenderFrame, NULL, TRUE); SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0); SetThreadExecutionState(ES_CONTINUOUS); String processPriority = AppConfig->GetString(TEXT("General"), TEXT("Priority"), TEXT("Normal")); if (scmp(processPriority, TEXT("Normal"))) SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS); bTestStream = false; ConfigureStreamButtons(); UpdateRenderViewMessage(); DisableMenusWhileStreaming(false); OSLeaveMutex(hStartupShutdownMutex); OSLeaveMutex(hHotkeyMutex); }
void CFrame::OnPerspectiveMenu(wxCommandEvent& event) { ClearStatusBar(); switch (event.GetId()) { case IDM_SAVE_PERSPECTIVE: if (Perspectives.size() == 0) { wxMessageBox(_("Please create a perspective before saving"), _("Notice"), wxOK, this); return; } SaveIniPerspectives(); GetStatusBar()->SetStatusText(StrToWxStr(std::string ("Saved " + Perspectives[ActivePerspective].Name)), 0); break; case IDM_PERSPECTIVES_ADD_PANE: AddPane(); break; case IDM_EDIT_PERSPECTIVES: m_bEdit = event.IsChecked(); TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES); break; case IDM_ADD_PERSPECTIVE: { wxTextEntryDialog dlg(this, _("Enter a name for the new perspective:"), _("Create new perspective")); wxString DefaultValue = wxString::Format(_("Perspective %d"), (int)(Perspectives.size() + 1)); dlg.SetValue(DefaultValue); int Return = 0; bool DlgOk = false; while (!DlgOk) { Return = dlg.ShowModal(); if (Return == wxID_CANCEL) { return; } else if (dlg.GetValue().Find(",") != -1) { wxMessageBox(_("The name cannot contain the character ','"), _("Notice"), wxOK, this); wxString Str = dlg.GetValue(); Str.Replace(",", "", true); dlg.SetValue(Str); } else if (dlg.GetValue().IsSameAs("")) { wxMessageBox(_("The name cannot be empty"), _("Notice"), wxOK, this); dlg.SetValue(DefaultValue); } else { DlgOk = true; } } SPerspectives Tmp; Tmp.Name = WxStrToStr(dlg.GetValue()); Tmp.Perspective = m_Mgr->SavePerspective(); ActivePerspective = (u32)Perspectives.size(); Perspectives.push_back(Tmp); UpdateCurrentPerspective(); PopulateSavedPerspectives(); } break; case IDM_TAB_SPLIT: m_bTabSplit = event.IsChecked(); ToggleNotebookStyle(m_bTabSplit, wxAUI_NB_TAB_SPLIT); break; case IDM_NO_DOCKING: m_bNoDocking = event.IsChecked(); TogglePaneStyle(m_bNoDocking, IDM_NO_DOCKING); break; } }