fc2ブログ

RStudioで日本語ユーザー名だとパッケージがインストールできない問題の解決方法

 RStudioは大変便利なプログラムですが、Pathに日本語を含んでいるとエラーになる問題があります。
 RStudioはパッケージをドキュメントフォルダ内に作成するので、Windowsのユーザー名が日本語だとパッケージがインストールできなくなります。インストールしようとすると以下のようなエラーメッセージがでます。
パッケージインストールエラーダイアログ 
 ユーザー名が日本語のため???になっています。そのためパッケージがインストールできません。
 ネットでこの問題の解決策を調べると、英語ユーザー名のアカウントを作り直すかユーザー名フォルダを英語名に変更する方法(要レジストリ操作)が見つかりますが、どちらも結構大変なのでできればやりたくありません。
 いろいろ調べてみたところ、もっと簡単な解決方法がありました。
 それは「R_LIBS_USER」という環境変数にライブラリを保存するフォルダのパスを指定する方法です。

 Windowsの設定画面の検索欄に「環境変数」と入力します。
環境変数検索
  プルダウンメニューに「環境変数を編集」が表示されるのでクリックします。
 「ユーザー環境変数」の方の新規ボタンを押してR_LIBS_USER環境変数を作成します。
環境変数作成
 ここではPublicのドキュメントフォルダ内にライブラリ保存先を作成しました。
 日本語が入らなければどこに保存しても構いません。

 環境変数を作成した後にRStudioを起動し、パッケージをインストールしてみます。
パッケージインストール
 今度はエラーメッセージが表示されず、インストールダイアログが表示されました。
 「Install to Library」が環境変数で指定したフォルダのPathになっています。
 インストールも無事行えました。
スポンサーサイト



VS2019 Livet機能拡張のViewModelテンプレートが表示されない問題の対応

 Visual Studio 2019の機能拡張でLivetをインストールして使用しています。
 LivetにはModel、ViewModel、Windowなどの専用テンプレートが用意されていますが、なぜかViewModelのテンプレートが表示されていませんでした。
VS2019_LivetTemplateList1.jpg

 機能拡張やアイテムテンプレートについては全然わからないのですが、それっぽい設定ファイルを探して中を見てみたところ、怪しい箇所をみつけました。
 問題のファイルは、【ユーザー名】\AppData\Local\Microsoft\VisualStudio\16.0_920cb9df\Extensions\tr2pesiv.cfz\ItemTemplates\templateManifest0.1033.vstmanです。
 このファイルをテキストエディタで開いたところ、アイテムテンプレートの情報が記載されているようでした。
templateManifest.jpg
 ViewModelテンプレート情報にだけRequiredFrameworkVersionという項目(上図でハイライトされている箇所)があり、これを削除したところViewModelのアイテムテンプレートが表示されました。
VS2019_LivetTemplateList2.jpg

 このファイルとは別の場所にViewModelだけのテンプレート情報が記載されているファイルがありました。こちらは修正しなくてもViewModelテンプレートが表示されたので、修正の必要はないと思いますが念のためこちらのファイルも修正しておきました。
 ファイルの場所は、【ユーザー名】AppData\Local\Microsoft\VisualStudio\16.0_920cb9df\Extensions\tr2pesiv.cfz\ItemTemplates\CSharp\1033\LivetViewModel.CSharp\LivetViewModel.CSharp.vstemplateです。
LivetViewModel_CSharp.jpg
 こちらも、先ほどと同様にRequiredFrameworkVersionの項目を削除しました。

 今のところこれで問題なく動いていますが、機能拡張などについては何も知らない素人が場当たり的に試した方法なので、後に何か問題が起きるかもしれません。
 この方法を試す場合は自己責任でお願いします。

【Material Design Toolkit】 Button2

 Material Design Toolkitが更新されボタンにバッチを表示する機能とプログレス表示機能が追加されました。
