private void ChangeFileType(FileType NewFileType)
        {
            bool changedType = false;

            foreach (ListViewItem item in listFiles.SelectedItems)
            {
                RetroDevStudio.Types.FileInfo fileToChange = (RetroDevStudio.Types.FileInfo)item.Tag;
                if (fileToChange.Type != NewFileType)
                {
                    m_Media.ChangeFileType(fileToChange, NewFileType);
                    changedType = true;
                }
            }

            if (changedType)
            {
                RefreshFileView();
                SetModified();
                UpdateStatusInfo();
            }
        }
        private void UpdateStatusInfo()
        {
            if (m_Media == null)
            {
                saveToolStripMenuItem.Enabled           = false;
                saveasToolStripMenuItem.Enabled         = false;
                validateMediumToolStripMenuItem.Enabled = false;
            }
            else
            {
                saveToolStripMenuItem.Enabled           = Modified;
                saveasToolStripMenuItem.Enabled         = true;
                validateMediumToolStripMenuItem.Enabled = true;
            }

            if (listFiles.SelectedItems.Count == 0)
            {
                if ((m_Media is Formats.D64) ||
                    (m_Media is Formats.D71) ||
                    (m_Media is Formats.D81))
                {
                    statusFileManager.Text = m_Media.FreeSlots.ToString() + "/" + m_Media.Slots.ToString() + " blocks free"
                                             + "  " + listFiles.Items.Count + " files";
                    return;
                }
                if (m_Media != null)
                {
                    statusFileManager.Text = m_Media.FreeSlots.ToString() + "/" + m_Media.Slots.ToString() + " files free"
                                             + "  " + listFiles.Items.Count + " files";
                    return;
                }
                statusFileManager.Text = "No media opened";
                return;
            }
            RetroDevStudio.Types.FileInfo file = (RetroDevStudio.Types.FileInfo)listFiles.SelectedItems[0].Tag;

            statusFileManager.Text = Util.FilenameToUnicode(file.Filename) + " " + file.Blocks.ToString() + " blocks";
        }
        private void listFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listFiles.SelectedIndices.Count == 0)
            {
                toolStripBtnOpenHex.Enabled      = false;
                toolStripBtnOpenBASIC.Enabled    = false;
                toolStripBtnExportToFile.Enabled = false;
            }
            else
            {
                toolStripBtnOpenHex.Enabled      = true;
                toolStripBtnExportToFile.Enabled = true;

                bool exportToBasicPossible = true;
                foreach (ListViewItem listItem in listFiles.SelectedItems)
                {
                    RetroDevStudio.Types.FileInfo fileInfo = (RetroDevStudio.Types.FileInfo)listItem.Tag;
                    if (fileInfo.Type != RetroDevStudio.Types.FileType.PRG)
                    {
                        exportToBasicPossible = false;
                        break;
                    }
                }
                toolStripBtnOpenBASIC.Enabled = exportToBasicPossible;
            }

            if ((listFiles.Items.Count <= 1) ||
                (listFiles.SelectedIndices.Count == 0))
            {
                toolStripBtnMoveFileDown.Enabled = false;
                toolStripBtnMoveFileUp.Enabled   = false;

                return;
            }
            toolStripBtnMoveFileUp.Enabled   = (listFiles.SelectedIndices[0] > 0);
            toolStripBtnMoveFileDown.Enabled = (listFiles.SelectedIndices[0] + 1 < listFiles.Items.Count);
        }
        private void ExportSelectedItems()
        {
            foreach (ListViewItem item in listFiles.SelectedItems)
            {
                RetroDevStudio.Types.FileInfo fileToExport = (RetroDevStudio.Types.FileInfo)item.Tag;
                RetroDevStudio.Types.FileInfo fileInfo     = null;

                if (m_Media != null)
                {
                    fileInfo = m_Media.LoadFile(fileToExport.Filename);
                }
                if (fileInfo != null)
                {
                    System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog();

                    string readableFilename = Util.FilenameToReadableUnicode(fileToExport.Filename).TrimEnd();

                    char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
                    foreach (char invChar in invalidChars)
                    {
                        readableFilename = readableFilename.Replace(invChar, '_');
                    }

                    saveDlg.Title    = "Select target file name for " + readableFilename;
                    saveDlg.Filter   = "All Files|*.*";
                    saveDlg.FileName = readableFilename;
                    if (fileToExport.Type == RetroDevStudio.Types.FileType.PRG)
                    {
                        saveDlg.FileName += ".prg";
                    }
                    if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        GR.IO.File.WriteAllBytes(saveDlg.FileName, fileInfo.Data);
                    }
                }
            }
        }
        private void listFiles_MouseClick(object sender, MouseEventArgs e)
        {
            if ((e.Button != MouseButtons.Right) ||
                (listFiles.SelectedItems.Count == 0))
            {
                return;
            }
            System.Windows.Forms.ContextMenuStrip contextMenu = new System.Windows.Forms.ContextMenuStrip();

            System.Windows.Forms.ToolStripMenuItem item = new System.Windows.Forms.ToolStripMenuItem("Export");
            item.Tag = 0;
            contextMenu.Items.Add(item);

            System.Windows.Forms.ToolStripMenuItem subItem = new System.Windows.Forms.ToolStripMenuItem("Export to file");
            subItem.Tag    = 0;
            subItem.Click += new EventHandler(itemExport_Click);
            item.DropDownItems.Add(subItem);

            bool exportToBasicPossible = true;

            foreach (ListViewItem listItem in listFiles.SelectedItems)
            {
                RetroDevStudio.Types.FileInfo fileInfo = (RetroDevStudio.Types.FileInfo)listItem.Tag;
                if (fileInfo.Type != RetroDevStudio.Types.FileType.PRG)
                {
                    exportToBasicPossible = false;
                }
            }
            if (exportToBasicPossible)
            {
                item.DropDownItems.Add("--");
                foreach (var dialect in Core.Compiling.BASICDialects)
                {
                    subItem        = new System.Windows.Forms.ToolStripMenuItem("Export to Basic code: " + dialect.Key);
                    subItem.Tag    = dialect.Value;
                    subItem.Click += new EventHandler(itemExportToBasic_Click);
                    item.DropDownItems.Add(subItem);
                }
            }

            // view in Hex display
            item        = new System.Windows.Forms.ToolStripMenuItem("View in Hex Editor");
            item.Tag    = 2;
            item.Click += new EventHandler(itemViewInHexEditor_Click);
            contextMenu.Items.Add(item);

            item     = new System.Windows.Forms.ToolStripMenuItem("Change File Type");
            item.Tag = 2;
            //item.Click += new EventHandler( itemChangeType_Click );
            contextMenu.Items.Add(item);

            subItem        = new ToolStripMenuItem("PRG");
            subItem.Tag    = FileType.PRG;
            subItem.Click += new EventHandler(itemChangeType_Click);
            item.DropDownItems.Add(subItem);

            subItem        = new ToolStripMenuItem("DEL");
            subItem.Tag    = FileType.DEL;
            subItem.Click += new EventHandler(itemChangeType_Click);
            item.DropDownItems.Add(subItem);

            subItem        = new ToolStripMenuItem("USR");
            subItem.Tag    = FileType.USR;
            subItem.Click += new EventHandler(itemChangeType_Click);
            item.DropDownItems.Add(subItem);

            subItem        = new ToolStripMenuItem("REL");
            subItem.Tag    = FileType.REL;
            subItem.Click += new EventHandler(itemChangeType_Click);
            item.DropDownItems.Add(subItem);

            subItem        = new ToolStripMenuItem("SEQ");
            subItem.Tag    = FileType.SEQ;
            subItem.Click += new EventHandler(itemChangeType_Click);
            item.DropDownItems.Add(subItem);

            item        = new System.Windows.Forms.ToolStripMenuItem("Rename");
            item.Tag    = 2;
            item.Click += new EventHandler(itemRename_Click);
            contextMenu.Items.Add(item);

            item        = new System.Windows.Forms.ToolStripMenuItem("Delete");
            item.Tag    = 1;
            item.Click += new EventHandler(itemDelete_Click);
            contextMenu.Items.Add(item);

            contextMenu.Show(listFiles.PointToScreen(e.Location));
        }