/*
 * Copyright 2003 Ulrich Czekalla for CodeWeavers
 * Copyright 2010 Yaron Shahrabani <sh.yaron@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "resource.h"

#pragma code_page(65001)

LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT

UIINSERTOBJECT DIALOG  0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "הוספת עצם"
FONT 8, "MS Shell Dlg"
BEGIN
    LISTBOX         IDC_OBJTYPELIST,82,19,131,66,LBS_SORT |
                    LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL |
                    WS_TABSTOP
    LTEXT           "סוג העצם:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE
    DEFPUSHBUTTON   "אישור",IDOK,221,7,66,14
    PUSHBUTTON      "ביטול",IDCANCEL,221,24,66,14
    GROUPBOX        "תוצאה",IDC_RESULT,7,103,208,41
    CONTROL         "יצירת חדש",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
                    WS_GROUP,7,20,62,10
    CONTROL         "יצירת פקד",IDC_CREATECONTROL,"Button",
                    BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10
    CONTROL         "יצירה מקובץ",IDC_CREATEFROMFILE,"Button",
                    BS_AUTORADIOBUTTON,7,37,67,10
    LTEXT           "",IDC_RESULTDESC,49,112,159,23
    PUSHBUTTON      "הוספת &פקד...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE
    CONTROL         "הצגה כסמל",IDC_ASICON,"Button",BS_AUTOCHECKBOX |
                    WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10
    PUSHBUTTON      "עיון...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE
    LTEXT           "קובץ:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE
    EDITTEXT        IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE
END

STRINGTABLE
{
  IDS_RESULTOBJDESC	"הוספת עצם חדש מסוג %s למסמך שלך"
  IDS_RESULTFILEOBJDESC	"הוספת תוכן הקובץ כעצם לתוך המסמך כדי שניתן יהיה להפעיל אותו באמצעות התכנית שיצרה אותו."
  IDS_BROWSE            "עיון"
  IDS_NOTOLEMOD         "נראה כי הקובץ אינו מודול OLE תקני. לא ניתן לרשום את פקד ה־OLE."
  IDS_NOTOLEMODCAPTION  "הוספת פקד"
}

IDD_PASTESPECIAL4 DIALOG 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "הדבקה מיוחדת"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT         "מקור:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
    CONTROL       "ה&דבקה", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
                  6, 38, 55, 10
    CONTROL       "הדבקת &קישור", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
                  6, 63, 55, 10
    LTEXT         "ב&תור:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
    LISTBOX       IDC_PS_PASTELIST,     65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
    LISTBOX       IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
    LISTBOX       IDC_PS_DISPLAYLIST,   65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
    CONTROL       "אישור", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
    CONTROL       "ביטול", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
    CONTROL       "ע&זרה", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
    CONTROL       "ה&צגה כסמל", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
    CONTROL       "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
    CONTROL       "החלפת ה&סמל...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
    CONTROL       "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
    CONTROL       "<< טקסט התוצאה יופיע כאן >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
    CONTROL       "תוצאה", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
    CONTROL       "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END

STRINGTABLE
{
    IDS_PS_PASTE_DATA                     "הוספת תוכן לוח הגזירים למסמך שלך בתור %s."
    IDS_PS_PASTE_OBJECT                   "הוספת תוכן לוח הגזירים למסמך שלך כדי שניתן יהיה להפעילו באמצעות %s."
    IDS_PS_PASTE_OBJECT_AS_ICON           "הוספת תוכן לוח הגזירים למסמך שלך כדי שניתן יהיה להפעילו באמצעות %s. העצם יוצג כסמל."
    IDS_PS_PASTE_LINK_DATA                "הוספת תוכן לוח הגזירים למסמך שלך כדי שניתן יהיה להפעילו באמצעות %s. הנתונים יהיו מקושרים לקובץ המקור כך ששינויים בקובץ המקור ישפיעו גם על המסמך שלך."
    IDS_PS_PASTE_LINK_OBJECT              "הוספת תמונה מתוכן לוח הגזירים למסמך שלך. התמונה מקושרת לקובץ המקור כך ששינויים לקובץ ישפיעו גם על המסמך שלך."
    IDS_PS_PASTE_LINK_OBJECT_AS_ICON      "הוספת קיצור דרך המצביע אל מיקום תוכן לוח הגזירים.  קיצור הדרך מקושר לקובץ המקור כך ששינויים לקובץ המקור ישפיעו גם על המסמך שלך."
    IDS_PS_NON_OLE                        "הוספת תוכן לוח הגזירים למסמך שלך."
    IDS_PS_UNKNOWN_TYPE                   "סוג לא ידוע"
    IDS_PS_UNKNOWN_SRC                    "מקור לא ידוע"
    IDS_PS_UNKNOWN_APP                    "התכנית שיצרה אותו"
}