<StackPanel>
    <materialDesign:Badged Badge="Badge" Margin="10">
        <Button Content="Button"/>
    </materialDesign:Badged>

    <Button Content="Progress Button" Margin="10"
            materialDesign:ButtonProgressAssist.Minimum="0"
            materialDesign:ButtonProgressAssist.Maximum="100"
            materialDesign:ButtonProgressAssist.Value="60"/>

    <StackPanel Orientation="Horizontal">
        <Button Style="{StaticResource MaterialDesignFloatingActionButton}"
                Content="A" Margin="10"
                materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
                materialDesign:ButtonProgressAssist.Minimum="0"
                materialDesign:ButtonProgressAssist.Maximum="100"
                materialDesign:ButtonProgressAssist.Value="60"/>
        <Button Style="{StaticResource MaterialDesignFloatingActionButton}"
                Content="B" Margin="10"
                materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
                materialDesign:ButtonProgressAssist.IsIndeterminate="True"
                materialDesign:ButtonProgressAssist.Value="30"/>
        <Button Style="{StaticResource MaterialDesignFloatingActionButton}"
                Content="C" Margin="10"
                materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
                materialDesign:ButtonProgressAssist.IsIndeterminate="True"
                materialDesign:ButtonProgressAssist.Value="30"
                materialDesign:ButtonProgressAssist.IndicatorBackground="Red"
                materialDesign:ButtonProgressAssist.IndicatorForeground="Yellow"/>
        <Button Style="{StaticResource MaterialDesignFloatingActionMiniDarkButton}"
                Content="C" Margin="10"
                materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
                materialDesign:ButtonProgressAssist.IsIndeterminate="True"
                materialDesign:ButtonProgressAssist.Value="30"/>
    </StackPanel>
</StackPanel>
 このコードを実行すると以下の様になります。
MaterialDesign追加ボタン
 Badgedコンテンツ内にボタンを配置することでボタンの右上にバッチを表示することができます。
 バッチに表示する内容はBadgedのBadgeプロパティで指定できます。

 ボタンにプログレス機能を追加する場合はButtonProgressAssistを利用します。
 通常のボタン(四角ボタン)の場合はボタンの背景色を変化させて状況通知を行います。
 進捗状況はButtonProgressAssistのMinimum、Maximum、Valueで指定できます。
 四角ボタンの場合はIndeterminate機能は使用できません。

 丸ボタンの場合はButtonProgressAssist.IsIndicatorVisibleをTrueにしないとプログレスリングが表示されません。
 四角ボタンの時と同様にuttonProgressAssistのMinimum、Maximum、Valueを指定して状況通知を行えます。
 丸ボタンの場合はButtonProgressAssist.IndicatorBackgroundとButtonProgressAssist.IndicatorForegroundを指定することでプログレスリングの色を自由に指定できます。
 また、IsIndeterminateをTrueにすることでリングがぐるぐる回るアニメーションが表示されます。
 丸ボタンのプログレス機能は小さい丸ボタンでも使用可能です。 

テーマ : プログラミング
ジャンル : コンピュータ

【Material Design Toolkit】 TabControl (Dragablz)

 Material Design Toolkitにはタブコントロールが定義されていません。
 Material Design Toolkitのデザインに合わせたタブコントロールが必要な場合はDragablzライブラリを使用します。
 DragablzライブラリはMaterial Design Toolkitと同じ作者が作成した高機能なタブコントロールでタブアイテムを別ウインドウとして切り離したり、タブアイテムを上下左右に並べて表示したりできます。
 Dragablzを使用する場合はNuGetでインストールが必要です。
 また、Dragablzの見た目をMaterial Design Toolkitと合わせるためにDragablz用の設定を行う必要があります。
<Application x:Class="MdDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:dragablz="clr-namespace:Dragablz;assembly=Dragablz"
             StartupUri="Views\MainWindow.xaml"
             Startup="Application_Startup">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />

                <!-- Dragablz Material Design -->
                <ResourceDictionary Source="pack://application:,,,/Dragablz;component/Themes/materialdesign.xaml"/>
            </ResourceDictionary.MergedDictionaries>

            <!-- Dragablz Material Design -->
            <Style TargetType="{x:Type dragablz:TabablzControl}" BasedOn="{StaticResource MaterialDesignTabablzControlStyle}" />
        </ResourceDictionary>
    </Application.Resources>
