mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-21 20:15:04 +00:00
Code Editor + Lua Patchs + Fixes
This commit is contained in:
parent
8603ced00a
commit
de027afea8
24 changed files with 265 additions and 103 deletions
|
@ -37,6 +37,7 @@
|
|||
</activity>
|
||||
<activity
|
||||
android:name=".app.editor.CodeEditorActivity"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:configChanges="screenSize|screenLayout|orientation|density|uiMode">
|
||||
</activity>
|
||||
<activity android:name=".app.PreferenceActivity"
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.panda3ds.pandroid.data.config.GlobalConfig;
|
|||
|
||||
|
||||
public class BaseActivity extends AppCompatActivity {
|
||||
private int currentTheme = GlobalConfig.get(GlobalConfig.KEY_APP_THEME);
|
||||
private int currentTheme = PandroidApplication.getThemeId();
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
|
@ -20,19 +20,13 @@ public class BaseActivity extends AppCompatActivity {
|
|||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (GlobalConfig.get(GlobalConfig.KEY_APP_THEME) != currentTheme) {
|
||||
if (PandroidApplication.getThemeId() != currentTheme) {
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
|
||||
private void applyTheme() {
|
||||
switch (GlobalConfig.get(GlobalConfig.KEY_APP_THEME)) {
|
||||
case GlobalConfig.THEME_ANDROID: setTheme(R.style.Theme_Pandroid); break;
|
||||
case GlobalConfig.THEME_LIGHT: setTheme(R.style.Theme_Pandroid_Light); break;
|
||||
case GlobalConfig.THEME_DARK: setTheme(R.style.Theme_Pandroid_Dark); break;
|
||||
case GlobalConfig.THEME_BLACK: setTheme(R.style.Theme_Pandroid_Black); break;
|
||||
}
|
||||
|
||||
currentTheme = GlobalConfig.get(GlobalConfig.KEY_APP_THEME);
|
||||
currentTheme = PandroidApplication.getThemeId();
|
||||
setTheme(currentTheme);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,16 +84,23 @@ public class GameActivity extends BaseActivity {
|
|||
|
||||
@Override
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
if (InputHandler.processKeyEvent(event)) {
|
||||
if ((!drawerFragment.isOpened()) && InputHandler.processKeyEvent(event)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (drawerFragment.isOpened()) {
|
||||
drawerFragment.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchGenericMotionEvent(MotionEvent ev) {
|
||||
if (InputHandler.processMotionEvent(ev)) {
|
||||
if ((!drawerFragment.isOpened()) && InputHandler.processMotionEvent(ev)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,11 @@ package com.panda3ds.pandroid.app;
|
|||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
|
||||
import com.panda3ds.pandroid.AlberDriver;
|
||||
import com.panda3ds.pandroid.R;
|
||||
import com.panda3ds.pandroid.data.config.GlobalConfig;
|
||||
import com.panda3ds.pandroid.input.InputMap;
|
||||
import com.panda3ds.pandroid.utils.GameUtils;
|
||||
|
@ -22,5 +26,30 @@ public class PandroidApplication extends Application {
|
|||
AlberDriver.Setup();
|
||||
}
|
||||
|
||||
public static int getThemeId() {
|
||||
switch (GlobalConfig.get(GlobalConfig.KEY_APP_THEME)) {
|
||||
case GlobalConfig.THEME_LIGHT:
|
||||
return R.style.Theme_Pandroid_Light;
|
||||
case GlobalConfig.THEME_DARK:
|
||||
return R.style.Theme_Pandroid_Dark;
|
||||
case GlobalConfig.THEME_BLACK:
|
||||
return R.style.Theme_Pandroid_Black;
|
||||
}
|
||||
return R.style.Theme_Pandroid;
|
||||
}
|
||||
|
||||
public static boolean isDarkMode() {
|
||||
switch (GlobalConfig.get(GlobalConfig.KEY_APP_THEME)) {
|
||||
case GlobalConfig.THEME_DARK:
|
||||
case GlobalConfig.THEME_BLACK:
|
||||
return true;
|
||||
case GlobalConfig.THEME_LIGHT:
|
||||
return false;
|
||||
}
|
||||
Resources res = Resources.getSystem();
|
||||
int nightFlags = res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||
return nightFlags == Configuration.UI_MODE_NIGHT_YES;
|
||||
}
|
||||
|
||||
public static Context getAppContext() { return appContext; }
|
||||
}
|
||||
|
|
|
@ -4,8 +4,11 @@ import android.annotation.SuppressLint;
|
|||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import androidx.activity.result.contract.ActivityResultContract;
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -23,6 +26,7 @@ import com.panda3ds.pandroid.view.code.syntax.CodeSyntax;
|
|||
import java.io.Serializable;
|
||||
|
||||
public class CodeEditorActivity extends BaseActivity {
|
||||
private static final String TAB_CONTENT = " ";
|
||||
private String path;
|
||||
private String fileName;
|
||||
private CodeEditor editor;
|
||||
|
@ -38,6 +42,7 @@ public class CodeEditorActivity extends BaseActivity {
|
|||
Arguments args = (Arguments) getIntent().getSerializableExtra("args");
|
||||
|
||||
editor = findViewById(R.id.editor);
|
||||
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(this::onGlobalLayoutChanged);
|
||||
|
||||
path = args.path;
|
||||
fileName = args.fileName;
|
||||
|
@ -66,6 +71,32 @@ public class CodeEditorActivity extends BaseActivity {
|
|||
setupReadOnlyEditor();
|
||||
break;
|
||||
}
|
||||
|
||||
onGlobalLayoutChanged();
|
||||
|
||||
findViewById(R.id.key_hide).setOnClickListener(v -> {
|
||||
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
|
||||
});
|
||||
findViewById(R.id.key_tab).setOnClickListener(v -> {
|
||||
editor.insert(TAB_CONTENT);
|
||||
});
|
||||
}
|
||||
|
||||
// Detect virtual keyboard is visible
|
||||
private void onGlobalLayoutChanged() {
|
||||
View view = getWindow().getDecorView();
|
||||
Rect rect = new Rect();
|
||||
view.getWindowVisibleDisplayFrame(rect);
|
||||
int currentHeight = rect.height();
|
||||
int height = view.getHeight();
|
||||
|
||||
if (currentHeight < height * 0.8) {
|
||||
findViewById(R.id.keybar).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
findViewById(R.id.keybar).setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
System.out.println(height + "/" + currentHeight);
|
||||
}
|
||||
|
||||
private void setupReadOnlyEditor() {
|
||||
|
@ -98,6 +129,18 @@ public class CodeEditorActivity extends BaseActivity {
|
|||
new Task(() -> FileUtils.writeTextFile(path, fileName, String.valueOf(editor.getText()))).runSync();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
System.out.println();
|
||||
if (event.getKeyCode() == KeyEvent.KEYCODE_TAB) {
|
||||
if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
editor.insert(TAB_CONTENT);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (changed) {
|
||||
|
@ -107,8 +150,8 @@ public class CodeEditorActivity extends BaseActivity {
|
|||
save();
|
||||
finish();
|
||||
})
|
||||
.setNegativeButton(R.string.exit_without_save, (dialog, which) -> finish())
|
||||
.setTitle(String.format(getString(R.string.exit_without_save_title_ff), fileName)).show();
|
||||
.setNegativeButton(R.string.exit_without_saving, (dialog, which) -> finish())
|
||||
.setTitle(String.format(getString(R.string.exit_without_saving_title_ff), fileName)).show();
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
|
|
@ -47,12 +47,14 @@ public class DrawerFragment extends Fragment implements DrawerLayout.DrawerListe
|
|||
((AppCompatTextView)view.findViewById(R.id.game_publisher)).setText(game.getPublisher());
|
||||
|
||||
((NavigationView)view.findViewById(R.id.action_navigation)).setNavigationItemSelectedListener(this);
|
||||
((NavigationView)view.findViewById(R.id.hacks_navigation)).setNavigationItemSelectedListener(this);
|
||||
((NavigationView)view.findViewById(R.id.others_navigation)).setNavigationItemSelectedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
drawerContainer.removeDrawerListener(this);
|
||||
if (drawerContainer != null) {
|
||||
drawerContainer.removeDrawerListener(this);
|
||||
}
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
|
@ -100,7 +102,7 @@ public class DrawerFragment extends Fragment implements DrawerLayout.DrawerListe
|
|||
if (id == R.id.resume) {
|
||||
close();
|
||||
} else if (id == R.id.exit) {
|
||||
requireActivity().onBackPressed();
|
||||
requireActivity().finish();
|
||||
} else if (id == R.id.lua_script){
|
||||
new LuaDialogFragment().show(getParentFragmentManager(),null);
|
||||
}
|
||||
|
|
|
@ -20,8 +20,8 @@ import com.panda3ds.pandroid.app.base.BottomDialogFragment;
|
|||
import com.panda3ds.pandroid.app.editor.CodeEditorActivity;
|
||||
import com.panda3ds.pandroid.lang.Task;
|
||||
import com.panda3ds.pandroid.utils.FileUtils;
|
||||
import com.panda3ds.pandroid.view.recycle.AutoFitGridLayout;
|
||||
import com.panda3ds.pandroid.view.recycle.SimpleListAdapter;
|
||||
import com.panda3ds.pandroid.view.recycler.AutoFitGridLayout;
|
||||
import com.panda3ds.pandroid.view.recycler.SimpleListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
|
|
@ -151,7 +151,7 @@ public class BaseEditor extends BasicTextEditor {
|
|||
|
||||
canvas.translate(x, 0);
|
||||
canvas.drawRect(0, scrollY, getPaddingLeft() - spaceWidth, visibleHeight + scrollY, paint);
|
||||
paint.setColor(applyAlphaToColor(colorEnable, 50));
|
||||
paint.setColor(colors[EditorColors.COLOR_CURRENT_LINE]);
|
||||
canvas.drawRect(0, currentLine * lineHeight, getPaddingLeft() - spaceWidth, (currentLine * lineHeight) + lineHeight, paint);
|
||||
|
||||
for (int i = beginLine; i < Math.min(getLineCount(), endLine); i++) {
|
||||
|
@ -173,7 +173,7 @@ public class BaseEditor extends BasicTextEditor {
|
|||
|
||||
private void drawCurrentLine(Canvas canvas) {
|
||||
float y = currentLine * lineHeight;
|
||||
paint.setColor(applyAlphaToColor(colors[EditorColors.COLOR_TEXT], 50));
|
||||
paint.setColor(colors[EditorColors.COLOR_CURRENT_LINE]);
|
||||
canvas.drawRect(0, y, contentWidth, y + lineHeight, paint);
|
||||
}
|
||||
|
||||
|
@ -280,7 +280,7 @@ public class BaseEditor extends BasicTextEditor {
|
|||
protected void onRefreshColorScheme(byte[] buffer, int index, int length) {
|
||||
}
|
||||
|
||||
protected void invalidateAll(){
|
||||
protected void invalidateAll() {
|
||||
requireUpdate = true;
|
||||
invalidate();
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import android.util.AttributeSet;
|
|||
import android.util.TypedValue;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.Scroller;
|
||||
|
@ -46,7 +47,7 @@ public class BasicTextEditor extends AppCompatEditText {
|
|||
|
||||
setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/comic_mono.ttf"));
|
||||
setGravity(Gravity.START | Gravity.TOP);
|
||||
setTextSize(TypedValue.COMPLEX_UNIT_SP,16);
|
||||
setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
|
||||
setLineSpacing(0, 1.3f);
|
||||
setScroller(new Scroller(getContext()));
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ public class CodeEditor extends BaseEditor {
|
|||
@Override
|
||||
protected void onTextChanged() {
|
||||
super.onTextChanged();
|
||||
if (contentChangeListener != null){
|
||||
if (contentChangeListener != null) {
|
||||
contentChangeListener.run();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.panda3ds.pandroid.view.code;
|
|||
|
||||
import android.content.Context;
|
||||
|
||||
import com.panda3ds.pandroid.app.PandroidApplication;
|
||||
|
||||
public class EditorColors {
|
||||
public static final byte COLOR_TEXT = 0x0;
|
||||
public static final byte COLOR_KEYWORDS = 0x1;
|
||||
|
@ -15,8 +17,34 @@ public class EditorColors {
|
|||
public static final byte COLOR_BACKGROUND_SECONDARY = 0x2D;
|
||||
public static final byte COLOR_SELECTION = 0x3D;
|
||||
public static final byte COLOR_CARET = 0x4D;
|
||||
public static final byte COLOR_CURRENT_LINE = 0x5D;
|
||||
|
||||
public static void obtainColorScheme(int[] colors, Context context) {
|
||||
if (PandroidApplication.isDarkMode()) {
|
||||
applyDarkTheme(colors);
|
||||
} else {
|
||||
applyLightTheme(colors);
|
||||
}
|
||||
}
|
||||
|
||||
private static void applyLightTheme(int[] colors) {
|
||||
colors[EditorColors.COLOR_TEXT] = 0xFF000000;
|
||||
colors[EditorColors.COLOR_KEYWORDS] = 0xFF3AE666;
|
||||
colors[EditorColors.COLOR_NUMBERS] = 0xFF3A9EE6;
|
||||
colors[EditorColors.COLOR_METADATA] = 0xFF806AE6;
|
||||
colors[EditorColors.COLOR_SYMBOLS] = 0xFF202020;
|
||||
colors[EditorColors.COLOR_STRING] = 0xFF2EB541;
|
||||
colors[EditorColors.COLOR_FIELDS] = 0xFF9876AA;
|
||||
colors[EditorColors.COLOR_COMMENT] = 0xFF808080;
|
||||
|
||||
colors[EditorColors.COLOR_BACKGROUND] = 0xFFFFFFFF;
|
||||
colors[EditorColors.COLOR_BACKGROUND_SECONDARY] = 0xFFF0F0F0;
|
||||
colors[EditorColors.COLOR_SELECTION] = 0x701F9EDE;
|
||||
colors[EditorColors.COLOR_CARET] = 0xFF000000;
|
||||
colors[EditorColors.COLOR_CURRENT_LINE] = 0x05000050;
|
||||
}
|
||||
|
||||
private static void applyDarkTheme(int[] colors) {
|
||||
colors[EditorColors.COLOR_TEXT] = 0xFFFFFFFF;
|
||||
colors[EditorColors.COLOR_KEYWORDS] = 0xFFE37F3E;
|
||||
colors[EditorColors.COLOR_NUMBERS] = 0xFF3A9EE6;
|
||||
|
@ -30,5 +58,6 @@ public class EditorColors {
|
|||
colors[EditorColors.COLOR_BACKGROUND_SECONDARY] = 0xFF313335;
|
||||
colors[EditorColors.COLOR_SELECTION] = 0x701F9EDE;
|
||||
colors[EditorColors.COLOR_CARET] = 0x60FFFFFF;
|
||||
colors[EditorColors.COLOR_CURRENT_LINE] = 0x10FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +1,14 @@
|
|||
package com.panda3ds.pandroid.view.code.syntax;
|
||||
|
||||
public abstract class CodeSyntax {
|
||||
public abstract void apply(byte[] syntaxBuffer,final CharSequence text);
|
||||
public abstract void apply(byte[] syntaxBuffer, final CharSequence text);
|
||||
|
||||
|
||||
public static CodeSyntax obtainByFileName(String name){
|
||||
public static CodeSyntax obtainByFileName(String name) {
|
||||
name = name.trim().toLowerCase();
|
||||
String[] parts = name.split("\\.");
|
||||
if (parts.length == 0)
|
||||
return null;
|
||||
switch (parts[parts.length-1]){
|
||||
switch (parts[parts.length - 1]) {
|
||||
case "lua":
|
||||
return new LuaSyntax();
|
||||
default:
|
||||
|
|
|
@ -55,6 +55,5 @@ class LuaSyntax extends CodeSyntax {
|
|||
for (Matcher matcher = comment.matcher(text); matcher.find(); ) {
|
||||
Arrays.fill(syntaxBuffer, matcher.start(), matcher.end(), EditorColors.COLOR_COMMENT);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import androidx.annotation.Nullable;
|
|||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.panda3ds.pandroid.data.game.GameMetadata;
|
||||
import com.panda3ds.pandroid.view.recycle.AutoFitGridLayout;
|
||||
import com.panda3ds.pandroid.view.recycler.AutoFitGridLayout;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.panda3ds.pandroid.view.recycle;
|
||||
package com.panda3ds.pandroid.view.recycler;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.TypedValue;
|
||||
|
@ -27,4 +27,4 @@ public final class AutoFitGridLayout extends GridLayoutManager {
|
|||
if (getSpanCount() != iconCount)
|
||||
setSpanCount(iconCount);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.panda3ds.pandroid.view.recycle;
|
||||
package com.panda3ds.pandroid.view.recycler;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -35,23 +35,23 @@ public class SimpleListAdapter<T> extends RecyclerView.Adapter<SimpleListAdapter
|
|||
binder.bind(position, list.get(position), holder.getView());
|
||||
}
|
||||
|
||||
public void addAll(T... items){
|
||||
public void addAll(T... items) {
|
||||
addAll(Arrays.asList(items));
|
||||
}
|
||||
|
||||
public void addAll(List<T> items){
|
||||
public void addAll(List<T> items) {
|
||||
int index = list.size();
|
||||
this.list.addAll(items);
|
||||
notifyItemRangeInserted(index, getItemCount()-index);
|
||||
notifyItemRangeInserted(index, getItemCount() - index);
|
||||
}
|
||||
|
||||
public void clear(){
|
||||
public void clear() {
|
||||
int count = getItemCount();
|
||||
list.clear();
|
||||
notifyItemRangeRemoved(0, count);
|
||||
}
|
||||
|
||||
public void sort(Comparator<T> comparator){
|
||||
public void sort(Comparator<T> comparator) {
|
||||
list.sort(comparator);
|
||||
notifyItemRangeChanged(0, getItemCount());
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class SimpleListAdapter<T> extends RecyclerView.Adapter<SimpleListAdapter
|
|||
super(itemView);
|
||||
}
|
||||
|
||||
public View getView(){
|
||||
public View getView() {
|
||||
return itemView;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,3L4,3c-1.1,0 -1.99,0.9 -1.99,2L2,15c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,5c0,-1.1 -0.9,-2 -2,-2zM11,6h2v2h-2L11,6zM11,9h2v2h-2L11,9zM8,6h2v2L8,8L8,6zM8,9h2v2L8,11L8,9zM7,11L5,11L5,9h2v2zM7,8L5,8L5,6h2v2zM16,15L8,15v-2h8v2zM16,11h-2L14,9h2v2zM16,8h-2L14,6h2v2zM19,11h-2L17,9h2v2zM19,8h-2L17,6h2v2zM12,23l4,-4L8,19l4,4z"/>
|
||||
</vector>
|
5
src/pandroid/app/src/main/res/drawable/ic_tab.xml
Normal file
5
src/pandroid/app/src/main/res/drawable/ic_tab.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="#000000" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M11.59,7.41L15.17,11H1v2h14.17l-3.59,3.59L13,18l6,-6 -6,-6 -1.41,1.41zM20,6v12h2V6h-2z"/>
|
||||
</vector>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#FFF"/>
|
||||
<corners android:radius="99999dp"/>
|
||||
</shape>
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
|
@ -7,75 +8,126 @@
|
|||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="58dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="start|center"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/app_name"
|
||||
android:textSize="17sp"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="end|center"
|
||||
android:paddingLeft="14dp"
|
||||
android:paddingRight="14dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/save"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:padding="5dp"
|
||||
android:tint="?colorOnSurface"
|
||||
app:srcCompat="@drawable/ic_save"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#0000"/>
|
||||
android:layout_height="58dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/lua_toolbar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="start|center"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/app_name"
|
||||
android:textSize="17sp"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone">
|
||||
android:gravity="end|center"
|
||||
android:paddingLeft="14dp"
|
||||
android:paddingRight="14dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/lua_play"
|
||||
android:id="@+id/save"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:padding="5dp"
|
||||
android:layout_marginHorizontal="5dp"
|
||||
android:tint="?colorOnSurface"
|
||||
app:srcCompat="@drawable/ic_play"
|
||||
app:srcCompat="@drawable/ic_save"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#0000"/>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/lua_toolbar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/lua_play"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:padding="5dp"
|
||||
android:layout_marginHorizontal="5dp"
|
||||
android:tint="?colorOnSurface"
|
||||
app:srcCompat="@drawable/ic_play"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#0000"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?colorOnSurface"
|
||||
android:alpha="0.1"/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.panda3ds.pandroid.view.code.CodeEditor
|
||||
android:id="@+id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/keybar"/>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/keybar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintHeight="38dp"
|
||||
android:visibility="visible"
|
||||
android:orientation="horizontal"
|
||||
android:background="?colorSurfaceVariant">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
android:id="@+id/key_tab"
|
||||
android:layout_width="75dp"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="0dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:src="@drawable/ic_tab"
|
||||
android:tint="?colorOnSurfaceVariant"
|
||||
android:background="#0000"/>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
android:id="@+id/key_hide"
|
||||
android:layout_width="75dp"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="0dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:src="@drawable/ic_keyboard_hide"
|
||||
android:tint="?colorOnSurfaceVariant"
|
||||
android:background="#0000"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<com.panda3ds.pandroid.view.code.CodeEditor
|
||||
android:id="@+id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</FrameLayout>
|
|
@ -88,14 +88,14 @@
|
|||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/hacks"
|
||||
android:text="@string/others"
|
||||
style="@style/TextAppearanceGameDrawerSubTitle"/>
|
||||
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/hacks_navigation"
|
||||
android:id="@+id/others_navigation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:menu="@menu/game_drawer_hacks"
|
||||
app:menu="@menu/game_drawer_others"
|
||||
android:background="?colorSurface"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
|
|
@ -40,8 +40,9 @@
|
|||
<string name="scripts">Scripts</string>
|
||||
<string name="file_not_supported">Esse arquivo não é suportado</string>
|
||||
<string name="save_and_exit">Salvar e sair</string>
|
||||
<string name="exit_without_save">Sair sem salvar</string>
|
||||
<string name="exit_without_save_title_ff">Salvar \"%s\" antes de sair?</string>
|
||||
<string name="exit_without_saving">Sair sem salvar</string>
|
||||
<string name="exit_without_saving_title_ff">Salvar \"%s\" antes de sair?</string>
|
||||
<string name="open_file">Abrir arquivo</string>
|
||||
<string name="create_new">Criar novo</string>
|
||||
<string name="running_ff">Executando \"%s\" ...</string>
|
||||
</resources>
|
|
@ -41,8 +41,8 @@
|
|||
<string name="scripts">Scripts</string>
|
||||
<string name="file_not_supported">File type isn\'t supported</string>
|
||||
<string name="save_and_exit">Save and exit</string>
|
||||
<string name="exit_without_save">Exit without save</string>
|
||||
<string name="exit_without_save_title_ff">Exit without save \"%s\"?</string>
|
||||
<string name="exit_without_saving">Exit without saving</string>
|
||||
<string name="exit_without_saving_title_ff">Exit without saving \"%s\"?</string>
|
||||
<string name="open_file">Open file</string>
|
||||
<string name="create_new">Create new</string>
|
||||
<string name="running_ff">Running \"%s\" ...</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue