void OptionsDlg::HandleCtrlTab() { const int nNextIndex = (( m_Tab.GetCurSel() + 1 ) % m_Tab.GetItemCount() ); m_Tab.SetCurSel( nNextIndex ); m_Tab.SetCurFocus( nNextIndex ); SwitchTab( nNextIndex ); }
void tab_select_effect_bHandle(void* opaque, GEventGWinButton* event){ struct tab_select_effect_t *tmp = (struct tab_select_effect_t*)opaque; uint32_t i; for(i = 0; i < EFFECT_NUM; i++){ if ((event)->gwin == tmp->btn_effectTypes[i]){ attachEffect(selectedEffectStage, i); SwitchTab(PARAM_TAB); } } if ((event)->gwin == tmp->btn_back){ SwitchTab(PARAM_TAB); } return; }
BOOL OptionsDlg::OnInitDialog() { CDialog::OnInitDialog(); VERIFY( m_podPrcDetailsDlg.Create( IDD_DIALOG_PROCESS_DETAILS_OPTIONS, this )); //VERIFY( m_mdModuleDetailsDlg.Create( IDD_DIALOG_MODULE_DETAILS_DIALOG, this )); VERIFY( m_goGeneralOptionsDlg.Create( IDD_DIALOG_GENERALOPTIONS, this )); m_Tab.InsertItem( 0, _T( "Process" )); m_Tab.InsertItem( 1, _T( "General" )); // Reposition tab to fit to the client rectangle RepositionTab(); PrepareDisplayRect(); SwitchTab( 0 ); return FALSE; }
BOOL TabbedDialog::DlgProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return OnInitDialog (wParam); case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; if (pnmh->idFrom == tabId) { if (pnmh->code == TCN_SELCHANGE) SwitchTab (); return TRUE; } } return -1; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: return OnClose (); } break; } return oapiDefDialogProc (hWnd, uMsg, wParam, lParam); }
LRESULT MultiTab_Editor::onMouseMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_LBUTTONDBLCLK: if (CURSES_INSTANCE && CURSES_INSTANCE->m_font_w && CURSES_INSTANCE->m_font_h) { const int y = ((short)HIWORD(lParam)) / CURSES_INSTANCE->m_font_h - m_top_margin; const int x = ((short)LOWORD(lParam)) / CURSES_INSTANCE->m_font_w + m_offs_x; WDL_FastString *fs=m_text.Get(y + m_paneoffs_y[m_curpane]); if (fs && y >= 0) { const char *url=fs->Get(); while (NULL != (url = strstr(url,"http://"))) { if (url != fs->Get() && isalnum(url[-1])) { url+=7; } else { const int soffs = (int) (url - fs->Get()); char tmp[512]; char *p=tmp; while (p < (tmp+sizeof(tmp)-1) && *url && *url != ' ' && *url != ')' && *url != '\t' && *url != '"' && *url != '\'' ) { *p++ = *url++; } *p=0; if (strlen(tmp) >= 10 && x >= soffs && x<(url-fs->Get())) { ShellExecute(hwnd,"open",tmp,"","",0); break; } } } } } break; case WM_LBUTTONDOWN: if (CURSES_INSTANCE && CURSES_INSTANCE->m_font_w && CURSES_INSTANCE->m_font_h) { int x = ((short)LOWORD(lParam)) / CURSES_INSTANCE->m_font_w; int y = ((short)HIWORD(lParam)) / CURSES_INSTANCE->m_font_h; const int tabcnt=GetTabCount(); if (y==0 && tabcnt>1) { int tsz=COLS/tabcnt; // this is duplicated in draw_top_line if (tsz>128)tsz=128; if (tsz<12) tsz=12; SwitchTab(x/tsz,false); return 1; } } break; } return WDL_CursesEditor::onMouseMessage(hwnd,uMsg,wParam,lParam); }
void MultiTab_Editor::OpenFileInTab(const char *fnp) { // try to find file to open WDL_FastString s; FILE *fp=NULL; { const char *ptr = fnp; while (!fp && *ptr) { // first try same path as loading effect if (m_filename.Get()[0]) { s.Set(m_filename.Get()); const char *sp=s.Get()+s.GetLength(); while (sp>=s.Get() && *sp != '\\' && *sp != '/') sp--; s.SetLen(sp + 1 - s.Get()); if (s.GetLength()) { s.Append(ptr); fp=fopenUTF8(s.Get(),"rb"); } } // scan past any / or \\, and try again if (!fp) { while (*ptr && *ptr != '\\' && *ptr != '/') ptr++; if (*ptr) ptr++; } } } if (!fp) { s.Set(""); fp = tryToFindOrCreateFile(fnp,&s); } if (!fp && s.Get()[0]) { m_newfn.Set(s.Get()); if (COLS > 25) { int allowed = COLS-25; if (s.GetLength()>allowed) { s.DeleteSub(0,s.GetLength() - allowed + 3); s.Insert("...",0); } s.Insert("Create new file '",0); s.Append("' (Y/n)? "); } else s.Set("Create new file (Y/n)? "); m_state=UI_STATE_SAVE_AS_NEW; attrset(m_color_message); bkgdset(m_color_message); mvaddstr(LINES-1,0,s.Get()); clrtoeol(); attrset(0); bkgdset(0); } else if (fp) { fclose(fp); int x; for (x=0;x<GetTabCount();x++) { MultiTab_Editor *e = GetTab(x); if (e && !stricmp(e->GetFileName(),s.Get())) { SwitchTab(x,false); return; } } AddTab(s.Get()); } }
int MultiTab_Editor::onChar(int c) { if (!m_state && !SHIFT_KEY_DOWN && !ALT_KEY_DOWN && c =='W'-'A'+1) { if (GetTab(0) == this) return 0; // first in list = do nothing if (IsDirty()) { m_state=UI_STATE_SAVE_ON_CLOSE; attrset(m_color_message); bkgdset(m_color_message); mvaddstr(LINES-1,0,"Save file before closing (y/N)? "); clrtoeol(); attrset(0); bkgdset(0); } else { CloseCurrentTab(); delete this; // context no longer valid! return 1; } return 0; } if (m_state == UI_STATE_SAVE_ON_CLOSE) { if (isalnum(c) || isprint(c) || c==27) { if (c == 27) { m_state=0; draw(); draw_message("Cancelled close of file."); setCursor(); return 0; } if (toupper(c) == 'N' || toupper(c) == 'Y') { if (toupper(c) == 'Y') { if(updateFile()) { m_state=0; draw(); draw_message("Error writing file, changes not saved!"); setCursor(); return 0; } } CloseCurrentTab(); delete this; // this no longer valid, return 1 to avoid future calls in onChar() return 1; } } return 0; } else if (m_state == UI_STATE_SAVE_AS_NEW) { if (isalnum(c) || isprint(c) || c==27 || c == '\r' || c=='\n') { if (toupper(c) == 'N' || c == 27) { m_state=0; draw(); draw_message("Cancelled create new file."); setCursor(); return 0; } m_state=0; AddTab(m_newfn.Get()); } return 0; } if ((c==27 || c==29 || (c >= KEY_F1 && c<=KEY_F10)) && CTRL_KEY_DOWN) { int idx=c-KEY_F1; bool rel=true; if (c==27) idx=-1; else if (c==29) idx=1; else rel=false; SwitchTab(idx,rel); return 1; } return WDL_CursesEditor::onChar(c); }
int TabbedDialog::OnInitDialog (WPARAM wParam) { SwitchTab(); return FALSE; }
void OptionsDlg::OnSelchangeTabOption(NMHDR* /*pNMHDR*/, LRESULT* pResult) { *pResult = 0; SwitchTab( m_Tab.GetCurSel() ); }
void cMenu::MenuNavigation() { GetCursorPos( &Cur ); //Tabs. bool ActiveCheck = false; for (int i = 0; i < TabCount; i++) { if(MouseOver(Tabs[i].x, Tabs[i].y, Tabs[i].x + sizeoftab, Tabs[i].y + 20) == 2) SwitchTab(i); if(Tabs[i].Active) { ActiveName = Tabs[i].Name; ActiveCheck = true; } } if(!ActiveCheck) Tabs[0].Active = true; //Checks. for(int i = 0; i < CheckCount; i++) { if ( ActiveName != Checks[i].Parent ) continue; if((MouseOver(Checks[i].x, Checks[i].y, Checks[i].x + 10 , Checks[i].y + 10) == 3) ) Checks[i].Checked = 0; if((MouseOver(Checks[i].x, Checks[i].y, Checks[i].x + 10 , Checks[i].y + 10) == 2) ) Checks[i].Checked = 1; if(Checks[i].Checked) *Checks[i].Variable = 1; else *Checks[i].Variable = 0; } //Sliders. for(int i = 0; i < SliderCount; i++) { if ( ActiveName != Sliders[i].Parent ) continue; if(((MouseOver(Sliders[i].x, Sliders[i].y - 3, Sliders[i].x + 160 , Sliders[i].y + 6) == 2)) ) { //Calculate value based on click position. int Value1 = (Cur.x - Sliders[i].x); float Value2 = ((float)Value1 / (float)120) * Sliders[i].MaxValue; if((int)Value2 > Sliders[i].MaxValue) Value2 = (float)Sliders[i].MaxValue; if((int)Value2 < 0) Value2 = 0.0f; Sliders[i].Value = (int)Value2; *Sliders[i].Variable = Sliders[i].Value; } } //TextBoxes. for(int i = 0; i < TextBoxCount; i++) { if ( ActiveName != TextBoxes[i].Parent ) continue; if((MouseOver(TextBoxes[i].x, TextBoxes[i].y, TextBoxes[i].x + 100 , TextBoxes[i].y + 20) == 2) ) TextBoxes[i].Focused = 1; if((MouseOver(TextBoxes[i].x, TextBoxes[i].y, TextBoxes[i].x + 100 , TextBoxes[i].y + 20) == 3) ) TextBoxes[i].Focused = 0; if ( TextBoxes[i].Focused ) cMenu::ThinkTextBox( i ); } }