...
 
Commits (2)
......@@ -5,38 +5,73 @@ Syntax: CALCVAC/VACLINE usage on Android
DESCRIPTION:
Android deviced usually have a BACK Butten, a HOME button and a MENU Button.
Congratulations! You are using the most user friendly scientific software code
available. So lets have some words on how that works.
Android devices usually have a BACK Butten, a HOME button and a MENU Button.
* The HOME Button suspends CALCVAC and returns to the Android Desktop.
Selection of the CALCVAC app again will resume it.
The selection of the CALCVAC app again will resume it.
* The MENU Button opens a menu with following options: About, LOAD Program, RUN
program, NEW, Info/Settings, Editor, Help and Quit.
* The MENU Button opens a menu with following options: About, LOAD Calcvac file,
RUN calcvac file, NEW, Info/Settings, Component Editor, File editor,
Plotting Tool, Table Tool, Statistics, Conductance Calculator, Help and Quit.
** About: Show information about the current version of CALCVAC, News and
Impressum.
** Load ... opens a fileselector which displays all .vac and all .inf files
in the directory /mnt/sdcard/calcvac. The selected file will be loaded into
memory. A file eventiually stored there before will be overwritten.
Long pressing on the selection
opens another menu with convinience functions on the selcted program.
in the directory /mnt/sdcard/calcvac. The selected file will be used for
editing and processing.
Long pressing on the selection opens another menu with convinience
functions on the selcted program (e.g. delete).
** Run will simply start the execution of a file which has been loaded
** Run will simply start the execution of a file which has been selected
before.
** New will delete the file from memory.
** New will create a new file new.vac with some starting values. If the file
is already there, it will not be overwritten. You can edit and process
new.vac normally, but it makes sense to eventually rename it later.
** Info/Settings will open a dialog with additional information, links, and
preference settings.
preference settings. You will also find a link to a full User Manual,
the source code, a forum for issues and more here.
*** Define the resulution and number of points for calculations.
** Component editor will start a special editor, where you can compose your
vacuum beamline. All properties including materials and pumps can be
defined there. Also it is possible to rename the file and change the title.
From the component editor you have access to:
*** The Material Editor
*** The Pump type editor
*** The Link Editor
** File Editor will execute a 3rd party text editor (e.g. 920 Text Editor if
installed) to edit the file currently selected. If no file was selected,
the default file named new.vac will be opened.
** Plotting tool will open a full screen plot of the calculated data. You can use
finger gestures to move around and zoom in and out to look at details of the
pressure profile. The plot shows all links, partial pressure profiles and
the lattice components at their positions. Several options let you show
histograms and activate more special features.
** Table tool displays the calculated data in form of a table. Each entry
contains the properties of the lattice components.
** Statistics will show some information about the file last processed. Errors
and Warnings are also shown. Information about detected links, the acuracy of
the calculations and the average pressure is displayed here as well.
*** Show splash screen at X11-Basic startup. This can be switched off here.
** Conductance calculator allows you do calculate the conductivity and inner
surface of vacuum chambers of given forms and sizes, based on the molecular
mass of the gas species and the components temperature.
** Editor will execute a 3rd party text editor (e.g. 920 Text Editor if
installed) to edit the file currently loaded. If no file was loaded,
the default file name will be new.vac.
** Help will open a window in which you can search the command reference for
VACLINE and get some hints on the usage of this app.
** Help will open a window in which you can search the command reference.
** Quit will terminate the CALCVAC/VACLINE interpreter.
** Quit will terminate the CALCVAC/VACLINE interpreter app.
##############################################################################
package de.drhoffmannsoftware.calcvac;
/* DataTrace.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
/* Datenspuren haben gemeinsame X-Basis,
* unterschiedliche namen, farbe*/
import android.graphics.Color;
import android.util.Log;
import java.util.ArrayList;
class DataTrace {
private final static int MAX_ANZDATA=100000;
private static final String TAG = DataTrace.class.getSimpleName();
String name;
String unit;
public double y[];
double ymin,ymax;
int idxmin,idxmax;
double deltamin,deltamax;
int color;
int anzdata;
public ArrayList<Link> links;
DataTrace(int m) {
y=new double[m];
clear();
}
DataTrace() {
y=new double[MAX_ANZDATA];
clear();
}
public void clear() {
name="";
unit="";
color= Color.BLUE;
anzdata=0;
ymin=9999;
ymax=-9999;
deltamin=9999;
deltamax=-9999;
idxmin=0;
idxmax=0;
links=new ArrayList<Link>();
}
public void add(double val) {
if(anzdata>0) {
double delta=Math.abs(val-y[anzdata-1]);
if(delta>deltamax) deltamax=delta;
if(delta<deltamin) deltamin=delta;
}
if(val<ymin) {ymin=val;idxmin=anzdata;}
if(val>ymax) {ymax=val;idxmax=anzdata;}
y[anzdata++]=val;
}
public void calc_minmax() {
ymin=9999;
ymax=-9999;
deltamin=9999;
deltamax=-9999;
if(anzdata>0) {
int i;
double val,delta;
for(i=0;i<anzdata;i++) {
val=y[i];
if(i>0) {
delta=Math.abs(val-y[i-1]);
if(delta>deltamax) deltamax=delta;
if(delta<deltamin) deltamin=delta;
}
if(val<ymin) {ymin=val;idxmin=i;}
if(val>ymax) {ymax=val;idxmax=i;}
}
}
}
public DataTrace calc_hist() {
int maxanzbins=256; // TODO: maxanzbins=(int) (Math.abs(maxy1-miny1)/deltamin1)+1;
DataTrace result=new DataTrace(maxanzbins);
result.anzdata=maxanzbins;
Log.d(TAG,"calc_hist: ymin="+ymin+" ymax="+ymax);
if(anzdata>0) {
int i,bin;
for (i = 0; i < anzdata; i++) {
bin=(int)((y[i]-ymin)/(ymax-ymin)*(double)(maxanzbins-1));
result.y[bin]=result.y[bin]+1;
}
result.calc_minmax();
}
return result;
}
}
package de.drhoffmannsoftware.calcvac;
/* Gas.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
/* This is a constant array of names of gas species by molecule mass */
class Gas {
public static final String moles[]={"0 default","","2 H2 Hydrogen","","4 He Helium","","","","","",
"","","","","","","16 CH4 Methane","17 NH3 Ammonia","18 H2O Water","",
"20 Ne Neon","","","","","","","27 HCN Hydrogen Cyanide","28 N2 Nitrogene, CO Carbon Monoxide","",
"30 NO Nitric Oxide","","32 O2 oxygene","","34 H2S Hydrogen Sulfide, PH3 Phosphine","","36 HCl Hydrogen Chloride","","","",
"40 Ar argon","","","","44 CO2 carbon dioxyde","","46 NO2 Nitrogen Dioxide","","","",
"","","","","","","","","","",
"","","","","64 SO2 Sulfur Dioxide","","","67 ClO2 Chlorine Dioxide","","",
"","71 Cl2 Chlorine","","","","","","","","",
"","","","","84 Kr krypton","","","","",""
};
}
package de.drhoffmannsoftware.calcvac;
/* Label.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
class Label {
String name;
int idx;
}
package de.drhoffmannsoftware.calcvac;
/* Link.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
class Link {
int idx;
String name1;
String name2;
double pos1;
double pos2;
double flow;
double pressure;
public String toString() {
return(name1+" <--> "+name2);
}
public String format(boolean isinffile) {
if(isinffile) return "LINK, "+name1+", "+name2;
else return "LINK "+name1+", "+name2;
}
}
This diff is collapsed.
package de.drhoffmannsoftware.calcvac;
/* Spectrum.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
import android.util.Log;
import java.util.ArrayList;
class Spectrum {
private final static String TAG="Spectrum";
class entry {
int mol;
double value;
}
String name;
double s_default;
ArrayList<entry> spec;
Spectrum() {
name="";
s_default=0;
spec=new ArrayList<entry>();
}
public Spectrum(String nam) {
name=nam;
s_default=0;
spec=new ArrayList<entry>();
}
public double get_value(int m) {
if(spec.size()>0) {
for(int i=0;i<spec.size();i++) {
if(spec.get(i).mol==m) return(spec.get(i).value);
}
}
return(s_default);
}
public void add_spec(int m, double v) {
entry e=new entry();
e.mol=m;
e.value=v;
spec.add(e);
}
public String format() {
String t=name+": "+s_default+"(default)";
if(spec.size()>0) {
for(int i=0;i<spec.size();i++) {
t=t+" "+spec.get(i).value+"("+spec.get(i).mol+")";
}
}
return t;
}
public int parsefromline(String lin) {
String[] sep = lin.split(":", 2);
name = sep[0].trim();
lin = sep[1].trim();
sep=lin.split(" ");
if(sep.length>0) {
int i;
for(i=0;i<sep.length;i++) {
sep[i]=sep[i].trim();
if(sep[i].contains("(")) {
String[] sep2=sep[i].split("\\(");
if (sep2[1].length() >= 1 && sep2[1].charAt(sep2[1].length() - 1) == ')') {
sep2[1] = sep2[1].substring(0, sep2[1].length() - 1);
}
double v;
try {v = Double.parseDouble(sep2[0]);} catch(NumberFormatException nfe) {v=0;}
Log.d(TAG,"we have "+sep2[1]);
if(sep2[1].startsWith("default")) {
s_default=v;
} else {
int m = Integer.parseInt(sep2[1]);
add_spec(m,v);
}
}
}
}
return(spec.size());
}
}
package de.drhoffmannsoftware.calcvac;
/* Tools.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Tools {
private static final String TAG = Tools.class.getSimpleName();
public static void sendEmail(Context context,String recipient, String subject, String message, String filename) {
try {
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("plain/text");
if (recipient != null) emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{recipient});
if (subject != null) emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
if (message != null) emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
if(filename!=null) {
File f=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+filename);
// f.setReadable(true, false);
if(f.exists()) emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
else Log.d(TAG,"File not found:"+f.getAbsolutePath());
}
context.startActivity(Intent.createChooser(emailIntent, "Send data as mail..."));
} catch (ActivityNotFoundException e) {
// cannot send email for some reason
Toast.makeText(context,"cannot send email for reason: "+e.toString(), Toast.LENGTH_LONG).show();
}
}
public static Dialog scrollableDialog(Context c,String title, String text) {
final Dialog dialog = new Dialog(c);
if(title.isEmpty()) dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
else dialog.setTitle(title);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.setContentView(R.layout.maindialog);
TextView wV= dialog.findViewById(R.id.TextView01);
wV.setText(Html.fromHtml(text));
//set up button
Button button = dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
return dialog;
}
public static Dialog infoDialog(Context c,final String title, final String text) {
final Dialog dialog = new Dialog(c);
if(title==null || title.isEmpty()) dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
else dialog.setTitle(title);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.setContentView(R.layout.webdialog);
TextView tV= dialog.findViewById(R.id.TextView01);
tV.setVisibility(View.GONE);
TextView tV2= dialog.findViewById(R.id.textView1);
tV2.setVisibility(View.GONE);
final WebView wV= dialog.findViewById(R.id.webView1);
Log.d(TAG,"Text: len="+text.length());
if(text.length()>0) wV.loadDataWithBaseURL(null,"<html><body>"+text+"</body></html>" , "text/html", "utf-8", null);
else {
String relnotes="<html><body>"+Help.getreleasenotes(c.getAssets())+"</body></html>";
Log.d(TAG,"RelNotesText: len="+relnotes.length());
wV.loadDataWithBaseURL(null,relnotes , "text/html", "utf-8", null);
wV.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
//wV.invalidate();
wV.requestLayout();
}
});
}
//set up button
Button button = dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
EditText eT= dialog.findViewById(R.id.editText1);
eT.setVisibility(View.GONE);
return dialog;
}
public static Dialog webDialog(final Context c,final String title, final String text) {
final Dialog dialog = new Dialog(c);
if(title==null || title.equals("")) dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
else dialog.setTitle(title);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.setContentView(R.layout.webdialog);
TextView tV= dialog.findViewById(R.id.TextView01);
tV.setText(c.getResources().getString(R.string.word_searchcomment));
final WebView wV= dialog.findViewById(R.id.webView1);
//wV.setMinimumWidth(WindowManager.LayoutParams.);
wV.setVisibility(View.GONE);
if(text.length()>0) wV.loadDataWithBaseURL(null,"<html><body>"+text+"</body></html>" , "text/html", "utf-8", null);
else wV.loadDataWithBaseURL(null,"<html><body>"+Help.getonlinehelp(c.getAssets(),"_")+"</body></html>" , "text/html", "utf-8", null);
wV.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
wV.setVisibility(View.VISIBLE);
//wV.requestLayout();
}
});
//set up button
Button button = dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
EditText eT=dialog.findViewById(R.id.editText1);
//Set the last entered command
eT.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence s, int start, int before, int count) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void afterTextChanged(Editable s) {
if(s.length()>0) {
wV.loadDataWithBaseURL(null,"<html><body>"+Help.getonlinehelp(c.getAssets(),s.toString())+"</body></html>" , "text/html", "utf-8", null);
}
}
});
return dialog;
}
public static void copyFile(final InputStream in, final OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
}
}
package de.drhoffmannsoftware.calcvac;
/* Twiss.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
class Twiss {
String name;
double pos;
double len;
double pressure;
double flow;
double conductance;
double orate;
double pspeed;
double pavg;
double area;
}
package de.drhoffmannsoftware.calcvac;
/* VacComponent.java (c) 2018 by Markus Hoffmann
*
* This file is part of Calcvac for Android, (c) by Markus Hoffmann 2002-2018
* ==========================================================================
* Calcvac for Android is free software and comes with
* NO WARRANTY - read the file COPYING for details.
*/
class VacComponent {
public int typ;
public int ftyp;
public double len;
public int m; /* Molecule mass number */
public String name;
VacComponent() {
name="noname";
len=1;
m=28;
ftyp=0;
typ=0;
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:orientation="horizontal"
android:id="@+id/LL1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView1b"
android:layout_width="wrap_content"
android:layout_height="169dp"
android:contentDescription="@string/logo"
android:src="@drawable/calcvacprinciple" />
<LinearLayout
android:orientation="vertical"
android:id="@+id/LL2"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/fileuebers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_nameversion"
android:hint="file name"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/vactitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_nameversion"
android:hint="title"
android:textAppearance="?android:attr/textAppearanceLarge" />
<LinearLayout
android:orientation="horizontal"
android:id="@+id/LL2b"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/pumpbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/pumping_spectrum" />
<Button
android:id="@+id/outgasbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/outgasing_spectrum" />
</LinearLayout>
<Button
android:id="@+id/linksbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/links" />
</LinearLayout>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.95" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2,3,4"
android:id="@+id/maintable" />
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:id="@+id/LL3"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/use"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="USE:"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@+id/useline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_nameversion"
android:hint="vacuum line"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:contentDescription="@string/logo"
android:id="@+id/imageView1"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="32dp"
android:src="@drawable/calcvaclogo" />
<ImageView
android:contentDescription="@string/logo"
android:id="@+id/imageView2"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="32dp"
android:src="@drawable/calcvaclogo" />
</RelativeLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_nameversion"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/copyright"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/subtitle"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.95" >
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</ScrollView>
<Button
android:id="@+id/okbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/back" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:src="@drawable/pumpe"
android:contentDescription="@string/vacuum_section_unit_cell" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/Text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="35dp"
android:text="@string/length_m" />
<EditText
android:id="@+id/component_length"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:ems="10"
android:inputType="numberDecimal" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:text="Result: (C=conductance, A=specific inner surface)"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/conductance_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="25dp"
android:textStyle="bold"
android:textSize="26sp"
android:text="W= l/s A= cm²/m"
android:layout_alignParentLeft="true" />
</RelativeLayout>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.95" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text_molmass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/molecul_mass_u" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/molmass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="5"
android:inputType="number"
android:hint="28"
android:text="28" />
<Button
android:id="@+id/molmass_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/select"/>
</LinearLayout>
<TextView
android:id="@+id/text_temp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/temperature_k" />
<SeekBar
android:id="@+id/seek_temp"
android:max="100"
android:progress="10"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/temperature"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="5"
android:inputType="number"
android:hint="300"
android:text="300" />
<TextView
android:id="@+id/text_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/form_factor" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/form_square"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/square" />
<RadioButton
android:id="@+id/form_rect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/rectangular" />
<RadioButton
android:id="@+id/form_circ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/circular" />
<RadioButton
android:id="@+id/form_ellipt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/elliptical" />
<RadioButton
android:id="@+id/form_schluesselloch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/keyhole" />
</RadioGroup>
<TextView
android:id="@+id/text_par1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Par 1= [mbar l/s]" />
<EditText
android:id="@+id/parameter_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_unit_m"
android:inputType="numberDecimal"
android:text="0.05" />
<TextView
android:id="@+id/text_par2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Par 2= [mbar l/s]" />
<EditText
android:id="@+id/parameter_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_unit_m"
android:inputType="numberDecimal"
android:text="0.05"/>
<TextView
android:id="@+id/text_par3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Par 3= [mbar l/s]" />
<EditText
android:id="@+id/parameter_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_unit_m"
android:inputType="numberDecimal"
android:text="0.05"/>
<TextView
android:id="@+id/text_par4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Par 4= [mbar l/s]" />
<EditText
android:id="@+id/parameter_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_unit_m"
android:inputType="numberDecimal"
android:text="0.05"
/>
</LinearLayout>
</ScrollView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pumpe" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/Text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_weight="1"
android:text="Name:" />
<EditText
android:id="@+id/component_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/Text1"
android:layout_weight="1"
android:hint="Name"
android:inputType="textPersonName" />
</RelativeLayout>
</LinearLayout>
<ListView
android:id="@+id/list_1"
android:layout_width="match_parent"
android:layout_height="353dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="72dp"
android:text="@string/word_done"
android:layout_marginRight="72dp" />
<Button
android:id="@+id/button_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:text="@string/word_cancel" />
</RelativeLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/link" />
<ListView
android:id="@+id/linkliste"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/link" />
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<Button
android:id="@+id/Button_OKapply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apply" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/ueberschrift"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_nameversion"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/ueberstatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:text="@string/app_nameversion"
android:textAppearance="?android:attr/textAppearanceLarge" />
<de.drhoffmannsoftware.calcvac.PlotView
android:id="@+id/plot"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="0.93"
android:visibility="visible" />
<TextView
android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="120dip"
android:text="@string/app_nameversion"
android:textSize="12sp"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ProgressBar
android:id="@+id/progress1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="0.93" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/TextView01" />
</ScrollView>
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/word_ok" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Material Name:"/>
<EditText
android:id="@+id/material_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="material name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default outgasing rate: [mbar l/s/cm²]"/>
<EditText
android:id="@+id/material_default"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="[mbar l/s/cm²]"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/material_table"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28 :"
android:textSize="22dp"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="[mbar l/s/cm²]"/>
</TableRow>
</TableLayout>
</ScrollView>
<Button
android:id="@+id/Button_add_species"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" + " />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/Button_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
<Button
android:id="@+id/Button_OKapply"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Apply" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/checkBoxes"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox" />
</LinearLayout>
</ScrollView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<de.drhoffmannsoftware.calcvac.PlotView
android:id="@+id/mainplot"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/dummyTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="TextView" />
</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pump Name:"/>
<EditText
android:id="@+id/pump_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="pump name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default pumping speed: [l/s/m] or factor"/>
<EditText
android:id="@+id/pump_default"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="[l/s/m] or factor"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/pump_table"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28 :"
android:textSize="22dp"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="[l/s/m] or factor"/>
</TableRow>
</TableLayout>
</ScrollView>
<Button android:id="@+id/Button_add_species"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" + " />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/rainbowline" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/Button_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
<Button
android:id="@+id/Button_OKapply"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Apply" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/legende"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/spectable"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</ScrollView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2,3,4"
android:id="@+id/legende" />
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.93" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2,3,4"
android:id="@+id/maintable" />
</ScrollView>
<RelativeLayout
android:id="@+id/relativeLayout12"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/message1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="12sp" />
<TextView
android:id="@+id/message2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="12sp" />
</RelativeLayout>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/word_search"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="80dp"
android:hint="@string/word_keyword"
android:inputType="textNoSuggestions" />
</RelativeLayout>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/TextView01" />
<WebView
android:id="@+id/webView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="0.93" />
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/word_ok" />
</LinearLayout>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/vdl_options_about"
android:title="@string/vdl_options_title"/>
<item
android:id="@+id/vdl_options_help"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="ifRoom"
android:title="@string/vdl_options_help"/>
<item
android:id="@+id/fileeditor"
android:icon="@drawable/ic_menu_compose"
android:title="@string/menu_editor"/>
<item
android:id="@+id/addsection"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_addsection"
android:showAsAction="ifRoom" />
<item
android:id="@+id/addmarker"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_addmarker"/>
<item
android:id="@+id/addsymbol"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_addsymbol"/>
<item
android:id="@+id/addsubline"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_addsubline"/>
<item
android:id="@+id/pumping"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_pumping"/>
<item
android:id="@+id/material"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_material"/>
<item
android:id="@+id/links"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_links"/>
<item
android:id="@+id/file_statistics"
android:title="@string/menu_file_statistics"/>
<item
android:id="@+id/vdl_options_finish"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="@string/menu_exitce"/>
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/ee_options_help"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="ifRoom"
android:title="@string/vdl_options_help"/>
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/lc_options_about"
android:title="@string/vdl_options_title"/>
<item android:id="@+id/lc_options_help"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="ifRoom"
android:title="@string/vdl_options_help"/>
<item android:id="@+id/lc_options_finish"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="@string/menu_exitlc"/>
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/le_options_help"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="ifRoom"
android:title="@string/vdl_options_help"/>
<item android:id="@+id/le_options_add"
android:icon="@android:drawable/ic_menu_add"
android:showAsAction="ifRoom"
android:title="@string/menu_addlink"/>
<item android:id="@+id/le_options_quit"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="@string/menu_exitle"/>
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >