int string_cmp(kv_t *k1, kv_t *k2) { assert(k1->t == k2->t); assert (TKVSTRING== k1->t); return strcmp(_DS(k1), _DS(k2)); }
BOOL XAP_Win32Dialog_Zoom::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet* pSS = m_pApp->getStringSet(); // Update the caption setDialogTitle(pSS->getValue(XAP_STRING_ID_DLG_Zoom_ZoomTitle)); // localize controls _DSX(ZOOM_BTN_CLOSE, DLG_Close); _DS(ZOOM_TEXT_ZOOMTO, DLG_Zoom_RadioFrameCaption); _DS(ZOOM_RADIO_200, DLG_Zoom_200); _DS(ZOOM_RADIO_100, DLG_Zoom_100); _DS(ZOOM_RADIO_75, DLG_Zoom_75); _DS(ZOOM_RADIO_WIDTH, DLG_Zoom_PageWidth); _DS(ZOOM_RADIO_WHOLE, DLG_Zoom_WholePage); _DS(ZOOM_RADIO_PCT, DLG_Zoom_Percent); // set initial state checkButton(XAP_RID_DIALOG_ZOOM_RADIO_200 + m_zoomType); setControlInt(XAP_RID_DIALOG_ZOOM_EDIT_PCT, (UINT) m_zoomPercent); m_bEditPctEnabled = ((XAP_RID_DIALOG_ZOOM_RADIO_200 + m_zoomType) == XAP_RID_DIALOG_ZOOM_RADIO_PCT); enableControl(XAP_RID_DIALOG_ZOOM_EDIT_PCT ,m_bEditPctEnabled); SendMessageW(GetDlgItem(hWnd,XAP_RID_DIALOG_ZOOM_SPIN_PCT),UDM_SETRANGE, (WPARAM)0,(LPARAM)MAKELONG(XAP_DLG_ZOOM_MAXIMUM_ZOOM,XAP_DLG_ZOOM_MINIMUM_ZOOM)); _updatePreviewZoomPercent(getZoomPercent()); centerDialog(); return 1; // 1 == we did not call SetFocus() }
BOOL AP_Win32Dialog_HdrFtr::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { XAP_Win32App * app = static_cast<XAP_Win32App *> (m_pApp); UT_return_val_if_fail (app,0); m_hThisDlg = hWnd; const XAP_StringSet * pSS = m_pApp->getStringSet(); // localize dialog title _win32Dialog.setDialogTitle( pSS->getValue(AP_STRING_ID_DLG_HdrFtr_Title) ); // localize controls _DSX(HDRFTR_BTN_OK, DLG_OK); _DSX(HDRFTR_BTN_CANCEL, DLG_Cancel); _DS(HDRFTR_GBX_HDR, DLG_HdrFtr_HeaderFrame); _DS(HDRFTR_CHK_HDRFACING, DLG_HdrFtr_HeaderEven); _DS(HDRFTR_CHK_HDRFIRST, DLG_HdrFtr_HeaderFirst); _DS(HDRFTR_CHK_HDRLAST, DLG_HdrFtr_HeaderLast); _DS(HDRFTR_GBX_FTR, DLG_HdrFtr_FooterFrame); _DS(HDRFTR_CHK_FTRFACING, DLG_HdrFtr_FooterEven); _DS(HDRFTR_CHK_FTRFIRST, DLG_HdrFtr_FooterFirst); _DS(HDRFTR_CHK_FTRLAST, DLG_HdrFtr_FooterLast); _DS(HDRFTR_CHK_SECTION, DLG_HdrFtr_RestartCheck); _DS(HDRFTR_LBL_SECTION, DLG_HdrFtr_RestartNumbers); // set initial state _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_HDRFACING, getValue(HdrEven)); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_HDRFIRST, getValue(HdrFirst)); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_HDRLAST, getValue(HdrLast)); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_FTRFACING, getValue(FtrEven)); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_FTRFIRST, getValue(FtrFirst)); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_FTRLAST, getValue(FtrLast)); _win32Dialog.setControlInt(AP_RID_DIALOG_HDRFTR_EBX_SECTION, getRestartValue()); bool bRestart = isRestart(); _win32Dialog.checkButton(AP_RID_DIALOG_HDRFTR_CHK_SECTION, bRestart); _win32Dialog.enableControl(AP_RID_DIALOG_HDRFTR_LBL_SECTION, bRestart); _win32Dialog.enableControl(AP_RID_DIALOG_HDRFTR_EBX_SECTION, bRestart); _win32Dialog.enableControl(AP_RID_DIALOG_HDRFTR_SPN_SECTION, bRestart); XAP_Win32DialogHelper::s_centerDialog(hWnd); return 1; }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_MergeCells::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { HDC hdc; int x, y; RECT rect; DWORD dwColor = GetSysColor(COLOR_BTNFACE); UT_RGBColor Color(GetRValue(dwColor),GetGValue(dwColor),GetBValue(dwColor)); const XAP_StringSet * pSS = m_pApp->getStringSet(); m_hwndDlg = hWnd; // localise controls _DS(TEXT_LEFT, DLG_MergeCells_Left); _DS(TEXT_RIGHT, DLG_MergeCells_Right); _DS(TEXT_ABOVE, DLG_MergeCells_Above); _DS(TEXT_BELOW, DLG_MergeCells_Below); _DS(TEXT_FRAME, DLG_MergeCells_Frame); _DSX(BTN_CANCEL, DLG_Close); // Localise caption ConstructWindowName(); SetWindowText(m_hwndDlg, m_WindowName); // The four items are the same size GetClientRect(GetDlgItem(hWnd, AP_RID_DIALOG_MERGECELLS_BMP_LEFT), &rect); hdc = GetDC(hWnd); x = rect.right - rect.left, y = rect.bottom - rect.top, // Load the bitmaps into the dialog box m_hBitmapLeft = _loadBitmap(hWnd,AP_RID_DIALOG_MERGECELLS_BMP_LEFT, "MERGELEFT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapRight = _loadBitmap(hWnd,AP_RID_DIALOG_MERGECELLS_BMP_RIGHT, "MERGERIGHT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapAbove = _loadBitmap(hWnd,AP_RID_DIALOG_MERGECELLS_BMP_ABOVE, "MERGEABOVE", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapBelow = _loadBitmap(hWnd,AP_RID_DIALOG_MERGECELLS_BMP_BELOW, "MERGEBELOW", BITMAP_WITDH, BITMAP_HEIGHT, Color); setAllSensitivities(); XAP_Win32DialogHelper::s_centerDialog(hWnd); SetFocus(GetDlgItem(hWnd,AP_RID_DIALOG_MERGECELLS_BTN_CANCEL)); return 0; // 0 because we called SetFocus }
BOOL AP_Win32Dialog_Annotation::_onInitDialog(HWND /*hWnd*/, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet * pSS = m_pApp->getStringSet(); setDialogTitle(pSS->getValue(AP_STRING_ID_DLG_Annotation_Title)); // localize controls _DSX(BTN_OK, DLG_OK); _DSX(BTN_CANCEL, DLG_Cancel); _DS(TEXT_TITLE, DLG_Annotation_Title_LBL); _DS(TEXT_AUTHOR, DLG_Annotation_Author_LBL); _DS(TEXT_DESCRIPTION, DLG_Annotation_Description_LBL); _set_text(AP_RID_DIALOG_ANNOTATION_EDIT_TITLE, getTitle ()); _set_text(AP_RID_DIALOG_ANNOTATION_EDIT_AUTHOR, getAuthor ()); _set_text(AP_RID_DIALOG_ANNOTATION_EDIT_DESCRIPTION, getDescription ()); centerDialog(); return 1; // 1 == we did not call SetFocus() }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_MailMerge::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { const XAP_StringSet * pSS = m_pApp->getStringSet(); // Localise Controls _DS(STATIC_AVAIL, DLG_MailMerge_AvailableFields); _DS(STATIC_FIELD, DLG_MailMerge_Insert_No_Colon); _DS(BTN_OPEN, DLG_MailMerge_OpenFile); _DS(BTN_INSERT, DLG_InsertButton); _DSX(BTN_CLOSE, DLG_Close); setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_MailMerge_MailMergeTitle)); centerDialog(); SetFocus(GetDlgItem(hWnd,AP_RID_DIALOG_MAILMERGE_BTN_CLOSE)); return 0; // 0 because we called SetFocus }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_InsertTable::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { const XAP_StringSet * pSS = m_pApp->getStringSet(); char szValue[BUFSIZE]; m_hwndDlg = hWnd; // localize controls _DSX(BTN_OK, DLG_OK); _DSX(BTN_CANCEL, DLG_Cancel); _DS(TEXT_SIZE, DLG_InsertTable_TableSize); _DS(TEXT_COLUMN, DLG_InsertTable_NumCols); _DS(TEXT_ROW, DLG_InsertTable_NumRows); _DS(TEXT_AUTOFIT, DLG_InsertTable_AutoFit); _DS(RADIO_AUTO, DLG_InsertTable_AutoColSize); _DS(RADIO_FIXED, DLG_InsertTable_FixedColSize); // Localise caption SetWindowText(hWnd, pSS->getValue(AP_STRING_ID_DLG_InsertTable_TableTitle)); // Set Spin range (TODO: check if the max value is correct, copied from the unix version) SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_SPIN_COLUMN),UDM_SETRANGE,(WPARAM)0,(LPARAM)MAKELONG((short)64,(short)1)); SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_SPIN_ROW),UDM_SETRANGE,(WPARAM)0,(LPARAM)MAKELONG((short)500,(short)1)); SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_SPIN_SIZE),UDM_SETRANGE,(WPARAM)0,(LPARAM)MAKELONG((short)9999,(short)1)); // Limit to four chars SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_TEXT_COLUMN),EM_LIMITTEXT,(WPARAM)5,(WPARAM)0); SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_TEXT_ROW),EM_LIMITTEXT,(WPARAM)5,(WPARAM)0); SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_TEXT_SIZE),EM_LIMITTEXT,(WPARAM)5,(WPARAM)0); CheckRadioButton(hWnd, AP_RID_DIALOG_INSERTTABLE_RADIO_AUTO, AP_RID_DIALOG_INSERTTABLE_RADIO_FIXED, AP_RID_DIALOG_INSERTTABLE_RADIO_AUTO); SetFocus(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN)); SendDlgItemMessage(hWnd, AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN, EM_SETSEL, 0, -1); // Set default values sprintf(szValue, "%u", getNumCols()); SetDlgItemText(hWnd, AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN, szValue); sprintf(szValue, "%u", getNumRows()); SetDlgItemText(hWnd, AP_RID_DIALOG_INSERTTABLE_VAL_ROW, szValue); sprintf(szValue, "%02.2f", getColumnWidth()); SetDlgItemText(hWnd, AP_RID_DIALOG_INSERTTABLE_VAL_SIZE, szValue); /* Units name*/ SetDlgItemText(hWnd, AP_RID_DIALOG_INSERTTABLE_TEXT_UNITS, UT_dimensionName(m_dim)); /* Autosize by default*/ EnableWindow(GetDlgItem(m_hwndDlg,AP_RID_DIALOG_INSERTTABLE_VAL_SIZE), FALSE); EnableWindow(GetDlgItem(m_hwndDlg,AP_RID_DIALOG_INSERTTABLE_SPIN_SIZE), FALSE); XAP_Win32DialogHelper::s_centerDialog(hWnd); return 0; // 0 because we called SetFocus }
BOOL AP_Win32Dialog_ToggleCase::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { m_hThisDlg = hWnd; const XAP_StringSet * pSS = m_pApp->getStringSet(); SetWindowText( hWnd, pSS->getValue(AP_STRING_ID_DLG_ToggleCase_Title) ); // localize controls _DSX(TOGGLECASE_BTN_OK, DLG_OK); _DSX(TOGGLECASE_BTN_CANCEL, DLG_Cancel); _DS(TOGGLECASE_RDO_SentenceCase, DLG_ToggleCase_SentenceCase); _DS(TOGGLECASE_RDO_LowerCase, DLG_ToggleCase_LowerCase); _DS(TOGGLECASE_RDO_UpperCase, DLG_ToggleCase_UpperCase); _DS(TOGGLECASE_RDO_TitleCase, DLG_ToggleCase_FirstUpperCase); _DS(TOGGLECASE_RDO_ToggleCase, DLG_ToggleCase_ToggleCase); m_helper.checkButton(AP_RID_DIALOG_TOGGLECASE_RDO_SentenceCase, true); XAP_Win32DialogHelper::s_centerDialog(hWnd); return 1; // 1 == we did not call SetFocus() }
BOOL AP_Win32Dialog_Field::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet * pSS = m_pApp->getStringSet(); setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_Field_FieldTitle)); // localize controls _DSX(FIELD_BTN_OK, DLG_OK); _DSX(FIELD_BTN_CANCEL, DLG_Cancel); _DS(FIELD_TEXT_TYPES, DLG_Field_Types); _DS(FIELD_TEXT_FORMATS, DLG_Field_Fields); _DS(FIELD_TEXT_PARAM, DLG_Field_Parameters); // set initial state m_hwndTypes = GetDlgItem(hWnd, AP_RID_DIALOG_FIELD_LIST_TYPES); m_hwndFormats = GetDlgItem(hWnd, AP_RID_DIALOG_FIELD_LIST_FORMATS); m_hwndParam = GetDlgItem(hWnd, AP_RID_DIALOG_FIELD_EDIT_PARAM); SetTypesList(); SetFieldsList(); centerDialog(); return 1; // 1 == we did not call SetFocus() }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_SplitCells::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { HDC hdc; int x, y; RECT rect; DWORD dwColor = GetSysColor(COLOR_BTNFACE); UT_RGBColor Color(GetRValue(dwColor),GetGValue(dwColor),GetBValue(dwColor)); const XAP_StringSet * pSS = m_pApp->getStringSet(); // Localise caption setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_SplitCellsTitle)); // localise controls _DS(TEXT_LEFT, DLG_SplitCells_Left); _DS(TEXT_VERTMID, DLG_SplitCells_VertMid); _DS(TEXT_RIGHT, DLG_SplitCells_Right); _DS(TEXT_ABOVE, DLG_SplitCells_Above); _DS(TEXT_HORIMID, DLG_SplitCells_HoriMid); _DS(TEXT_BELOW, DLG_SplitCells_Below); _DS(TEXT_FRAME, DLG_SplitCells_Frame); _DSX(BTN_CANCEL, DLG_Close); // The six items are the same size GetClientRect(GetDlgItem(hWnd, AP_RID_DIALOG_SPLITCELLS_BMP_LEFT), &rect); hdc = GetDC(hWnd); x = rect.right - rect.left, y = rect.bottom - rect.top, // Load the bitmaps into the dialog box m_hBitmapLeft = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_LEFT, "SPLITLEFT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapRight = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_VERTMID, "SPLITVERTMID", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapRight = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_RIGHT, "SPLITRIGHT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapAbove = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_ABOVE, "SPLITABOVE", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapAbove = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_HORIMID, "SPLITHORIMID", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapBelow = _loadBitmap(hWnd,AP_RID_DIALOG_SPLITCELLS_BMP_BELOW, "SPLITBELOW", BITMAP_WITDH, BITMAP_HEIGHT, Color); setAllSensitivities(); centerDialog(); SetFocus(GetDlgItem(hWnd,AP_RID_DIALOG_SPLITCELLS_BTN_CANCEL)); return 0; // 0 because we called SetFocus }
BOOL AP_Win32Dialog_InsertHyperlink::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet* pSS = m_pApp->getStringSet(); // Update the caption setDialogTitle(pSS->getValue(AP_STRING_ID_DLG_InsertHyperlink_Title)); /* Localise controls*/ _DSX(INSERTHYPERLINK_BTN_OK, DLG_OK); _DSX(INSERTHYPERLINK_BTN_CANCEL, DLG_Cancel); _DS(INSERTHYPERLINK_LBL_MSG, DLG_InsertHyperlink_Msg); // initial data resetContent(AP_RID_DIALOG_INSERTHYPERLINK_LBX_LINK); UT_uint32 count = getExistingBookmarksCount(); for( UT_uint32 i = 0; i < count; i++) { addItemToList( AP_RID_DIALOG_INSERTHYPERLINK_LBX_LINK, getNthExistingBookmark( i ) ); } SetFocus(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTHYPERLINK_EBX_LINK)); const gchar * hyperlink = getHyperlink(); if(hyperlink) { if(hyperlink[0]=='#') //ignore the anchor for internal bookmarks { setControlText(AP_RID_DIALOG_INSERTHYPERLINK_EBX_LINK, hyperlink+1); } else { setControlText(AP_RID_DIALOG_INSERTHYPERLINK_EBX_LINK, hyperlink); } selectControlText(AP_RID_DIALOG_INSERTHYPERLINK_EBX_LINK, 0, -1); } centerDialog(); return 0; // 0 because we called set focus }
BOOL AP_Win32Dialog_Stylist::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { const XAP_StringSet * pSS = m_pApp->getStringSet(); //localize Caption setDialogTitle(pSS->getValue(AP_STRING_ID_DLG_Stylist_Title)); // localize controls _DSX(BTN_OK, DLG_OK); _DSX(BTN_CANCEL, DLG_Close); _DS(TEXT_STYLES, DLG_Stylist_Styles); _populateWindowData(); HWND hTree = GetDlgItem(m_hDlg, AP_RID_DIALOG_STYLIST_TREE_STYLIST); hTreeProc = (WHICHPROC) GetWindowLongPtrW(hTree, GWLP_WNDPROC); // save off our prior callback SetWindowLongPtrW(hTree, GWLP_WNDPROC, (LONG_PTR)s_treeProc); // tie the treeview to the new callback SetWindowLongPtrW(hTree, GWLP_USERDATA, (LONG_PTR)this); centerDialog(); return 1; // 1 == we did not call SetFocus() }
/* * Helper function to process the load operation. */ static int xout_load_object(struct linux_binprm * bpp, struct pt_regs *rp, int executable) { struct xexec *xexec = (struct xexec *)bpp->buf; struct xext *xext = (struct xext *)(xexec + 1); struct xseg *seglist; struct file *fp = NULL; u_long addr, lPers; int nsegs, ntext, ndata; int pageable = 1, err = 0, i; #ifdef CONFIG_BINFMT_XOUT_X286 struct file *file; #endif lPers = abi_personality((char *)_BX(rp)); if (lPers == 0) lPers = PER_XENIX; if (xexec->x_magic != X_MAGIC) { return -ENOEXEC; } switch (xexec->x_cpu & XC_CPU) { case XC_386: break; #if defined(CONFIG_BINFMT_XOUT_X286) case XC_8086: case XC_286: case XC_286V: case XC_186: if (!Emulx286) return -ENOEXEC; file = open_exec(Emulx286); if (file) { fput(bpp->file); bpp->file = file; kernel_read(bpp->file, 0L, bpp->buf, sizeof(bpp->buf)); } return -ENOEXEC; #endif default: dprintk(KERN_DEBUG "xout: unsupported CPU type (%02x)\n", xexec->x_cpu); return -ENOEXEC; } /* * We can't handle byte or word swapped headers. Well, we * *could* but they should never happen surely? */ if ((xexec->x_cpu & (XC_BSWAP | XC_WSWAP)) != XC_WSWAP) { dprintk(KERN_DEBUG "xout: wrong byte or word sex (%02x)\n", xexec->x_cpu); return -ENOEXEC; } /* Check it's an executable. */ if (!(xexec->x_renv & XE_EXEC)) { dprintk(KERN_DEBUG "xout: not executable\n"); return -ENOEXEC; } /* * There should be an extended header and there should be * some segments. At this stage we don't handle non-segmented * binaries. I'm not sure you can get them under Xenix anyway. */ if (xexec->x_ext != sizeof(struct xext)) { dprintk(KERN_DEBUG "xout: bad extended header\n"); return -ENOEXEC; } if (!(xexec->x_renv & XE_SEG) || !xext->xe_segsize) { dprintk(KERN_DEBUG "xout: not segmented\n"); return -ENOEXEC; } if (!(seglist = kmalloc(xext->xe_segsize, GFP_KERNEL))) { printk(KERN_WARNING "xout: allocating segment list failed\n"); return -ENOMEM; } err = kernel_read(bpp->file, xext->xe_segpos, (char *)seglist, xext->xe_segsize); if (err < 0) { dprintk(KERN_DEBUG "xout: problem reading segment table\n"); goto out; } if (!bpp->file->f_op->mmap) pageable = 0; nsegs = xext->xe_segsize / sizeof(struct xseg); ntext = ndata = 0; for (i = 0; i < nsegs; i++) { switch (seglist[i].xs_type) { case XS_TTEXT: if (isnotaligned(seglist+i)) pageable = 0; ntext++; break; case XS_TDATA: if (isnotaligned(seglist+i)) pageable = 0; ndata++; break; } } if (!ndata) goto out; /* * Generate the proper values for the text fields * * THIS IS THE POINT OF NO RETURN. THE NEW PROCESS WILL TRAP OUT SHOULD * SOMETHING FAIL IN THE LOAD SEQUENCE FROM THIS POINT ONWARD. */ /* * Flush the executable from memory. At this point the executable is * committed to being defined or a segmentation violation will occur. */ if (executable) { dprintk(KERN_DEBUG "xout: flushing executable\n"); flush_old_exec(bpp); if ( (lPers & 0xFF) == (current->personality & 0xFF) ) set_personality(0); set_personality(lPers); #if defined(CONFIG_ABI_TRACE) abi_trace(ABI_TRACE_UNIMPL, "Personality %08X assigned\n", (unsigned int)current->personality); #endif #ifdef CONFIG_64BIT set_thread_flag(TIF_IA32); clear_thread_flag(TIF_ABI_PENDING); #endif current->mm->mmap = NULL; #ifdef set_mm_counter #if _KSL > 14 set_mm_counter(current->mm, file_rss, 0); #else set_mm_counter(current->mm, rss, 0); #endif #else current->mm->rss = 0; #endif #if _KSL > 10 if ((err = setup_arg_pages(bpp, STACK_TOP, EXSTACK_DEFAULT)) < 0) #else if ((err = setup_arg_pages(bpp, EXSTACK_DEFAULT)) < 0) #endif { send_sig(SIGSEGV, current, 1); return (err); } bpp->p = (u_long)xout_create_tables((char *)bpp->p, bpp, (xexec->x_cpu & XC_CPU) == XC_386 ? 1 : 0); current->mm->start_code = 0; current->mm->end_code = xexec->x_text; current->mm->end_data = xexec->x_text + xexec->x_data; current->mm->start_brk = current->mm->brk = xexec->x_text + xexec->x_data + xexec->x_bss; #if _KSL > 28 install_exec_creds(bpp); #else compute_creds(bpp); #endif current->flags &= ~PF_FORKNOEXEC; #if _KSL < 15 #ifdef CONFIG_64BIT __asm__ volatile ( "movl %0,%%fs; movl %0,%%es; movl %0,%%ds" : :"r" (0)); __asm__ volatile ( "pushf; cli; swapgs; movl %0,%%gs; mfence; swapgs; popf" : :"r" (0)); write_pda(oldrsp,bpp->p); _FLG(rp) = 0x200; #else __asm__ volatile ( "movl %0,%%fs ; movl %0,%%gs" : :"r" (0)); _DS(rp) = _ES(rp) = __USER_DS; #endif _SS(rp) = __USER_DS; _SP(rp) = bpp->p; _CS(rp) = __USER_CS; _IP(rp) = xexec->x_entry; set_fs(USER_DS); #else start_thread(rp, xexec->x_entry, bpp->p); #endif #ifdef CONFIG_64BIT __asm__ volatile("movl %0,%%es; movl %0,%%ds": :"r" (__USER32_DS)); _SS(rp) = __USER32_DS; _CS(rp) = __USER32_CS; #endif dprintk(KERN_DEBUG "xout: entry point = 0x%x:0x%08lx\n", xext->xe_eseg, xexec->x_entry); } /* * Scan the segments and map them into the process space. If this * executable is pageable (unlikely since Xenix aligns to 1k * boundaries and we want it aligned to 4k boundaries) this is * all we need to do. If it isn't pageable we go round again * afterwards and load the data. We have to do this in two steps * because if segments overlap within a 4K page we'll lose the * first instance when we remap the page. Hope that's clear... */ for (i = 0; err >= 0 && i < nsegs; i++) { struct xseg *sp = seglist+i; if (sp->xs_attr & XS_AMEM) { err = xout_amen(fp, sp, pageable, &addr, xexec, rp, (!ntext && ndata == 1)); } } /* * We better fix start_data because sys_brk looks there to * calculate data size. * Kernel 2.2 did look at end_code so this is reasonable. */ if (current->mm->start_data == current->mm->start_code) current->mm->start_data = current->mm->end_code; dprintk(KERN_DEBUG "xout: start code 0x%08lx, end code 0x%08lx," " start data 0x%08lx, end data 0x%08lx, brk 0x%08lx\n", current->mm->start_code, current->mm->end_code, current->mm->start_data, current->mm->end_data, current->mm->brk); if (pageable) goto trap; if (err < 0) goto trap; for (i = 0; (err >= 0) && (i < nsegs); i++) { struct xseg *sp = seglist + i; u_long psize; if (sp->xs_type == XS_TTEXT || sp->xs_type == XS_TDATA) { dprintk(KERN_DEBUG "xout: read to 0x%08lx from 0x%08lx," " length 0x%8lx\n", sp->xs_rbase, sp->xs_filpos, sp->xs_psize); if (sp->xs_psize < 0) continue; /* * Do we still get the size ? Yes! [joerg] */ psize = kernel_read(bpp->file, sp->xs_filpos, (char *)((long)sp->xs_rbase), sp->xs_psize); if (psize != sp->xs_psize) { dprintk(KERN_DEBUG "xout: short read 0x%8lx\n",psize); err = -1; break; } } } /* * Generate any needed trap for this process. If an error occured then * generate a segmentation violation. If the process is being debugged * then generate the load trap. (Note: If this is a library load then * do not generate the trap here. Pass the error to the caller who * will do it for the process in the outer lay of this procedure call.) */ trap: if (executable) { if (err < 0) { dprintk(KERN_DEBUG "xout: loader forces seg fault " "(err = %d)\n", err); send_sig(SIGSEGV, current, 0); } #ifdef CONFIG_PTRACE /* --- Red Hat specific handling --- */ #else else if (current->ptrace & PT_PTRACED) send_sig(SIGTRAP, current, 0); #endif err = 0; } out: kfree(seglist); dprintk(KERN_DEBUG "xout: binfmt_xout: result = %d\n", err); /* * If we are using the [2]86 emulation overlay we enter this * rather than the real program and give it the information * it needs to start the ball rolling. */ /* * Xenix 386 programs expect the initial brk value to be in eax * on start up. Hence if we succeeded we need to pass back * the brk value rather than the status. Ultimately the * ret_from_sys_call assembly will place this in eax before * resuming (starting) the process. */ return (err < 0 ? err : current->mm->brk); }
BOOL AP_Win32Dialog_Styles::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { XAP_Win32App * app = static_cast<XAP_Win32App *> (m_pApp); UT_return_val_if_fail (app,0); const XAP_StringSet * pSS = m_pApp->getStringSet(); WCHAR szTemp[20]; GetWindowTextW(hWnd, szTemp, 20 ); m_hDlg=hWnd; // Regular dialog box if( lstrcmpW(szTemp, L"Styles") == 0 ) { setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_Styles_StylesTitle)); // localize controls _DS(STYLES_TOP_TEXT_LIST, DLG_Styles_List); _DS(STYLES_TOP_TEXT_PARAGRAPH_PREVIEW, DLG_Styles_ParaPrev); _DS(STYLES_TOP_TEXT_CHARACTER_PREVIEW, DLG_Styles_CharPrev); _DS(STYLES_TOP_TEXT_DESCRIPTION, DLG_Styles_Description); _DS(STYLES_TOP_BUTTON_DELETE, DLG_Styles_Delete); _DS(STYLES_TOP_BUTTON_MODIFY, DLG_Styles_Modify); _DS(STYLES_TOP_BUTTON_NEW, DLG_Styles_New); _DS(STYLES_TOP_TEXT_AVAILABLE, DLG_Styles_Available); // "Available Styles" GROUPBOX _DSX(STYLES_TOP_BUTTON_APPLY, DLG_Apply); _DSX(STYLES_TOP_BUTTON_CLOSE, DLG_Close); // Set the list combo. _win32Dialog.addItemToCombo(AP_RID_DIALOG_STYLES_TOP_COMBO_LIST, pSS->getValue (AP_STRING_ID_DLG_Styles_LBL_InUse)); _win32Dialog.addItemToCombo(AP_RID_DIALOG_STYLES_TOP_COMBO_LIST, pSS->getValue(AP_STRING_ID_DLG_Styles_LBL_All)); _win32Dialog.addItemToCombo(AP_RID_DIALOG_STYLES_TOP_COMBO_LIST, pSS->getValue(AP_STRING_ID_DLG_Styles_LBL_UserDefined)); _win32Dialog.selectComboItem(AP_RID_DIALOG_STYLES_TOP_COMBO_LIST, (int)m_whichType); // Create a preview windows. HWND hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_STYLES_TOP_TEXT_PARAGRAPH_PREVIEW); m_pParaPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); UT_uint32 w,h; m_pParaPreviewWidget->getWindowSize(&w,&h); _createParaPreviewFromGC(m_pParaPreviewWidget->getGraphics(), w, h); m_pParaPreviewWidget->setPreview(m_pParaPreview); hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_STYLES_TOP_TEXT_CHARACTER_PREVIEW); m_pCharPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); m_pCharPreviewWidget->getWindowSize(&w,&h); _createCharPreviewFromGC(m_pCharPreviewWidget->getGraphics(), w, h); m_pCharPreviewWidget->setPreview(m_pCharPreview); _populateWindowData(); } // This is either the new or Modify sub dialog of styles else { _win32DialogNewModify.setHandle(hWnd); // Localize the controls Labels etc... setWindowText(hWnd, pSS->getValue( (m_bisNewStyle) ? AP_STRING_ID_DLG_Styles_NewTitle : AP_STRING_ID_DLG_Styles_ModifyTitle )); #define _DS(c,s) setDlgItemText(hWnd, AP_RID_DIALOG_##c,pSS->getValue(AP_STRING_ID_##s)) #define _DSX(c,s) setDlgItemText(hWnd, AP_RID_DIALOG_##c,pSS->getValue(XAP_STRING_ID_##s)) _DS(STYLES_NEWMODIFY_LBL_NAME, DLG_Styles_ModifyName); _DS(STYLES_NEWMODIFY_LBL_BASEDON, DLG_Styles_ModifyBasedOn); _DS(STYLES_NEWMODIFY_LBL_TYPE, DLG_Styles_ModifyType); _DS(STYLES_NEWMODIFY_LBL_FOLLOWPARA, DLG_Styles_ModifyFollowing); _DS(STYLES_NEWMODIFY_LBL_REMOVE, DLG_Styles_RemoveLab); _DS(STYLES_NEWMODIFY_GBX_PREVIEW, DLG_Styles_ModifyPreview); _DS(STYLES_NEWMODIFY_GBX_DESC, DLG_Styles_ModifyDescription); _DS(STYLES_NEWMODIFY_BTN_REMOVE, DLG_Styles_RemoveButton); _DS(STYLES_NEWMODIFY_BTN_SHORTCUT, DLG_Styles_ModifyShortCut); _DSX(STYLES_NEWMODIFY_BTN_OK, DLG_OK); _DSX(STYLES_NEWMODIFY_BTN_CANCEL, DLG_Cancel); #undef _DSX #undef _DS // Changes basic controls based upon either New or Modify Dialog _win32DialogNewModify.showControl( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_TYPE , (m_bisNewStyle) ? SW_HIDE : SW_SHOW ); _win32DialogNewModify.showControl( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_TYPE , (m_bisNewStyle) ? SW_SHOW : SW_HIDE ); // Initialize the controls with appropriate data size_t nStyles = getDoc()->getStyleCount(); const char * name = NULL; const char * pLocalised = NULL; const PD_Style * pcStyle = NULL; int nIndex; UT_Win32LocaleString str; UT_UTF8String utf8; UT_GenericVector<PD_Style*> * pStyles = NULL; getDoc()->enumStyles(pStyles); UT_return_val_if_fail( pStyles, FALSE ); for (UT_uint32 i = 0; i < nStyles; i++) { pcStyle = pStyles->getNthItem(i); UT_return_val_if_fail( pcStyle, FALSE ); name = pcStyle->getName(); pt_PieceTable::s_getLocalisedStyleName(name, utf8); pLocalised = utf8.utf8_str(); nIndex = _win32DialogNewModify.addItemToCombo(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, pLocalised); _win32DialogNewModify.setComboDataItem(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, nIndex, i); nIndex = _win32DialogNewModify.addItemToCombo(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, pLocalised); _win32DialogNewModify.setComboDataItem(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, nIndex, i); } delete pStyles; // Strings (not styles names) const char* pDefCurrent = pSS->getValue(AP_STRING_ID_DLG_Styles_DefCurrent); const char* pDefNone = pSS->getValue(AP_STRING_ID_DLG_Styles_DefNone); nIndex = _win32DialogNewModify.addItemToCombo( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, pDefCurrent ); _win32DialogNewModify.setComboDataItem(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, nIndex, (DWORD)-1); nIndex = _win32DialogNewModify.addItemToCombo( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, pDefNone); _win32DialogNewModify.setComboDataItem(AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, nIndex, (DWORD)-1); if( m_bisNewStyle ) { const char* p = pSS->getValue(AP_STRING_ID_DLG_Styles_ModifyParagraph); _win32DialogNewModify.addItemToCombo( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_TYPE, p ); p = pSS->getValue(AP_STRING_ID_DLG_Styles_ModifyCharacter); _win32DialogNewModify.addItemToCombo( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_TYPE, p); // Set the Default syltes: none, default current UT_sint32 result; str.fromUTF8(pSS->getValue(AP_STRING_ID_DLG_Styles_DefNone)); result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, CB_FINDSTRING, -1, (LPARAM) str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, result ); str.fromUTF8(pSS->getValue(AP_STRING_ID_DLG_Styles_DefCurrent)); result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, CB_FINDSTRING, -1, (LPARAM) str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, result ); str.fromUTF8(pSS->getValue(AP_STRING_ID_DLG_Styles_ModifyParagraph)); result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_TYPE, CB_FINDSTRING, -1, (LPARAM) str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_TYPE, result ); eventBasedOn(); eventFollowedBy(); eventStyleType(); fillVecFromCurrentPoint(); } else { const char * szCurrentStyle = NULL; const char * szBasedOn = NULL; const char * szFollowedBy = NULL; const char * pLocalised = NULL; PD_Style * pStyle = NULL; PD_Style * pBasedOnStyle = NULL; PD_Style * pFollowedByStyle = NULL; szCurrentStyle = m_selectedStyle.c_str(); pt_PieceTable::s_getLocalisedStyleName(szCurrentStyle, utf8); pLocalised = utf8.utf8_str(); _win32DialogNewModify.setControlText( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_NAME, pLocalised); if(szCurrentStyle) getDoc()->getStyle(szCurrentStyle,&pStyle); if(!pStyle) { XAP_Frame * pFrame = getFrame(); pFrame->showMessageBox( pSS->getValue(AP_STRING_ID_DLG_Styles_ErrNoStyle), XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK); m_answer = AP_Dialog_Styles::a_CANCEL; return false; } // // Valid style get the Based On and followed by values // pBasedOnStyle = pStyle->getBasedOn(); pFollowedByStyle = pStyle->getFollowedBy(); size_t nStyles = getDoc()->getStyleCount(); const char * name = NULL; const PD_Style * pcStyle = NULL; UT_GenericVector<PD_Style*> * pStyles = NULL; getDoc()->enumStyles(pStyles); UT_return_val_if_fail( pStyles, FALSE ); for (UT_uint32 i = 0; i < nStyles; i++) { pcStyle = pStyles->getNthItem(i); UT_return_val_if_fail( pcStyle, FALSE ); name = pcStyle->getName(); if(pBasedOnStyle && pcStyle == pBasedOnStyle) { szBasedOn = name; } if(pFollowedByStyle && pcStyle == pFollowedByStyle) { szFollowedBy = name; } } delete pStyles; if(pBasedOnStyle != NULL) { pt_PieceTable::s_getLocalisedStyleName(szBasedOn, utf8); pLocalised = utf8.utf8_str(); str = AP_Win32App::s_fromUTF8ToWinLocale(pLocalised); UT_uint32 result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, CB_FINDSTRING, -1, (LPARAM)str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, result ); } else { // Not a style name str.fromUTF8(pSS->getValue(AP_STRING_ID_DLG_Styles_DefNone)); UT_uint32 result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, CB_FINDSTRING, -1, (LPARAM) str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_BASEDON, result ); } if(pFollowedByStyle != NULL) { pt_PieceTable::s_getLocalisedStyleName(szFollowedBy, utf8); pLocalised = utf8.utf8_str(); str = AP_Win32App::s_fromUTF8ToWinLocale(pLocalised); UT_uint32 result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, CB_FINDSTRING, -1, (LPARAM)str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, result ); } else { pt_PieceTable::s_getLocalisedStyleName(pSS->getValue(AP_STRING_ID_DLG_Styles_DefCurrent), utf8); pLocalised = utf8.utf8_str(); str = AP_Win32App::s_fromUTF8ToWinLocale(pLocalised); UT_uint32 result = SendDlgItemMessageW(hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, CB_FINDSTRING, -1, (LPARAM) str.c_str()); _win32DialogNewModify.selectComboItem( AP_RID_DIALOG_STYLES_NEWMODIFY_CBX_FOLLOWPARA, result ); } if(strstr(getAttsVal("type"),"P") != 0) { _win32DialogNewModify.setControlText( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_TYPE, pSS->getValue(AP_STRING_ID_DLG_Styles_ModifyParagraph) ); } else { _win32DialogNewModify.setControlText( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_TYPE, pSS->getValue(AP_STRING_ID_DLG_Styles_ModifyCharacter) ); } // Disable for editing top controls in Modify Dialog _win32DialogNewModify.enableControl( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_NAME, false ); _win32DialogNewModify.enableControl( AP_RID_DIALOG_STYLES_NEWMODIFY_EBX_TYPE, false ); fillVecWithProps(szCurrentStyle,true); } // Generate the Preview class HWND hwndChild = GetDlgItem( hWnd, AP_RID_DIALOG_STYLES_NEWMODIFY_CTL_PREVIEW ); m_pAbiPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); UT_uint32 w,h; m_pAbiPreviewWidget->getWindowSize(&w,&h); _createAbiPreviewFromGC(m_pAbiPreviewWidget->getGraphics(), w, h); _populateAbiPreview(m_bisNewStyle); m_pAbiPreviewWidget->setPreview(m_pAbiPreview); rebuildDeleteProps(); _populatePreviews(true); } XAP_Win32DialogHelper::s_centerDialog(hWnd); return 1; // 1 == we did not call SetFocus() }
BOOL AP_Win32Dialog_New::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { m_hThisDlg = hWnd; XAP_Win32App * app = static_cast<XAP_Win32App *> (m_pApp); UT_return_val_if_fail (app,1); const XAP_StringSet * pSS = m_pApp->getStringSet(); _win32Dialog.setDialogTitle(pSS->getValue(AP_STRING_ID_DLG_NEW_Title)); // localize controls _DSX(NEW_BTN_OK, DLG_OK); _DSX(NEW_BTN_CANCEL, DLG_Cancel); _DS(NEW_RDO_TEMPLATE, DLG_NEW_Create); _DS(NEW_RDO_EXISTING, DLG_NEW_Open); _DS(NEW_BTN_EXISTING, DLG_NEW_Choose); // set initial state _win32Dialog.setControlText(AP_RID_DIALOG_NEW_EBX_EXISTING, pSS->getValue(AP_STRING_ID_DLG_NEW_NoFile)); HWND hControl = GetDlgItem(hWnd, AP_RID_DIALOG_NEW_LBX_TEMPLATE); long findtag; struct _finddata_t cfile; UT_String templateName, searchDir; templateName = XAP_App::getApp()->getUserPrivateDirectory(); searchDir = XAP_App::getApp()->getUserPrivateDirectory(); searchDir += "\\templates\\*.awt"; findtag = _findfirst( searchDir.c_str(), &cfile ); if( findtag != -1 ) { do { templateName = XAP_App::getApp()->getUserPrivateDirectory(); templateName += "\\templates\\"; templateName += cfile.name; if(!strstr(templateName.c_str(), "normal.awt-")) // don't truncate localized template names templateName = templateName.substr ( 0, templateName.size () - 4 ) ; UT_Win32LocaleString str; str.fromASCII (templateName.c_str()); char *uri = UT_go_filename_to_uri(str.utf8_str().utf8_str()); UT_continue_if_fail(uri); UT_sint32 nIndex = SendMessageW( hControl, LB_ADDSTRING, 0, (LPARAM) UT_basename( uri ) ); SendMessageW( hControl, LB_SETITEMDATA, (WPARAM) nIndex, (LPARAM) 0 ); g_free(uri); } while( _findnext( findtag, &cfile ) == 0 ); } _findclose( findtag ); templateName = XAP_App::getApp()->getAbiSuiteLibDir(); searchDir = XAP_App::getApp()->getAbiSuiteLibDir(); searchDir += "\\templates\\*.awt"; findtag = _findfirst( searchDir.c_str(), &cfile ); if( findtag != -1 ) { do { templateName = XAP_App::getApp()->getAbiSuiteLibDir(); templateName += "\\templates\\"; templateName += cfile.name; if(!strstr(templateName.c_str(), "normal.awt-")) // don't truncate localized template names templateName = templateName.substr ( 0, templateName.size () - 4 ) ; UT_Win32LocaleString str; str.fromASCII (templateName.c_str()); char *uri = UT_go_filename_to_uri(str.utf8_str().utf8_str()); UT_continue_if_fail(uri); UT_sint32 nIndex = SendMessageW( hControl, LB_ADDSTRING, 0, (LPARAM) UT_basename( uri ) ); SendMessageW( hControl, LB_SETITEMDATA, (WPARAM) nIndex, (LPARAM) 1 ); g_free(uri); } while( _findnext( findtag, &cfile ) == 0 ); } _findclose( findtag ); XAP_Win32DialogHelper::s_centerDialog(hWnd); _updateControls(); return 1; // 1 == we did not call SetFocus() }
BOOL AP_Win32Dialog_Paragraph::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { const XAP_StringSet * pSS = m_pApp->getStringSet(); setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_Para_ParaTitle)); // localize controls _DSX(PARA_BTN_OK, DLG_OK); _DSX(PARA_BTN_CANCEL, DLG_Cancel); _DS(PARA_BTN_TABS, DLG_Para_ButtonTabs); // setup the tabs { TabParam tp; TCITEMW tie; XAP_Win32App * pWin32App = static_cast<XAP_Win32App *>(m_pApp); HINSTANCE hinst = pWin32App->getInstance(); DLGTEMPLATE * pTemplate = NULL; HWND w = NULL; tp.pThis = this; // remember the windows we're using m_hwndDlg = hWnd; m_hwndTab = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_TAB); // add a tab for each of the child dialog boxes UT_Win32LocaleString str; tie.mask = TCIF_TEXT | TCIF_IMAGE | TCIF_PARAM; tie.iImage = -1; str.fromUTF8(_GV(DLG_Para_TabLabelIndentsAndSpacing)); tie.pszText = (LPWSTR)str.c_str(); tie.lParam = AP_RID_DIALOG_PARA_TAB1; SendMessageW(m_hwndTab, TCM_INSERTITEMW, 0, (LPARAM)&tie); str.fromUTF8(_GV(DLG_Para_TabLabelLineAndPageBreaks)); tie.pszText = (LPWSTR)str.c_str(); tie.lParam = AP_RID_DIALOG_PARA_TAB2; SendMessageW(m_hwndTab, TCM_INSERTITEMW, 1, (LPARAM)&tie); // finally, create the (modeless) child dialogs tp.which = AP_RID_DIALOG_PARA_TAB1; pTemplate = UT_LockDlgRes(hinst, MAKEINTRESOURCEW(tp.which)); w = CreateDialogIndirectParamW(hinst, pTemplate, m_hwndTab, (DLGPROC)s_tabProc, (LPARAM)&tp); UT_ASSERT_HARMLESS((w && (w == m_hwndSpacing))); tp.which = AP_RID_DIALOG_PARA_TAB2; pTemplate = UT_LockDlgRes(hinst, MAKEINTRESOURCEW(tp.which)); w = CreateDialogIndirectParamW(hinst, pTemplate, m_hwndTab, (DLGPROC)s_tabProc, (LPARAM)&tp); UT_ASSERT_HARMLESS((w && (w == m_hwndBreaks))); } // HACK: make sure the first tab is visible // TODO: trigger selchange logic instead ShowWindow(m_hwndSpacing, SW_SHOW); // sync all controls once to get started // HACK: the first arg gets ignored _syncControls(id_MENU_ALIGNMENT, true); centerDialog(); return 1; // 1 == we did not call SetFocus() }
BOOL AP_Win32Dialog_Paragraph::_onInitTab(HWND hWnd, WPARAM wParam, LPARAM lParam) { const XAP_StringSet * pSS = m_pApp->getStringSet(); UT_Win32LocaleString str; // position ourselves w.r.t. containing tab RECT r; GetClientRect(m_hwndTab, &r); TabCtrl_AdjustRect(m_hwndTab, FALSE, &r); SetWindowPos(hWnd, HWND_TOP, r.left, r.top, 0, 0, SWP_NOSIZE); // remember which window is which tab TabParam * pTP = (TabParam *) lParam; switch (pTP->which) { case AP_RID_DIALOG_PARA_TAB1: // first tab { m_hwndSpacing = hWnd; // Hide Bidi Check Box unless required { HWND hwndBidi = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_CHECK_BIDI); ShowWindow(hwndBidi,SW_HIDE); ShowWindow(hwndBidi,SW_SHOW); } // localize controls _DS(PARA_TEXT_ALIGN, DLG_Para_LabelAlignment); _DS(PARA_TEXT_INDENT, DLG_Para_LabelIndentation); _DS(PARA_TEXT_LEFT, DLG_Para_LabelLeft); _DS(PARA_TEXT_RIGHT, DLG_Para_LabelRight); _DS(PARA_TEXT_HANG, DLG_Para_LabelSpecial); _DS(PARA_TEXT_BY, DLG_Para_LabelBy); _DS(PARA_TEXT_SPACING, DLG_Para_LabelSpacing); _DS(PARA_TEXT_BEFORE, DLG_Para_LabelBefore); _DS(PARA_TEXT_AFTER, DLG_Para_LabelAfter); _DS(PARA_TEXT_LEAD, DLG_Para_LabelLineSpacing); _DS(PARA_TEXT_AT, DLG_Para_LabelAt); _DS(PARA_CHECK_BIDI, DLG_Para_DomDirection); // populate fixed choices { HWND hwndAlign = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_COMBO_ALIGN); // insert the empty value (for multi-para selections with different state) SendMessageW(hwndAlign, CB_ADDSTRING, 0, (LPARAM) L""); _CAS(hwndAlign, DLG_Para_AlignLeft); _CAS(hwndAlign, DLG_Para_AlignCentered); _CAS(hwndAlign, DLG_Para_AlignRight); _CAS(hwndAlign, DLG_Para_AlignJustified); SendMessageW(hwndAlign, CB_SETCURSEL, (WPARAM) _getMenuItemValue(id_MENU_ALIGNMENT), 0); HWND hwndHang = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_COMBO_HANG); SendMessageW(hwndHang, CB_ADDSTRING, 0, (LPARAM) L""); _CAS(hwndHang, DLG_Para_SpecialNone); _CAS(hwndHang, DLG_Para_SpecialFirstLine); _CAS(hwndHang, DLG_Para_SpecialHanging); SendMessageW(hwndHang, CB_SETCURSEL, (WPARAM) _getMenuItemValue(id_MENU_SPECIAL_INDENT), 0); HWND hwndLead = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_COMBO_LEAD); SendMessageW(hwndLead, CB_ADDSTRING, 0, (LPARAM) L""); _CAS(hwndLead, DLG_Para_SpacingSingle); _CAS(hwndLead, DLG_Para_SpacingHalf); _CAS(hwndLead, DLG_Para_SpacingDouble); _CAS(hwndLead, DLG_Para_SpacingAtLeast); _CAS(hwndLead, DLG_Para_SpacingExactly); _CAS(hwndLead, DLG_Para_SpacingMultiple); SendMessageW(hwndLead, CB_SETCURSEL, (WPARAM) _getMenuItemValue(id_MENU_SPECIAL_SPACING), 0); } // set initial state _SST(PARA_EDIT_LEFT, id_SPIN_LEFT_INDENT); _SST(PARA_EDIT_RIGHT, id_SPIN_RIGHT_INDENT); _SST(PARA_EDIT_BY, id_SPIN_SPECIAL_INDENT); _SST(PARA_EDIT_BEFORE, id_SPIN_BEFORE_SPACING); _SST(PARA_EDIT_AFTER, id_SPIN_AFTER_SPACING); _SST(PARA_EDIT_AT, id_SPIN_SPECIAL_SPACING); _CDB(PARA_CHECK_BIDI, id_CHECK_DOMDIRECTION); } break; case AP_RID_DIALOG_PARA_TAB2: // second tab { m_hwndBreaks = hWnd; // localize controls _DS(PARA_TEXT_PAGE, DLG_Para_LabelPagination); _DS(PARA_CHECK_WIDOW, DLG_Para_PushWidowOrphanControl); _DS(PARA_CHECK_NEXT, DLG_Para_PushKeepWithNext); _DS(PARA_CHECK_TOGETHER, DLG_Para_PushKeepLinesTogether); _DS(PARA_CHECK_BREAK, DLG_Para_PushPageBreakBefore); _DS(PARA_CHECK_SUPPRESS, DLG_Para_PushSuppressLineNumbers); _DS(PARA_CHECK_NOHYPHEN, DLG_Para_PushNoHyphenate); // set initial state _CDB(PARA_CHECK_WIDOW, id_CHECK_WIDOW_ORPHAN); _CDB(PARA_CHECK_NEXT, id_CHECK_KEEP_NEXT); _CDB(PARA_CHECK_TOGETHER, id_CHECK_KEEP_LINES); _CDB(PARA_CHECK_BREAK, id_CHECK_PAGE_BREAK); _CDB(PARA_CHECK_SUPPRESS, id_CHECK_SUPPRESS); _CDB(PARA_CHECK_NOHYPHEN, id_CHECK_NO_HYPHENATE); } break; default: UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN); break; } // the following are common to each tab _DS(PARA_TEXT_PREVIEW, DLG_Para_LabelPreview); if (!m_pPreviewWidget) { // for XP purposes, life is simplest if we only have one preview // widget which "floats" above both tabs. to get the window // parentage right, we use the dimensions and location of the // owner-draw control on the tab to position *another* dummy // window which is parented by the main dialog instead. HWND hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_PARA_PREVIEW); HWND hwndFloater = GetDlgItem(m_hwndDlg, AP_RID_DIALOG_PARA_PREVIEW); RECT r2; GetWindowRect(hwndChild, &r2); POINT pt; pt.x = r2.left; pt.y = r2.top; ScreenToClient(m_hwndDlg, &pt); SetWindowPos(hwndFloater, HWND_TOP, pt.x, pt.y, r2.right - r2.left, r2.bottom - r2.top, SWP_NOREDRAW); // use this floater window as a parent to the widget that we create // here and thus have complete control of. m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndFloater, 0); // instantiate the XP preview object using the win32 preview widget (window) // we just created. we seem to have a mish-mash of terms here, sorry. UT_uint32 w,h; m_pPreviewWidget->getWindowSize(&w,&h); _createPreviewFromGC(m_pPreviewWidget->getGraphics(),w,h); m_pPreviewWidget->setPreview(m_paragraphPreview); // we need this to call draw() on WM_PAINTs // _updatePreview(); } return 1; // 1 == we did not call SetFocus() }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_FormatTable::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) { UT_uint32 w,h, i; RECT rect; int nItem; const XAP_StringSet * pSS = m_pApp->getStringSet(); DWORD dwColor = GetSysColor(COLOR_BTNFACE); UT_RGBColor Color(GetRValue(dwColor),GetGValue(dwColor),GetBValue(dwColor)); /* Localise controls*/ _DSX(FORMATTABLE_BTN_CANCEL, DLG_Close); _DSX(FORMATTABLE_BTN_APPLY, DLG_Apply); _DS(FORMATTABLE_TEXT_BACKGROUND, DLG_FormatTable_Color); _DS(FORMATTABLE_TEXT_PREVIEW, DLG_FormatTable_Preview); _DS(FORMATTABLE_TEXT_BORDERS, DLG_FormatTable_Borders); _DS(FORMATTABLE_TEXT_BORDER, DLG_FormatTable_Color); _DS(FORMATTABLE_TEXT_BACKGROUNDS, DLG_FormatTable_Background); _DS(FORMATTABLE_TEXT_APPLYTO, DLG_FormatTable_Apply_To); _DS(FORMATTABLE_BUTTON_SELIMAGE, DLG_FormatTable_SelectImage); _DS(FORMATTABLE_BUTTON_NOIMAGE, DLG_FormatTable_NoImageBackground); _DS(FORMATTABLE_TEXT_THICKNESS, DLG_FormatTable_Thickness); _DS(FORMATTABLE_TEXT_IMGBACK, DLG_FormatTable_SetImageBackground); SetWindowText(hWnd, pSS->getValue(AP_STRING_ID_DLG_FormatTableTitle)); /* Load the bitmaps into the dialog box */ m_hBitmapBottom = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATTABLE_BMP_BOTTOM, "FT_LINEBOTTOM", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapTop = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATTABLE_BMP_TOP, "FT_LINETOP", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapRight = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATTABLE_BMP_RIGHT, "FT_LINERIGHT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapLeft = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATTABLE_BMP_LEFT, "FT_LINELEFT", BITMAP_WITDH, BITMAP_HEIGHT, Color); /* Preview*/ HWND hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_STATIC_PREVIEW); UT_return_val_if_fail (hwndChild,0); delete m_pPreviewWidget; m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); m_pPreviewWidget->getGraphics()->init3dColors(); m_pPreviewWidget->getWindowSize(&w,&h); _createPreviewFromGC(m_pPreviewWidget->getGraphics(), w, h); m_pPreviewWidget->setPreview(m_pFormatTablePreview); startUpdater(); setAllSensitivities(); /* Default status for the push bottons*/ CheckDlgButton(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_TOP, getTopToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_BOTTOM, getBottomToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_RIGHT, getRightToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_LEFT, getLeftToggled() ? BST_CHECKED: BST_UNCHECKED); /* Combo Values for Applyto*/ HWND hCombo = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_COMBO_APPLYTO); nItem = SendMessage(hCombo, CB_ADDSTRING, 0, (WPARAM) pSS->getValue(AP_STRING_ID_DLG_FormatTable_Apply_To_Selection)); SendMessage(hCombo, CB_SETITEMDATA, nItem, FORMAT_TABLE_SELECTION); nItem = SendMessage(hCombo, CB_ADDSTRING, 0, (WPARAM) pSS->getValue(AP_STRING_ID_DLG_FormatTable_Apply_To_Row)); SendMessage(hCombo, CB_SETITEMDATA, nItem, FORMAT_TABLE_ROW); nItem = SendMessage(hCombo, CB_ADDSTRING, 0, (WPARAM) pSS->getValue(AP_STRING_ID_DLG_FormatTable_Apply_To_Column)); SendMessage(hCombo, CB_SETITEMDATA, nItem, FORMAT_TABLE_COLUMN); nItem = SendMessage(hCombo, CB_ADDSTRING, 0, (WPARAM) pSS->getValue(AP_STRING_ID_DLG_FormatTable_Apply_To_Table)); SendMessage(hCombo, CB_SETITEMDATA, nItem, FORMAT_TABLE_TABLE); SendMessage(hCombo, CB_SETCURSEL, 0, 0); /* Combo Values for Thickness */ hCombo = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_COMBO_THICKNESS); for(i=0; i < FORMAT_TABLE_NUMTHICKNESS ; i++) SendMessage(hCombo, CB_ADDSTRING, 0, (WPARAM) sThicknessTable[i]); SendMessage(hCombo, CB_SETCURSEL, 0, 0); XAP_Win32DialogHelper::s_centerDialog(hWnd); return 1; }
BOOL AP_Win32Dialog_Columns::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet* pSS = m_pApp->getStringSet(); // Update the caption setDialogTitle(pSS->getValue(AP_STRING_ID_DLG_Column_ColumnTitle)); /* Localise controls*/ _DSX(COLUMN_BTN_OK, DLG_OK); _DSX(COLUMN_BTN_CANCEL, DLG_Cancel); _DS(COLUMN_GROUP1, DLG_Column_Number); _DS(COLUMN_GROUP2, DLG_Column_Preview); _DS(COLUMN_TEXT_ONE, DLG_Column_One); _DS(COLUMN_TEXT_TWO, DLG_Column_Two); _DS(COLUMN_TEXT_THREE, DLG_Column_Three); _DS(COLUMN_CHECK_LINE_BETWEEN, DLG_Column_Line_Between); _DS(COLUMN_TEXT_NUMCOLUMNS, DLG_Column_Number_Cols); _DS(COLUMN_TEXT_SPACEAFTER, DLG_Column_Space_After); _DS(COLUMN_TEXT_MAXSIZE, DLG_Column_Size); _DS(COLUMN_CHECK_RTL_ORDER, DLG_Column_RtlOrder); // Do Bitmaps RECT rect; GetClientRect(GetDlgItem(hWnd, AP_RID_DIALOG_COLUMN_RADIO_ONE), &rect); int iWidth = rect.right - rect.left; int iHeight = rect.bottom - rect.top; HBITMAP hBitmap; AP_Win32Toolbar_Icons Icons; COLORREF ColorRef = GetSysColor(COLOR_BTNFACE); UT_RGBColor Color(GetRValue(ColorRef), GetGValue(ColorRef), GetBValue(ColorRef)); bool bFoundIcon = Icons.getBitmapForIcon(hWnd, iWidth, iHeight, &Color, "1COLUMN", &hBitmap); UT_return_val_if_fail (bFoundIcon, false); SendDlgItemMessageW(hWnd, AP_RID_DIALOG_COLUMN_RADIO_ONE, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); bFoundIcon = Icons.getBitmapForIcon(hWnd, iWidth, iHeight, &Color, "2COLUMN", &hBitmap); UT_return_val_if_fail (bFoundIcon, false); SendDlgItemMessageW(hWnd, AP_RID_DIALOG_COLUMN_RADIO_TWO, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); bFoundIcon = Icons.getBitmapForIcon(hWnd, iWidth, iHeight, &Color, "3COLUMN", &hBitmap); UT_return_val_if_fail (bFoundIcon, false); SendDlgItemMessageW(hWnd, AP_RID_DIALOG_COLUMN_RADIO_THREE, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); // set initial state wchar_t buf[BUFSIZE]; checkButton(AP_RID_DIALOG_COLUMN_RADIO_ONE + getColumns() - 1, true); enableLineBetweenControl(getColumns() != 1); checkButton(AP_RID_DIALOG_COLUMN_CHECK_LINE_BETWEEN, getLineBetween()); SetDlgItemTextW(m_hDlg, AP_RID_DIALOG_COLUMN_EDIT_NUMCOLUMNS, _itow( getColumns(),buf,10) ); setControlText(AP_RID_DIALOG_COLUMN_EDIT_SPACEAFTER, getSpaceAfterString()); setControlText(AP_RID_DIALOG_COLUMN_EDIT_MAXSIZE, getHeightString()); showControl( AP_RID_DIALOG_COLUMN_CHECK_RTL_ORDER, SW_NORMAL ); checkButton(AP_RID_DIALOG_COLUMN_CHECK_RTL_ORDER, getColumnOrder()!=false); // Create a preview window. HWND hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_COLUMN_PREVIEW); m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); UT_uint32 w,h; m_pPreviewWidget->getWindowSize(&w,&h); //m_pPreviewWidget->init3dColors(m_wpreviewArea->style); m_pPreviewWidget->getGraphics()->init3dColors(); _createPreviewFromGC(m_pPreviewWidget->getGraphics(), w, h); m_pPreviewWidget->setPreview(m_pColumnsPreview); centerDialog(); return 1; // 1 == we did not call SetFocus() }
void string_free(kv_t *kv) { assert (TKVSTRING== kv->t); FREE(_DS(kv)); }
void string_print(kv_t *kv) { assert (TKVSTRING== kv->t); KVPRINT("%s", _DS(kv)); }
BOOL XAP_Win32Dialog_FontChooser::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { XAP_App* pApp = XAP_App::getApp(); const XAP_StringSet* pSS = pApp->getStringSet(); m_hDlg = hWnd; setDialogTitle(pSS->getValue(XAP_STRING_ID_DLG_UFS_FontTitle)); // localize controls _DS(FONT_TEXT_FONT, DLG_UFS_FontLabel); _DS(FONT_TEXT_FONT_STYLE, DLG_UFS_StyleLabel); _DS(FONT_TEXT_SIZE, DLG_UFS_SizeLabel); _DS(FONT_TEXT_EFFECTS, DLG_UFS_EffectsFrameLabel); _DS(FONT_BTN_STRIKEOUT, DLG_UFS_StrikeoutCheck); _DS(FONT_BTN_UNDERLINE, DLG_UFS_UnderlineCheck); _DS(FONT_CHK_OVERLINE, DLG_UFS_OverlineCheck); _DS(FONT_TEXT_COLOR, DLG_UFS_ColorLabel); _DS(FONT_TEXT_SCRIPT, DLG_UFS_ScriptLabel); _DS(FONT_TEXT_SAMPLE, DLG_UFS_SampleFrameLabel); _DS(FONT_BTN_OK, DLG_OK); _DS(FONT_BTN_CANCEL, DLG_Cancel); _DS(FONT_CHK_HIDDEN, DLG_UFS_HiddenCheck); _DS(FONT_CHK_SUPERSCRIPT, DLG_UFS_SuperScript); _DS(FONT_CHK_SUBSCRIPT, DLG_UFS_SubScript); _DS(FONT_CHK_ALLCAPS, DLG_UFS_Effects_UpperCase); _DS(FONT_CHK_SMALLCAPS, DLG_UFS_Effects_SmallCaps); // set initial state if( m_bWin32Overline ) CheckDlgButton( hWnd, XAP_RID_DIALOG_FONT_CHK_OVERLINE, BST_CHECKED ); if( m_bWin32Hidden ) CheckDlgButton( hWnd, XAP_RID_DIALOG_FONT_CHK_HIDDEN, BST_CHECKED ); if( m_bWin32SuperScript) CheckDlgButton(hWnd, XAP_RID_DIALOG_FONT_CHK_SUPERSCRIPT, BST_CHECKED ); if( m_bWin32SubScript) CheckDlgButton(hWnd, XAP_RID_DIALOG_FONT_CHK_SUBSCRIPT, BST_CHECKED ); // use the owner-draw-control dialog-item (aka window) specified in the // dialog resource file as a parent to the window/widget that we create // here and thus have complete control of. // m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), // GetDlgItem(hWnd, XAP_RID_DIALOG_FONT_PREVIEW), // 0); // instantiate the XP preview object using the win32 preview widget (window) // we just created. we seem to have a mish-mash of terms here, sorry. // UT_uint32 w,h; // m_pPreviewWidget->getWindowSize(&w,&h); // _createPreviewFromGC(m_pPreviewWidget->getGraphics(),w,h); // m_pPreviewWidget->setPreview(); // we need this to call draw() on WM_PAINTs // _updatePreviewZoomPercent(getZoomPercent()); // get the initial offset in the text color dlg so that we can tell if the user // changed color m_iColorIndx = SendDlgItemMessageW(hWnd, 1139, CB_GETCURSEL, 0, 0); m_iColorCount = SendDlgItemMessageW(hWnd, 1139, CB_GETCOUNT, 0, 0); if(m_iColorIndx == 0 && !m_sColor.empty() && strcmp(m_sColor.c_str(), "000000") != 0) { // the first item of the list was selected either becase becase the color we // passed to the dlg is not one of those it supports -- we simply add it to the end // of the list // we have no name for this color, so left it empty SendDlgItemMessageW(hWnd, 1139, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)""); // set the color for the entry UT_RGBColor c; UT_parseColor(m_sColor.c_str(),c); DWORD dColor = RGB(c.m_red,c.m_grn,c.m_blu); SendDlgItemMessageW(hWnd, 1139, CB_SETITEMDATA, m_iColorCount, (LPARAM)(DWORD)dColor); // make sure this worked and select the color int iOldCount = m_iColorCount; m_iColorCount = SendDlgItemMessageW(hWnd, 1139, CB_GETCOUNT, 0, 0); if(iOldCount + 1 == m_iColorCount) { SendDlgItemMessageW(hWnd, 1139, CB_SETCURSEL, m_iColorCount-1, 0); m_iColorIndx = m_iColorCount-1; } } return 1; // 1 == we did not call SetFocus() }
/* * Helper function to process the load operation. */ static int coff_load_object(struct linux_binprm *bprm, struct pt_regs *regs, int binary) { COFF_FILHDR *coff_hdr = NULL; COFF_SCNHDR *text_sect = NULL, *data_sect = NULL, *bss_sect = NULL, *sect_bufr = NULL, *sect_ptr = NULL; int text_count = 0, data_count = 0, bss_count = 0, lib_count = 0; coff_section text, data, bss; u_long start_addr = 0, p = bprm->p, m_addr, lPers; short flags, aout_size = 0; int pageable = 1, sections = 0, status = 0, i, ce; int coff_exec_fileno; mm_segment_t old_fs; lPers = abi_personality((char *)_BX(regs)); ce = cap_mmap(0); coff_hdr = (COFF_FILHDR *)bprm->buf; /* * Validate the magic value for the object file. */ if (COFF_I386BADMAG(*coff_hdr)) return -ENOEXEC; flags = COFF_SHORT(coff_hdr->f_flags); /* * The object file should have 32 BIT little endian format. Do not allow * it to have the 16 bit object file flag set as Linux is not able to run * on the 80286/80186/8086. */ if ((flags & (COFF_F_AR32WR | COFF_F_AR16WR)) != COFF_F_AR32WR) return -ENOEXEC; /* * If the file is not executable then reject the execution. This means * that there must not be external references. */ if ((flags & COFF_F_EXEC) == 0) return -ENOEXEC; /* * Extract the header information which we need. */ sections = COFF_SHORT(coff_hdr->f_nscns); /* Number of sections */ aout_size = COFF_SHORT(coff_hdr->f_opthdr); /* Size of opt. headr */ /* * There must be at least one section. */ if (!sections) return -ENOEXEC; if (!bprm->file->f_op->mmap) pageable = 0; if (!(sect_bufr = kmalloc(sections * COFF_SCNHSZ, GFP_KERNEL))) { printk(KERN_WARNING "coff: kmalloc failed\n"); return -ENOMEM; } status = kernel_read(bprm->file, aout_size + COFF_FILHSZ, (char *)sect_bufr, sections * COFF_SCNHSZ); if (status < 0) { printk(KERN_WARNING "coff: unable to read\n"); goto out_free_buf; } status = get_unused_fd(); if (status < 0) { printk(KERN_WARNING "coff: unable to get free fs\n"); goto out_free_buf; } get_file(bprm->file); fd_install(coff_exec_fileno = status, bprm->file); /* * Loop through the sections and find the various types */ sect_ptr = sect_bufr; for (i = 0; i < sections; i++) { long int sect_flags = COFF_LONG(sect_ptr->s_flags); switch (sect_flags) { case COFF_STYP_TEXT: status |= coff_isaligned(sect_ptr); text_sect = sect_ptr; text_count++; break; case COFF_STYP_DATA: status |= coff_isaligned(sect_ptr); data_sect = sect_ptr; data_count++; break; case COFF_STYP_BSS: bss_sect = sect_ptr; bss_count++; break; case COFF_STYP_LIB: lib_count++; break; default: break; } sect_ptr = (COFF_SCNHDR *) & ((char *) sect_ptr)[COFF_SCNHSZ]; } /* * If any of the sections weren't properly aligned we aren't * going to be able to demand page this executable. Note that * at this stage the *only* excuse for having status <= 0 is if * the alignment test failed. */ if (status < 0) pageable = 0; /* * Ensure that there are the required sections. There must be one * text sections and one each of the data and bss sections for an * executable. A library may or may not have a data / bss section. */ if (text_count != 1) { status = -ENOEXEC; goto out_free_file; } if (binary && (data_count != 1 || bss_count != 1)) { status = -ENOEXEC; goto out_free_file; } /* * If there is no additional header then assume the file starts * at the first byte of the text section. This may not be the * proper place, so the best solution is to include the optional * header. A shared library __MUST__ have an optional header to * indicate that it is a shared library. */ if (aout_size == 0) { if (!binary) { status = -ENOEXEC; goto out_free_file; } start_addr = COFF_LONG(text_sect->s_vaddr); } else if (aout_size < (short) COFF_AOUTSZ) { status = -ENOEXEC; goto out_free_file; } else { COFF_AOUTHDR *aout_hdr; short aout_magic; aout_hdr = (COFF_AOUTHDR *) &((char *)coff_hdr)[COFF_FILHSZ]; aout_magic = COFF_SHORT(aout_hdr->magic); /* * Validate the magic number in the a.out header. If it is valid then * update the starting symbol location. Do not accept these file formats * when loading a shared library. */ switch (aout_magic) { case COFF_OMAGIC: case COFF_ZMAGIC: case COFF_STMAGIC: if (!binary) { status = -ENOEXEC; goto out_free_file; } start_addr = (u_int)COFF_LONG(aout_hdr->entry); break; /* * Magic value for a shared library. This is valid only when * loading a shared library. * * (There is no need for a start_addr. It won't be used.) */ case COFF_SHMAGIC: if (!binary) break; /* FALLTHROUGH */ default: status = -ENOEXEC; goto out_free_file; } } /* * Generate the proper values for the text fields * * THIS IS THE POINT OF NO RETURN. THE NEW PROCESS WILL TRAP OUT SHOULD * SOMETHING FAIL IN THE LOAD SEQUENCE FROM THIS POINT ONWARD. */ text.scnptr = COFF_LONG(text_sect->s_scnptr); text.size = COFF_LONG(text_sect->s_size); text.vaddr = COFF_LONG(text_sect->s_vaddr); /* * Generate the proper values for the data fields */ if (data_sect != NULL) { data.scnptr = COFF_LONG(data_sect->s_scnptr); data.size = COFF_LONG(data_sect->s_size); data.vaddr = COFF_LONG(data_sect->s_vaddr); } else { data.scnptr = 0; data.size = 0; data.vaddr = 0; } /* * Generate the proper values for the bss fields */ if (bss_sect != NULL) { bss.size = COFF_LONG(bss_sect->s_size); bss.vaddr = COFF_LONG(bss_sect->s_vaddr); } else { bss.size = 0; bss.vaddr = 0; } /* * Flush the executable from memory. At this point the executable is * committed to being defined or a segmentation violation will occur. */ if (binary) { COFF_SCNHDR *sect_ptr2 = sect_bufr; u_long personality = PER_SVR3; int i; if ((status = flush_old_exec(bprm))) goto out_free_file; /* * Look for clues as to the system this binary was compiled * on in the comments section(s). * * Only look at the main binary, not the shared libraries * (or would it be better to prefer shared libraries over * binaries? Or could they be different???) */ for (i = 0; i < sections; i++) { long sect_flags = COFF_LONG(sect_ptr2->s_flags); if (sect_flags == COFF_STYP_INFO && (status = coff_parse_comments(bprm->file, sect_ptr2, &personality)) > 0) goto found; sect_ptr2 = (COFF_SCNHDR *) &((char *)sect_ptr2)[COFF_SCNHSZ]; } /* * If no .comments section was found there is no way to * figure out the personality. Odds on it is SCO though... */ personality = PER_SCOSVR3; found: if (lPers) personality = lPers; if ( (personality & 0xFF) == (current->personality & 0xFF) ) set_personality(0); set_personality(personality); #if defined(CONFIG_ABI_TRACE) abi_trace(ABI_TRACE_UNIMPL,"Personality %08lX assigned\n",personality); #endif #ifdef CONFIG_64BIT set_thread_flag(TIF_IA32); clear_thread_flag(TIF_ABI_PENDING); #endif current->mm->start_data = 0; current->mm->end_data = 0; current->mm->end_code = 0; current->mm->mmap = NULL; current->flags &= ~PF_FORKNOEXEC; #ifdef set_mm_counter #if _KSL > 14 set_mm_counter(current->mm, file_rss, 0); #else set_mm_counter(current->mm, rss, 0); #endif #else current->mm->rss = 0; #endif /* * Construct the parameter and environment * string table entries. */ #if _KSL > 10 if ((status = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT)) < 0) #else if ((status = setup_arg_pages(bprm, EXSTACK_DEFAULT)) < 0) #endif goto sigsegv; p = (u_long)coff_mktables((char *)bprm->p, bprm->argc, bprm->envc); current->mm->end_code = text.size + (current->mm->start_code = text.vaddr); current->mm->end_data = data.size + (current->mm->start_data = data.vaddr); current->mm->brk = bss.size + (current->mm->start_brk = bss.vaddr); current->mm->start_stack = p; #if _KSL > 28 install_exec_creds(bprm); #else compute_creds(bprm); #endif #if _KSL < 15 #ifdef CONFIG_64BIT __asm__ volatile ( "movl %0,%%fs; movl %0,%%es; movl %0,%%ds" : :"r" (0)); __asm__ volatile ( "pushf; cli; swapgs; movl %0,%%gs; mfence; swapgs; popf" : :"r" (0)); write_pda(oldrsp,p); _FLG(regs) = 0x200; #else __asm__ volatile ( "movl %0,%%fs ; movl %0,%%gs" : :"r" (0)); _DS(regs) = _ES(regs) = __USER_DS; #endif _SS(regs) = __USER_DS; _SP(regs) = p; _CS(regs) = __USER_CS; _IP(regs) = start_addr; set_fs(USER_DS); #else start_thread(regs, start_addr, p); #endif #ifdef CONFIG_64BIT __asm__ volatile("movl %0,%%es; movl %0,%%ds": :"r" (__USER32_DS)); _SS(regs) = __USER32_DS; _CS(regs) = __USER32_CS; #endif } old_fs = get_fs(); set_fs(get_ds()); if (!pageable) { /* * Read the file from disk... * * XXX: untested. */ loff_t pos = data.scnptr; status = do_brk(text.vaddr, text.size); bprm->file->f_op->read(bprm->file, (char *)data.vaddr, data.scnptr, &pos); status = do_brk(data.vaddr, data.size); bprm->file->f_op->read(bprm->file, (char *)text.vaddr, text.scnptr, &pos); status = 0; } else { /* map the text pages...*/ cap_mmap(1); m_addr = map_coff(bprm->file, &text, PROT_READ | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE, text.scnptr & PAGE_MASK); if(!ce) cap_mmap(2); if (m_addr != (text.vaddr & PAGE_MASK)) { status = -ENOEXEC; set_fs(old_fs); goto out_free_file; } /* map the data pages */ if (data.size != 0) { cap_mmap(1); m_addr = map_coff(bprm->file, &data, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE, data.scnptr & PAGE_MASK); if(!ce) cap_mmap(2); if (m_addr != (data.vaddr & PAGE_MASK)) { status = -ENOEXEC; set_fs(old_fs); goto out_free_file; } } status = 0; } /* * Construct the bss data for the process. The bss ranges from the * end of the data (which may not be on a page boundary) to the end * of the bss section. Allocate any necessary pages for the data. */ if (bss.size != 0) { cap_mmap(1); down_write(¤t->mm->mmap_sem); do_mmap(NULL, PAGE_ALIGN(bss.vaddr), bss.size + bss.vaddr - PAGE_ALIGN(bss.vaddr), PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_32BIT, 0); up_write(¤t->mm->mmap_sem); if(!ce) cap_mmap(2); if ((status = coff_clear_memory(bss.vaddr, bss.size)) < 0) { set_fs(old_fs); goto out_free_file; } } set_fs(old_fs); if (!binary) goto out_free_file; /* * Load any shared library for the executable. */ if (lib_count) status = coff_preload_shlibs(bprm, sect_bufr, sections); set_binfmt(&coff_format); /* * Generate any needed trap for this process. If an error occured then * generate a segmentation violation. If the process is being debugged * then generate the load trap. (Note: If this is a library load then * do not generate the trap here. Pass the error to the caller who * will do it for the process in the outer lay of this procedure call.) */ if (status < 0) { sigsegv: printk(KERN_WARNING "coff: trapping process with SEGV\n"); send_sig(SIGSEGV, current, 0); /* Generate the error trap */ } #ifdef CONFIG_PTRACE /* --- Red Hat specific handling --- */ #else else if (current->ptrace & PT_PTRACED) send_sig(SIGTRAP, current, 0); #endif /* We are committed. It can't fail */ status = 0; out_free_file: SYS(close,coff_exec_fileno); out_free_buf: kfree(sect_bufr); return (status); }
// This handles the WM_INITDIALOG message for the top-level dialog. BOOL AP_Win32Dialog_FormatFrame::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { HDC hdc; int x, y; UT_uint32 w,h; UT_sint32 i = 0; RECT rect; const XAP_StringSet * pSS = m_pApp->getStringSet(); DWORD dwColor = GetSysColor(COLOR_BTNFACE); UT_RGBColor Color(GetRValue(dwColor),GetGValue(dwColor),GetBValue(dwColor)); /* The four items are the same size */ GetClientRect(GetDlgItem(hWnd, AP_RID_DIALOG_FORMATFRAME_BMP_BOTTOM), &rect); hdc = GetDC(hWnd); x = rect.right - rect.left; y = rect.bottom - rect.top; /* Localise controls*/ _DSX(FORMATFRAME_BTN_CANCEL, DLG_Close); _DSX(FORMATFRAME_BTN_APPLY, DLG_Apply); _DS(FORMATFRAME_TEXT_BACKGROUND, DLG_FormatFrame_Color); _DS(FORMATFRAME_TEXT_PREVIEW, DLG_FormatFrame_Preview); _DS(FORMATFRAME_TEXT_BORDERS, DLG_FormatFrame_Border_Color); _DS(FORMATFRAME_TEXT_BORDER, DLG_FormatFrame_Color); _DS(FORMATFRAME_TEXT_BACKGROUNDS, DLG_FormatFrame_Background); _DS(FORMATFRAME_TEXT_TEXTWRAPS, DLG_FormatFrame_TextWrapping); _DS(FORMATFRAME_CHK_TEXTWRAP, DLG_FormatFrame_SetTextWrapping); _DS(FORMATFRAME_TEXT_POSTEXTPOS, DLG_FormatFrame_PositionTo); _DS(FORMATFRAME_RADIO_PARA, DLG_FormatFrame_SetToParagraph); _DS(FORMATFRAME_RADIO_COLUMN, DLG_FormatFrame_SetToColumn); _DS(FORMATFRAME_RADIO_PAGE, DLG_FormatFrame_SetToPage); _DS(FORMATFRAME_BUTTON_SELIMAGE, DLG_FormatFrame_SelectImage); _DS(FORMATFRAME_BUTTON_NOIMAGE, DLG_FormatFrame_NoImageBackground); _DS(FORMATFRAME_TEXT_THICKNESS, DLG_FormatTable_Thickness); _DS(FORMATFRAME_TEXT_IMGBACK, DLG_FormatFrame_SetImageBackground); setDialogTitle (pSS->getValue(AP_STRING_ID_DLG_FormatFrameTitle)); /* Load the bitmaps into the dialog box */ m_hBitmapBottom = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATFRAME_BMP_BOTTOM, "FT_LINEBOTTOM", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapTop = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATFRAME_BMP_TOP, "FT_LINETOP", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapRight = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATFRAME_BMP_RIGHT, "FT_LINERIGHT", BITMAP_WITDH, BITMAP_HEIGHT, Color); m_hBitmapLeft = _loadBitmap(hWnd,AP_RID_DIALOG_FORMATFRAME_BMP_LEFT, "FT_LINELEFT", BITMAP_WITDH, BITMAP_HEIGHT, Color); /* Preview*/ HWND hwndChild = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATFRAME_STATIC_PREVIEW); UT_return_val_if_fail (hwndChild,1); m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); m_pPreviewWidget->getGraphics()->init3dColors(); m_pPreviewWidget->getWindowSize(&w,&h); _createPreviewFromGC(m_pPreviewWidget->getGraphics(), w, h); m_pPreviewWidget->setPreview(m_pFormatFramePreview); startUpdater(); setAllSensitivities(); /* Default status for the dialog controls */ CheckDlgButton(hWnd, AP_RID_DIALOG_FORMATFRAME_BMP_TOP, getTopToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(hWnd, AP_RID_DIALOG_FORMATFRAME_BMP_BOTTOM, getBottomToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(hWnd, AP_RID_DIALOG_FORMATFRAME_BMP_RIGHT, getRightToggled() ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(hWnd, AP_RID_DIALOG_FORMATFRAME_BMP_LEFT, getLeftToggled() ? BST_CHECKED: BST_UNCHECKED); /* Position to radio buttons */ if(positionMode() == FL_FRAME_POSITIONED_TO_BLOCK) { CheckRadioButton(hWnd, AP_RID_DIALOG_FORMATFRAME_RADIO_PARA, AP_RID_DIALOG_FORMATFRAME_RADIO_PAGE, AP_RID_DIALOG_FORMATFRAME_RADIO_PARA); } else if(positionMode() == FL_FRAME_POSITIONED_TO_COLUMN) { CheckRadioButton(hWnd, AP_RID_DIALOG_FORMATFRAME_RADIO_PARA, AP_RID_DIALOG_FORMATFRAME_RADIO_PAGE, AP_RID_DIALOG_FORMATFRAME_RADIO_COLUMN); } else if(positionMode() == FL_FRAME_POSITIONED_TO_PAGE) { CheckRadioButton(hWnd, AP_RID_DIALOG_FORMATFRAME_RADIO_PARA, AP_RID_DIALOG_FORMATFRAME_RADIO_PAGE, AP_RID_DIALOG_FORMATFRAME_RADIO_PAGE); } /* Wrapping checkbox */ CheckDlgButton(hWnd, AP_RID_DIALOG_FORMATFRAME_CHK_TEXTWRAP, getWrapping() ? BST_CHECKED: BST_UNCHECKED); /* Combo Values for Thickness */ for(i=0; i < FORMAT_FRAME_NUMTHICKNESS ;i++) addItemToCombo (AP_RID_DIALOG_FORMATFRAME_COMBO_THICKNESS, sThickness[i]); selectComboItem (AP_RID_DIALOG_FORMATFRAME_COMBO_THICKNESS, 0); centerDialog(); return 1; }