Line 13... |
Line 13... |
\ProvidesPackage{reporte-phr}
|
\ProvidesPackage{reporte-phr}
|
\usepackage{reporte-phr}
|
\usepackage{reporte-phr}
|
|
|
% Para el titulo
|
% Para el titulo
|
\def\logo{./img/title/phr_logo.pdf}
|
\def\logo{./img/title/phr_logo.pdf}
|
\def\producto{Interfáz gráfica de usuario\par \vspace{0.5ex} PHR GUI v0.1}
|
\def\producto{Interfaz gráfica de usuario\par \vspace{0.5ex} PHR GUI v0.1}
|
\title{Desarrollo de la interfaz gráfica}
|
\title{Desarrollo de la interfaz gráfica}
|
%\author{Maximiliano Quinteros}
|
%\author{Maximiliano Quinteros}
|
\def\docver{0.9}
|
\def\docver{0.9}
|
\date{Abril de 2013}
|
\date{Abril de 2013}
|
|
|
Line 29... |
Line 29... |
|
|
\section{Primeras pruebas}
|
\section{Primeras pruebas}
|
|
|
Se reconocía la necesidad de facilitar el uso del software xc3sprog debido a que éste funciona en un terminal y puede necesitar de varios argumentos). Sobre todo porque la PHR está diseñada para estudiantes que se inician con los lenguajes de descripción de hardware.
|
Se reconocía la necesidad de facilitar el uso del software xc3sprog debido a que éste funciona en un terminal y puede necesitar de varios argumentos). Sobre todo porque la PHR está diseñada para estudiantes que se inician con los lenguajes de descripción de hardware.
|
|
|
Surgió la idea de realizar una interfáz gráfica de usuario (GUI) que sea capáz de correr en sistemas Linux y Windows, y se eligió un lenguaje de programación: Python.
|
Surgió la idea de realizar una interfaz gráfica de usuario (GUI) que sea capaz de correr en sistemas Linux y Windows, y se eligió un lenguaje de programación: Python.
|
|
|
El proceso comenzó haciendo pequeñas pruebas para analizar las opciones disponibles.
|
El proceso comenzó haciendo pequeñas pruebas para analizar las opciones disponibles.
|
|
|
\subsection{Interfáz gráfica}
|
\subsection{Interfaz gráfica}
|
|
|
Se buscaba hacer algo aprovechando recursos de licencias libres. En cuanto a la interfaz gráfica se analizaron las siguientes librerias:
|
Se buscaba hacer algo aprovechando recursos de licencias libres. En cuanto a la interfaz gráfica se analizaron las siguientes librerias:
|
\begin{enumerate}
|
\begin{enumerate}
|
\item GTK
|
\item GTK
|
\item Qt
|
\item Qt
|
Line 45... |
Line 45... |
\item \textbf{WxWidgets -- Elegida!}
|
\item \textbf{WxWidgets -- Elegida!}
|
\end{enumerate}
|
\end{enumerate}
|
|
|
Y se eligió por ésta última por su portabilidad, e integración con librerías nativas de los distintos sistemas operativos.
|
Y se eligió por ésta última por su portabilidad, e integración con librerías nativas de los distintos sistemas operativos.
|
|
|
En el caso de MS Windows hizo falta instalar al interprete python el módulo \emph{wxPython}. Primero se usó la versión 3.0.0 (la última versión) pero luego de un tiempo se detectó un funcionamiento erratico con Windows XP, por lo cual se pasó a la versión 2.9.5 y no se tuvieron mas problemas.
|
En el caso de MS Windows hizo falta instalar al interprete python el módulo \emph{wxPython}. Primero se usó la versión 3.0.0 (la última versión) pero luego de un tiempo se detectó un funcionamiento errático con Windows XP, por lo cual se pasó a la versión 2.9.5 y no se tuvieron mas problemas.
|
|
|
Para el desarrollo con wxPython se encontró el software \emph{wxGlade} que permite un desarrollo rápido de la aplicación (RAD) ya que el usuario dibuja la interfaz y luego la exporta en forma de código de Python. Luego quedan por escribir los handlers para los eventos.
|
Para el desarrollo con wxPython se encontró el software \emph{wxGlade} que permite un desarrollo rápido de la aplicación (RAD) ya que el usuario dibuja la interfaz y luego la exporta en forma de código de Python. Luego quedan por escribir los handlers para los eventos.
|
|
|
\begin{center}
|
\begin{center}
|
\includegraphics[width=0.45\textwidth]{./img/etapa01.png}
|
\includegraphics[width=0.45\textwidth]{./img/etapa01.png}
|
\end{center}
|
\end{center}
|
|
|
\subsection{Independencia del intérprete}
|
\subsection{Independencia del intérprete}
|
Para el caso de la ejecución de un script de Python en GNU/Linux no existen complicaciones puesto que las distribuciones cuentan con el intérprete ya instalado. No ocurre lo mismo con el sistema Windows.
|
Para el caso de la ejecución de un script de Python en GNU/Linux no existen complicaciones puesto que las distribuciones cuentan con el intérprete ya instalado. No ocurre lo mismo con el sistema Windows.
|
|
|
Para no tener que instalar el interprete en cada computadora donde se desee usar PHR GUI se recurrió al módulo de Python denominado \emph{py2exe} que genera archivos de distribución. Este modulo lee el script de interés y lo procesa para generar un directorio (denominado \emph{dist}) en donde ubica un archivo ejecutable (\texttt{.exe}) y librerias asociadas al mismo.
|
Para no tener que instalar el interprete en cada computadora donde se desee usar PHR GUI se recurrió al módulo de Python denominado \emph{py2exe} que genera archivos de distribución. Este modulo lee el script de interés y lo procesa para generar un directorio (denominado \emph{dist}) en donde ubica un archivo ejecutable (\texttt{.exe}) y librerías asociadas al mismo.
|
|
|
\begin{center}
|
\begin{center}
|
\includegraphics[width=0.55\textwidth]{./img/etapa02.png}
|
\includegraphics[width=0.55\textwidth]{./img/etapa02.png}
|
\end{center}
|
\end{center}
|
|
|
Line 74... |
Line 74... |
|
|
En el próximo paso se busca una solución amigable a la distribución de PHR GUI.
|
En el próximo paso se busca una solución amigable a la distribución de PHR GUI.
|
|
|
\subsection{Instalador}
|
\subsection{Instalador}
|
|
|
Para generar el instalador se recurrio a NSIS\footnote{http://nsis.sourceforge.net/Main\_Page}.
|
Para generar el instalador se recurrió a NSIS\footnote{http://nsis.sourceforge.net/Main\_Page}.
|
|
|
\begin{quote}
|
\begin{quote}
|
NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.
|
NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.
|
\end{quote}
|
\end{quote}
|
|
|
Line 96... |
Line 96... |
|
|
Esto instala de forma silenciosa las librerías que el modulo py2exe no incluye al momento de compilar por incompatibilidades de la licencia.
|
Esto instala de forma silenciosa las librerías que el modulo py2exe no incluye al momento de compilar por incompatibilidades de la licencia.
|
|
|
\end{description}
|
\end{description}
|
|
|
Asi se obtuvo el archivo NSIS con el que finalmente se hizo el instalador.
|
Así se obtuvo el archivo NSIS con el que finalmente se hizo el instalador.
|
|
|
\begin{center}
|
\begin{center}
|
\includegraphics[width=0.6\textwidth]{./img/etapa03.png}
|
\includegraphics[width=0.6\textwidth]{./img/etapa03.png}
|
\end{center}
|
\end{center}
|
|
|
\section{Desarrollo de la GUI en Windows}
|
\section{Desarrollo de la GUI en Windows}
|
Debido a que Windows presentaba una mayor cantidad requisitos en cuanto a desarrollo y portabilidad se inició el desarrollo de PHR GUI en este sistema operativo.
|
Debido a que Windows presentaba una mayor cantidad requisitos en cuanto a desarrollo y portabilidad se inició el desarrollo de PHR GUI en este sistema operativo.
|
|
|
A continuacion un diagrama bosquejando el proceso hasta la obtención del instalador.
|
A continuación un diagrama bosquejando el proceso hasta la obtención del instalador.
|
|
|
\begin{center}
|
\begin{center}
|
\includegraphics[width=0.9\textwidth]{./img/diseno.png}
|
\includegraphics[width=0.9\textwidth]{./img/diseno.png}
|
\end{center}
|
\end{center}
|
|
|
Line 135... |
Line 135... |
\begin{enumerate}
|
\begin{enumerate}
|
\item Respecto de la interacción con xc3sprog:
|
\item Respecto de la interacción con xc3sprog:
|
\begin{enumerate}
|
\begin{enumerate}
|
\item Añadir soporte para programar con archivos MCS además de BIT.
|
\item Añadir soporte para programar con archivos MCS además de BIT.
|
\item Solucionar la indicación de los archivos en Windows cuando la ruta incluye dos puntos (':').
|
\item Solucionar la indicación de los archivos en Windows cuando la ruta incluye dos puntos (':').
|
\item Crear una ventana de configuración en la cual se pueda elegir la ruta al xc3sprog (podria estar en el PATH), y que además permita elegir el comando que se ejecuta para cada evento, haciendolo compatible para distintas versiones de xc3sprog.
|
\item Crear una ventana de configuración en la cual se pueda elegir la ruta al xc3sprog (podría estar en el PATH), y que además permita elegir el comando que se ejecuta para cada evento, haciéndolo compatible para distintas versiones de xc3sprog.
|
\item Dar la opción para elegir libreria libre o propietaria.
|
\item Dar la opción para elegir librería libre o propietaria.
|
\item Detectar y corroborar un archivo de configuración al inicio (o en cualquier momento).
|
\item Detectar y corroborar un archivo de configuración al inicio (o en cualquier momento).
|
\item Procesar la salida de xc3sprog para brindar mensajes mas claros.
|
\item Procesar la salida de xc3sprog para brindar mensajes mas claros.
|
\end{enumerate}
|
\end{enumerate}
|
\item Respecto de la usabilidad:
|
\item Respecto de la usabilidad:
|
\begin{enumerate}
|
\begin{enumerate}
|