</Application>
 Dragablzを使用する場合はApp.xamlでMaterial Design Toolkit用の設定と合わせてDragablz用設定を指定する必要があります。

<Window x:Class="MdDemo.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:MdDemo.ViewModels"
        xmlns:dragablz="clr-namespace:Dragablz;assembly=Dragablz"
        xmlns:dockablz="clr-namespace:Dragablz.Dockablz;assembly=Dragablz"
        TextElement.Foreground="{DynamicResource MaterialDesignBody}"
        TextElement.FontWeight="Regular"
        TextElement.FontSize="14"
        TextOptions.TextFormattingMode="Ideal" 
        TextOptions.TextRenderingMode="Auto"        
        Background="{DynamicResource MaterialDesignPaper}"
        FontFamily="{StaticResource MaterialDesignFont}"
        Title="MainWindow" Height="350" Width="525">
    
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>

    <dockablz:Layout>
        <dragablz:TabablzControl FixedHeaderCount="1" ConsolidateOrphanedItems="True">
            <dragablz:TabablzControl.InterTabController>
                <dragablz:InterTabController />
            </dragablz:TabablzControl.InterTabController>

            <TabItem Header="Item1">
                <TextBlock Text="Tab Item1" FontSize="32"/>
            </TabItem>
            <TabItem Header="Item2">
                <TextBlock Text="Tab Item2" FontSize="32"/>
            </TabItem>
            <TabItem Header="Item3">
                <TextBlock Text="Tab Item3" FontSize="32"/>
            </TabItem>
        </dragablz:TabablzControl>
    </dockablz:Layout>
</Window>
 このコードを実行すると以下の様になります。
Dragablz_TabControl.png
 タブアイテムを上下左右に並べて表示したい場合はdockablz:Layout内にdragablz:TabablzControlを設置し、dragablz:TabablzControl.InterTabControllerを設定する必要があります。
 こうすればタブアイテムをドラッグしてタブアイテムの配置を変更できるようになります。
Dragablz_タブアイテムレイアウト位置指定
 タブアイテムをドラッグすると上の図のようにレイアウト範囲の上下左右にグレーの半円が表示されます。
 ドラッグ中のタブアイテムをグレーの半円部分にドロップするとレイアウトが変更されます。
 以下の図はTabItem2をTabItem1の下に表示した後、TabItem3を右側に配置した図です。
Dragablz_タブアイテムレイアウト変更後
 タブアイテムのレイアウト機能が必要ない場合はdockablz:Layoutは必要ありません。

 タブアイテムを別ウインドウとして切り出す場合はdragablz:TabablzControlにdragablz:TabablzControl.InterTabControllerを設定します。
 タブアイテムをドラッグすることで別ウインドウとして切り離すことが可能です。
Dragablz_タブアイテム切り離し
 また、切り離したウインドウのタブをドラッグして元のウインドウのタブヘッダー上にドロップすることで元に戻すこともできます。
(ウインドウ上部をドラッグしている場合は戻せません。タブのヘッダーをドラッグしてください。)
 dragablz:TabablzControlのConsolidateOrphanedItemsプロパティをTrueにすると切り離したタブウインドウを閉じると元のウインドウに再び表示されるようになります。
 FixedHeaderCountプロパティを指定すると、指定した数のタブアイテムがドラッグできなくなります。(レイアウトの変更やウインドウ切り離し、タブアイテムの並べ替えができなくなります)

 以下の様にLayoutもTabablzControl.InterTabControllerも使用しなければシンプルなタブコントロールとして使用できます。
<dragablz:TabablzControl >
    <TabItem Header="Item1">
        <TextBlock Text="Tab Item1" FontSize="32"/>
    </TabItem>
    <TabItem Header="Item2">
        <TextBlock Text="Tab Item2" FontSize="32"/>
    </TabItem>
    <TabItem Header="Item3">
        <TextBlock Text="Tab Item3" FontSize="32"/>
    </TabItem>
