לא יודע אם שמתם לב, אבל בשנה האחרונה לא כתבתי הרבה פוסטים, למעשה התדירות ירדה לאחד לכמה חודשים.

    הסיבה לכך לא קשורה לחוסר רצון שלי, אלא לבעייה מצחיקה שלא מצאתי תוסף נורמלי להעתקת קוד מתוך Visual Studio 2015 ומעלה כ – Html. או שהתוספים תמכו עד גרסת 2013, או שהם השתמשו עם תגית pre שעשתה כאילו היא העתיקה את התוכן, אבל לאחר הדבקה הרבה פעמים העיצוב היה נמחק (בעיקר כאשר הייתי עובר למצב עריכה)

    אתמול החלטתי שנמאס לי וכתבתי תוסף כזה בעצמי. (תוכלו להוריד את קוד המקור מכאן, ואת התוסף מכאן)

    אז לכתוב תוסף שמוסיף לחצן בתפריט זה פשוט (הוספת פרוייקט חדש מסוג תוסף, והוספת פריט מסוג Custom Command), מה שחשוב זה לממש את מתודת MenuItemCallback.

     

    הלוגיקה היא כדלהלן:

    1. להעתיק את התוכן שהוא selected ב – Visual studio.
    2. לקבל את התוכן מתוך ה – Clipboard בפורמט RTF
    3. להמיר את ה – RTF ל – HTML.
    4. להעתיק את התוכן החדש ל – Clipboard.
    5. ומשם להדביק את התוכן היכן שנרצה.

    הקוד יראה כך:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SendKeys.Send("^c");
        SendKeys.Flush();
     
        string rtf = Clipboard.GetText(TextDataFormat.Rtf);
        rtf = rtf.Insert(5, "1");
     
        IRtfDocument rtfDocument = RtfInterpreterTool.BuildDoc(rtf, new StamClass());
     
        RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings()
        {
            UseNonBreakingSpaces = true,
            ConvertScope = RtfHtmlConvertScope.Content
        };
        RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument, htmlConvertSettings);
        string res = htmlConverter.Convert().Replace("p>", "div>");
     
        res = "<div dir='ltr' align='left'>" + res + "</div>";
        Clipboard.SetText(res);
    }

     

    ההעתקה מתבצעת בעזרת שליחת פקודת מקלדת של ctrl+c.

    לאחר מכן אני לוקח את הטקסט המועתק בעזרת פורמט rtf (שליחת פורמט html, פשוט תעטוף ב – pre).

    בשלב הבא אני משתמש בספריית המרה בין RTF ל – HTML שמצאתי כאן. (אני רק דואג להכניס את גרסת ה – rtf לפני ההמרה.

    בנוסף אני מחליף את תגיות ה – p ב – div כדי לא לקבל margin מיותר, ובנוסף אני דואג לעטוף את הכול ב – div עם כיוון לימין (קוד תמיד יהיה בימין).

     

    כעת כל מה שנשאר לי לעשות זה לבצע הדבקה בתוכנת הבלוגים. ואוכל להתחיל לכתוב פוסטים.