#  Omni Quiz Tool

Your friendly desktop partner for creating, taking, and reviewing tests.

## In a A Hot Summer Day Idea

Have you ever found yourself studying for a big exam, like a foreign language test, and getting totally bored and overwelmed by the process? I sure have. I was tired of the constant cycle of typing questions into a Word document, trying to hide the answers from myself, and then manually calculating my score. It was clumsy and took the focus away from what really mattered: learning.

> On one particularly hot summer day, I thought, "There has to be a better way!" And so, this little project was born.

This tool is my answer to that problem. It is a simple, offline desktop application designed to make creating and taking practice exams as easy as possible, so you can spend more time studying and less time fighting with document formatting. I hope it helps you as much as it has helped me!

##  Getting Started

1. Download the application. If you are reading this online, go back a page, and click download. If not, am guessing you have already openned this document from the application itself, or found this document in the app folders. If so, you can skip ahead.
2. Unzip the folder to a location on your computer (like your Desktop or Documents folder).
3. Run the omniquiz.exe ) executable inside the folder.

That's it! The main menu will appear, and you are ready to go.

##  How to Use the Application

The application is designed to be fully usable with both a mouse and a keyboard for maximum comfort and accessibility.

### Main Menu

When you start the app, you will see a simple menu:

- Open Exam...: Choose this to open an existing `.json` exam file and start taking the test.
- Create New Exam...: Opens the Exam Editor to build a new test from scratch.
- Edit Existing Exam...: Opens an existing `.json` exam file in the Exam Editor so you can add, remove, or change questions.
- Language: You can select your preferred language for the application interface. A restart is needed for the change to apply.
- Exit: Closes the application.

### Taking an Exam (Exam Mode)

Once you open an exam, you enter the focused exam mode. It is designed to be clean and simple, helping you concentrate.

#### Navigating with the Keyboard

- Use the `Tab` key to move between the different parts of the screen (Question, Answer selection, Buttons).
- Answering Questions: When the answer dropdown box is selected, use the `Up Arrow` and `Down Arrow keys to select your choice.`
- Press `Enter` to confirm your selection and automatically move to the next question.
- Navigation Buttons:
  - `Alt` + `P`: Go to the Previous question.
  - `Alt` + `N`: Go to the Next question.
- Jumping to a Question:
  - `Alt` + `J`: Opens a dialog box to Jump directly to any question number.

### Reviewing Your Results

After finishing the exam (or if the timer runs out), you will see a summary of your results. From here, you can choose to "Review Answers" to see a detailed breakdown of every question, your answer, the correct answer, and any explanations provided.

##  The Exam Editor: Building Your Tests

The editor is where you bring your tests to life. It is split into two main sections: the question list on the left and the question details on the right.

1. Add a Question: Click the "Add Question" button. A "New Question" will appear in the list on the left and the editor on the right will become active.
2. Set the Time Limit: At the very top, you can set a time limit in minutes for the entire exam. Set it to 0 for an untimed test.
3. Write the Question: Type your question into the "Question Text" box.
4. Set the Number of Choices: Use the "Number of Choices" spinner to select how many options this question will have (from 2 to 5). The input boxes below will update automatically.
5. Write the Choices: Fill in the text for each choice (a, b, c, etc.).
6. Select the Correct Answer: Use the "Correct Answer" dropdown to mark which choice is the right one.
7. Add an Explanation (Optional): In the "Solution/Explanation" box, you can add extra text that will only be shown to the user during the review phase after the exam is complete. This is a great place for notes or detailed solutions.
8. Delete a Question: Select a question from the list on the left and click the "Delete Selected" button.
9. Save Your Work:
   - Save: If you are editing an existing file, this will overwrite it with your changes.
   - Save As...: Allows you to save your new exam as a `.json` file anywhere on your computer.

## What Can You Create? (Use Cases)

This tool is more flexible than it looks! Here are a few ideas for what you can build:

- Classic Multiple-Choice Quizzes: Perfect for school subjects, professional certifications, or trivia nights.
- True/False Exams: A quick way to test core knowledge. Just use two choices: "True" and "False".
- Digital Flashcards: Put a word in the "question" field and its definition in the "solution" field. Use only one choice as a placeholder. It's a great way to drill vocabulary.
- Study Sheets: Create a list of questions and put detailed notes in the "solution" field. It becomes a structured way to review material without the pressure of a formal test.

##  For the Curious: The JSON File Structure

While the editor is the easiest way to create exams, you can also write or edit the `.json` files directly. This is useful for creating exams programmatically or for making bulk changes.

Each file has a main structure with a time limit and a list of questions.

    {
      "timeLimitMinutes": 10,
      "questions": [
        { ... question object 1 ... },
        { ... question object 2 ... }
      ]
    }

Each question object has the following fields:

- `question` (Required): A string containing the question text.
- `choices` (Required): An object where keys are "a", "b", etc., and values are the choice texts.
- `answer` (Required): A string with the key of the correct choice (e.g., "b").
- `solution` (Optional): A string with the explanation text. If this field is missing, no explanation will be shown for that question during review.

#### A Universal Example

This example uses concepts that are understood across cultures and can be used as a template.

    {
      "question": "What is the result of 2 + 2?",
      "choices": {
        "a": "3",
        "b": "4",
        "c": "5"
      },
      "answer": "b",
      "solution": "The sum of two and two is four. This is a fundamental concept in arithmetic."
    }