danfalck

javascript calculator in FreeCAD

Apr 13th, 2012
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.15 KB | None | 0 0
  1. import sys
  2. from PyQt4 import QtCore, QtGui, QtWebKit
  3. import WebGui
  4. import Part
  5. import FreeCADGui, FreeCAD
  6.  
  7. html = """
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10.    <head>
  11.        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  12.        <title>Javascript Calculator</title>
  13.        <script/>
  14. calc_array = new Array();
  15. var calcul=0;
  16. var pas_ch=0;
  17. function $id(id)
  18. {
  19.        return document.getElementById(id);
  20. }
  21. function f_calc(id,n)
  22. {
  23.        if(n=='ce')
  24.        {
  25.                init_calc(id);
  26.        }
  27.        else if(n=='=')
  28.        {
  29.                if(calc_array[id][0]!='=' && calc_array[id][1]!=1)
  30.                {
  31.                        eval('calcul='+calc_array[id][2]+calc_array[id][0]+calc_array[id][3]+';');
  32.                        calc_array[id][0] = '=';
  33.                        $id(id+'_result').value=calcul;
  34.                        calc_array[id][2]=calcul;
  35.                        calc_array[id][3]=0;
  36.                }
  37.        }
  38.        else if(n=='+-')
  39.        {
  40.                $id(id+'_result').value=$id(id+'_result').value*(-1);
  41.                if(calc_array[id][0]=='=')
  42.                {
  43.                        calc_array[id][2] = $id(id+'_result').value;
  44.                        calc_array[id][3] = 0;
  45.                }
  46.                else
  47.                {
  48.                        calc_array[id][3] = $id(id+'_result').value;
  49.                }
  50.                pas_ch = 1;
  51.        }
  52.        else if(n=='nbs')
  53.        {
  54.                if($id(id+'_result').value<10 && $id(id+'_result').value>-10)
  55.                {
  56.                        $id(id+'_result').value=0;
  57.                }
  58.                else
  59.                {
  60.                        $id(id+'_result').value=$id(id+'_result').value.slice(0,$id(id+'_result').value.length-1);
  61.                }
  62.                if(calc_array[id][0]=='=')
  63.                {
  64.                        calc_array[id][2] = $id(id+'_result').value;
  65.                        calc_array[id][3] = 0;
  66.                }
  67.                else
  68.                {
  69.                        calc_array[id][3] = $id(id+'_result').value;
  70.                }
  71.        }
  72.        else
  73.        {
  74.                        if(calc_array[id][0]!='=' && calc_array[id][1]!=1)
  75.                        {
  76.                                eval('calcul='+calc_array[id][2]+calc_array[id][0]+calc_array[id][3]+';');
  77.                                $id(id+'_result').value=calcul;
  78.                                calc_array[id][2]=calcul;
  79.                                calc_array[id][3]=0;
  80.                        }
  81.                        calc_array[id][0] = n;
  82.        }
  83.        if(pas_ch==0)
  84.        {
  85.                calc_array[id][1] = 1;
  86.        }
  87.        else
  88.        {
  89.                pas_ch=0;
  90.        }
  91.        document.getElementById(id+'_result').focus();
  92.        return true;
  93. }
  94. function add_calc(id,n)
  95. {
  96.        if(calc_array[id][1]==1)
  97.        {
  98.                $id(id+'_result').value=n;
  99.        }
  100.        else
  101.        {
  102.                $id(id+'_result').value+=n;
  103.        }
  104.        if(calc_array[id][0]=='=')
  105.        {
  106.                calc_array[id][2] = $id(id+'_result').value;
  107.                calc_array[id][3] = 0;
  108.        }
  109.        else
  110.        {
  111.                calc_array[id][3] = $id(id+'_result').value;
  112.        }
  113.        calc_array[id][1] = 0;
  114.        document.getElementById(id+'_result').focus();
  115.        return true;
  116. }
  117. function init_calc(id)
  118. {
  119.        $id(id+'_result').value=0;
  120.        calc_array[id] = new Array('=',1,'0','0',0);
  121.        document.getElementById(id+'_result').focus();
  122.        return true;
  123. }
  124. function key_detect_calc(id,evt)
  125. {
  126.        if((evt.keyCode>95) && (evt.keyCode<106))
  127.        {
  128.                var nbr = evt.keyCode-96;
  129.                add_calc(id,nbr);
  130.        }
  131.        else if((evt.keyCode>47) && (evt.keyCode<58))
  132.        {
  133.                var nbr = evt.keyCode-48;
  134.                add_calc(id,nbr);
  135.        }
  136.        else if(evt.keyCode==107)
  137.        {
  138.                f_calc(id,'+');
  139.        }
  140.        else if(evt.keyCode==109)
  141.        {
  142.                f_calc(id,'-');
  143.        }
  144.        else if(evt.keyCode==106)
  145.        {
  146.                f_calc(id,'*');
  147.        }
  148.        else if(evt.keyCode==111)
  149.        {
  150.                f_calc(id,'/');
  151.        }
  152.        else if(evt.keyCode==110)
  153.        {
  154.                add_calc(id,'.');
  155.        }
  156.        else if(evt.keyCode==190)
  157.        {
  158.                add_calc(id,'.');
  159.        }
  160.        else if(evt.keyCode==188)
  161.        {
  162.                add_calc(id,'.');
  163.        }
  164.        else if(evt.keyCode==13)
  165.        {
  166.                f_calc(id,'=');
  167.        }
  168.        else if(evt.keyCode==46)
  169.        {
  170.                f_calc(id,'ce');
  171.        }
  172.        else if(evt.keyCode==8)
  173.        {
  174.                f_calc(id,'nbs');
  175.        }
  176.        else if(evt.keyCode==27)
  177.        {
  178.                f_calc(id,'ce');
  179.        }
  180.        return true;
  181. }</script>
  182.        <style />
  183. .calculator
  184. {
  185.        width:300px;
  186.        height:300px;
  187.        background-color:#eeeeee;
  188.        border:2px solid #CCCCCC;
  189.        margin:auto;
  190.        padding-left:5px;
  191.        padding-bottom:5px;
  192. }
  193. .calculator td
  194. {
  195.        height:16.66%;
  196. }
  197. .calc_td_result
  198. {
  199.        text-align:center;
  200. }
  201. .calc_result
  202. {
  203.        width:90%;
  204.        text-align:right;
  205. }
  206. .calc_td_calculs
  207. {
  208.        text-align:center;
  209. }
  210. .calc_calculs
  211. {
  212.        width:90%;
  213.        text-align:left;
  214. }
  215. .calc_td_btn
  216. {
  217.        width:25%;
  218.        height:100%;
  219. }
  220. .calc_btn
  221. {
  222.        width:90%;
  223.        height:90%;
  224.        font-size:20px;
  225. }
  226.  
  227.  
  228.  
  229.        </style>
  230.  
  231.    </head>
  232.    <body>
  233.        <table class="calculator" id="calc">
  234.            <tr>
  235.                <td colspan="4" class="calc_td_result">
  236.                    <input type="text" readonly="readonly" name="calc_result" id="calc_result" class="calc_result" onkeydown="javascript:key_detect_calc('calc',event);" />
  237.                </td>
  238.            </tr>
  239.            <tr>
  240.                <td class="calc_td_btn">
  241.                        <input type="button" class="calc_btn" value="CE" onclick="javascript:f_calc('calc','ce');" />
  242.                </td>
  243.                <td class="calc_td_btn">
  244.                        <input type="button" class="calc_btn" value="&larr;" onclick="javascript:f_calc('calc','nbs');" />
  245.                </td>
  246.                <td class="calc_td_btn">
  247.                        <input type="button" class="calc_btn" value="%" onclick="javascript:f_calc('calc','%');" />
  248.                </td>
  249.                <td class="calc_td_btn">
  250.                        <input type="button" class="calc_btn" value="+" onclick="javascript:f_calc('calc','+');" />
  251.                </td>
  252.            </tr>
  253.            <tr>
  254.                <td class="calc_td_btn">
  255.                        <input type="button" class="calc_btn" value="7" onclick="javascript:add_calc('calc',7);" />
  256.                </td>
  257.                <td class="calc_td_btn">
  258.                        <input type="button" class="calc_btn" value="8" onclick="javascript:add_calc('calc',8);" />
  259.                </td>
  260.                <td class="calc_td_btn">
  261.                        <input type="button" class="calc_btn" value="9" onclick="javascript:add_calc('calc',9);" />
  262.                </td>
  263.                <td class="calc_td_btn">
  264.                        <input type="button" class="calc_btn" value="-" onclick="javascript:f_calc('calc','-');" />
  265.                </td>
  266.            </tr>
  267.                        <tr>
  268.                <td class="calc_td_btn">
  269.                        <input type="button" class="calc_btn" value="4" onclick="javascript:add_calc('calc',4);" />
  270.                </td>
  271.                <td class="calc_td_btn">
  272.                        <input type="button" class="calc_btn" value="5" onclick="javascript:add_calc('calc',5);" />
  273.                </td>
  274.                <td class="calc_td_btn">
  275.                        <input type="button" class="calc_btn" value="6" onclick="javascript:add_calc('calc',6);" />
  276.                </td>
  277.                <td class="calc_td_btn">
  278.                        <input type="button" class="calc_btn" value="x" onclick="javascript:f_calc('calc','*');" />
  279.                </td>
  280.            </tr>
  281.            <tr>
  282.                <td class="calc_td_btn">
  283.                        <input type="button" class="calc_btn" value="1" onclick="javascript:add_calc('calc',1);" />
  284.                </td>
  285.                <td class="calc_td_btn">
  286.                        <input type="button" class="calc_btn" value="2" onclick="javascript:add_calc('calc',2);" />
  287.                </td>
  288.                <td class="calc_td_btn">
  289.                        <input type="button" class="calc_btn" value="3" onclick="javascript:add_calc('calc',3);" />
  290.                </td>
  291.                <td class="calc_td_btn">
  292.                        <input type="button" class="calc_btn" value="&divide;" onclick="javascript:f_calc('calc','/');" />
  293.                </td>
  294.            </tr>
  295.            <tr>
  296.                <td class="calc_td_btn">
  297.                        <input type="button" class="calc_btn" value="0" onclick="javascript:add_calc('calc',0);" />
  298.                </td>
  299.                <td class="calc_td_btn">
  300.                        <input type="button" class="calc_btn" value="&plusmn;" onclick="javascript:f_calc('calc','+-');" />
  301.                </td>
  302.                <td class="calc_td_btn">
  303.                        <input type="button" class="calc_btn" value="." onclick="javascript:add_calc('calc','.');" />
  304.                </td>
  305.                <td class="calc_td_btn">
  306.                        <input type="button" class="calc_btn" value="=" onclick="javascript:f_calc('calc','=');" />
  307.                </td>
  308.            </tr>
  309.        </table>
  310.        <script type="text/javascript">
  311.                document.getElementById('calc').onload=init_calc('calc');
  312.        </script>
  313.    </body>
  314.  
  315.  
  316.  
  317. </html>
  318.  
  319. """
  320.  
  321. a = QtGui.qApp
  322. mw = a.activeWindow()
  323. v= mw.findChild(QtWebKit.QWebFrame)
  324.  
  325. v.setHtml(html)
Add Comment
Please, Sign In to add comment