Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElie Rodrigue <elie.rodrigue@nubik.ca>2017-05-10 17:43:29 +0300
committerElie Rodrigue <elie.rodrigue@nubik.ca>2017-05-10 17:43:29 +0300
commitaaa38c4303b9b5af88ce58bd594c02c7eba520d5 (patch)
tree31762ae013ba5a6d1bdc03b5ff9b10d09d2d6f64
parenta73880d02dd995ac4c014ee03ccf03f3d3e33427 (diff)
Working by system treeview
-rw-r--r--FoldersManagerForm.cs5
-rw-r--r--Properties/Resources.es-ES.resx750
-rw-r--r--UI/Components/GameSelecter.Designer.cs71
-rw-r--r--UI/Components/GameSelecter.cs279
-rw-r--r--UI/FixedTreeview.cs28
-rw-r--r--hakchi_gui.csproj6
6 files changed, 750 insertions, 389 deletions
diff --git a/FoldersManagerForm.cs b/FoldersManagerForm.cs
index f3eaa347..eb6135bb 100644
--- a/FoldersManagerForm.cs
+++ b/FoldersManagerForm.cs
@@ -969,5 +969,10 @@ namespace com.clusterrr.hakchi_gui
}
}
}
+
+ private void buttonSplitByConsole_Click(object sender, EventArgs e)
+ {
+ DrawSplitTree(NesMenuCollection.SplitStyle.BySystem);
+ }
}
}
diff --git a/Properties/Resources.es-ES.resx b/Properties/Resources.es-ES.resx
index f6bc3a07..2a156299 100644
--- a/Properties/Resources.es-ES.resx
+++ b/Properties/Resources.es-ES.resx
@@ -1,376 +1,376 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name="AddingGames">
- <value>Procesando juegos, por favor, espera...</value>
- </data>
- <data name="AllFiles">
- <value>Todos los archivos</value>
- </data>
- <data name="AreYouSure">
- <value>¿Estás seguro? </value>
- </data>
- <data name="AutofillResult">
- <value>Datos introducidos automáticamente para {0} juegos</value>
- </data>
- <data name="AutofireHelp1">
- <value>Mantén presionado Select+A/B durante un segundo para activar/desactivar Autofire A/B</value>
- </data>
- <data name="BuildingCustom">
- <value>Creando la imagen del custom kernel</value>
- </data>
- <data name="BuildingFolders">
- <value>Creando la estructura de las carpetas...</value>
- </data>
- <data name="Congratulations">
- <value>¡Enhorabuena!</value>
- </data>
- <data name="CustomKernel">
- <value>Custom kernel</value>
- </data>
- <data name="CustomKernelQ">
- <value>¿Quieres flashear el custom kernel?</value>
- </data>
- <data name="CustomWarning">
- <value>Ahora tienes que flashear el custom kernel. Esta acción sólo es necesaria realizarla una vez. ¿Quieres continuar?</value>
- </data>
- <data name="Default30games">
- <value>30 juegos originales</value>
- </data>
- <data name="DeleteElement">
- <value>¿Quieres eliminar "{0}"?</value>
- </data>
- <data name="DeleteElements">
- <value>¿Quieres eliminar {0} ROM(s)?</value>
- </data>
- <data name="DeleteGame">
- <value>¿Quieres eliminar el juego "{0}"?</value>
- </data>
- <data name="DeletePreset">
- <value>¿Quieres eliminar la lista "{0}"?</value>
- </data>
- <data name="DeleteSavesQ">
- <value>¿Quieres eliminar los puntos de suspensión seleccionados?</value>
- </data>
- <data name="DoYouWantCancel">
- <value>¿Quieres cancelar la operación actual?</value>
- </data>
- <data name="DoYouWantToContinue">
- <value>¿Quieres continuar?</value>
- </data>
- <data name="Donate">
- <value>Si te gusta el proyecto hakchi2, puedes realizarme una donación. Puedes encontrar mi PayPal en la sección "Acerca de..."</value>
- </data>
- <data name="Done">
- <value>El proceso se ha realizado correctamente</value>
- </data>
- <data name="DoneYouCanUpload">
- <value>Ya puedes añadir juegos a la NES Mini</value>
- </data>
- <data name="DownloadAllCoversTitle">
- <value>Descargando carátulas para todos los juegos</value>
- </data>
- <data name="DumpKernelQ">
- <value>¿Quieres volcar el kernel?</value>
- </data>
- <data name="DumpingKernel">
- <value>Volcando el kernel...</value>
- </data>
- <data name="Error">
- <value>Error</value>
- </data>
- <data name="ExecutingCommand">
- <value>Ejecutando el comando:</value>
- </data>
- <data name="ExtraArgsInfo">
- <value>Puedes añadir línea de comando globales que se aplicarán a todos los juegos, incluyendo los 30 originales. (Sólo para expertos)</value>
- </data>
- <data name="ExtraArgsTitle">
- <value>Línea de comando extra</value>
- </data>
- <data name="FirstRun">
- <value>¡Hola! Muchas gracias por usar hakchi2. Este programa es muy fácil de usar, sólo tienes que hacer click en "Añadir más juegos", seleccionar algunas ROMs, presionar "Sincronizar los juegos seleccionados con NES Mini " y seguir las instrucciones</value>
- </data>
- <data name="FlasingCustom">
- <value>Flasheando el custom kernel...</value>
- </data>
- <data name="FlasingOriginal">
- <value>Flasheando el kernel original...</value>
- </data>
- <data name="FolderContent">
- <value>El contenido eliminado se moverá a la papelera de reciclaje, puedes eliminar esta carpeta permanentemente o mover los juegos a otras carpetas</value>
- </data>
- <data name="FolderNameBack">
- <value>Atrás</value>
- </data>
- <data name="FolderNameMoreGames">
- <value>Más juegos...</value>
- </data>
- <data name="FolderNameNewFolder">
- <value>Nueva carpeta</value>
- </data>
- <data name="FolderNameOriginalGames">
- <value>30 juegos originales</value>
- </data>
- <data name="FolderNameTrashBin">
- <value>Papelera de reciclaje</value>
- </data>
- <data name="FolderNameUnsorted">
- <value>Sin clasificar</value>
- </data>
- <data name="FolderStatistics">
- <value>La carpeta "{0}" contiene {1} ROM(s)</value>
- </data>
- <data name="FoldersSaveQ">
- <value>¿Quieres guardar esta estructura de carpetas?</value>
- </data>
- <data name="FourScreenNotSupported">
- <value>{0} usa el modo de four-screen (el juego tiene memoria VRAM adicional en el cartucho), y esta función no es compatible con la NES Mini, es probable que no inicie con el emulador predeterminado, pero debería funcionar si tienes un módulo extra instalado de otro emulador. ¿Quieres añadir este juego?</value>
- </data>
- <data name="GGCodeDelete">
- <value>¿Quieres eliminar el código "{0}"?</value>
- </data>
- <data name="GGCodeEmpty">
- <value>Tienes que escribir un código</value>
- </data>
- <data name="GGCodeExists">
- <value>Este código ya existe. ¿Quieres editarlo?</value>
- </data>
- <data name="GGDescriptionEmpty">
- <value>Tienes que escribir una descripción</value>
- </data>
- <data name="GameGenieFormatError">
- <value>Código Game Genie no válido "{0}" para el juego "{1}"</value>
- </data>
- <data name="GameGenieNotFound">
- <value>No se puede aplicar el código Game Genie "{0}" al juego "{1}" - valor no encontrado. Es posible que este código sea para otro juego</value>
- </data>
- <data name="GamesAndApps">
- <value>Juegos y aplicaciones</value>
- </data>
- <data name="GamesSelected">
- <value>juego(s) seleccionados</value>
- </data>
- <data name="GooglingFor">
- <value>Buscando en Google</value>
- </data>
- <data name="Hello">
- <value>Hola</value>
- </data>
- <data name="Images">
- <value>Imágenes</value>
- </data>
- <data name="InputPreset">
- <value>Escribe un nombre para la lista de juegos que tienes seleccionados actualmente</value>
- </data>
- <data name="InstallingMods">
- <value>Instalando módulos...</value>
- </data>
- <data name="InvalidKernelHeader">
- <value>El encabezado del kernel no es válido</value>
- </data>
- <data name="InvalidKernelSize">
- <value>El tamaño del kernel no es válido</value>
- </data>
- <data name="KernelDumped">
- <value>El kernel original se ha guardado en la carpeta "hakchi2\dump". No lo pierdas, ya que es importante</value>
- </data>
- <data name="LoadingGames">
- <value>Cargando juegos...</value>
- </data>
- <data name="MD5Failed">
- <value>Kernel volcado, pero la suma de comprobación MD5 es desconocida</value>
- </data>
- <data name="MD5Failed2">
- <value>El kernel ya está parcheado o es una revisión desconocida. Envíame este mensaje (presiona Ctrl+C). Continúa bajo tu propio riesgo</value>
- </data>
- <data name="MainMenu">
- <value>Menú de inicio</value>
- </data>
- <data name="MapperNotSupported">
- <value>Este juego, "{0}" usa mapeador #{1} y no es compatible con la NES Mini, es probable que no inicie con el emulador predeterminado, pero debería funcionar si tienes un módulo extra instalado de otro emulador. ¿Quieres añadir este juego?</value>
- </data>
- <data name="MemoryFull">
- <value>Hay {0} MB en juegos, es mucho y podría dar error al sincronizar, es recomendable liberar memoria</value>
- </data>
- <data name="MemoryStats">
- <value>Memoria total: {0:F1} MB|Disponible para juegos: {1:F1} MB|Usada por los puntos de suspensión: {2:F1} MB|Usada por otros archivos: {3:F1} MB</value>
- </data>
- <data name="NewGamesUnsorted">
- <value>Los nuevos juegos se han añadido a la carpeta "Sin clasificar"</value>
- </data>
- <data name="NewPreset">
- <value>Nueva lista</value>
- </data>
- <data name="No">
- <value>No</value>
- </data>
- <data name="NoForAll">
- <value>No para todos</value>
- </data>
- <data name="NoKernel">
- <value>No se ha encontrado ningún volcado del kernel</value>
- </data>
- <data name="NoKernelWarning">
- <value>Primero, tienes hacer un volcado del kernel de la NES Mini. Esta acción, sólo es necesaria realizarla una vez. ¿Quieres continuar?</value>
- </data>
- <data name="NoKernelYouNeed">
- <value>No se ha encontrado ningún volcado del kernel, primero, tienes que realizar un volcado de él</value>
- </data>
- <data name="NoTelnet">
- <value>No se ha podido iniciar el cliente Telnet, es posible que esté desactivado. Debes activarlo primero, para ello, vete a "Panel de control" -&gt; "Programas y características" -&gt; "Activar o desactivar las características de Windows"</value>
- </data>
- <data name="NotFound">
- <value>No se encuentra:</value>
- </data>
- <data name="OriginalKernelQ">
- <value>¿Quieres flashear el kernel original?</value>
- </data>
- <data name="PatchAvailable">
- <value>Parche disponible</value>
- </data>
- <data name="PatchQ">
- <value>Hay un parche para "{0}". ¿Quieres parchear este juego?</value>
- </data>
- <data name="PleaseTryAgainUSB">
- <value>Si el problema persiste, prueba a utilizar otro cable o puerto USB</value>
- </data>
- <data name="PleaseWait">
- <value>Por favor, espera...</value>
- </data>
- <data name="PressOkToContinue">
- <value>Presiona Ok para continuar</value>
- </data>
- <data name="ReplaceKernelQ">
- <value>Ya has realizado el volcado del kernel. Si realmente quieres reemplazar la copia de seguridad de tu kernel y entiendes lo que estás haciendo, borra la carpeta "hakchi2\dump" manualmente</value>
- </data>
- <data name="SavesFlterName">
- <value>Copia de seguridad de los puntos de suspensión NES Mini</value>
- </data>
- <data name="SelectAtLeast">
- <value>Selecciona al menos un juego</value>
- </data>
- <data name="SelectAtLeastTwo">
- <value>Selecciona al menos dos botones</value>
- </data>
- <data name="SelectModsInstall">
- <value>Selecciona los módulos que quieres instalar en la NES Mini</value>
- </data>
- <data name="SelectModsUninstall">
- <value>Selecciona los módulos que quieres eliminar de la NES Mini</value>
- </data>
- <data name="SizeOfSaves">
- <value>Tamaño total de los puntos de suspensión seleccionados:</value>
- </data>
- <data name="UninstallFactoryNote">
- <value>No olvides formatear la NES Mini si quieres eliminar todos los puntos de suspensión</value>
- </data>
- <data name="UninstallQ1">
- <value>¿Quieres eliminar todos los datos de hakchi2 y dejar la NES Mini como de fábrica? (Esto no elimina los puntos de suspensión)</value>
- </data>
- <data name="UninstallQ2">
- <value>Espera a que la luz del botón Power se apague. Tienes que flashear el kernel original. ¿Quieres flashear el kernel original ahora?</value>
- </data>
- <data name="Uninstalling">
- <value>Desinstalando...</value>
- </data>
- <data name="UninstallingMods">
- <value>Desinstalando módulos...</value>
- </data>
- <data name="UnknownGame">
- <value>Juego desconocido</value>
- </data>
- <data name="UploadingConfig">
- <value>Actualizando a la nueva configuración...</value>
- </data>
- <data name="UploadingFes1">
- <value>Cargando y ejecutando fes1...</value>
- </data>
- <data name="UploadingGames">
- <value>Sincronizando juegos...</value>
- </data>
- <data name="UploadingKernel">
- <value>Actualizando el kernel...</value>
- </data>
- <data name="UploadingOriginalGames">
- <value>Procesando los juegos originales...</value>
- </data>
- <data name="VerifyFailed">
- <value>La verificación ha fallado</value>
- </data>
- <data name="Verifying">
- <value>Verificando...</value>
- </data>
- <data name="WaitingForDevice">
- <value>Esperando a la NES Mini...</value>
- </data>
- <data name="Warning">
- <value>¡Atención!</value>
- </data>
- <data name="Wow">
- <value>¡Bien!</value>
- </data>
- <data name="Yes">
- <value>Sí</value>
- </data>
- <data name="YesForAll">
- <value>Sí para todos</value>
- </data>
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="AddingGames">
+ <value>Procesando juegos, por favor, espera...</value>
+ </data>
+ <data name="AllFiles">
+ <value>Todos los archivos</value>
+ </data>
+ <data name="AreYouSure">
+ <value>¿Estás seguro? </value>
+ </data>
+ <data name="AutofillResult">
+ <value>Datos introducidos automáticamente para {0} juegos</value>
+ </data>
+ <data name="AutofireHelp1">
+ <value>Mantén presionado Select+A/B durante un segundo para activar/desactivar Autofire A/B</value>
+ </data>
+ <data name="BuildingCustom">
+ <value>Creando la imagen del custom kernel</value>
+ </data>
+ <data name="BuildingFolders">
+ <value>Creando la estructura de las carpetas...</value>
+ </data>
+ <data name="Congratulations">
+ <value>¡Enhorabuena!</value>
+ </data>
+ <data name="CustomKernel">
+ <value>Custom kernel</value>
+ </data>
+ <data name="CustomKernelQ">
+ <value>¿Quieres flashear el custom kernel?</value>
+ </data>
+ <data name="CustomWarning">
+ <value>Ahora tienes que flashear el custom kernel. Esta acción sólo es necesaria realizarla una vez. ¿Quieres continuar?</value>
+ </data>
+ <data name="Default30games">
+ <value>30 juegos originales</value>
+ </data>
+ <data name="DeleteElement">
+ <value>¿Quieres eliminar "{0}"?</value>
+ </data>
+ <data name="DeleteElements">
+ <value>¿Quieres eliminar {0} ROM(s)?</value>
+ </data>
+ <data name="DeleteGame">
+ <value>¿Quieres eliminar el juego "{0}"?</value>
+ </data>
+ <data name="DeletePreset">
+ <value>¿Quieres eliminar la lista "{0}"?</value>
+ </data>
+ <data name="DeleteSavesQ">
+ <value>¿Quieres eliminar los puntos de suspensión seleccionados?</value>
+ </data>
+ <data name="DoYouWantCancel">
+ <value>¿Quieres cancelar la operación actual?</value>
+ </data>
+ <data name="DoYouWantToContinue">
+ <value>¿Quieres continuar?</value>
+ </data>
+ <data name="Donate">
+ <value>Si te gusta el proyecto hakchi2, puedes realizarme una donación. Puedes encontrar mi PayPal en la sección "Acerca de..."</value>
+ </data>
+ <data name="Done">
+ <value>El proceso se ha realizado correctamente</value>
+ </data>
+ <data name="DoneYouCanUpload">
+ <value>Ya puedes añadir juegos a la NES Mini</value>
+ </data>
+ <data name="DownloadAllCoversTitle">
+ <value>Descargando carátulas para todos los juegos</value>
+ </data>
+ <data name="DumpKernelQ">
+ <value>¿Quieres volcar el kernel?</value>
+ </data>
+ <data name="DumpingKernel">
+ <value>Volcando el kernel...</value>
+ </data>
+ <data name="Error">
+ <value>Error</value>
+ </data>
+ <data name="ExecutingCommand">
+ <value>Ejecutando el comando:</value>
+ </data>
+ <data name="ExtraArgsInfo">
+ <value>Puedes añadir línea de comando globales que se aplicarán a todos los juegos, incluyendo los 30 originales. (Sólo para expertos)</value>
+ </data>
+ <data name="ExtraArgsTitle">
+ <value>Línea de comando extra</value>
+ </data>
+ <data name="FirstRun">
+ <value>¡Hola! Muchas gracias por usar hakchi2. Este programa es muy fácil de usar, sólo tienes que hacer click en "Añadir más juegos", seleccionar algunas ROMs, presionar "Sincronizar los juegos seleccionados con NES Mini " y seguir las instrucciones</value>
+ </data>
+ <data name="FlasingCustom">
+ <value>Flasheando el custom kernel...</value>
+ </data>
+ <data name="FlasingOriginal">
+ <value>Flasheando el kernel original...</value>
+ </data>
+ <data name="FolderContent">
+ <value>El contenido eliminado se moverá a la papelera de reciclaje, puedes eliminar esta carpeta permanentemente o mover los juegos a otras carpetas</value>
+ </data>
+ <data name="FolderNameBack">
+ <value>Atrás</value>
+ </data>
+ <data name="FolderNameMoreGames">
+ <value>Más juegos...</value>
+ </data>
+ <data name="FolderNameNewFolder">
+ <value>Nueva carpeta</value>
+ </data>
+ <data name="FolderNameOriginalGames">
+ <value>30 juegos originales</value>
+ </data>
+ <data name="FolderNameTrashBin">
+ <value>Papelera de reciclaje</value>
+ </data>
+ <data name="FolderNameUnsorted">
+ <value>Sin clasificar</value>
+ </data>
+ <data name="FolderStatistics">
+ <value>La carpeta "{0}" contiene {1} ROM(s)</value>
+ </data>
+ <data name="FoldersSaveQ">
+ <value>¿Quieres guardar esta estructura de carpetas?</value>
+ </data>
+ <data name="FourScreenNotSupported">
+ <value>{0} usa el modo de four-screen (el juego tiene memoria VRAM adicional en el cartucho), y esta función no es compatible con la NES Mini, es probable que no inicie con el emulador predeterminado, pero debería funcionar si tienes un módulo extra instalado de otro emulador. ¿Quieres añadir este juego?</value>
+ </data>
+ <data name="GGCodeDelete">
+ <value>¿Quieres eliminar el código "{0}"?</value>
+ </data>
+ <data name="GGCodeEmpty">
+ <value>Tienes que escribir un código</value>
+ </data>
+ <data name="GGCodeExists">
+ <value>Este código ya existe. ¿Quieres editarlo?</value>
+ </data>
+ <data name="GGDescriptionEmpty">
+ <value>Tienes que escribir una descripción</value>
+ </data>
+ <data name="GameGenieFormatError">
+ <value>Código Game Genie no válido "{0}" para el juego "{1}"</value>
+ </data>
+ <data name="GameGenieNotFound">
+ <value>No se puede aplicar el código Game Genie "{0}" al juego "{1}" - valor no encontrado. Es posible que este código sea para otro juego</value>
+ </data>
+ <data name="GamesAndApps">
+ <value>Juegos y aplicaciones</value>
+ </data>
+ <data name="GamesSelected">
+ <value>juego(s) seleccionados</value>
+ </data>
+ <data name="GooglingFor">
+ <value>Buscando en Google</value>
+ </data>
+ <data name="Hello">
+ <value>Hola</value>
+ </data>
+ <data name="Images">
+ <value>Imágenes</value>
+ </data>
+ <data name="InputPreset">
+ <value>Escribe un nombre para la lista de juegos que tienes seleccionados actualmente</value>
+ </data>
+ <data name="InstallingMods">
+ <value>Instalando módulos...</value>
+ </data>
+ <data name="InvalidKernelHeader">
+ <value>El encabezado del kernel no es válido</value>
+ </data>
+ <data name="InvalidKernelSize">
+ <value>El tamaño del kernel no es válido</value>
+ </data>
+ <data name="KernelDumped">
+ <value>El kernel original se ha guardado en la carpeta "hakchi2\dump". No lo pierdas, ya que es importante</value>
+ </data>
+ <data name="LoadingGames">
+ <value>Cargando juegos...</value>
+ </data>
+ <data name="MD5Failed">
+ <value>Kernel volcado, pero la suma de comprobación MD5 es desconocida</value>
+ </data>
+ <data name="MD5Failed2">
+ <value>El kernel ya está parcheado o es una revisión desconocida. Envíame este mensaje (presiona Ctrl+C). Continúa bajo tu propio riesgo</value>
+ </data>
+ <data name="MainMenu">
+ <value>Menú de inicio</value>
+ </data>
+ <data name="MapperNotSupported">
+ <value>Este juego, "{0}" usa mapeador #{1} y no es compatible con la NES Mini, es probable que no inicie con el emulador predeterminado, pero debería funcionar si tienes un módulo extra instalado de otro emulador. ¿Quieres añadir este juego?</value>
+ </data>
+ <data name="MemoryFull">
+ <value>Hay {0} MB en juegos, es mucho y podría dar error al sincronizar, es recomendable liberar memoria</value>
+ </data>
+ <data name="MemoryStats">
+ <value>Memoria total: {0:F1} MB|Disponible para juegos: {1:F1} MB|Usada por los puntos de suspensión: {2:F1} MB|Usada por otros archivos: {3:F1} MB</value>
+ </data>
+ <data name="NewGamesUnsorted">
+ <value>Los nuevos juegos se han añadido a la carpeta "Sin clasificar"</value>
+ </data>
+ <data name="NewPreset">
+ <value>Nueva lista</value>
+ </data>
+ <data name="No">
+ <value>No</value>
+ </data>
+ <data name="NoForAll">
+ <value>No para todos</value>
+ </data>
+ <data name="NoKernel">
+ <value>No se ha encontrado ningún volcado del kernel</value>
+ </data>
+ <data name="NoKernelWarning">
+ <value>Primero, tienes hacer un volcado del kernel de la NES Mini. Esta acción, sólo es necesaria realizarla una vez. ¿Quieres continuar?</value>
+ </data>
+ <data name="NoKernelYouNeed">
+ <value>No se ha encontrado ningún volcado del kernel, primero, tienes que realizar un volcado de él</value>
+ </data>
+ <data name="NoTelnet">
+ <value>No se ha podido iniciar el cliente Telnet, es posible que esté desactivado. Debes activarlo primero, para ello, vete a "Panel de control" -&gt; "Programas y características" -&gt; "Activar o desactivar las características de Windows"</value>
+ </data>
+ <data name="NotFound">
+ <value>No se encuentra:</value>
+ </data>
+ <data name="OriginalKernelQ">
+ <value>¿Quieres flashear el kernel original?</value>
+ </data>
+ <data name="PatchAvailable">
+ <value>Parche disponible</value>
+ </data>
+ <data name="PatchQ">
+ <value>Hay un parche para "{0}". ¿Quieres parchear este juego?</value>
+ </data>
+ <data name="PleaseTryAgainUSB">
+ <value>Si el problema persiste, prueba a utilizar otro cable o puerto USB</value>
+ </data>
+ <data name="PleaseWait">
+ <value>Por favor, espera...</value>
+ </data>
+ <data name="PressOkToContinue">
+ <value>Presiona Ok para continuar</value>
+ </data>
+ <data name="ReplaceKernelQ">
+ <value>Ya has realizado el volcado del kernel. Si realmente quieres reemplazar la copia de seguridad de tu kernel y entiendes lo que estás haciendo, borra la carpeta "hakchi2\dump" manualmente</value>
+ </data>
+ <data name="SavesFlterName">
+ <value>Copia de seguridad de los puntos de suspensión NES Mini</value>
+ </data>
+ <data name="SelectAtLeast">
+ <value>Selecciona al menos un juego</value>
+ </data>
+ <data name="SelectAtLeastTwo">
+ <value>Selecciona al menos dos botones</value>
+ </data>
+ <data name="SelectModsInstall">
+ <value>Selecciona los módulos que quieres instalar en la NES Mini</value>
+ </data>
+ <data name="SelectModsUninstall">
+ <value>Selecciona los módulos que quieres eliminar de la NES Mini</value>
+ </data>
+ <data name="SizeOfSaves">
+ <value>Tamaño total de los puntos de suspensión seleccionados:</value>
+ </data>
+ <data name="UninstallFactoryNote">
+ <value>No olvides formatear la NES Mini si quieres eliminar todos los puntos de suspensión</value>
+ </data>
+ <data name="UninstallQ1">
+ <value>¿Quieres eliminar todos los datos de hakchi2 y dejar la NES Mini como de fábrica? (Esto no elimina los puntos de suspensión)</value>
+ </data>
+ <data name="UninstallQ2">
+ <value>Espera a que la luz del botón Power se apague. Tienes que flashear el kernel original. ¿Quieres flashear el kernel original ahora?</value>
+ </data>
+ <data name="Uninstalling">
+ <value>Desinstalando...</value>
+ </data>
+ <data name="UninstallingMods">
+ <value>Desinstalando módulos...</value>
+ </data>
+ <data name="UnknownGame">
+ <value>Juego desconocido</value>
+ </data>
+ <data name="UploadingConfig">
+ <value>Actualizando a la nueva configuración...</value>
+ </data>
+ <data name="UploadingFes1">
+ <value>Cargando y ejecutando fes1...</value>
+ </data>
+ <data name="UploadingGames">
+ <value>Sincronizando juegos...</value>
+ </data>
+ <data name="UploadingKernel">
+ <value>Actualizando el kernel...</value>
+ </data>
+ <data name="UploadingOriginalGames">
+ <value>Procesando los juegos originales...</value>
+ </data>
+ <data name="VerifyFailed">
+ <value>La verificación ha fallado</value>
+ </data>
+ <data name="Verifying">
+ <value>Verificando...</value>
+ </data>
+ <data name="WaitingForDevice">
+ <value>Esperando a la NES Mini...</value>
+ </data>
+ <data name="Warning">
+ <value>¡Atención!</value>
+ </data>
+ <data name="Wow">
+ <value>¡Bien!</value>
+ </data>
+ <data name="Yes">
+ <value>Sí</value>
+ </data>
+ <data name="YesForAll">
+ <value>Sí para todos</value>
+ </data>
</root> \ No newline at end of file
diff --git a/UI/Components/GameSelecter.Designer.cs b/UI/Components/GameSelecter.Designer.cs
index b5458fd1..a9708a94 100644
--- a/UI/Components/GameSelecter.Designer.cs
+++ b/UI/Components/GameSelecter.Designer.cs
@@ -35,7 +35,14 @@
this.allToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.noneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.treeView1 = new com.clusterrr.hakchi_gui.UI.FixedTreeview();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.tabPage2 = new System.Windows.Forms.TabPage();
this.contextMenuStrip1.SuspendLayout();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.tabPage2.SuspendLayout();
this.SuspendLayout();
//
// checkedListBox1
@@ -43,9 +50,9 @@
this.checkedListBox1.ContextMenuStrip = this.contextMenuStrip1;
this.checkedListBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkedListBox1.FormattingEnabled = true;
- this.checkedListBox1.Location = new System.Drawing.Point(0, 0);
+ this.checkedListBox1.Location = new System.Drawing.Point(3, 3);
this.checkedListBox1.Name = "checkedListBox1";
- this.checkedListBox1.Size = new System.Drawing.Size(495, 607);
+ this.checkedListBox1.Size = new System.Drawing.Size(481, 575);
this.checkedListBox1.Sorted = true;
this.checkedListBox1.TabIndex = 0;
this.checkedListBox1.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.checkedListBox1_ItemCheck);
@@ -58,7 +65,7 @@
this.selectToolStripMenuItem,
this.deleteSelectedToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
- this.contextMenuStrip1.Size = new System.Drawing.Size(154, 70);
+ this.contextMenuStrip1.Size = new System.Drawing.Size(154, 48);
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
//
// selectToolStripMenuItem
@@ -73,14 +80,14 @@
// allToolStripMenuItem
//
this.allToolStripMenuItem.Name = "allToolStripMenuItem";
- this.allToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.allToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
this.allToolStripMenuItem.Text = "All";
this.allToolStripMenuItem.Click += new System.EventHandler(this.allToolStripMenuItem_Click);
//
// noneToolStripMenuItem
//
this.noneToolStripMenuItem.Name = "noneToolStripMenuItem";
- this.noneToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.noneToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
this.noneToolStripMenuItem.Text = "None";
this.noneToolStripMenuItem.Click += new System.EventHandler(this.noneToolStripMenuItem_Click);
//
@@ -91,14 +98,62 @@
this.deleteSelectedToolStripMenuItem.Text = "Delete selected";
this.deleteSelectedToolStripMenuItem.Click += new System.EventHandler(this.deleteSelectedToolStripMenuItem_Click);
//
+ // treeView1
+ //
+ this.treeView1.CheckBoxes = true;
+ this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.treeView1.Location = new System.Drawing.Point(3, 3);
+ this.treeView1.Name = "treeView1";
+ this.treeView1.Size = new System.Drawing.Size(481, 575);
+ this.treeView1.TabIndex = 1;
+ this.treeView1.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterCheck);
+ this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
+ this.treeView1.DoubleClick += new System.EventHandler(this.treeView1_DoubleClick);
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Controls.Add(this.tabPage2);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 0);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(495, 607);
+ this.tabControl1.TabIndex = 2;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.checkedListBox1);
+ this.tabPage1.Location = new System.Drawing.Point(4, 22);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(487, 581);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "A->Z";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // tabPage2
+ //
+ this.tabPage2.Controls.Add(this.treeView1);
+ this.tabPage2.Location = new System.Drawing.Point(4, 22);
+ this.tabPage2.Name = "tabPage2";
+ this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage2.Size = new System.Drawing.Size(487, 581);
+ this.tabPage2.TabIndex = 1;
+ this.tabPage2.Text = "By System";
+ this.tabPage2.UseVisualStyleBackColor = true;
+ //
// GameSelecter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.checkedListBox1);
+ this.Controls.Add(this.tabControl1);
this.Name = "GameSelecter";
this.Size = new System.Drawing.Size(495, 607);
this.contextMenuStrip1.ResumeLayout(false);
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.tabPage2.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -111,5 +166,9 @@
private System.Windows.Forms.ToolStripMenuItem allToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem deleteSelectedToolStripMenuItem;
+ private FixedTreeview treeView1;
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.TabPage tabPage2;
}
}
diff --git a/UI/Components/GameSelecter.cs b/UI/Components/GameSelecter.cs
index 612f9709..eb2c6673 100644
--- a/UI/Components/GameSelecter.cs
+++ b/UI/Components/GameSelecter.cs
@@ -35,6 +35,7 @@ namespace com.clusterrr.hakchi_gui.UI.Components
public event NesMiniApplication.ValueChangedHandler SelectedAppChanged;
private void GameSelecter_SelectedChanged(NesMiniApplication app)
{
+ /*Checked listbox*/
for(int x=0;x<checkedListBox1.Items.Count;x++)
{
if(checkedListBox1.Items[x] == app)
@@ -43,13 +44,131 @@ namespace com.clusterrr.hakchi_gui.UI.Components
break;
}
}
+ /*Treeview*/
+ TreeNode tn = FindNode(app,treeView1.Nodes);
+ if(tn!=null)
+ {
+ tn.Checked = app.Selected;
+ if (tn.Parent != null)
+ {
+ ValidateFolderCheck(tn.Parent);
+ }
+ }
+
+
}
- private void deleteGame(int pos)
+ private void ValidateAllFolderCheck()
+ {
+ foreach(TreeNode tn in treeView1.Nodes)
+ {
+ ValidateFolderCheck(tn);
+ }
+ }
+ private void ValidateFolderCheck(TreeNode tn)
+ {
+ /*check parent status*/
+ bool needCheck = true;
+
+ foreach (TreeNode ch in tn.Nodes)
+ {
+ if (ch.Checked == false)
+ {
+ needCheck = false;
+ break;
+ }
+ }
+
+ if (tn.Checked != needCheck && !InMassCheck)
+ {
+ if (needCheck == false)
+ {
+ InFolderUncheck = true;
+ }
+ tn.Checked = needCheck;
+ if (needCheck == false)
+ {
+ InFolderUncheck = false;
+ }
+
+ }
+ }
+ private bool InFolderUncheck = false;
+ private TreeNode FindNodeStartWith(string text)
+ {
+ TreeNode ret = null;
+ foreach (TreeNode tn in treeView1.Nodes)
+ {
+ if (tn.Text.ToLower().StartsWith(text))
+ {
+ ret = tn;
+ break;
+ }
+ else
+ {
+ TreeNode tn2 = FindNodeStartWith(text, tn);
+ if (tn2 != null)
+ {
+ ret = tn2;
+ break;
+ }
+
+ }
+ }
+ return ret;
+ }
+ private TreeNode FindNodeStartWith(string text, TreeNode n)
+ {
+ TreeNode ret = null;
+ foreach (TreeNode tn in n.Nodes)
+ {
+ if (tn.Text.ToLower().StartsWith(text))
+ {
+ ret = tn;
+ break;
+
+ }
+ else
+ {
+ TreeNode tn2 = FindNodeStartWith(text, tn);
+ if (tn2 != null)
+ {
+ ret = tn2;
+ break;
+ }
+ }
+ }
+ return ret;
+ }
+ private TreeNode FindNode(NesMiniApplication app,TreeNodeCollection nodes)
+ {
+ TreeNode ret = null;
+ foreach(TreeNode tn in nodes)
+ {
+ if(tn.Tag== app)
+ {
+ ret = tn;
+ break;
+ }
+ else
+ {
+ TreeNode tn2 = FindNode(app, tn.Nodes);
+ if(tn2 != null)
+ {
+ ret = tn2;
+ break;
+ }
+
+ }
+ }
+ return ret;
+ }
+
+ private void deleteGame(NesMiniApplication game)
{
try
{
- var game = checkedListBox1.Items[pos] as NesMiniApplication;
+
if (MessageBox.Show(this, string.Format(Resources.DeleteGame, game.Name), Resources.AreYouSure, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
{
Manager.GameManager.GetInstance().DeleteGames(new List<NesMiniApplication>() { game });
@@ -62,30 +181,106 @@ namespace com.clusterrr.hakchi_gui.UI.Components
}
}
- public NesMiniApplication GetSelectedApp()
+ private NesMiniApplication GetSelectedListBox()
{
NesMiniApplication ret = null;
- if(checkedListBox1.SelectedItem != null)
+ if (checkedListBox1.SelectedItem != null)
{
ret = (NesMiniApplication)checkedListBox1.SelectedItem;
}
return ret;
}
+ private NesMiniApplication GetSelectedTreeView()
+ {
+ NesMiniApplication ret = null;
+
+ if(treeView1.SelectedNode!=null)
+ {
+ if(treeView1.SelectedNode.Tag is NesMiniApplication)
+ {
+ ret = treeView1.SelectedNode.Tag as NesMiniApplication;
+ }
+ }
+
+ return ret;
+ }
+ public string getSelectedTab()
+ {
+ return tabControl1.SelectedTab.Text;
+ }
+ public NesMiniApplication GetSelectedApp()
+ {
+ if(getSelectedTab() == "A->Z")
+ {
+ return GetSelectedListBox();
+ }
+ else
+ {
+ return GetSelectedTreeView();
+ }
+ }
+ private TreeNode getSystemTreeNode(string System)
+ {
+ TreeNode ret = null;
+ foreach(TreeNode tn in treeView1.Nodes)
+ {
+ if(tn.Text == System)
+ {
+ ret = tn;
+ break;
+ }
+ }
+ if(ret == null)
+ {
+ ret = new TreeNode(System);
+
+ treeView1.Nodes.Add(ret);
+ treeView1.Sort();
+ }
+ return ret;
+ }
private void GameSelecter_NewGamesAdded(List<NesMiniApplication> e)
{
+ /*Add to A->Z*/
foreach (var game in e.OrderBy(o => o.Name))
{
this.checkedListBox1.Items.Add(game, game.Selected);
}
+ /*Add to treeview*/
+ foreach(var game in e.OrderBy(o => o.Name))
+ {
+ string systemName = AppTypeCollection.GetAppByClass(game.GetType()).SystemName;
+ TreeNode tn = getSystemTreeNode(systemName);
+ TreeNode gameNode = new TreeNode(game.Name);
+ gameNode.Tag = game;
+ gameNode.Checked = game.Selected;
+ tn.Nodes.Add(gameNode);
+ }
+ treeView1.Sort();
+ ValidateAllFolderCheck();
+
+
+
}
private void GameSelecter_GamesRemoved(List<NesMiniApplication> e)
{
+ /*remove from checked listbox*/
foreach (var game in e)
{
checkedListBox1.Items.Remove(game);
}
+ /*remove from treeview*/
+ foreach(var game in e)
+ {
+ TreeNode tn = FindNode(game,treeView1.Nodes);
+ if(tn!=null)
+ {
+ tn.Remove();
+ }
+ }
+ ValidateAllFolderCheck();
}
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
@@ -105,6 +300,7 @@ namespace com.clusterrr.hakchi_gui.UI.Components
}
public void Search(string text)
{
+ /*Checked list box*/
for(int x=0;x<checkedListBox1.Items.Count;x++)
{
if((checkedListBox1.Items[x] as NesMiniApplication).Name.ToLower().StartsWith(text.ToLower()))
@@ -113,12 +309,21 @@ namespace com.clusterrr.hakchi_gui.UI.Components
break;
}
}
+ /*treeview*/
+ TreeNode tn = FindNodeStartWith(text);
+ if(tn!=null)
+ {
+ treeView1.SelectedNode = tn;
+ }
}
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
- if(SelectedAppChanged != null)
+ if (getSelectedTab() == "A->Z")
{
- SelectedAppChanged(GetSelectedApp());
+ if (SelectedAppChanged != null)
+ {
+ SelectedAppChanged(GetSelectedApp());
+ }
}
}
@@ -162,5 +367,67 @@ namespace com.clusterrr.hakchi_gui.UI.Components
{
Manager.GameManager.GetInstance().DeleteGames(new List<NesMiniApplication>() { GetSelectedApp() });
}
+ private bool InMassCheck = false;
+ private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
+ {
+
+ if (e.Node.Tag== null)
+ {
+ if(e.Node.Nodes!=null)
+ {
+ if (!InFolderUncheck)
+ {
+ Debug.WriteLine(e.Node.Text + " - " + e.Node.Checked.ToString());
+ treeView1.BeginUpdate();
+ if(e.Node.Checked)
+ {
+ InMassCheck = true;
+ }
+ foreach (TreeNode tn in e.Node.Nodes)
+ {
+ if (tn.Checked != e.Node.Checked)
+ {
+ tn.Checked = e.Node.Checked;
+ }
+ }
+ if (e.Node.Checked)
+ {
+ InMassCheck = false;
+ }
+ treeView1.EndUpdate();
+ }
+ }
+ }
+ else
+ {
+ NesMiniApplication app = e.Node.Tag as NesMiniApplication;
+ app.Selected = e.Node.Checked;
+
+ }
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ treeView1.Refresh();
+ }
+
+ private void treeView1_DoubleClick(object sender, EventArgs e)
+ {
+ Debug.WriteLine("Doubleclick");
+ }
+
+ private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ if(getSelectedTab() != "A->Z")
+ {
+ if(treeView1.SelectedNode.Tag!=null)
+ {
+ if (SelectedAppChanged != null)
+ {
+ SelectedAppChanged(GetSelectedApp());
+ }
+ }
+ }
+ }
}
}
diff --git a/UI/FixedTreeview.cs b/UI/FixedTreeview.cs
new file mode 100644
index 00000000..0cf87005
--- /dev/null
+++ b/UI/FixedTreeview.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace com.clusterrr.hakchi_gui.UI
+{
+ public class FixedTreeview :TreeView
+ {
+ protected override void WndProc(ref Message m)
+ {
+ if (m.Msg == 0x203) // identified double click
+ {
+ var localPos = PointToClient(Cursor.Position);
+ var hitTestInfo = HitTest(localPos);
+ if (hitTestInfo.Location == TreeViewHitTestLocations.StateImage)
+ m.Result = IntPtr.Zero;
+ else
+ base.WndProc(ref m);
+ }
+ else base.WndProc(ref m);
+ }
+ }
+}
diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj
index 9a9d6167..3b1302b9 100644
--- a/hakchi_gui.csproj
+++ b/hakchi_gui.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@@ -455,6 +455,9 @@
<Compile Include="UI\Components\GameSelecter.Designer.cs">
<DependentUpon>GameSelecter.cs</DependentUpon>
</Compile>
+ <Compile Include="UI\FixedTreeview.cs">
+ <SubType>Component</SubType>
+ </Compile>
<Compile Include="UnsupportedFourScreenException.cs" />
<Compile Include="UnsupportedMapperException.cs" />
<Compile Include="WaitingClovershellForm.cs">
@@ -1700,5 +1703,4 @@ rem del *.manifest</PostBuildEvent>
<Target Name="AfterBuild">
</Target>
-->
-
</Project> \ No newline at end of file