</dragablz:TabablzControl>
 

テーマ : プログラミング
ジャンル : コンピュータ

【Material Design Toolkit】 Transitioner

 Transitionerを使用するとパワーポイントのスライドショーの様にスライドを1枚づつ表示することができます。
 処理が複数のステップに分かれている時等に使用します。
<Window x:Class="MdDemo.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:MdDemo.ViewModels"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        TextElement.Foreground="{DynamicResource MaterialDesignBody}"
        TextElement.FontWeight="Regular"
        TextElement.FontSize="13"
        TextOptions.TextFormattingMode="Ideal" 
        TextOptions.TextRenderingMode="Auto"        
        Background="{DynamicResource MaterialDesignPaper}"
        FontFamily="{StaticResource MaterialDesignFont}"
        Title="MainWindow" Height="350" Width="525">
    
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>

    <materialDesign:Transitioner SelectedIndex="0">
        <materialDesign:TransitionerSlide
            OpeningEffect="{materialDesign:TransitionEffect Kind=FadeIn}">
            <StackPanel Background="AliceBlue">
                <TextBlock Text="スライド1" FontSize="64"/>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                    <Button Content="次へ" Width="100"
                            Command="{x:Static materialDesign:Transitioner.MoveNextCommand}"/>
                    <Button Content="最後へ" Width="100"
                            Command="{x:Static materialDesign:Transitioner.MoveLastCommand}"/>
                </StackPanel>
            </StackPanel>
        </materialDesign:TransitionerSlide>

        <materialDesign:TransitionerSlide
            OpeningEffect="{materialDesign:TransitionEffect Kind=SlideInFromLeft, Duration=0:0:2}">
            <StackPanel Background="LightSteelBlue">
                <TextBlock Text="スライド2" FontSize="64"/>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                    <Button Content="前へ" Width="100"
                            Command="{x:Static materialDesign:Transitioner.MovePreviousCommand}"/>
                    <Button Content="次へ" Width="100"
                            Command="{x:Static materialDesign:Transitioner.MoveNextCommand}"/>
                </StackPanel>
            </StackPanel>
        </materialDesign:TransitionerSlide>

        <StackPanel Background="CornflowerBlue">
            <TextBlock Text="スライド3" FontSize="64"/>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                <Button Content="最初へ" Width="100"
                            Command="{x:Static materialDesign:Transitioner.MoveFirstCommand}"/>
            </StackPanel>
        </StackPanel>
    </materialDesign:Transitioner>
</Window>
 これを実行し、スライドを移動させると以下の様に表示されます。
Transitioner.png
 Transitioner領域にスライドが表示されます。
 SselectedIndexプロパティで最初に表示するスライドを指定しています。
 あとはTransitioner以下にスライドを表示順に定義していきます。
 TransitionerSlideを使用する場合はOpeningEffectでスライドを表示する際のエフェクトを指定できます。
 TransitionEffectにはExpandIn、FadeIn、None、SlideInFromBottom、SlideInFromLeft、SlideInFromRight、SlideInFromTopの7種類があります。
 また、Durationを指定することでスライド表示エフェクトの表示時間を変更することもできます。
 TransitionerSlideを使用いない場合(サンプルコードのスライド3)はエフェクトにはNoneが使用されます。

 スライドの移動はコマンドを使用します。
 スライド移動用コマンドは以下の4つが用意されています。
 materialDesign:Transitioner.MoveNextCommand : 次のスライドを表示する
 materialDesign:Transitioner.MovePreviousCommand : 前のスライドを表示する
 materialDesign:Transitioner.MoveFirstCommand : 最初のスライドを表示する
 materialDesign:Transitioner.MoveLastCommand : 最後のスライドを表示する

テーマ : プログラミング
ジャンル : コンピュータ

カレンダー
10 | 2023/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
04  10  11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon